Você está na página 1de 15

Aula 09

Engenharia Reversa e
Análise de Malware
Ronaldo Pinheiro de Lima
crimesciberneticos.com@gmail.com
Aula 09
6. Windows Internals

6.1. Níveis de privilégio do processador – Protection Rings

6.2. Transição entre os níveis de privilégio

6.3. Kernel Mode

6.4. User Mode

6.5. Windows APIs

6.5.1. Win32 API

6.5.2. Native API

6.6. Lab 06-01 Entendendo as APIs do Windows na prática


2 Aula 09
Windows Internals
 sistema alvo de malwares
 estruturas internas complexas
 APIs obscuras
Níveis de privilégio do processador - Protection Rings
 privilégios de execução de código
 restrição e separação do código (user x SO)
 código usuário restrito, não travar o SO
 SO: Ring 0 - kernel mode - kernel land
 User code: Ring 3 - user mode - user land

3 Aula 09
Transição entre níveis de privilégio
 habilidade de mudar de um Ring para outro
 dinamicamente, de acordo com as necessidades
 Ring 3 Ring 0
 código user requisita recurso kernel mode
 instruções utilizadas:
 SYSENTER
 SYSCALL
 interrupção INT 0x2E
 Ex.: aplicação que necessita acessar o hardware,
controle transferido ao driver (Ring 0) e retorna.
4 Aula 09
Kernel Mode
 código do sistema operacional (também drivers)
 user apps passam parte do tempo em kernel mode
 ambiente extremamente volátil
 todo código possui os mesmos direitos e privilégios
 endereços de memória não são separados (≠ user)
 programas podem acessar memória dos outros
ambiente complicado e livre (faz o que quer)
 não há validações e controles de erros
 instrução inválida = blue screen of death
 ambiente poderoso para malwares
5 Aula 09
Kernel Mode (cont.)
 malware pode interferir em programas de segurança * KS
 auditorias do SO não se aplicam em kernel mode
 maioria dos rootkits rodam em kernel mode
 desenvolver nesse ambiente é mais difícil
User Mode
 aplicações executam no nível de privilégio do usuário
 cada processo tem própria memória, recursos, permissão
 caso trave, windows pode reivindicar os recursos e
finaliza
 não pode manipular hardware diretamente
 código user só pode manipular kernel com interfaces
6 Aula 09
Windows APIs
 application programming interface (API)
 funções disponibilizadas pelo SO para aplicações se
comunicarem com o SO
 Windows tem dois tipos de APIs:
 Win32 API – user mode
 Native API – kernel mode
 Win32 API validam argumentos e passa para a
Native API
 Native API chama funções internas do kernel
 Native API possui pouca documentação
7 Aula 09
Windows APIs

8 Aula 09
Win32 API
 interface de programação para aplicações Windows
 nas linguagens alto nível geralmente não é acessada diretamente,
funções próprias fazem a chamada
 não é muito amigável para o programador
 possui 4 DLLs principais:
 kernel32.dll: file system, dispositivos, processos, memória
 advapi32.dll: componentes do windows, registro, usuários
 user32.dll: janelas e elementos gráficos: botões, ponteiro
mouse, etc.
 gdi32.dll: serviços gráficos de baixo nível: desenhar linha,
bitmap, etc

9 Aula 09
Win32 API (cont.)
 algumas funções dessas DLLs são implementads em user mode
 muitas funções requerem serviços de kernel mode (transição de
privilégio)

10 Aula 09
Native API
 XP é baseado no kernel do NT
 Native API é uma interface para o kernel windows NT
 Win32 API é uma camada acima da Native API
 Native API não possui serviços relacionados a gráficos
 disponibiliza serviços para sistema de I/O, gerenciador de memória, etc
 programas user mode não devem chamar a Native API diretamente
(teoria)
 quebra de compatibilidade com Win9x (?)
 motivo para não documentação
 não expor a Native API assegura a Microsoft revisá-la e alterá-la sem
afetar camadas acima (Win32 API)
 documentação externa: http://undocumented.ntinternals.net/.

11 Aula 09
Native API (Cont.)
 Native API é um conjunto de funções exportadas por:
 NTDLL.DLL (user mode)
 NTOSKRNL.EXE (kernel mode)

12 Aula 09
Native API (Cont.)
 chamá-la diretamente é atrativo para os malwares
 pode ser mais furtivo e evadir programas de segurança mal projetados
 exemplo: programa de segurança que monitora somente Kernel32.dll,
o malware pode chamar funções da ntdll.dll.
 funções da Native API sempre iniciam com um dos prefixos:
 Nt (NtCreateFile, NtWriteFile)
 Zw (ZwCreateFile, ZwWriteFile)
 os dois se comportam da mesma maneira
 não possuem diferenças significativas

13 Aula 09
Lab 06-01
Entendendo as APIs do Windows na prática

Material necessário:
- Máquina virtual com Windows XP 32-bit
- IDA Pro Free
- WinDbg
http://rxwen-blog-

stuff.googlecode.com/files/windbg_6.12.0002.633_x86.zip

- Windows Symbols Packages


http://msdn.microsoft.com/en-us/windows/hardware/gg463028

14 Aula 09
Obrigado!

A explicação detalhada de todos os tópicos está na apostila.

Ronaldo Pinheiro de Lima


crimesciberneticos.com@gmail.com
http://www.crimesciberneticos.com
@crimescibernet

15 Aula 09

Você também pode gostar