FISL11: Análise de binários ELF

1,353 views
1,258 views

Published on

Presentation about binary analysis exhibited on july, 23th 2010 at FISL11 event.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,353
On SlideShare
0
From Embeds
0
Number of Embeds
39
Actions
Shares
0
Downloads
49
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

FISL11: Análise de binários ELF

  1. 1. Fernando Mercês <ul>Análise de binários ELF </ul>
  2. 3. No final da minha palestra <ul>Sortearei o curso “Segurança em Servidores Linux: Norma ISO 27002” <ul><li>Preencham o cupom que está no folheto da 4Linux dentro da bolsa do fisl11
  3. 4. Se você já preencheu, ele já está aqui na urna
  4. 5. O ganhador deve estar presente até o quinto sorteio. Se não estiver presente ganhará o sexto sorteado </li></ul></ul>
  5. 6. Engenharia Reversa <ul><li>Arte de analisar um artefato a fim de entender seu funcionamento.
  6. 7. Em nosso foco, analisar um binário para estudar seu comportamento. </li></ul>
  7. 8. Aspectos legais <ul><li>É preciso conhecer a licença empregada pelo desenvolvedor do binário a ser analisado, a fim de não ferir nenhuma licença de software. </li></ul>
  8. 9. Por que reverter em GNU/Linux? <ul><li>Aprendizado de como os programas se comportam no sistema
  9. 10. Troubleshooting
  10. 11. Adaptação de drivers de dispositivos
  11. 12. Análise de programas desconhecidos
  12. 13. Criar outro programa compatível com o formato ou protocolo utilizado pelo que sofrerá a ER </li></ul>
  13. 14. O binário <ul><li>Conjunto de bits.
  14. 15. Formato e arquitetura conhecidos.
  15. 16. Instruções ASM conhecidas.
  16. 17. Editável.
  17. 18. Compactável e criptografável. </li></ul>
  18. 19. ELF (Executable and Linkable Format)
  19. 20. Assembly <ul><li>Linguagem de máquina
  20. 21. Dependente de fabricante
  21. 22. Simplesmente necessária
  22. 23. Existem softwares que tentam gerar código C a partir de ASM
  23. 24. Intel: mov eax, 0
  24. 25. AT&T: movl $0, %eax </li></ul>
  25. 26. Análise de um “Hello World” void main() { printf(&quot;FISL 11 &quot;); } $ gcc -o hello hello.c $ file hello ELF 64-bit LSB executable, x86-64, version 1 (SYSV)...
  26. 27. Análise de um “Hello World” $ strings -t x hello 200 /lib64/ld-linux-x86-64.so.2 309 __gmon_start__ 318 libc.so.6 322 puts 327 __libc_start_main 339 GLIBC_2.2.5 5ec FISL 11
  27. 28. Análise de um “Hello World” $ hte hello
  28. 29. Análise de um “Hello World” Demonstração
  29. 30. Projeto EDB <ul><li>Debuga binários ELF x86 e x86-64
  30. 31. Execução linha a linha (ASM)
  31. 32. Bom suporte a plugins
  32. 33. Destinado a binários sem source
  33. 34. Ainda em desenvolvimento (precisando de doações) </li></ul>
  34. 35. Análise de um cavalo-de-tróia 1. void main() { 2. struct sockaddr_in srv; 2. int sockfd; 3. sockfd = socket(AF_INET, SOCK_STREAM, 0); 4. memset(&srv, 0, sizeof(struct sockaddr_in)); 5. srv.sin_addr.s_addr = INADDR_ANY; 6. srv.sin_port = htons(6666); 7. srv.sin_family = AF_INET; 8. bind(sockfd, (struct sockaddr*) &srv, sizeof(struct sockaddr)); 9. listen(sockfd, 4); 10. while (1) { } }
  35. 36. Análise de um cavalo-de-tróia $ strings -t x trojan 388 libc.so.6 392 socket 399 htons 39f listen 3a6 memset 3ad bind
  36. 37. Análise de um cavalo-de-tróia
  37. 38. Análise de um cavalo-de-tróia Demonstração
  38. 39. Packing <ul><li>Alta compactação
  39. 40. Pode resultar em obfuscação
  40. 41. Possui rotina de descompactação em memória.
  41. 42. Pode ser dumpado e ter o packer removido. </li></ul>
  42. 43. Packing $ ls -lh binario -rwxr-xr-x 106K binario $ upx --best binario $ ls -lh binario -rwxr-xr-x 49K binario
  43. 44. Packing <ul><li>Alta compactação
  44. 45. Pode resultar em obfuscação
  45. 46. Possui rotina de descompactação em memória.
  46. 47. Pode ser dumpado e ter o packer removido. </li></ul>
  47. 48. Packing <ul>Erro do HTE ao tentar abrir um binário compactado com UPX: </ul>
  48. 49. Packing
  49. 50. Malwares <ul><li>Código otimizado e especializado
  50. 51. Packeado
  51. 52. Pode conter criptografia
  52. 53. Obfuscação e anti-debugger
  53. 54. Esconde strings
  54. 55. Pode ser necessária análise numa sandbox. </li></ul>
  55. 56. ER hoje <ul><li>“Arma” no cenário closed source (argumento poderoso no open source)
  56. 57. Continua sendo usada no desenvolvimento de drivers
  57. 58. Grande oportunidade na forense computacional </li></ul>
  58. 59. Oportunidade <ul><li>Espionagem é muito utilizada na área militar.
  59. 60. A indústria de anti-vírus investe milhões para se antecipar às ameaças.
  60. 61. Você é de segurança? Quer usar esse know-how para outra área? Inovação gera necessidade de ER.
  61. 62. Quer um hobby que evolua mais seu conhecimento em segurança? </li></ul>
  62. 63. Mais informações <ul><li>GNU/Linux Reversing – linuxreversing.org
  63. 64. Linux Assembly – asm.sourceforge.net
  64. 65. HT Editor – hte.sourceforge.net
  65. 66. EDB – codef00.com </li></ul>
  66. 67. Perguntas <ul>? ? ? ? ? </ul>
  67. 68. Obrigado! @FernandoMerces [email_address] www.4linux.com.br www.hackerteen.com twitter.com/4LinuxBR Tel: 55-11-2125-4747
  68. 69. Construtor Assunto Data e Horário Luiz Vieira Segurança 22/07 às 10h00 e 23/07 às 11h00 Kinn C Julião Desenvolvimento PHP 22/07 às 11h00 e 23/07 às 12h00 Gustavo Maia Java, eXo Platform, Android 22/07 às 12h00 e 23/07 às 13h00 Fernando Merces Engenharia Reversa 22/07 às 13h00 e 23/07 às 14h00 Bruno Gurgel Alfresco, MediaWiki, BBB, Dimdim 22/07 às 14h00 e 23/07 às 15h00 Caio Candido LPI, Softwares de Acessibilidade 22/07 às 15h00 e 23/07 às 16h00 Débora Lavínia Marketing com Software Livre 22/07 às 16h00 e 23/07 às 17h00 César Domingos Business Intelligence 22/07 às 17h00 e 23/07 às 18h00 Fernando Lozano JBoss AS, Java, Portais 22/07 às 18h00 e 23/07 às 19h00 Rodrigo Tornis Postfix, Expresso 22/07 às 19h00 e 24/07 às 10h00 Anahuac P Gil Kyapanel, OpenLdap 23/07 às 10h00 e 24/07 às 11h00

×