Hackito: Injetando Malware no Hardware

Foi publicado em larga escala que um time com os melhores engenheiros de software do mundo levou anos para criar os malwares Stuxnet e Flame, ironicamente entretanto, apenas uma pessoa levou 4 semanas para criar um código que coloca os dois malwares alí no chinelo!

Johan Brossard, researcher da Toucan System, recentemente desenvolveu uma backdoor para hardware que nos dá por agora uma pequena ideia do imenso potencial de exploração que este tipo de técnica pode proporcionar. Utilizando em sua maioria códigos open source, ele desenvolveu uma backdoor que pode ser injetada diretamente na BIOS através de PCI peripheral injection ou um upgrade padrão de BIOS – ou pior, durante o processo de linha de montagem – e uma vez instalada pode efetuar conexões para um Command Center e automaticamente capturar e executar payloads maliciosos através de Wifi/Wimax ou pacotes Ethernet (inclusive sobre HTTPS).

Isto não é tudo, e o que está por vir podemos apenas imaginar. Uma vez que os payloads são executados via BIOS diretamente na memória, isto permite que as maiores e melhores proteções existentes via Hardware/Software sejam desabilitadas.  Entre algumas das possibilidades que este tipo de approach fornece, podemos citar os seguintes:
– Bypass TPM/UEFI (Hardware/Signature Protection)
– Remoção do NX bit em hardware/software  (Heap/Stack Protection)
– Possibilidade de desabilitar o ALSR  (Memory Randomization Protection)
– Permite escrever diretamente no  Ring 0 (Kernel Memory Space Writes)
– Desabilitar CPU microcode updates (Code Execution Updates)
– Remover anti-SMM projection (Hardware Debug Management)
– Tornar TrueCrypt e BitLocker obsoletos (Password/Key Extraction)

e para finalizar:
– Completamente escalável, furtivo e suporta 230 modelos de placa mãe :D

Abaixo segue o link com o video da apresentação feita na DEFCON 20:

Hackito

[fb_like] [fb_count]

Advertisements

ZeroWine – Open Source Malware Analysis Framework

Neste post vamos conhecer o Zero Wine, uma plataforma open source para análise de malwares. Com o Zero Wine você consegue analisar o comportamento de um malware de forma segura. Basta iniciar a sandbox, acessar a interface web e fazer o upload do artefato que você deseja analisar.

O projeto consiste de uma suíte de scripts e serviços emulados através de um wine configurado para simular um ambiente real. Você pode efetuar a análise utilizando diferentes versões de sistema operacional: Windows Xp Sp2, Sp3, etc…

Devido ao longo período sem atualização do ZeroWine (a ultima atualização foi em 2009) surgiu um fork chamado “ZeroWine Tryouts”. Basicamente consiste do mesmo projeto, porém com atualizações e melhorias.

Você pode baixar uma imagem ja preparada do QEMU, ou se preferir pode baixar os fontes.

Para nosso lab, vamos utilizar a imagem do QEMU, para tanto estou levando em consideração que você ja tem o QEMU instalado e funcionando em seu Linux/Windows.

Caso você queira executar o QEMU no Windows, existe um port que pode ser baixado aqui: http://www.h7.dion.ne.jp/%7Eqemu-win/

Depois disto baixe o ZeroWine Tryouts Alpha-4.1: http://downloads.sourceforge.net/zerowine-tryout/zerowine-tryout-alpha4.1-image.7z

Após, é so descompactar e inicializar a imagem:

qemu -hda zerowine.img -boot c -m 1024 -redir tcp:8000::8000 -redir tcp:2022::22

Caso você queira acessar a shell da sandbox Linux você pode utilizar o usuário “malware” senha “malware1”

Uma vez que a máquina carregou, basta você acessar utilizando seu Browser o endereço http://127.0.0.1:8000

Neste box basta selecionar o OS que deseja emular para a análise e fazer o upload do malware. Depois disto é so esperar, e devo admitir que talves demore um pouquinho até que a análise fique completa.

Após finalizada, basta você ir na pagina “View” e fazer uma busca, você pode colocar o hash md5 do arquivo que você fez upload, o nome do arquivo, ou simplesmente “*” e a interface irá lhe mostrar os resultados disponíveis para aquela sessão:


Abaixo um exemplo de um report gerado pelo Zero Wine:

A primeira sessão mostra a análise do comportamento do malware, e este deveria ser o principal componente a respeito do framework ZeroWine. Entretanto como a propria documentação no site do ZeroWine diz, os resultados são “muito longos, e sendo assim, dificeis de se entender”. Outro aspecto dificil de verificar é a diferença entre as system calls feitas  pelo malware e as feitas pelo framework de análise.  Como resultado definitivo, eu pessoalmente acho o resultado do report do ZeroWine bem menos útil do que poderia ser.

Existem muitos frameworks que podem ser utilizados gratuitamente, como por exemplo, o ThreatExpert e o Anubis. Porém existem alguns casos onde você não pode distribuir o artefato coletado para análise em plataformas de terceiros. O ZeroWine é uma excelente ferramenta para ajudar a análisar diversos fatores, porém não dispensa em hipotese alguma a análise estática do artefato.

Site do Projeto:  http://zerowine-tryout.sourceforge.net/

Sandbox: ThreatExpert – Automated Threat Analysis

Malware Analysis: TRF2012.DOC.exe (TSPY_BANKER)

Coletei esta amostra a no dia 02 de outubro utilizando um crawler, após o seguinte link ser denunciado no PhishingTank:

http://www.lanterncreekproductions.com/wp-content/plugins/TRF2012.DOC.exe

Este foi submetido no dia 01 de outubro e adicionado à database de Phishing Scam do site. Vamos dar uma olhada sobre o compartamento deste artefato malicioso.

Visão Geral

File name: TRF2012.DOC.exe
File size: 327662 bytes
File type: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
CRC32: F945915F
MD5: 1985993d5dfa6f716464d5b83e2cefea

Name

Virtual Address

Virtual Size

Size of Raw Data

Entropy

.text 0x1000 0x116de 0x11800 6.55331181321
.rdata 0x13000 0x1c05 0x1e00 4.8620272429
.data 0x15000 0xff2c 0x200 3.5238242517
.CRT 0x25000 0x10 0x200 0.21310128451
.rsrc 0x26000 0x3bb8 0x3c00 5.25043836477

Na data em que a análise foi realizada, o artefato foi identificado por 11 das 43 engines do VirusTotal:

Antivirus

Result

TotalDefense Win32/Bancos.ABZL
K7AntiVirus Spyware
TrendMicro-HouseCall TROJ_GEN.F47V1001
Kaspersky HEUR:Trojan.Win32.Generic
VIPRE Trojan.Win32.Generic!BT
AntiVir TR/Spy.Banker.LW.191
McAfee-GW-Edition Artemis!1985993D5DFA
ESET-NOD32 probably a variant of Win32/Spy.Delf.OJR
VBA32 BScope.Trojan.Banker.01673
Ikarus Trojan-Spy.Win32.Banker
AVG PSW.Banker_c.AMX

Características Gerais do Artefato

– Executa atividades no Registro do sistema, criando ou modificando entradas de registro;

– Cria um executável do Windows no filesystem

– Cria um arquivo vazio

– Se copia para o Startup do Windows

Arquivos Criados pelo Artefato

File name: __tmp_rar_sfx_access_check_1747328
File size: 0 bytes
File type: empty
MD5: d41d8cd98f00b204e9800998ecf8427e
File name: FFCImage.exe
File size: 560128 bytes
File type: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
MD5: ab00ad168faa98837c515f9c0c5107f4

Principais Calls executadas pelo Artefato

20:22:42,566 1548 NtCreateFile FileHandle => 0x000000d0
DesiredAccess => 3222274176
FileName => __tmp_rar_sfx_access_check_1747328
CreateDisposition => 5
20:22:42,597 1548 NtCreateFile FileHandle => 0x000000d0
DesiredAccess => 3222274176
FileName => FFCImage.exe
CreateDisposition => 5
20:22:42,925 1548 ShellExecuteExW FilePath => C:\FFCImage.exe
Parameters =>
Show => 1
20:22:42,925 1548 ExitProcess ExitCode => 0

Como podemos ver, ele é um arquivo de instalação gerado pelo SFX do WinRAR que após inicializar cria um novo arquivo chamado FFCImage.exe. Executa ele e mata sua própria execução.

Vamos verificar a análise do arquivo FFCImage.exe

Visão Geral

File name: FFCImage.exe
File size: 560128 bytes
File type: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
CRC32: 9252E111
MD5: ab00ad168faa98837c515f9c0c5107f4

Análise Estática – Sessions

Name

Virtual Address

Virtual Size

Size of Raw Data

Entropy

CODE 0x1000 0x73a04 0x73c00 6.64853596153
DATA 0x75000 0x1f24 0x2000 4.8376185419
BSS 0x77000 0xf91 0x0 0.0
.idata 0x78000 0x22f2 0x2400 4.95743023695
.tls 0x7b000 0x10 0x0 0.0
.rdata 0x7c000 0x18 0x200 0.266250557312
.reloc 0x7d000 0x8d48 0x8e00 6.65598337195
.rsrc 0x86000 0x7800 0x7800 4.11603180716

Na data em que a análise foi gerada, o artefato foi identificado por 25 das 43 engines do VirusTotal:

Antivirus

Resultado

McAfee Generic BackDoor.h
Norman W32/Troj_Generic.EMOLI
TotalDefense Win32/Bancos.ABZL
TrendMicro-HouseCall TROJ_GEN.F47V1001
Avast Win32:Banker-GLH [Trj]
Kaspersky HEUR:Trojan.Win32.Generic
BitDefender Gen:Trojan.Heur.KS.5
Agnitum TrojanSpy.Delf!Mhjo8cVHH0A
Sophos Troj/Banker-FPX
Comodo UnclassifiedMalware
F-Secure Gen:Trojan.Heur.KS.5
DrWeb Trojan.PWS.Siggen.40592
VIPRE Trojan.Win32.Generic!BT
AntiVir TR/Spy.Banker.LW.190
TrendMicro TSPY_BANKER.SMAW
McAfee-GW-Edition Generic BackDoor.h
Emsisoft Trojan-Spy.Win32.Banker!IK
GData Gen:Trojan.Heur.KS.5
AhnLab-V3 Spyware/Win32.Banker
VBA32 BScope.Trojan.Banker.01673
ESET-NOD32 probably a variant of Win32/Spy.Delf.OJR
Ikarus Trojan-Spy.Win32.Banker
Fortinet W32/Delf.BBYC!tr.dldr
AVG BackDoor.Generic15.CJTK
Panda Generic Trojan

Arquivos criados pelo Malware

File name: xs1092.txt
File size: 100 bytes
File type: ASCII text, with CRLF, CR, LF line terminators
MD5: 281e9715a7ae03673b2207ed93a79642

Mutexes Criados

  • Global\ProxifierProcIdMutex1308
  • Global\ProxifierStd300Mutex

Chaves de Registro acessadas pelo Malware

  • HKEY_CURRENT_USER\Software\Borland\Locales
  • HKEY_LOCAL_MACHINE\Software\Borland\Locales
  • HKEY_CURRENT_USER\Software\Borland\Delphi\Locales
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog90000009
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000001
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000002
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000003
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000004
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000005
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000006
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000007
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000008
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000009
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000010
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000011
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000012
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000013
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries00000000014
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog5
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog50000006
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog5\Catalog_Entries
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog5\Catalog_Entries00000000001
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog5\Catalog_Entries00000000002
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog5\Catalog_Entries00000000003
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog5\Catalog_Entries00000000004
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2\Parameters
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\SecurityService
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock\Parameters
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Winsock
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DnsCache\Parameters
  • HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DnsClient
  • HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\System\DNSClient

Análise do Comportamento do Malware – Calls

20:57:11,309 204 RegOpenKeyExA Registry => 0x80000001
SubKey => Software\Microsoft\Internet Account Manager\Accounts
Handle => 0x00000000
20:57:11,340 204 NtCreateFile FileHandle => 0x00000068
DesiredAccess => 1074790528
FileName => C:\xs1092.txt
CreateDisposition => 5
20:57:11,340 204 NtWriteFile FileHandle => 0x00000068
Buffer => 0x0012fed0
20:57:11,340 204 NtCreateFile FileHandle => 0x00000068
DesiredAccess => 2148532352
FileName => C:\xs1092.txt
CreateDisposition => 1

Quando executado, este binário acessa a chave de registro do “Internet Account Manager” e exporta todas as entradas existents na chave “Accounts”. Esta chave é responsável por armazenar todas as informações, usuários e senhas de contas adicionadas no Outlook Express. Caso a senha do usuário esteja salva no Pop-up de Autenticação, o artefato irá coletar a mesma e exportar. O dono do malware poderá simplesmente adicionar os valores eu seu próprio outlook e baixar as mensagens do usuário.

Após ele gerar o arquivo xs1092.txt, ele faz uma chamada ao seguinte host:

Hostname

IP Address

muarb3901.batcave.net 83.125.22.186

Abaixo a tela do GeoTracert mostrando a localização do servidor:

Após coletar o tráfego gerado pelo malware, importei o arquivo PCAP no RSA NetWitness para efetuar a análise do tráfego. Abaixo conseguimos remontar e visualizar o pacote enviado pelo Malware:

Conseguimos verificar que o Malware submete as informações através de um  POST em um arquivo post.php. No caso acima as variáveis estavam vazias pois na chave de registro da máquina utilizada como sandbox não havia nenhuma informação.

Após transmitir as informações o binário apaga o txt gerado:

20:57:12,497 204 DeleteFileW FileName => C:\xs1092.txt

O binário estava compactado utilizando o PECompact.