Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding 40º]
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding 40º]

  • 517 views
Uploaded on

Vale Security Conference - 2011 ...

Vale Security Conference - 2011
Domingo - 11ª Palestra
Palestrante : Fernando Mercês [Octane Labs] [Coding 40º]
Palestra : Construindo um analisador de executáveis PE
Twitter Fernando Mercês : https://twitter.com/#!/MenteBinaria
Video (YouTube) : http://www.youtube.com/watch?v=-UpGMGk2dlY
Slides (SlideShare) : http://www.slideshare.net/valesecconf/merces

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
517
On Slideshare
517
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
10
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. CONSTRUINDO UM ANALISADOR DE EXECUTÁVEIS Fernando Mercês Vale Security Conference 2011 São José dos Campos - SP
  • 2. $ whoami- Consultor de projetos com software livre na 4Linux- Bacharelando em Ciência da Computação- Foco em infraestrutura e segurança da aplicações- Membro ativo de diversas comunidades de software livre- A+, LPIC-2, MCP, MCITP- Palestrante em eventos como FISL, LinuxCon e H2HC- Idealizador do Universidade Livre, evento que leva o SL àsuniversidades brasileiras- Autor do Mente Binária (http://www.mentebinaria.com.br)- Criador do pev (analisador de arquivos PE)- Criador do USBForce (antivírus para pen-drive)- Mantenedor do T50 (ferramenta para stress em redes)
  • 3. Agenda- O que faz um analisador- O executável- Estudo do formato- pev- Perguntas
  • 4. O que faz um analisador?
  • 5. Interpreta o formato do executável paraexibir informações do tipo:- Entrypoint (início do programa)- Arquitetura alvo / tipo do executável- Requisitos para execução- Seções- Proteções- E qualquer outra informação útil paraquem analisa
  • 6. Como todo arquivo, não passa de umasequência de bits. A diferença está emcomo interpretamos: Binário 01010101 Decimal 85 Hexa 55 ASM x86 PUSH EBP ASCII U
  • 7. O executável
  • 8. - Além do código, contém informaçõespara ser devidamente executado no SOalvo.- Pode ser editado como qualquer outro- Possui um formato / especificação- Documentação do formato disponível nainternet. Mais usados são ELF e PE.
  • 9. Estudo do formato
  • 10. - Busca da disposição dos campos noexecutável.- Digamos que a documentaçãoespecifique: -> Um arquivo PE válido começa comum campo de dois bytes chamado magicnumber, onde o primeiro byte é o 0x4D e osegundo é o 0x5A, sempre.
  • 11. Então basta validar:int verify(char *filename){ FILE *fp = fopen(filename, "rb"); char bytes[2]; fread(bytes, 2, 1, fp);     fclose(fp); if (bytes[0]==M && bytes[1]==Z) return 1; return 0;}
  • 12. -> 16 bytes a frente da assinatura PE, estáo checksum, que tem 2 bytes de tamanho.unsigned short checksum;fseek(fp, 16, SEEK_CUR);fread(&checksum, 2, 1, fp);printf("%xn", checksum);
  • 13. - Para facilitar, é bem possível que o SOtenha estruturas já prontas para leitura doformato./* COFF header (trecho da windows.h) */typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp; DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics;} IMAGE_FILE_HEADER;
  • 14. - Depois de ler as estruturas, o analisadordeve dar opção de mostrar os valores doscampos para o usuário.- É possível detectar proteções comopackers, crypters etc.- Existe muita informação dentro de umbinário executável. Tudo o que oanalisador precisa fazer é interpretar osbytes brutos (raw).
  • 15. pevthe pe file analyzer
  • 16. - Software livre (GPLv3)- Multiplataforma (ANSI C)- Suporte a PE32/PE32+- Imprime todos os cabeçalhos do PE- Detecta TLS callback, ASLR e DEP/NX- Exibe resources no primeiro nível
  • 17. $ pev -c psftp.exe COFF header: Machine: 0x14c - Intel 386 and compatible (32-bits) Number of sections: 4 Date/time stamp: 1177846971 (Sun, 29 Apr 2007 11:42:51 UTC) Symbol Table offset: 0 Number of symbols: 0 Size of optional header: 0xe0 Characteristics: 0x10f (0000000100001111) base relocations stripped executable image line numbers removed (deprecated) local symbols removed (deprecated) 32-bit machine
  • 18. $ pev -rp psftp.exe Resources (.rsrc section): Type: RT_ICON Offset: 0x28 Type: RT_GROUP_ICON Offset: 0x68 Type: RT_VERSION Offset: 0x80  Product Version: 0.60.0.0$ pev -o psftp.exe  | headOptional (PE) header: Magic number: 0x10b (PE32) Linker major version: 7 Linker minor version: 10 Size of .code section: 0x35000 Size of .data section: 0x1a000 Size of .bss section: 0 Entry point: 0x2d812 Address of .code section: 0x1000 Address of .data section: 0x36000
  • 19. TODO...- Detecção de packers- Disassembly de seções- Formatação de saída (CSV, XML...)- Extração de resources- Exibir imports e exports- Detecção do compilador- Detecção do idioma do binário- CRC32- Detecção de strings inclusive XOReadas
  • 20. Conteúdo: Fernando Mercês (CC 3.0)baseado no paper "Construindo umanalisador de executáveis".Template: Frank Skibby Jensenhttp://pev.sf.net@MenteBinariawww.mentebinaria.com.brPerguntas?