Académique Documents
Professionnel Documents
Culture Documents
Agenda
- O que anlise forense computacional ? - O que Anti Forense ? - Mtodos anti-Forenses: * Encriptao. * Steganografia.
a aplicao de mtodos cientficos em meios digitais com o objetivo de determinar se um sistema computacional (hard disks, compact disks, solid state devices, etc) est sendo ou foi utilizado para atividades ilegais ou no autorizadas.
So mtodos de remoo, ocultao e subverso de evidncias com o objetivo de mitigar os resultados de anlises forenses computacionais.
mysql@itts:/var/tmp$ ./priv-exploit key: SenhaParaDecriptografar Checking target.... done. Gettng address.... done. Bash-3.00#
Na User-Space podemos utilizar utime() e utimes(). O conceito pode ser aplicado a outros sistemas de arquivos.
Obs: Mesmo com mtodos de Wipe pode ser possvel recuperar arquivos apagados atravs de um fenomeno ferromagnetic chamado Hysteresis Loop. Entretanto, esse tipo de anlise requer equipamentos com altssimo custo, ficando o processo cada vez mais complexo de acordo com o nmero de sobrescritas feitas pelo wipe e densidade do Hard Disk.
- 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 o algoritmo utilizado para encontrar colises em seqncias de 128 bytes (com o mesmo hash MD5).
- Em Maro de 2005, Arjen Lenstra, Xiaoyun Wang e Benne de Weger demonstraram um exemplo prtico de coliso, criando um par de certificados X.509 com chaves pblicas diferentes e o mesmo hash MD5.
O algoritmo desenvolvido por Wang e Yu pode ser utilizado para criar arquivos diferentes com o mesmo hash MD5.
Exemplos de uso:
- Crackers podem criar um bom aplicativo (P2P, IM, browser, etc) previamente com inteno de ser utilizado para ataques de coliso MD5 distribuindo o binrio gratuitamente. Futuramente, eles podem substitu-lo por uma verso que ativa um cdigo malicioso prdefinido 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 de futuramente substitui-lo por verses que ativaro cdigos maliciosos pr-programados.
Basicamente a criao de dois binrios diferentes e com o mesmo hash MD5 funciona da seguinte forma:
- A funo MD5 utiliza um mtodo conhecido como Merkle-Damgard que funciona basicamente assim:
Caso necessrio preenche (pad) o fluxo de entrada (input) fazendo com que o 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.
A partir de um Vetor de Inicializao s, encontrar dois pares de blocos M,M' sendo que f(f(s, M), M') = f(f(s, N), N').
e N,N',
Encontrar esses dois pares de blocos a partir de qualquer Vetor de Inicializao(IV) s, no se restringindo ao Vetor de Inicializao(IV) s0.
Esse programa deve conter todas rotinas (boas e maliciosas) e a comparao entre a coliso 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 Vetor de Inicializao(IV0, IV1, IV2, IV3) do array mi.
Utilize o md5coll com esse (IV0, IV1, IV2, IV3) Vetor de Inicializao como parmetro e ser 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 dos blocos (m0 e m1) que permitir a executao das boas rotinas.
Substitua no programa original (e compile) o array de 64 bytes (mi) pela juno dos blocos (m1 e m1) que permitir a executao das rotinas maliciosas.
wendel@Itts-VM:/CodeBreakers3$ ./Breakers wendel@Itts-VM:/CodeBreakers3$ md5sum *e* Installing SuckIT 1.3e e12de05230b765ff86b947ffbd5ebafc Code ---------------------------------------e12de05230b765ff86b947ffbd5ebafc Breakers I love you baby Show begins Test mode 0 RK_Init: idt=0xc0328000, sct[]=0xc02c68e0 kma_hint=0x00000000 kmalloc()=0xc012fcb0, gfp=0x1f0 Z_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
E:\CodeBreakers3> Breakers.exe Installing 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
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 utilizam ptrace (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, dessa forma, basta que o processo j esteja sendo tracejado pelo ptrace (self-ptracing ou utilizando LKM para todos processos) e as ferramentas falharo.
[root@CodeBreakers3]# ./memgrep -p 1732 -d -a text -l 100 ptrace(ATTACH): Operation not permitted memgrep_initialize(): Couldn't open medium device.
Database Rootkits
- Os bancos de Dados tem cada vez mais recursos podendo autalmente serem utilizados para manter e instalar rootkits.
- Muitos bancos de dados rodam com privilgios administrativos possuindo recursos para criao 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 de esconder usurios, functions, stored procedures (inclusive utilizadas para carregar ferramentas 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) a partir do prprio banco de dados.
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 presente na maioria das BIOS. O ACPI prov uma linguagem simples de programao chamada ASL que permite acessar e modificar a memria, disco, etc.
Dessa forma possvel criar Backdoors ou RootKits on the fly, sem a necessidade de escrever no disco e persistentes a formatao (de discos). Uma funo interessante que o ASL prov a OperationRegion() usada para definir interface ao hardware. OperationRegion(Nome, Regio, Offset, Tamanho). Onde "Regio" dividida em 5 partes que podem ser acessadas para leitura ou leitura e escrita. A Regio pode ser: PCI_Config, SMBus, CMOS, SystemIO e SystemMemory (Utilizaremos est para fazer "patching" em memria).
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 80c0400a 55 ... ... 80c04044 385d24 80c04047 7500 80c04049 8b4514 80c0404c a900000002
Referncias
http://www.frontthescene.com.br
http://en.wikipedia.org/wiki/Encryption http://www.phrack.org/phrack/63/p630x0d_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
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-06burdach-up.pdf
Referncias
Dvidas ?
Agradecimentos ao Ricardo (Security OpenSource), Gilgamesh (The Source) e Francis Guslinski pela correo ortogrfica.