Esse é o sonho de muitos adolescentes, adultos e alguns da (>=) terceira idade (casos mais raros. Nessa época, a galera já se preocupa se os filhos saberão criar os netos). A motivação costuma ser algum filme em que o Hacker faz tudo o que quer: rouba identidades, lê o email dos outros, tira sarro geral. Em alguns casos, costuma ser algo do tipo “Hacker rouba centavos de contas e junta mais de US$ 50 mil”.

O fato é que, em algum momento da vida, normalmente jovem, o cara se sentiu maravilhado com o poder que a palavra evoca e toma uma decisão muito importante na vida:

“Mãe, quero ser um hacker!!”

Eu mesmo já vi isso acontecer, depois que alguns amigos leram uma reportagem sobre um hacker que mudou um DNS pra mandar toda a galera que acessava um determinado site pra um site gay. O mais técnico deles fazia um curso de Corel Draw. E isso era tudo o que ele sabia de TI.

O problema é que, após tomar uma decisão como essas, vem a pergunta fatídica… como chegar lá?

[[ Engatinhando ]]

Vamos lá, respire fundo. Calma. Agora continuamos.

Você conhece algum hacker? Alguém que você tenha certeza? Note que isso vai ser beeeeeeeeeem difícil. A não ser que você tenha visto ele fazer algo como ganhar uma promoção na internet, hackear um site… fora isso, não dá pra você ter certeza de que o cara não é um charlatão.

Mas, se você conhecer, tente fazer amizade com o cara e ver se ele se torna o seu tutor.

“Grandes poderes trazem grandes responsabilidades, já diria o tio Ben”

Esse cara não tem que te ensinar nada. Só vai tirar as dúvidas que forem surgindo e dando dicas. Afinal, você ainda não tem conhecimento o suficiente para entender nada sobre hacking. Nada de passar 15 minutos lendo um tutorial vagabundo hospedado no geocities.

Como isso vai ser ultra-difícil, não vamos contar com essa possibilidade.

Saiba de uma coisa, pra atingir o seu alvo, você vai precisar de conhecimento técnico. “Mas Code.Ripper, eu comprei uma daquelas revistas que ensinam a montar computador. Sei tudo!”.

Conhecimento técnico é o conhecimento do técnico em informática. Você precisa passar por uma curva de aprendizado pra entender como o computador funciona. E você vai precisar ler LIVROS!!

Pra começar, você vai estudar um pouco de Arquitetura de Computadores. Essa disciplina vai te mostrar como um computador funciona num nível mais baixo. Você pode ler um livro como Arquitetura e Organização de Computadores. Pode ser que você tenha outro em mente também. Não precisa ser um específico. Procure se informar sobre a arquitetura x86. Essa você tem que conhecer. Talvez o livro não explique. Aí você deixa pra procurar depois.

Após lido isso, você vai ter uma visão da sua máquina por dentro. Agora você vai entender melhor o seu curso de hardware da revista 🙂

Agora tá na hora de entender um pouco o Sistema Operacional. Eu recomendo seriamente o livro Operating System Concepts, do Silberschatz. A parte mais difícil vai ser lembrar o nome do autor. Apesar da capa, esse livro não vai te ensinar a criar dinossauros no quintal. O livro é altamente didático e você vai entender fácil.

Não perca conceitos muito importantes como gerenciamento de Processos e Threads, Gerenciamento de Memória e Sistemas de Arquivos.

Se você estudou os assuntos acima e chegou até aqui, parabéns. Você é obstinado. Tem grandes chances de conseguir. Provavelmente já passou um bom tempo estudando.

Vamos pra uma parte mais prática. Agora você tem que estudar uns dois sistemas operacionais. De preferência Windows e Linux. Esqueça o MAC por hora. Mas estude um bocado. Saiba como realizar as suas tarefas do dia-a-dia e saiba como elas funcionam.

Estude um pouco da administração do sistema.

Beleza. Você conhece o computador e conhece um sistema operacional.. hora de dominar o mundo uhuhuhuhuhuhuhahahhahahhahahahahahahahah (risada diabólica clichê). AINDA  NÃO!!! Você sabe o básico. Vamos continuar a jornada.

Agora chegou a hora de estudar Redes de Computadores. Entender como as máquinas se comunicam. Eu li um livro ultra-didático uma vez, mas não lembro o nome (shit!). Mas pra tudo o que você quiser aprender, existe um cara chamado Andrew Tanembaum, com um livro pra cada assunto de TI que existe na face terra. Eu não achei o livro muito didático, mas ele tem tudo o que você precisa saber nesse momento.

Cara.. é um livro meio grande e vai ser bem difícil filtrar aqui o que você vai precisar. Então leia tudo. Lembre-se de que você precisa entender a fundo como as redes funcionam. E não vem com essa de preguiça. O conteúdo desse livro é só uma parte do que você precisa saber sobre redes. Mata essa preguiça agora!!

Por fim, pra ter um conhecimento técnico digno, você tem que aprender a programar. Macho que é macho programa em Linguagem C. Ok, tudo bem. Não sejamos xiitas. Existem outras linguagens boas, mas você quer hackear.

O código-fonte da maior parte dos serviços que você vai explorar é escrita em C, desde serviços mais simples do SO até Web Servers como Apache. E boa parte dos exploits que você for estudar à frente também é escrita em C. Então pára de encher o meu saco e estuda essa merda.

Isso pode demorar. Não é todo mundo que consegue programar bem. Mas se você não souber programar, pode ter dificuldades em entender boa parte do funcionamento dos serviços e, com certeza, não vai conseguir realizar experimentos mais complexos. Lembra que fizemos um experimento aqui neste site? Vide o artigo Desvendando Syn Floods. Lá precisamos programar pra testar o conceito.

Não vou recomendar um livro de linguagem C porque não conheço nenhum ideal. Mas tem muitos livros bons por aí. Procure um qualquer. Peça uma dica pra alguém. Não precisa gastar uma grana violenta. Não estou dizendo que é pra roubar o livro de uma loja. Ignorante!

E, quando entender a linguagem, estude a comunicação entre máquinas utilizando sockets. Não saia da cadeira enquanto não for perito em sockets e entender exatamente como o que você está fazendo se traduz na teoria de redes que você estudou. Eu posso recomendar a cola industrial que você vai usar pra não sair da cadeira 🙂

Right? Desistir é para os fracos. Quem disse que seria fácil?

[[ Evoluindo ]]

Não estou exagerando. Você tem que aprender essas coisas. É o conteúdo que você aprende, de forma superficial em um curso técnico, normalmente durante um ano.

Supomos que você passou uns seis meses estudando essas coisas. Ou, de forma espetacular, conseguiu aprender muito bem esses conceitos em menos tempo. Agora você sabe mais ou menos como o mundo funciona. É hora de entender serviços e segurança. Essa parte é vital.

Os assuntos do tópico anterior não precisam ser aprendidos ao ponto de você se tornar um professor universitário. Você vai poder ignorar um monte de coisas sem problemas. Daqui pra baixo, você precisa ser um ninja.

Só vou recomendar livros se eu conhecer algum muito bom. Tudo isso você acha fácil no Google. Aprenda a descobrir onde está a melhor informação. Procure sites sérios como o MSDN e o Technet da Microsoft, o site da Red Hat, o site da IBM, o site da Apache Foundation e sites de segurança.

Chega de vadiagem.

Comece estudando os mecanismos de segurança do seu sistema. Mas seja enjoado. Vá fundo na leitura.

No caso dos unixes, entenda como funciona o padrão rwx. Saiba o que é suid e sgid, você vai gostar dessa parte. Entenda um recurso chamado SELinux.

Estude as configurações de usuário. Saiba onde ficam as senhas e o que é o arquivo /etc/shadow. Entenda como esses arquivos funcionam.

Conheça os TCPWrappers. Entenda os arquivos hosts.allow e hosts.deny.

Estude o firewall do Linux, o IPTables. Entenda muito bem como ele funciona. Entenda o conceito de NAT. Entenda o tipo de resposta que um programa recebe ao se deparar com um firewall: Sem resposta? Erro de ICMP? Pesquise um pouco e saiba o que é uma DMZ.

Entenda o que é o SSL e o SSH. Muito bem.

Entenda o mecanismo de log do Linux. Muuuuuuuuuuito bem, afinal você quer evitar embaraços.

O artigo abaixo me pareceu um guia bom:

http://tldp.org/HOWTO/Security-HOWTO/

Não esqueça do Windows. Saiba como funciona o seu gerenciamento de usuários e as ACLs para os arquivos. Saiba onde esses dados ficam hospedados para as diversas versões de Windows.

Conheça a ferramenta runas. Saiba o que é o remote desktop e como usar. Entenda o modelo de compartilhamento.

Entenda o conceito de IPSec. Estude o básico do Windows firewall.

Aprenda COM/ActiveX e COM+ de forma básica.

E, obviamente, estude muito bem o Windows Event Log.

Cara.. aqui é technet e msdn.

Tá bom de sistema operacional por hora. Depois a gente volta. Vamos falar de serviços.

Estude, inicialmente, os Servidores Web. Estude o protocolo HTTP e que é o HTTPS. Saiba, nos mínimos detalhes, como funciona a comunicação de um navegador com um servidor web. Faça alguns experimentos. Saiba também como funciona o Javascript, o Java Applet e o Flash.

Antes de continuar lendo sobre serviços, aprenda a usar um sniffer. Se estiver no Windows, você pode usar o WireShark. Se estiver usando um unix-like (sim, o linux é um exemplo), pode usar o tcpdump ou similar. Depois falo mais sobre isso.

Sniffe (não é chorar!!) muitas vezes a comunicação entre o seu navegador e um servidor web qualquer na internet. Observe o que você capturou e entenda como aquilo se encaixa no que você estudou anteriormente.

Configure um servidor web na sua máquina. Estude o Apache (em Linux) E (AND) o IIS (for Windows).

Saiba como se hospeda um site nos dois e quais são as principais configurações. Estude as configurações de segurança de ambos.

O servidor web é o seu caminho para o sucesso. Eles costumam ser a ponte entre a sua máquina e o servidor que você quer acessar.

Nesse ponto, você já deve ter conhecimento o suficiente para entender as falhas de segurança de servidores web. Pare de estudar conceitos por um tempinho.

[[ Entendendo o Hacking ]]

Não sei se é o seu caso, mas se você já deu uma pesquisada em sites de hacking, você já ouviu falar em exploits. Eles são pequenos programas construídos especificamente pra explorar uma falha de segurança de algum sistema.

Os scripts do kid do mundo afora pulam tudo isso que eu te falei, pegam um exploit pronto e só lêem o manual de execução. Se você quer ser um executador de scripts, o problema é seu. Pare por aqui. Se você quer entender como a merda funciona de verdade, continue a jornada.

Agora você vai começar a ler alguns sites interessantes, que eu incluí como links desse site:

Phrack Artigos excelentes sobre hacking desde que inventaram isso!
SecurityFocus Um site mais sério sobre segurança que tem exploits pra muita coisa
The Hackers Choice O site de um grupo hacker alemão. Artigos espetaculares
Defcon Site de um dos maiores eventos hackers do mundo. Com vídeos das palestras!

Esses sites possuem alguns dos melhores artigos que eu já li. O cara te explica nos mínimos detalhes como ele hackeou algum sistema ou como fazer isso genericamente.

Pra você ir se divertindo, eu vou te recomendar a leitura dos seguintes artigos:

http://freeworld.thc.org/papers/fw-backd.htm

http://www.phrack.org/issues.html?issue=63&id=19#article

http://www.phrack.org/issues.html?issue=62&id=10#article

http://www.milw0rm.com/video/watch.php?id=103

http://www.milw0rm.com/papers/381

http://www.milw0rm.com/papers/284

O seu objetivo aqui é entender esses artigos. Na teoria, você já tem conhecimento o suficiente pra entendê-los. Se você viajar aqui, é porque pulou coisas importantes. Se você já se acha um hacker e viajou em todos eles… falta estudar um bocado.

[[ O que virá ]]

No próximo artigo, discutiremos o que fazer daí por diante. Já temos os conceitos. Já sabemos como funciona… mas como programar a nossa mente pra pensar hacking? Como conseguiremos burlar a segurança por nós mesmos? Sem colar!

See ya.