quinta-feira, 7 de julho de 2011

#FISL 12: shellcodes

A palestra do Leandro Fernando (não consegui o contato dele) foi muito legal. O cara é uma figuraça, pernambucano (acho, pelo sotaque), muito engraçado e fez uma apresentação bem objetiva e informativa. Vamos às informações mais importantes.

  • Um shellcode é um código contido num exploit e que realiza o desejo do criador (criar usuário, alterar senha, criar regras de firewall, ligar webcam, etc).
    • Ou seja, quando um intruso quer atacar um alvo, ele precisa de um código que explore uma vulnerabilidade de um sofware que esteja rodando no sistema alvo. Este código é o exploit.
    • Dentro do exploit, tem o shellcode, que vai fazer, depois de explorada a vulnerabilidade, com o que o objetivo do intruso se realize, seja alterar a senha do root para ele ter acesso ao sistema, seja abrir uma porta através de um backdoor pra ele ter controle sobre o alvo remotamente, por exemplo.
    • Atualmente é chamado de payload, um termo mais abrangente mas que, segundo o palestrante, pode designar coisas que não são shellcodes.
  • Ele comentou que há o meio fácil de fazer shellcodes, que é através de ferramentas como o exploit-db, metasploit, shell-storm, e outras (ou pesquisar na web), e há o difícil, que é programar em assembly, fazendo manipulação de system calls, registradores e tudo mais. Ou ainda, escrever um código em C e usar um debugger pra analisar o código assembly.

Depois das explicações o Leandro demonstrou um shellcode que realiza uma chamada de uma system call, mostrou o código em assembly e discutiu alguns problemas inerentes ao desenvolvimento de shellcodes, como operações com valores nulos, e os malabarismos que são feitos para contornar algumas situações. O negócio não é nada simples!

Pra quem quiser mais informações sobre o assunto, encontrei este ótimo texto no blog 0xcd80 (criativo, hein ?).

Siga-nos no Twitter! ou Buzz
Receba os textos via e-mail ou RSS!
Confira outros textos sobre o tema!

Um comentário: