Esse post tem como objetivo esclarecer algumas dúvidas principais de iniciantes sobre Programação na área Hacking, dar dicas e indicar um bom material de estudo. Vamos lá.
1 - Perguntas Frenquentes
_1.1 - Sou iniciante neste mundo, por onde começar?
R: Tudo depende de seu intuito uma vez que a palavra "hackear" é muito genérica. Hackear pode ir desde invasão de sites até modificação de kernels para funcionamento em arquiteturas diferentes das quais foram projetadas. Ache um objetivo e mantenha o foco.
_1.2 - Qual a melhor Linguagem de Programação para 'Hackear'?
R: A arte de 'hackear' vai muito além de saber uma linguagem de programação, o primeiro passo a se fazer, é decidir qual será seu foco 'hacker', você irá 'hackear' sistemas web, banco de dados de aplicativos, modificar kernel?...
Além disso, devemos nos atentar que um Hacker deve saber Analisar e Programar, irei explicar mais a frente o que quero dizer.
_1.3 - Após eu decidir, o que devo analisar?
R: Aqui que vem a ajuda, independente do seu foco, você terá que entender o que é, e como funciona um OS(Operation System/Sistema Operacional, (e.g Windows, Linux)). O Fórum está cheio de material sobre isso, use o campo no canto superior direito.
Algumas simulações:
__1.3.1 - Você quer invadir o site, qual o primeiro passo para efetuar a invasão?
R: Bom, aqui entra um monte de variáveis situacionais que vocês devem conhecer com o tempo, e mudam de sistema pra sistema, mas você geralmente olha na URL e verifica se tem alguma informação sobre a linguagem utilizada. Se tiver algo como
.html, .php, .jsp, .asp....você conhecendo a linguagem, saberá na hora, mesmo sendo de marcação, script, ou qualquer outra.
Supondo que a página em questão utiliza PHP, você é um Hacker com conhecimento da linguagem e rodou um script para verificar o OS utilizado, versão do servidor, versão da linguagem e tudo mais, só com isso você já é capaz de criar um script explorando uma vulnerabilidade que por ventura contenha na tal linguagem.
Ponto de vista analítico.
Outra situação é identificar uma linguagem web que você não conhece, porém você tem informações do servidor, nesse exemplo vou exemplificar com o Apache 2.2.20. Um bom Hacker, bem informado, sabe que servidores Apache até a versão 2.2.26 são vulneráveis a ataque DDoS na sétima camada (informação verídica), então mesmo não sabendo a linguagem do sistema, ele pode criar um script ou software para explorar isso.
Ponto de vista programador.
É só um exemplo, pois temos o Slowloris que faria o mesmo..
__1.3.2 - Você quer invadir um computador, qual o primeiro passo para efetuar a invasão?
R: Esse tipo de invasão é o mais complexo, uma das maiores habilidades aqui, ou para qualquer área Hacking, é a Engenharia Social, saiba mais lendo o livro de um hacker:
Kevin Mitnick - A Arte de Enganar.
Aqui principalmente você terá que abusar do conhecimento do OS utilizado, tanto o Windows como o Linux, tem sua em sua maior compisição o uso da Linguagem C/C++, essas devem ser as linguagens que você deve domiinar no mínimo, porém tem trechos de código em Assembly, Python, Ruby, VB...quanto mais você souber, melhor. Não vou entrar em muitos detalhes em 'hacking' aqui, mas geralmente os passos para se invadir um computador é:
Conseguir o IP.
Scanear portas.
Explorar vulnerabilidades do OS.
Identificar processos em execução e possíveis falhas.
Injection em dll....
2 - Noções Básicas
_2.1 - Analista x Programador
Como eu disse acima, um Hacker deve saber Analisar e a Programar.
Mas qual a diferença? Como exemplifiquei na sessão 1.3.1, o lado Analista, com o conhecimento em analíse, vai dar ao Hacker informações importante que ele precisa para efetuar a invasão ou seja qual for seu objetivo. O maior benefício dessa habilidade, é conseguir ler códigos e identificar ou se aproximar do real propósito do mesmo.
Já o lado Programador de um Hacker, também exemplificado na sessão 1.3.1, é responsável por além de conseguir analisar o código e saber seu propósito, ele é capaz de melhora-lo a prol da comunidade Hacker. O maior benefício dessa habilidade, é criar scripts especifícos em casos especifícos de invasão.
_2.2 - Melhores Linguagens Analista & Programador
__2.2.1 - Linguagens para Analisar
Para conseguir entender os diversos sistemas existente, devemos ser capazes de analisar diversos códigos e suas linguagens. Segue as linguagens que eu recomendo.
HTML5, JavaScript, PHP, C, C++, Python, Ruby, Lisp, Haskell e CSS caso seja da zoeira.
Na minha opnião, se você souber analisar todas essas linguagens, pelo menos em nível intermediário, conseguirá analisar as restantes e pode se tornar um bom Hacker.
__2.2.2 - Linguagens para Programar
As linguagens que irei citar, serão baseadas em questões de aprendizado, comunidade e eficiência. Alguns são "fáceis" de aprender (e.g PHP), outras são recomendadas pois são usadas na maioria das ferramentas Open Source(Código Aberto) na comunidade Hacker (e.g Python) e devemos observar também a comunidade da linguagem, pessoas que dão suporte para futuras falhas, dúvidas e documentação. Python e Ruby se encaixam nesse último aspecto, a comunidade é muito receptiva e as documentações são excelentes. Enfim, segue a lista completa:
HTML5, JavaScript, C++, PHP, Python, Ruby, Shell e Perl.
3 - Material para iniciar os estudos
Tá ai uma pequena relação de materiais para você começar seus estudos.
OBS: O link na frente do nome da linguagem, é a documentação oficial.
____________________________________________________________________________________________________________________________
JavaScript - https://developer.mozilla.org/en-US/docs/Web/JavaScript
~ Inglês ~
http://www.w3schools.com/js/default.asp
http://survivejs.com/
http://chimera.labs.oreilly.com/books/1234000000262/index.html
http://gitbookio.gitbooks.io/javascript/content/en/index.html
http://addyosmani.com/resources/essentialjsdesignpatterns/book/
http://javascript.info/
~ Português ~
http://www.codecademy.com/pt-BR/tracks/javascript
https://www.youtube.com/playlist?list=PLcHPNq67CaVlq6_hp77DXwS9xQgZeaKf-
_______________________________________________________________________________
PHP - https://php.net/manual/pt_BR/index.php
~ Inglês ~
http://www.nusphere.com/php/php_tutorial.htm
http://www.php5-tutorial.com/
http://tut.php-quake.net/en/index.html
~ Português ~
http://www.codecademy.com/pt-BR/tracks/php
http://www.cursoemvideo.com/course/curso-php-iniciante/
http://br.phptherightway.com/
________________________________________________________________________________
Python - https://www.python.org/doc/versions/
~ Inglês ~
http://inventwithpython.com/hacking/chapters/
https://mega.co.nz/#!E0RmhQDC!5QD0TH1infATtN5nhfenYz7nh7_K7cz9hDaD6W7rRMA
http://opentechschool.github.io/python-beginners/en/index.html
http://learnpythonbreakpython.com/
http://openbookproject.net/thinkcs/python/english3e/
https://developers.google.com/edu/python/
~ Português ~
http://www.codecademy.com/pt-BR/tracks/python
https://www.youtube.com/playlist?list=PLUukMN0DTKCtbzhbYe2jdF4cr8MOWClXc
http://ark4n.files.wordpress.com/2010/01/python_para_desenvolvedores_2ed.pdf
Ruby - http://ruby-doc.org/
~ Inglês ~
http://ruby-hacking-guide.github.io/
http://learnrubythehardway.org/book/
http://mrdougwright.gitbooks.io/rubykin/content/
http://mislav.uniqpath.com/poignant-guide/book/
http://www.humblelittlerubybook.com/book/html/index.html
~ Português ~
http://www.codecademy.com/pt-BR/tracks/ruby
http://why.carlosbrando.com/
http://aprendaaprogramar.rubyonrails.com.br/
C - http://en.cppreference.com/w/c
~ Inglês ~
http://c.learncodethehardway.org/book/
http://pt.slideshare.net/olvemaudal/deep-c
http://www.bitsinthewind.com/about-dac/publications/using-c-on-the-unix-system
~ Português ~
https://www.youtube.com/user/italogross/playlists
https://www.youtube.com/user/excriptvideo/playlists
https://fiorix.wordpress.com/?attachment_id=493
C++ - http://en.cppreference.com/w/cpp
~ Inglês ~
http://www.learncpp.com/
http://www.cplusplus.com/doc/tutorial/
http://pt.slideshare.net/jonbonachon/c-for-hackers
~ Português ~
http://orion.lcg.ufrj.br/C++/curso/#
https://www.youtube.com/user/excriptvideo/playlists
Perl - http://doc.perl6.org/
~ Inglês ~
http://www.perl.org/books/library.html
http://www.greenteapress.com/perl/
http://modernperlbooks.com/books/modern_perl_2014/
http://perl-tutorial.org/
http://qntm.org/files/perl/perl.html
www.tutorialspoint.com/perl/
Shell Script - No Documentation Found
~ Português ~
http://www.devin.com.br/shell_script/
Lisp - http://lispdoc.com/index
~ Inglês ~
http://www.franz.com/resources/educational_resources/cooper.book.pdf
http://learnlispthehardway.org/book/
https://leanpub.com/lisphackers/read
Haskell - https://www.haskell.org/ ~ Português ~ http://haskell.tailorfontela.com.br/chapters https://pt.wikibooks.org/wiki/Haskell http://learnxinyminutes.com/docs/pt-br/haskell-pt/ http://www.portugal-a-programar.pt/forum/88-haskell/ http://wiki.portugal-a-programar.pt/tag:haskell?do=showtag&tag=haskell ~ Inglês ~ https://www.haskell.org/documentation
4 - Resumo
Bom, resumindo tudo, na área Hacking, a arte de analisar e programar é muito importante por diversos fatores, entre eles a agregação de informação e seu bom uso, conhecimento diversificado para melhorar ferramentas, conhecimento para entender a solução e consequentemente o problema e a habilidade de criar suas próprias ferramentas. Espero que todos tenham entendido o que eu quero passar pra vocês.
Agradeço a todos que leram até aqui e sou ousado em dizer que você tem potencial para ser um Hacker, logo que Hackers leem muito!
Fonte: http://ogatl57cbva6tncg.onion/index.php?t=msg&th=2466&start=0&


0 comentários:
Postar um comentário