Após ter lido alguns posts absurdos com o tema "hacking" aqui no VOL e ler muitas respostas absurdas, decidi dedicar um tempo neste artigo, pelo simples fato de gostar de ajudar e de ter sido muito ajudado quando iniciante em Segurança da Informação.
Segue a lógica:
- 0x30 Introdução: Definição de hacker
- 0x31 Tabu
- 0x32 Meu sistema
- 0x33 Como iniciar
- 0x34 Conclusão
0x30 - Introdução: Definição de hacker
Let's begin!
O que será explicado aqui? Instalar um sistema de Pentest e brincar de hacker? Não. Não vou passar nenhum tipo de receita, não vou disponibilizar meu conhecimento, não será explicado como realizar Pentest de qualquer tipo e nem a configurar sistemas.
O propósito deste artigo é preparar o iniciante para saber o que estudar e como iniciar. Todavia, que não há nenhuma regra sobre ordem de estudo, mas começando do mais simples, talvez facilite para você que está iniciando.
Basicamente, a definição de hacker é uma pessoa que entende de computação e informática em geral; que se dedica a entender suas complexidades, programar e/ou adaptá-las.
Também é usar métodos não convencionais para fazer o que deseja em relação à área que se dedica. Um hacker sabe o que fazer se isso ou aquilo não funciona do modo esperado, ou sabe fazer isso ou aquilo funcionar ao seu modo.
Ser um hacker consiste, na maior parte do tempo, estar adaptando codes e funções de todo o tipo, do que propriamente escrevendo programas do zero.
Existem inúmeras maneiras de se definir um hacker, mas resumindo... a definição de hacker é uma pessoa que sabe o que faz não só no contexto de analisar/explorar vulnerabilidades "by mistake" de "Especialistas" formados em T.I/S.I, mas que também sabe o que faz em outras áreas relacionadas à sistemas e computação; desde desenvolvimento de componentes/hardware à consultoria.
0x31 - Tabu
Vamos abordar os que eu costumo ler:
"Se eu hackear o site deles, irei preso?"
Provavelmente não no Brasil, dependendo da importância do servidor. É quase improvável algo ser feito contra você, tendo em mente que é muito difícil processar por crimes cibernéticos.
Mas eu disse "provavelmente não". Se você não souber como realizar seus scans e invasões dificultando o rastreamento, ao realizar qualquer tipo de Pentest a servidores importantes, sempre existirá a possibilidade de você ser rastreado e processado; dependendo muito da capacidade dos administradores e dos "danos" causados.
"Eu uso
Linux/Unix, porque sou o hacker fodão das galáxia."
Bullshit! Não precisa usar Linux/Unix para ser um bom hacker. Você precisa entender o seu sistema primeiro e entender o sistema vítima, não é necessário mudar de sistema para analisar vulnerabilidades e explorá-las. Basta algumas ferramentas, informações e bom senso humano.
"Para ser um hacker, preciso aprender a programar?"
Se você quiser se limitar apenas às falhas de script web, não é necessário, mas alguma noção de linguagens web e saber adaptar scripts ajudará muito.
Ter alguma noção em Assembly, C, Python, Perl, Shell script e até mesmo VB, pode ser essencial na exploração de falhas mais complexas, como Remote/Arbitrary code execution, Arbitrary file upload, Buffer overflow, Broker injection, Privilege escalation e etc.
Vale lembrar, hacking envolve uma certa malícia ao observar um code e encontrar algum trecho possivelmente vulnerável que lhe permita explorar de alguma maneira, não significa que você precisa saber escrever ou adaptar shellcodes/exploits (mas deve aprender).
"Quero aprender a hackear pra invadir o Facebook da minha namorada."
Jovem, se esse é seu propósito, feche esta página imediatamente e vá jogar uplink.
0x32 - Meu sistema
Primeiramente, como muitos sabem, mas apenas os k1dd13s se recusam a aceitar, é que você deve antes de tudo conhecer o seu próprio sistema operacional, seja ele qual for.
Para quem quer iniciar no hacking, isso deve ser a prioridade porque, para obter sucesso ao explorar vulnerabilidades, é necessário um conhecimento avançado do sistema vítima.
Suponhamos que você se interessa por deface e quer fazer um deface nos sites do servidor. Como você vai achar as conf de virtual hosts, se não sabe nem pesquisar arquivos no próprio sistema?
"Eu uso Kali Linux e eu já sei pesquisar arquivos, no Gnome3 tem a barrinha de pesquisar."
Isso aí, sabichão! Pelo menos você já sabe o nome da sua distro... that is the first step. Conhecer o "meu sistema", eu me refiro primeiramente a saber instalar seu sistema, procurar descobrir suas vantagens e limitações.
Entender os comandos básicos, configurar sua rede local, saber como instalar softwares, drivers, firmwares, resolver eventuais problemas e, por fim, descobrir qual o seu objetivo pessoal.
"Mas eu uso Windows, o que adianta eu entender de Windows se a maioria dos servidores usam Linux/Unix?"
Nice question, segunda personalidade do Cristhoffer!
Adianta, tendo em mente o ponto de vista de que você já vai estar familiarizado com a ideia de manipular um sistema, seja ele qual for. Não importa se o servidor é Linux, você já sabe mexer no seu Windows, então o que te impede de aprender a mexer em outros sistemas também?
Isso mesmo, nada. Continue estudando.
"Meu objetivo é começar a estudar hacking e programação, qual sistema devo usar?"
Primeiro, que isso não tem tanta importância, supondo que você já saiba o que fazer, o sistema é apenas uma ferramenta. Depois de você entender seu sistema, como ele funciona, vantagens e limitações, realmente "domina-lo"; desinstale o desnecessário, instale o que você vai precisar, organize um sistema customizado e aprenda a configura-lo para o seu propósito.
Se você vai começar a estudar hacking e programação, perca menos tempo em jogos ou Facebook, e procure praticar (pesquisar, estudar, ler, entender, configurar, testar e fazer por si).
0x33 - Como iniciar
Vamos começar com a plataforma WEB, esqueça coisinhas de lammer, como trojans.exe/keyloggers. Você pode começar estudando o tipo de vulnerabilidade que quiser, mas como eu já disse, o ideal para aprender é começar do mais simples, do "início" e ir absorvendo conhecimento aos poucos, estudar falhas de script web como SQLi, LFI/RFI, RFU, CSRF/XSS e etc., antes de começar a estudar outros tipos de vulnerabilidades, é uma boa alternativa.
Entender que scripts mal escritos, funções depreciadas ou uso incorreto de algumas funções, pode tornar um programa (web ou não) vulnerável.
"Porque começar explorando falhas WEB?"
Deixe-me explicar: um script web é um programa para plataforma web (neste caso, levando em consideração apenas seu propósito mais comum, que é interação entre client-side e server-side) hospedado por um servidor web acessível pelo navegador cliente e outros programas, podendo manipular vários protocolos.
Falhas em script web são mais fáceis de identificar e relativamente fáceis de explorar, existem várias técnicas para explorar scripts web vulneráveis.
É mais fácil começar explorando falhas em script do que vulnerabilidades de host/serviço, portanto, eu recomendo estudar script web antes de passar para algo mais complexo.
"Como assim?"
Meu, tu tá cego? Começa estudando falhas de script e conforme você for se interessando por outras coisas, você tende a naturalmente ampliar seu conhecimento. É sempre bom lembrar, o interesse é a BASE e você pode começar estudando por onde você mais se interessar, não é uma regra começar por scripts web, eu apenas recomendo para quem está começando.
0x34 - Conclusão
O propósito é o objetivo. A motivação é o resultado e o interesse... jovem, o interesse sempre será a BASE.
Tenho planos de posteriormente, escrever um artigo sobre Pentest, envolvendo verificação e análise de sistemas/scripts vulneráveis com exemplos práticos, detalhando uso de ferramentas, alguns tipos de vulnerabilidades e o método de exploitation. Veremos.
NOTA DA MODERAÇÃO Entendemos que o artigo fala sobre crackers e não hackers, mas decidimos manter a nomenclatura original.