sábado, 17 de maio de 2008

Toolbox

Começo este post como o anterior. Com uma historinha, um desabafo. Claro que o objetivo também é levar conhecimento – um pouco do pouco que tenho.

Hoje vou falar sobre ferramentas. Eu tenho um sério problema com ferramentas que facilitam a vida como frameworks, códigos prontos, e outras coisas empacotadas para viagem.

Isso começou a mais de uma década – nossa, agora eu me senti um velhão. Comecei a procurar sobre segurança da informação. Os programas da moda eram o Back Orifice e o Netbus. Nunca cheguei a sequer baixá-los simplesmente porque eu não apreciava a idéia do uso de uma ferramenta. Mais que isso. Achava, e ainda acho, que verdadeiros hackers – pelo amor de Deus não vamos discutir o termo em si, mas para efeitos de satisfação parcial “black hats” - são aqueles que criavam esses programas e não quem simplesmente os usava – anos depois vim a ter o conhecimento da denominação script kiddie.

Enfim, sempre tive esse ceticismo em relação à este assunto. Depois comecei a usar GNU/Linux. E aí vieram alguns nomes: Iptables, Snort, Ethereal, Netcat, Nessus, tcpdump... E mais recentemente chkrootkit, metasploit, nmap...
Pois bem, agora vou falar um pouco de algumas delas – as que descobri e/ou usei recentemente - e também algumas mudanças que ocorreram com o que eu penso delas.

chkrootkit – é um programa simples e pra lá de eficiente. Ele faz uma breve auditoria para detectar rootkits na sua máquina. Vai desde checar se programas como o netstat ou ps foram alterados, até detectar LKMs. Eu achava que ele era complicado até baixar, compilar e executar. Me deu mais trabalho escrever este parágrafo do que usá-lo.

Nessus – faz um tempão desde a primeira vez que tentei usá-lo. Na época eu não entendi muito bem a estrutura cliente-servidor. Mas enfim, ele não é difícil de usar e é bastante eficiente. Ele pode detectar vulnerabilidades e simular ataques. Mas o pulo do gato são os plugins. Ele é extensível e através desses plugins novos tipos de ataque podem ser adicionados e executados, encontrando assim outras vulnerabilidades.

Metasploit – é um framework para exploits. É mais fácil ainda de encontrar alguma vulnerabilidade através dele. Ainda não o usei, mas vi um vídeo no milw0rm com o mesmo em ação. Tira todo o charme de se desenvolver um exploit, mas pode ser muito útil numa auditoria ou num showdown.

See you.
-----------
keepReading

Polindo bytes

Depois de um enorme recesso, volto a publicar alguma coisa. O meu maior bloqueio em escrever algo, é minha preocupação em escrever algo realmente instrutivo. Algo que eu gostaria de ler. Que ensinasse as coisas sem muita encheção de lingüiça. Porém sempre acho que tudo o que quero escrever já foi escrito, ou que pouco acrescentaria a algum bom tutorial que eu tenha lido.

Mas, até como é o propósito desse blog, a pretensão é divulgar o que é difícil de se encontrar. Assim sendo, vou dedicar este post a indicar fontes e fontes de fontes (calma, não é tão ruim quanto pode parecer). Após vasculhar bastante – mas põe bastante - nisso e ter alguma orientação de um amigo (que manja muuuuito), cheguei ao ponto de criar este post.

Antes de começar com as indicações, vou contar uma história para ilustrar como cheguei a este ponto e onde foi que eu “errei”. Sempre quis aprender mais sobre computadores. Sempre quis ir mais a fundo, mais além. Lendo um pouquinho aqui, praticando um pouquinho ali, garimpando um pouquinho lá, fui juntando informações. Esse é o curso natural da coisa.

Pequei em dois pontos. Um deles foi não estudar exploits. Sempre achei que soluções prontas não eram muito válidas. E deixei de aprender muito ao não ao menos ler alguns desses códigos. O outro erro foi pior. Sempre associei o termo shellcode a shell script. E isso me custou mais um valioso aprendizado. Ao conversar um dia desses com esse meu amigo, eu disse que eu tinha uma certa dificuldade, principalmente por não saber por onde começar. Ele me disse para começar do basicão: buffer overflows, integer overflows, stack overflows, shellcodes... Foi quando eu questionei a respeito dos shellcodes e ele disse que não tinha nada a ver com shell script... Me senti uma anta. Literalmente. Ele foi até gentil com o noob que vos escreve e me deu alguns links de tutoriais.

Após alguns dias garimpando, e mais umas horas relembrando de velhas fontes, e estou aqui.

Bem, chega de enrolação. Vamos ao que interessa: fontes, links e utilidades.

Se você manda mal no inglês (que é fundamental) lá vai o primeiro link:
http://www.inglescurso.net/


Para linguagem C
http://gcc.gnu.org/onlinedocs/
http://www.gnu.org/software/libc/manual/
Também recomendo os livros
The ANSI C Programming Language (Kerningham & Ritchie)
C Total e Completo (Herbert Schildt)

Para Assembly
http://numaboa.com.br/informatica/oiciliS/
http://asm.sourceforge.net/
http://tldp.org/HOWTO/Assembly-HOWTO/

Estrutura de dados
http://www.icmc.sc.usp.br/manuals/sce183/
http://www.icmc.sc.usp.br/manuals/sce182/
http://www.icmc.sc.usp.br/manuals/ssce763/

Repositórios de especificações de formatos de arquivo
http://www.wotsit.org/
http://www.file-extensions.org/
http://www.fileinfo.net/

Padrões de internet e protocolos
http://www.rfc-editor.org/rfcxx00.html
http://www3.tools.ietf.org/rfc/index
http://www.iana.org/protocols/
http://graphcomp.com/info/rfc/
http://en.wikipedia.org/wiki/List_of_RFCs

Zines e Hot sites
http://www.thebugmagazine.org/
http://www.phrack.org/
http://packetstormsecurity.org/
http://www.milw0rm.com/
http://neworder.box.sk/
http://www.smashthestack.org/ -- este aqui é um jogo!
http://www.phreak.org/html/main.shtml
http://br.geocities.com/d4rwinetico/zines.html



Vale umas dicas aí...
no milw0rm, existe a seção papers, porém não há link direto. Você precisa acessar:
http://www.milw0rm.com/papers/
para entrar na seção. O milw0rm deixa disponibiliza o download dos exploits num tarball, que vem inclusive muito bem organizado. Porém os artigos (papers) não vêm. Então aí vai um shell script básico para facilitar sua vida e baixar todos os papers.

#!/bin/bash

i=0;

echo " " > error.txt;

while [ $i -lt 200 ]; # atualmente a existem cerca de 200 artigos no milw0rm
do
echo "baixando Paper # $i";
url="http://www.milw0rm.com/papers/"$i;
wget $url;
if [ $? -eq 0 ];
then
echo "milw0rm paper # $i baixado com sucesso!";
else
echo "Download de paper # $i falhou";
echo $i >> error.txt;
fi
let i++;
done;


O Phrack também disponibiliza a última edição para download num tarball. Mas, via de regra, aí tbm vai um shell script para tornar sua vida menos tediosa.

#!/bin/bash

i=1;

echo " " > error.txt;

while [ $i -lt 66 ]; # atualmente a phrack está na edição 65
do
echo "baixando Phack # $i";
url="http://www.phrack.org/archives/tgz/phrack"$i".tar.gz";
wget $url;
if [ $? -eq 0 ];
then
echo "Phrack # $i baixado com sucesso!";
else
echo "Download de phrack # $i falhou";
echo $i >> error.txt;
fi
let i++;
done;


E aí vai como conseguir artigos do insecure.org através de um google hacking
http://www.google.com/search?q=+site%3Ainsecure.org%2Fstf%2F

Vale lembrar que quase todos os sites acima citados, além do conteúdo, têm vários outros links valiosos, sendo este o motivo de estarem aqui.

O material é realmente extenso. Mas vale a pena se você quer aprender mais. Vá lendo conforme a necessidade aparecer. Por último, mais algumas sugestões de leitura que geralmente deixamos pra depois ou que são simplesmente ignoradas – estou falando de algumas man pages e info pages. Leia quando possível as man pages e info pages dos interpretadores de comando (sh, csh, bash, ksh, zsh...) e das ferramentas de desenvolvimento (gcc, as, gdb, objdump, nm,...).

Bons downloads e boa leitura.
-----------
keepReading