Escolar Documentos
Profissional Documentos
Cultura Documentos
Computadores
Como Hackear Redes Sem Fio, Segurança Básica e Testes De
Penetração, Kali Linux, Seu Primeiro Hack
ALAN T. NORMAN
Tradutor: Duda Junqueira Machado
Copyright © 2020 - Todos os direitos reservados.
Nenhuma parte desta publicaçã o pode ser reproduzida, distribuı́da ou transmitida por qualquer forma
ou por qualquer meio, incluindo fotocó pia, gravaçã o ou outros meios eletrô nicos ou mecâ nicos, sem
autorizaçã o pré via e por escrito do editor, exceto no caso de breves citaçõ es disponibilizadas em
resenhas crı́ticas e alguns outros usos nã o comerciais, permitidas pela lei de direitos autorais.
O leitor recebe algumas orientaçõ es prá ticas sobre como con igurar e
praticar alguns hackings no nı́vel iniciante em Capítulo 8: Seu Primeiro
Hack. Dois exercı́cios sã o selecionados para ajudar o aspirante a hacker a
dar os primeiros passos com algumas ferramentas simples e equipamentos
baratos.
Capítulo9: Segurança Defensiva e Ética dos Hackers encerra esta introduçã o
ao hacking com algumas notas sobre como se proteger dos hackers, e
discute alguns dos problemas ilosó icos associados à é tica dos hackers.
Capı́tulo 1. O Que é Hacking?
E importante estabelecer as bases para uma introduçã o adequada ao
hacking de computador, discutindo primeiro alguns termos comumente
usados e esclarecendo quaisquer ambiguidades com relaçã o a seus
signi icados. Pro issionais de informá tica e entusiastas sé rios tendem a
usar muito jargã o, que evoluiu ao longo dos anos no que, tradicionalmente,
era uma camarilha muito fechada e exclusiva. Nem sempre é claro o que
certos termos signi icam, sem uma compreensã o do contexto em que eles
se desenvolveram. Embora, de modo algum, seja um lé xico completo, este
capı́tulo apresenta parte da linguagem bá sica usada entre hackers e
pro issionais de segurança de computadores. Outros termos aparecerã o
em capı́tulos posteriores, nos tó picos apropriados. Nenhuma destas
de iniçõ es é , de forma alguma, "o icial", mas representa um entendimento
de seu uso comum.
Este capı́tulo també m tenta esclarecer o que é hackear como atividade, o
que nã o é e quem sã o hackers. Representaçõ es e discussõ es sobre hackers
na cultura popular podem tender a pintar uma imagem excessivamente
simplista dos hackers e da atividade de hacking como um todo. De fato, um
entendimento preciso é perdido na traduçã o de chavõ es e conceitos
populares .
Hackers e Hacking
A palavra hacking , normalmente, evoca imagens de um ciber-criminoso
solitá rio, curvado sobre um computador e transferindo dinheiro à vontade
de um banco desavisado, ou baixando, com facilidade, documentos
con idenciais de um banco de dados do governo. No inglê s moderno, o
termo hacking pode assumir vá rios signi icados diferentes, dependendo do
contexto. Como uma questã o de uso geral, a palavra normalmente se refere
ao ato de explorar
Criminalidade
E claro que há consequê ncias legais para hackers lagrados invadindo um
sistema ou rede de computadores. Leis e penalidades especı́ icas variam
entre naçõ es e entre estados e municı́pios. A aplicaçã o das leis també m
varia entre as naçõ es. Alguns governos simplesmente nã o priorizam a açã o
penal, especialmente quando as vı́timas estã o fora de seu pró prio paı́s. Isto
permite que muitos hackers operem impunemente em certas partes do
mundo. De fato, algumas naçõ es avançadas tê m elementos em seus
governos nos quais o hacking é uma funçã o prevista. Algumas agê ncias
militares e civis de segurança e aplicaçã o da lei apresentam divisõ es cujo
mandato é invadir os sistemas sensı́veis de adversá rios estrangeiros. E um
ponto de discó rdia quando algumas destas agê ncias invadem arquivos e
comunicaçõ es particulares de seus pró prios cidadã os, muitas vezes
levando a consequê ncias polı́ticas.
Vítimas
As vı́timas de hacking variam de ser destinatá rios de piadas e trotes
relativamente inofensivos nas mı́dias sociais, a serem publicamente
envergonhadas pelo lançamento de fotos ou e-mails pessoais, ou ainda, a
vı́timas de roubo, vı́rus destrutivos e chantagem. Nos casos mais graves de
hacking, em que a segurança nacional é ameaçada pela liberaçã o de
informaçõ es con idenciais ou pela destruiçã o de infraestrutura crı́tica, a
sociedade como um todo é a vı́tima.
O roubo de identidade é um dos crimes de computador mais comuns. Os
hackers direcionam as informaçõ es pessoais de indivı́duos inocentes,
usando os dados para ganho pessoal ou vendendo-os para outras pessoas.
As vı́timas geralmente nã o sabem que suas informaçõ es foram
comprometidas, até verem atividades nã o autorizadas no cartã o de cré dito
ou nas contas bancá rias. Embora os dados pessoais sejam frequentemente
obtidos por hackers visando vı́timas individuais, alguns criminosos
so isticados conseguiram, nos ú ltimos anos, acessar grandes bancos de
dados de informaçõ es pessoais e inanceiras, invadindo servidores de
varejistas e provedores de serviços on-line com milhõ es de contas de
clientes. Estas violaçõ es de dados de alta visibilidade tê m um custo enorme
em termos monetá rios, mas també m prejudicam a reputaçã o das
empresas-alvo, e abalam a con iança do pú blico na segurança da
informaçã o. Violaçõ es de dados semelhantes resultaram na distribuiçã o
pú blica de e-mails e fotogra ias pessoais, muitas vezes causando vergonha,
prejudicando relacionamentos e resultando na perda de emprego das
vı́timas.
Custos de Prevenção
Existe um clá ssico "Ardil-22" quando se trata da prevençã o de hackers.
Para a maioria das pessoas, é preciso pouco mais que senso comum,
vigilâ ncia, boas prá ticas de segurança e alguns softwares disponı́veis
gratuitamente para se manter protegido da maioria dos ataques. No
entanto, com o aumento da popularidade da computaçã o em nuvem, onde
os arquivos sã o armazenados em um servidor externo, alé m de ou em vez
de em dispositivos pessoais, os indivı́duos tê m menos controle sobre a
segurança de seus pró prios dados. Isto
impõ e um grande ô nus inanceiro aos guardiõ es dos servidores em nuvem,
de forma a proteger um volume cada vez mais alto de informaçõ es pessoais
centralizadas.
Assim, grandes empresas e entidades governamentais costumam gastar,
anualmente, em segurança de computadores, dinheiro igual ou a mais do
que poderiam perder nos ataques mais comuns. No entanto, estas medidas
sã o necessá rias porque um ataque so isticado e bem-sucedido, em larga
escala - embora imprová vel - , pode ter consequê ncias catastró icas. Da
mesma forma, indivı́duos que desejam se proteger de criminosos
ciberné ticos adquirem software de segurança ou serviços de proteçã o
contra roubo de identidade. Estes custos, juntamente com o tempo e o
esforço despendidos praticando boa segurança das informaçõ es, podem
ser um fardo indesejá vel.
Vulnerabilidades
Vulnerabilidades nos sistemas de computaçã o e rede sempre existiram e
sempre existirã o. Nenhum sistema pode ser 100% hermé tico porque
algué m sempre precisará acessar as informaçõ es ou serviços que estã o
sendo protegidos. Alé m disso, a presença de usuá rios humanos representa
uma vulnerabilidade por si só , porque as pessoas sã o notoriamente ruins
em praticar boa segurança. A medida que as vulnerabilidades sã o
descobertas e corrigidas, outras novas as substituem, quase
instantaneamente. A alternâ ncia entre a exploraçã o de hackers e a
implementaçã o de medidas de segurança representa uma verdadeira
corrida armamentista, com cada lado se tornando mais so isticado em
paralelo.
Vulnerabilidades Humanas
Uma vulnerabilidade raramente discutida é a do usuá rio humano. A
maioria dos usuá rios de computadores e sistemas de informaçã o nã o sã o
especialistas em informá tica ou pro issionais de segurança ciberné tica. A
maioria dos usuá rios sabe muito pouco sobre o que acontece entre seus
pontos de interface e os dados ou serviços que estã o acessando. E difı́cil
fazer com que as pessoas, em larga escala, mudem seus há bitos e usem as
prá ticas recomendadas para de inir senhas, veri icar cuidadosamente os
emails, evitar sites maliciosos e manter o software atualizado. Empresas e
agê ncias governamentais gastam muito tempo e recursos treinando
funcioná rios para seguir os procedimentos adequados de segurança da
informaçã o, mas é necessá rio apenas um elo fraco da cadeia para dar aos
hackers a janela que eles procuram para acessar um sistema ou rede
inteira.
Vulnerabilidades de Software
Todos os computadores con iam no software (ou " irmware", em alguns
dispositivos) para converter comandos de entrada ou usuá rio em açã o. O
software gerencia logins de usuá rios, realiza consultas a bancos de dados,
executa envios de formulá rios de sites, controla hardware e perifé ricos e
gerencia outros aspectos da funcionalidade do computador e da rede que
podem ser explorados por um hacker. Alé m do fato de que os
programadores cometem erros e omissõ es, é impossı́vel para os
desenvolvedores de software antecipar todas as vulnerabilidades possı́veis
em seu có digo. O má ximo que os desenvolvedores podem esperar é corrigir
e alterar seus softwares
Exploraçõ es
Encontrar e explorar vulnerabilidades para obter acesso aos sistemas é
uma arte e uma ciê ncia. Devido à natureza dinâ mica da segurança da
informaçã o, existe um jogo constante de "gato e rato" entre hackers e
pro issionais de segurança, e até mesmo entre adversá rios de naçõ es. Para
permanecer à frente (ou pelo menos nã o icar muito para trá s), é preciso
nã o apenas icar a par das ú ltimas tecnologias e vulnerabilidades, mas
també m ser capaz de prever como os hackers e o pessoal de segurança
reagirã o à s mudanças no sistema. paisagem geral.
Acesso
O objetivo mais comum da exploraçã o é obter acesso e algum nı́vel de
controle de um sistema de destino. Como muitos sistemas tê m vá rios nı́veis
de acesso para ins de segurança, geralmente ocorre que cada nı́vel de
acesso tem sua pró pria camada de vulnerabilidades sendo, geralmente,
mais difı́cil de invadir conforme existam funcionalidades mais vitais. O
golpe inal de acesso para um hacker é atingir o nı́vel de super usuá rio ou
raiz - um termo UNIX - conhecido como "obtendo raiz" na linguagem dos
hackers. Este nı́vel mais alto permite o controle do usuá rio de todos os
sistemas, arquivos, bancos de dados e con iguraçõ es em um determinado
sistema independente.
Negando Acesso
Em muitos casos, obter acesso a um determinado sistema de destino é
impossı́vel, extremamente difı́cil, ou nem mesmo desejado por um hacker.
As vezes, o objetivo de um hacker é simplesmente impedir que usuá rios
legı́timos acessem um site ou rede. Este tipo de atividade é conhecida como
negação de serviço (DoS). O propó sito de conduzir um ataque DoS pode
variar. Uma vez que é relativamente simples de executar, muitas vezes é um
exercı́cio iniciante para um hacker inexperiente ("novato", "n00b" ou
"neó ito") na linguagem) para ganhar direito de se gabar. Hackers mais
experientes podem executar ataques DoS sustentados, que interrompem
servidores comerciais ou governamentais por um longo perı́odo de tempo.
Assim, grupos organizados de hackers muitas vezes mantê m um site
"refé m" e exigem um resgate dos proprietá rios em troca de parar o ataque,
tudo sem nunca ter que ter acesso.
Capı́tulo 3. Primeiros Passos
Os hackers tê m a reputaçã o de serem indivı́duos altamente inteligentes e
prodigiosos em muitos aspectos. Pode, portanto, parecer ser uma tarefa
trabalhosa e difı́cil começar do zero e alcançar qualquer nı́vel prá tico de
pro iciê ncia . Deve-se lembrar que todos devem começar em algum lugar
quando aprendem uma maté ria ou habilidade. Com dedicaçã o e
perseverança, é possı́vel ir tã o longe no mundo do hacking quanto sua
vontade puder levá -lo. Uma coisa que vai ajudar no processo de se tornar
um hacker é de inir algumas metas. Pergunte a si mesmo por que você
quer aprender hacking e o que você pretende realizar. Alguns só querem
aprender o bá sico para que possam entender como proteger a si mesmos,
sua famı́lia ou seus negó cios contra ataques maliciosos. Outros estã o
procurando se preparar para uma carreira em hacking de chapé u branco
ou segurança da informaçã o. Quaisquer que sejam suas razõ es, você deve
se preparar para aprender um pouco de novos conhecimentos e
habilidades.
Aprendizagem
A arma mais importante no arsenal de um hacker é o conhecimento. Nã o só
é importante que um hacker aprenda o má ximo possı́vel sobre
computadores, redes e softwares - mas, para se manter competitivo e
e icaz, eles devem manter-se atualizados sobre as constantes e rá pidas
mudanças nos computadores e na segurança dos computadores. Nã o é
necessá rio que um hacker seja um engenheiro, cientista da computaçã o ou
tenha conhecimento ı́ntimo de microprocessador ou design de hardware
de computador, mas eles devem entender como um computador funciona,
os componentes principais e como eles interagem, como os computadores
sã o em rede local e atravé s da internet, como os usuá rios normalmente
interagem com suas má quinas, e - o mais importante - como o software
dita a funçã o do computador. Um excelente hacker é luente e
experimentado em vá rias linguagens de computador e entende os
principais sistemas operacionais. E també m é muito ú til para um hacker
estar familiarizado com a histó ria, matemá tica e prá tica de criptogra ia.
E possı́vel, e cada vez mais comum, para um leigo, com pouca experiê ncia
de hacking e apenas conhecimento leve ou intermediá rio sobre
programaçã o, realizar um ataque contra um sistema. Muitas vezes as
pessoas fazem isso usando scripts e seguindo procedimentos que foram
desenvolvidos por operadores mais experientes. Isto acontece mais
comumente com tipos mais simples de ataques, como negaçã o de serviço.
Esses hackers inexperientes sã o conhecidos na comunidade de hackers
como script kiddies (garotos dos scripts) . O problema com este tipo de
atividade é que os criminosos tê m pouca apreciaçã o pelo que está
acontecendo no có digo que estã o executando, e podem nã o ser capazes de
antecipar efeitos colaterais ou outras consequê ncias nã o intencionais. E
melhor entender completamente o que você está fazendo antes de tentar
um ataque.
Computadores e Processadores
Os computadores variam em tamanho, forma e propó sito, mas a maioria
deles tem, essencialmente, o mesmo design. Um bom hacker deve estudar
como os computadores evoluı́ram desde as primeiras má quinas no sé culo
20 até as má quinas muito mais so isticadas que usamos hoje. No processo,
torna-se evidente que os computadores tê m os mesmos componentes
bá sicos. Para ser um hacker e icaz, você deve conhecer os diferentes tipos
de processadores que existem na maioria dos computadores modernos.
Por exemplo, os trê s maiores fabricantes de microprocessadores sã o intel,
American Micro Devices (AMD) e Motorola. Estes processadores
compreendem a maioria dos computadores pessoais que um hacker
encontrará , mas cada um tem seu pró prio conjunto de instruçõ es ú nico.
Embora a maioria dos hackers raramente tenha que lidar com linguagens
de programaçã o no nı́vel da má quina, ataques mais so isticados podem
exigir uma compreensã o das diferenças entre os conjuntos de instruçõ es
do processador.
Alguns processadores sã o programá veis pelo usuá rio inal. Estes sã o
conhecidos como Field-Programmable Gate Arrays (FPGA) e estã o sendo
usados cada vez mais para sistemas embarcados, particularmente em
controles industriais. Os hackers sã o conhecidos por obter acesso a esses
chips enquanto estã o em produçã o, a im de implantar software malicioso
no destino inal. Uma compreensã o da arquitetura e programaçã o FPGA é
necessá ria para estes tipos de ataques so isticados. Estes ataques
incorporados sã o particularmente preocupantes a clientes militares e
industriais que compram chips em larga escala para sistemas crı́ticos.
Rede e Protocolos
Um dos assuntos mais importantes para o aspirante a hacker estudar é o
da arquitetura de rede e protocolos. Os computadores podem estar em
rede em muitas con iguraçõ es e tamanhos diferentes, e com diferentes
tecnologias que regem sua interconexã o. Desde io de cobre, até ibra
ó ptica, até conexõ es sem io e saté lite, bem como combinaçõ es de todas
estas mı́dias, construı́mos uma vasta rede de computadores em todo o
mundo. Esta rede pode ser entendida em sua totalidade, em grande escala,
bem como vista como uma conexã o de redes menores e independentes.
Linguagens de Programação
Para quem nunca o fez antes, pode parecer assustador aprender uma
linguagem de programaçã o do zero, mas muitas pessoas acham que, uma
vez que se tornam pro icientes em uma linguagem de programaçã o, é
muito mais fá cil e rá pido aprender outras. Os hackers nã o só precisam
entender linguagens de programaçã o para serem capazes de explorar
vulnerabilidades de software, mas muitos hackers precisam escrever seu
pró prio có digo, para serem capazes de executar um ataque especı́ ico. Ler,
entender e escrever có digos é fundamental para hackear.
As linguagens de programaçã o variam de có digo de má quina muito
obscuro, que está em formato biná rio e hexadecimal e é usado para se
comunicar diretamente com um processador, até linguagens orientadas a
objetos de alto nı́vel, que sã o usadas para o desenvolvimento de software.
As linguagens comuns orientadas a objetos de alto nı́vel sã o C++ e Java . O
có digo escrito em idiomas de alto nı́vel é compilado no có digo de má quina
apropriado para um determinado processador, o que torna as linguagens
de alto nı́vel muito portá teis entre diferentes tipos de má quinas. Outra
categoria é uma linguagem roteirizada, onde os comandos sã o executados
linha por linha em vez de serem compilados em có digo de má quina.
Aprender linguagens de programaçã o leva tempo e prá tica - nã o há outra
maneira de se tornar pro iciente. Longas noites e maratonas noturnas de
escrita, depuraçã o e recompilaçã o de có digos sã o um rito comum de
passagem entre hackers iniciantes.
Capı́tulo 4. Kit de Ferramentas do Hacker
Mesmo armado com conhecimento, desenvoltura e a quantidade certa de
perseverança teimosa, o hacker ainda precisa de um certo conjunto de
ferramentas fı́sicas para realizar um ataque. No entanto, hacking nã o
precisa ser uma pro issã o ou hobby caro. A maioria das ferramentas de
software de que um hacker precisa pode ser obtida livremente porque sã o
produtos de có digo aberto. Nem um hacker precisa de milhares de dó lares
em equipamentos de computaçã o de alta potê ncia - para a maioria dos
ataques, um simples laptop ou computador desktop com uma quantidade
razoá vel de memó ria, armazenamento e velocidade do processador será
su iciente. Ao longo das dé cadas, os hackers tornaram-se notó rios por
realizar grandes feitos com orçamentos relativamente baixos. Embora cada
indivı́duo precise decidir por si mesmo qual combinaçã o de hardware e
software ele precisa para seus objetivos particulares, este capı́tulo servirá
como um guia para ajudar a entender quais diferentes opçõ es estã o
disponı́veis e sã o preferidas na comunidade hacking .
Kali Linux
Anteriormente conhecido como Backtrack, Kali é um popular sistema
operacional Linux de có digo aberto para hackers. Kali (as distribuiçõ es
mais recentes do Kali Linux podem ser encontradas em
www.kali.org/downloads ) pode ser instalado em uma má quina dedicada,
ou executado a partir de uma má quina virtual dentro de outro sistema
operacional. Ao longo dos anos, Kali evoluiu para conter uma grande
variedade dos programas de avaliaçã o e exploraçã o de vulnerabilidades
mais ú teis. E uma das primeiras ferramentas que um hacker iniciante deve
obter. Kali nã o só fornece prá tica usando uma plataforma Linux, mas
també m conté m tudo o que um hacker precisa para realizar alguns dos
ataques mais bá sicos de nı́vel inferior, a im de obter uma experiê ncia
valiosa.
Uma Captura de Tela do Kali Linux com um Menu de Ferramentas
Distribuições Forenses
O Sistema Operacional Linux també m está disponı́vel em vá rias
distribuiçõ es gratuitas, destinadas a ser usadas para aná lise forense do
computador. Estas distribuiçõ es contê m ferramentas que permitem aos
pro issionais de segurança procurar vestı́gios de um ataque de computador
em uma má quina vı́tima. Os hackers també m usam estas distribuiçõ es
quando estã o praticando ataques, para que possam aprender a evitar
serem detectados.
Máquinas Virtuais
Máquinas virtuais sã o programas que emulam o comportamento de
certas plataformas de hardware dentro dos limites de um sistema
operacional existente. Isso permite que o usuá rio instale vá rios sistemas
operacionais em uma peça de hardware, tratando cada um como se fosse
uma má quina separada. A manutençã o de má quinas virtuais nã o só dá ao
hacker a capacidade de executar vá rias ferramentas de hackers diferentes,
mas també m oferece a oportunidade de praticar habilidades de hacking
em uma "caixa de areia" sem consequê ncias. Uma té cnica comum para
praticar ataques é instalar um sistema operacional equivalente a um alvo
potencial dentro de uma má quina virtual, e praticar atacar as
vulnerabilidades conhecidas desse sistema, e até mesmo sondar outras
mais. E bastante fá cil obter versõ es gratuitas de sistemas operacionais
antigos e extintos - como algumas das versõ es mais antigas do Windows -
juntamente com uma lista das vulnerabilidades desta versã o em particular.
Ter um SO instalado em uma má quina virtual que nã o tenha sido corrigido
com suas ú ltimas atualizaçõ es de segurança dá ao hacker uma maneira
perfeita de praticar ataques sem a preocupaçã o de dani icar um sistema de
destino ou agir em desacordo com a lei.
Linguagens de Programaçã o
Computadores sã o servos da humanidade, mas nã o sabem o que fazer sem
instruçõ es claras. Como a linguagem biná ria das má quinas é muito difı́cil
para os programadores humanos conceituarem e icientemente,
desenvolvemos linguagens de programaçã o mais pró ximas da linguagem
humana, que podem entã o ser traduzidas para a má quina entender. As
linguagens de computador evoluı́ram de scripts simples linha por linha,
para linguagens estruturadas mais modulares, para as linguagens
avançadas orientadas a objetos que sã o usadas para desenvolver software
hoje em dia. Os idiomas roteirizados, no entanto, ainda desempenham um
papel importante nas operaçõ es de computador e rede. Uma vez que os
programas sã o escritos por pessoas, eles estã o, naturalmente, sujeitos a
erros. Estes erros nã o sã o apenas erros nã o intencionais na codi icaçã o
real, mas descuidos no planejamento do pró prio programa. Estes erros sã o
o que os hackers procuram ao tentar obter acesso nã o autorizado aos seus
sistemas de destino. Portanto, é fundamental que os hackers obtenham os
compiladores e inté rpretes necessá rios para se tornarem luentes em
algumas linguagens de programaçã o importantes, e pelo menos
minimamente familiarizados com vá rias outras. A maioria dessas
ferramentas de programaçã o sã o de có digo aberto e estã o disponı́veis
livremente, de uma forma ou de outra.
Linguagens Interpretadas
As linguagens orientadas a objetos sã o altamente estruturadas e
modularizadas. Um ú nico comando no có digo de uma linguagem orientada
a objetos nã o pode ser executada por conta pró pria sem o contexto do
resto do programa. E por isso que as linguagens orientadas a objetos
devem usar um compilador para traduzir o programa em có digo de
má quina antes que ele possa ser compreendido pelo computador. Embora
isto seja ú til para programas maiores e mais complexos, pode ser
exagerado e desnecessariamente demorado para tarefas de programaçã o
mais curtas. Uma linguagem interpretada, por outro lado, é executada (na
maior parte) em uma base linha por linha pelo computador, permitindo
correçõ es rá pidas e depuraçã o mais intuitiva.
Engenharia Social
Os usuá rios humanos sã o frequentemente o elo mais fraco na "está gios de
in iltraçã o" da segurança do computador. Muitos usuá rios nã o só tê m
pouca compreensã o dos sistemas que estã o usando, mas també m tendem a
ter pouca apreciaçã o pela natureza das ameaças ciberné ticas, e tê m pouca
vontade de aplicar tempo e esforço para se proteger. Embora as pessoas
estejam começando a se tornar mais conscientes, ainda há alvos humanos
fá ceis o su iciente para os hackers explorarem. Engenharia Social é a
atividade de usar reconhecimento simples ou truques para obter senhas ou
acesso, diretamente de usuá rios desavisados. A engenharia social requer
pouca experiê ncia té cnica e é preferida pelos hackers aos ataques mais
difı́ceis e arriscados, envolvendo mé todos intrusivos.
Exploraçõ es da Web
Existem muitos tipos de vulnerabilidades da Web e exploraçõ es associadas
- e novas surgem tã o rapidamente quanto as antigas sã o eliminadas.
Existem dezenas de linguagens que sã o reunidos em vá rias combinaçõ es
para criar um site ou aplicativo web, e vulnerabilidades podem existir em
qualquer lugar dentro dessa estrutura. Estã o listados aqui alguns exemplos
de exploraçõ es comuns que ilustram como os hackers usam
vulnerabilidades a seu favor.
SQL Injection
A linguagem de consulta de banco de dados SQL é amplamente onipresente
na World Wide Web. E usada mais frequentemente dentro de outro có digo
web para gerenciar logins de usuá rio e solicitaçõ es de acesso ao banco de
dados. Uma vez que uma consulta de banco de dados conté m
inevitavelmente strings que se originam da entrada do usuá rio, ela é
naturalmente vulnerá vel à manipulaçã o. SQL injection é uma exploraçã o
web que se aproveita da sintaxe da pró pria linguagem SQL. O SQL usa
operaçõ es ló gicas booleanas como AND e OR para conectar segmentos de
declaraçã o, incluindo strings que foram inseridas pelo usuá rio. Uma
declaraçã o SQL tı́pica para um login de usuá rio pode ser semelhante à
seguinte:
SELECIONE * DO banco de dados ONDE o usuá rio = ' ' + nome de usuá rio +
'' ';
A instruçã o acima inserirá a sequê ncia de entrada de usuá rio
correspondente ao campo do usuá rio na variá vel "nome de usuá rio" na
instruçã o. Esta instruçã o espera que o usuá rio insira uma sequê ncia de
nomes de usuá rio simples e tı́picos. Como a maioria das vulnerabilidades
que os hackers procuram explorar, o uso nã o intencional do campo de
entrada do usuá rio pode resultar em comportamento inesperado. Hackers
inteligentes aprenderam a explorar a sintaxe SQL para obter acesso a
contas de usuá rio inserindo strings especiais em campos de usuá rio que
fazem com que certos comandos SQL desejados sejam executados. Por
exemplo, a sequê ncia a seguir pode parecer uma bobagem ou de outra
forma desinteressante quando inserida como um nome de usuá rio:
' OU '1'='1
No entanto, se o inté rprete SQL tomar o comando resultante literalmente,
ele lerá :
SELECIONE * DO banco de dados ONDE o usuá rio = ' ' + nome de usuá rio= '
' OU 1=1;
Quando este comando for executado, ele será lido como (parafraseando em
inglê s simples):
"selecione todos os registros do banco de dados onde o usuá rio é ' ' OR
1=1"
Provavelmente nã o haverá nomes de usuá rio que sejam uma sequê ncia de
string em branco, mas a presença da palavra-chave 'OR' signi ica que o
comando será executado se qualquer clá usula em cada lado do OR (usuá rio
=' ' OU 1=1) for verdadeira. Uma vez que 1=1 é sempre verdadeiro, o
comando deve ser executado. Qualquer a irmaçã o sempre verdadeira pode
ser colocada apó s o OR, mas 1=1 é uma opçã o e iciente. A inserçã o de um
segmento de comando atravé s da sequê ncia de usuá rio é o motivo pelo
qual este procedimento é chamado de "injeçã o". Este é um exemplo
simples, e a maioria dos sites agora tem salvaguardas contra tal
ataque bá sico, mas a injeçã o (outros scripts alé m do SQL podem ser
vulnerá veis à injeçã o) continua a ser uma ameaça comum e serve como um
exemplo ilustrativo de explorar uma vulnerabilidade de software. Existem
vá rios sites que permitem que hackers pratiquem ataques de injeçã o
contra sites simulados com vulnerabilidades SQL conhecidas.
Manipulação de URL
O endereço web, ou URL (Universal Resource Locator, localizador universal
de recursos) de um site nã o só conté m informaçõ es sobre a localizaçã o da
rede dos arquivos de recursos de um site, mas muitas vezes conté m outras
informaçõ es que sã o passadas para o aplicativo web apó s algum tipo de
interaçã o do usuá rio. Estas informaçõ es podem ser codi icadas, ou podem
seguir algum tipo de esquema semâ ntico. Como um exemplo simples,
considere um mecanismo de pesquisa ictı́cio com a seguinte URL
domé stica:
http://www.acmesearch.com/
Quando um usuá rio insere um termo de pesquisa no formulá rio e clica no
botã o enviar, o site pode anexar automaticamente a url com os termos de
pesquisa de acordo com algum formato. Esta é uma maneira de passar
informaçõ es para scripts web e consultas de banco de dados, a im de
atender a solicitaçã o do usuá rio. Portanto, se o usuá rio deste mecanismo
de pesquisa hipoté tico estiver procurando por "hacking iniciante", o site
poderá enviar a seguinte URL (ou algo semelhante):
http://www.acmesearch.com/search?=beginner+hacking
Se um usuá rio perceber o padrã o, ele pode facilmente descobrir que pode
contornar o formulá rio da Web para interface com usuá rio e simplesmente
digitar seus termos de pesquisa no esquema de URL que ele
observado. Este tipo de manipulação de URL é , naturalmente, bastante
inó cuo quando usado em serviços como mecanismos de busca. No entanto,
nos primeiros dias do comé rcio na web, estes tipos de semâ ntica simples
de URL eram realmente usados para enviar pedidos de produtos. Nã o
demorou muito para que os hackers descobrissem como manipular o valor
do pagamento, bem como o tipo e o nú mero de produtos que estavam
solicitando. Embora a maioria dos comerciantes on-line agora tenha um
processo mais seguro, ainda existem muitos tipos de sites e serviços que
possuem vulnerabilidades que podem ser exploradas atravé s da
manipulaçã o de URL.
Quando um usuá rio faz login em um site seguro, este site concede acesso
aos recursos em seu servidor. Normalmente, este acesso é concedido
apenas a este usuá rio especı́ ico para a sessã o de logon ú nico. Uma vez que
o usuá rio efetue logout ou feche o site, ele precisará fazer login novamente
e iniciar uma nova sessã o para acesso. As informaçõ es da sessã o sã o
armazenadas no sistema do usuá rio atravé s do uso de cookies , que sã o
pequenos arquivos que contê m informaçõ es ú teis sobre o estado de uma
sessã o especı́ ica. Os cookies de sessã o ou cookies de autenticação ,
informam ao servidor que um usuá rio está conectado no momento. Se um
hacker conseguir interceptar um cookie de sessã o inseguro, ele poderá
duplicá -lo em sua pró pria má quina e usá -lo para obter acesso a um sistema
de destino enquanto o usuá rio estiver na sessã o atual. Por exemplo, se um
usuá rio estiver conectado à sua conta bancá ria, um cookie de sessã o
colocado no computador pelo banco informa ao servidor do banco que nã o
há problema em continuar permitindo que o usuá rio acesse a conta. Se um
hacker conseguir obter esse cookie de sessã o especı́ ico em sua pró pria
má quina, poderá enganar o servidor do banco para permitir o acesso a
essa conta. Os hackers conseguem isso criando um site falso que eles
acreditam que muitos usuá rios desejam visitar. Como os usuá rios
costumam usar a web com vá rias guias ou janelas do navegador abertas
simultaneamente, o hacker espera que os usuá rios façam login em alguma
conta segura e també m façam login em seu site malicioso. Quando os
usuá rios estã o interagindo com o site do hacker, eles estã o executando
scripts sem saber, atravé s de seu pró prio navegador, enviando comandos
para o site seguro. Como o site seguro (por exemplo, o banco) está
permitindo o acesso durante a sessã o, nã o há como saber que a solicitaçã o
nã o é legı́tima. Esse ataque é conhecido como falsi icaçã o de solicitaçã o
entre sites cross-site request forgery (CSRF) . Uma maneira comum de
executar um ataque CSRF é injetar uma solicitaçã o falsa do servidor em
algo relativamente inocente, como um link para uma imagem ou algum
outro elemento do site. Isto manté m o có digo oculto da visã o do usuá rio.
DoS Básico
A idé ia essencial por trá s de um ataque de negaçã o de serviço é forjar os
sinalizadores dentro de um cabeçalho de pacote IP para induzir um
servidor a transmitir solicitaçõ es ACK repetidas. A maneira mais simples
de fazer isso é interromper o processo tradicional de handshake entre as
etapas dois e trê s acima. Quando o destinatá rio envia uma solicitaçã o de
con irmaçã o ao remetente original, espera outro pacote de con irmaçã o
para que a comunicaçã o possa começar. No entanto, se o remetente
responder com outra solicitaçã o SYN, o destinatá rio será forçado a
responder com outro pacote ACK. Se esse vai-e-vem continuar, ele vincula
recursos de rede e portas na má quina do servidor. A situaçã o é aná loga a
uma piada de "bate-bate à porta" que nunca termina... ("knock-knock",
"who's there?", "knock-knock", "who's there?", "knock-knock", "who's
there?", bate-bate, quem está aı́? etc.). Este tipo de ataque simples do DoS é
conhecido como SYN looding (inundação de SYN) . Existem vá rios
mé todos de execuçã o de um ataque DoS, a maioria dos quais se aproveitam
de vulnerabilidades dentro do pró prio protocolo TCP/IP.
DoS Distribuído
Um ataque distribuído de negação de serviço (DDoS) é aquele em que um
hacker ou um grupo de hackers é capaz de executar um ataque DoS
coordenado de um grande nú mero de má quinas. Trabalhando em conjunto,
as má quinas que transmitem os pacotes de ataque podem simplesmente
sobrecarregar um sistema de destino ao ponto em que o servidor é
inalcançá vel por usuá rios legı́timos, ou
tã o lento em resposta à s solicitaçõ es do usuá rio que se torna virtualmente
inutilizá vel. Na maioria dos casos, as má quinas que estã o transmitindo os
pacotes relacionados ao ataque nã o estã o nem mesmo na posse dos
hackers que estã o executando o ataque. Quando os hackers estã o se
preparando para um grande ataque DDoS, eles implantam có digo malicioso
em tantas má quinas quanto possı́vel, pertencentes a usuá rios que se
tornam participantes involuntá rios do ataque. Muitas vezes, estas
má quinas estã o espalhadas por uma grande á rea geográ ica e vá rias redes,
à s vezes até mesmo em todo o mundo, di icultando que as autoridades ou a
equipe de segurança de um sistema vitimizado cortem o ataque.
Malware
A palavra malware é um neologismo, descrevendo soft(ware) (mal)icioso.
O termo abrange muitos tipos diferentes de software que podem ser
implantados em uma má quina alvo por hackers, buscando causar danos ou
tomar o controle de uma parte do alvo ou de tudo. O malware é um
problema generalizado e sé rio em toda a internet. Existem inú meras
maneiras pelas quais o malware pode se comportar, uma vez ativado em
uma má quina host. Alguns sã o projetados para se espalhar para outras
má quinas enquanto outros permanecem secretamente em uma má quina
host para coletar informaçõ es con idenciais para o hacker, amarrar
recursos de computador ou causar danos ao sistema. As vezes, o malware é
colocado em uma má quina, a im de controlar esta má quina mais tarde,
para uso em ataques, como DDoS, em coordenaçã o com outras má quinas
que foram tomadas em massa.
Vírus
Vírus sã o o tipo mais antigo e mais conhecido de malware. Como seus
homô nimos bioló gicos, os vı́rus sã o projetados para se espalhar de
má quina em má quina, infectando um grande nú mero de usuá rios, e, à s
vezes, redes independentes inteiras no processo. Estes dispositivos
maliciosos sã o segmentos de có digo que se prendem (assim como vı́rus
bioló gicos) a outros programas que tê m propó sitos legı́timos. Quando o
programa legı́timo é ativado por um usuá rio desavisado, o có digo do vı́rus
é executado e pode ser executado sem nunca ser notado. Quando um vı́rus
é ativado, ele faz uma có pia de si mesmo e tenta se conectar a outros
programas legı́timos dentro do sistema ou domı́nio ao qual ele tem acesso.
Isto permite que o vı́rus se espalhe por um nó individual e també m para
outros nó dulos na rede. Um vı́rus geralmente nã o é escrito por um hacker
para simplesmente se espalhar por aı́, no entanto. Normalmente, o hacker
tem uma tarefa especı́ ica em mente para que o vı́rus conclua quando
chegar ao seu destino.
Uma vez que foi projetado para permanecer oculto, um vı́rus pode executar
qualquer nú mero de açõ es em sua má quina host. Ele pode coletar
informaçõ es pessoais e inanceiras e usar secretamente os recursos de
comunicaçã o do pró prio computador para retransmitir as informaçõ es de
volta para o hacker. Outros vı́rus sã o projetados para excluir informaçõ es
ou causar interrupçõ es na operaçã o ou comunicaçã o de um computador.
Um vı́rus pode ser escrito até para causar danos fı́sicos a um sistema de
computador. Por exemplo, um vı́rus em particular, difundido na dé cada de
1990 foi projetado para fazer com que a armaçã o controlada pelo motor no
disco rı́gido ó ptico do hospedeiro se movesse rapidamente para frente e
para trá s, até que o motor falhasse. Este tipo de vı́rus pode causar um
grande dano a má quinas controladas por computador com conectividade
em rede.
Worms
Worms sã o semelhantes aos vı́rus, pois sã o projetados para se replicar e se
espalhar por um sistema ou rede. No entanto, como os vı́rus fazem parte de
programas maiores, eles devem ser baixados pelo usuá rio e seu programa
de host deve ser lançado, antes que o có digo malicioso possa ser
executado. Por outro lado, um worm é seu pró prio programa
independente. Os worms també m diferem dos vı́rus por nã o exigirem que
um usuá rio abra outro programa para que eles sejam executados. Uma vez
que um worm infecta uma má quina, ele pode se replicar e depois se
espalhar para outro sistema atravé s da rede.
Hackeando Wi-Fi
A maioria das redes Wi-Fi consiste em um roteador sem io, ou um grupo
de roteadores sem io, conectados a um modem fornecendo acesso à
internet a alguma localizaçã o fı́sica. Os roteadores transmitem e recebem
sinais de rá dio em canais especı́ icos, carregando os pacotes TCP/IP
apropriados de e para outras má quinas e dispositivos que possuem
conectividade sem io semelhante. Todos os nó s que se comunicam, a
qualquer momento, nos canais associados ao roteador ou roteadores
conectados ao modem neste local, compreendem uma rede Wi-Fi. Por
natureza, as redes Wi-Fi sã o muito dinâ micas e luidas. Especialmente em
ambientes comerciais, como café s ou edifı́cios de escritó rios que fornecem
acesso sem io, o nú mero e a natureza dos nó s naquela rede em particular
estã o em constante luxo. Nestas con iguraçõ es pú blicas, é fá cil para um
hacker se esconder à vista de todos, tentando invadir qualquer um dos
nó dulos da rede. Uma vez que o hacker entre com sucesso na rede, ele
pode escanear a rede para todas as má quinas conectadas e procurar por
vulnerabilidades. Muitas redes possuem sub-redes sem io e com io
interconectadas. Quando um hacker obté m acesso a uma rede sem io, ele
pode usar isso para obter o acesso a todos os nó s na parte da rede com io.
Isso faz do Wi-Fi um objetivo muito popular para hackers modernos.
Nã o demorou muito para que uma atualizaçã o da WPA fosse necessá ria
para manter as redes Wi-Fi mais seguras. Um novo padrã o de criptogra ia
usado em outros aplicativos seguros, o Advanced Encryption Standard
(AES), tornou-se obrigató rio no novo protocolo de criptogra ia Wi-Fi que
icou conhecido como WPA-2. O WPA-2 com criptogra ia AES tornou-se a
con iguraçã o recomendada para roteadores sem io nos quais está
disponı́vel, devido à melhoria signi icativa na segurança em relaçã o aos
padrõ es anteriores. Quebrar WPA e WPA-2 requer mais té cnicas de hacking
intrusivas do que o simples farejamento passivo usado para atacar redes
protegidas pelo WEP.
Ataques Wi-Fi
Para realizar um ataque Wi-Fi, um hacker precisa, no mı́nimo, de um
computador (normalmente um laptop) que possa executar scripts que sã o
usados para decifrar a senha do Wi-Fi. Eles també m devem adquirir um
adaptador Wi-Fi especial, que pode ser comprado relativamente barato.
Uma lista de adaptadores Wi-Fi adequados pode ser encontrada em sites
de recursos de hackers, mas, em geral, o adaptador deve ter um recurso
conhecido como "modo monitor", para poder executar um ataque Wi-Fi. E
importante notar que nem todos os adaptadores Wi-Fi que podem ser
encontrados em lojas de suprimentos de computador de varejo tê m este
recurso, e a maioria dos adaptadores internos de laptop nã o sã o
apropriados. Em geral, os hackers preferem usar algum tipo de distribuiçã o
Linux, geralmente Kali, para realizar um ataque Wi-Fi porque a maioria das
ferramentas prontamente disponı́veis foram escritas para o Sistema
Operacional Linux e vê m pré -instaladas no Kali. També m é possı́vel, com
alguma con iguraçã o, executar o Linux em uma má quina virtual dentro de
outro Sistema Operacional, para montar um ataque bem sucedido. Embora
ataques iniciados em outros sistemas operacionais sejam possı́veis, é
muito mais fá cil para o iniciante conduzi-los a partir de uma distribuiçã o
Linux nativa ou de uma má quina virtual. Recomenda-se uma versã o
voltada aos hackers, como a Kali.
Os procedimentos detalhados e os programas recomendados para a
realizaçã o de ataques Wi-Fi contra os vá rios protocolos de criptogra ia
mudam ao longo do tempo, embora os princı́pios gerais sejam os mesmos.
Para o ataque mais simples, contra a criptogra ia WEP, os passos gerais sã o
os seguintes:
Se o trá fego de rede for muito lento para capturar um nú mero su iciente de
pacotes para descriptografar a senha em um perı́odo razoá vel de tempo,
alguns hackers optam por usar um programa chamado aireplay-ng para
injetar pacotes arti iciais na rede e criar o trá fego necessá rio para quebrá -
la mais rapidamente. No entanto, esta atividade requer que a má quina do
hacker realmente transmita sinais de seu adaptador Wi-Fi, tornando-o
mais visı́vel.
A criptogra ia WPA nã o pode ser quebrada passivamente e requer a etapa
adicional de injeçã o de pacotes. Quebrar WPA pode
demorar mais e é um procedimento mais invasivo, mas nã o é muito mais
difı́cil do que quebrar WEP. Um programa chamado reaver, normalmente
disponı́vel na versã o Kali ,é normalmente usado por hackers para quebrar
WPA. Hacking WPA-2 é um conceito muito mais avançado, para
pro issionais mais experientes. (Nota: as ferramentas de software acima
sã o pré -instaladas no Kali Linux, ou podem ser baixadas de www.aircrack-
ng.org )
Capı́tulo 8. Seu Primeiro Hack
O hacker neó ito nem deveria pensar em tentar um ataque a um alvo real
como sua primeira incursã o em hacking. Existem ferramentas e
tecnologias su icientes, facilmente obtidas e com as quais vá rios mé todos
podem ser ensaiados em um ambiente virtual. Este tipo de prá tica é
essencial para o hacker, sendo mais valiosa do que toda a leitura e estudo
que se poderia realizar. Para ganhar con iança e ganhar apreço pelas
nuances e armadilhas prá ticas, o hacker iniciante deve aspirar a realizar os
simples ataques sugeridos neste capı́tulo. Os detalhes dos ataques variam e
as instruçõ es atualmente aplicá veis devem ser pesquisadas pelo leitor, mas
os princı́pios gerais da con iguraçã o e execuçã o devem ser bastante
universais.
1) Um computador
2) Um adaptador de rede sem io que suporte o "modo monitor"
3) Acesso a um roteador Wi-Fi com criptogra ia WEP (nã o precisa
ter acesso à internet)
4) A versã o mais recente do Kali Linux (instalado como o sistema
operacional principal ou em uma má quina virtual)
Montagem:
1) Certi ique-se de que o roteador esteja de inido como WEP e dê -
lhe uma senha de sua escolha
2) Desligue o adaptador Wi-Fi interno em seu laptop, se você tiver
um
3) Conecte o adaptador "modo monitor" à sua má quina de ataque
e instale os drivers necessá rios
4) Certi ique-se de que o computador de ataque está ao alcance da
rede de destino sem io alvo
Procedimento:
Protegendo-se
Desde medidas simples, como garantir uma senha segura, até conceitos
mais avançados, como escolher os protocolos de criptogra ia adequados e
instalar o software de proteçã o de rede, a segurança do computador é um
processo diá rio para as pessoas que vivem em nosso mundo conectado. A
maioria dos aspectos da segurança cotidiana envolve simplesmente senso
comum e vigilâ ncia. E ú til entrar em uma rotina regular para tarefas
perió dicas, como atualizar ou alterar senhas, garantir as versõ es ou
patches mais recentes dos softwares e sistemas operacionais instalados e
fazer o download das de iniçõ es atuais de vı́rus e malware. Para evitar se
tornar vı́tima dos ataques que você está aprendendo, como hacker
iniciante, a segurança deve se tornar parte de sua vida cotidiana e de seu
processo de pensamento.
O Hacker Etico
Deve icar claro que o hacking nã o é o domı́nio exclusivo de ladrõ es,
terroristas, sabotadores e adolescentes travessos. O estudo e a prá tica de
hacking sã o essenciais para a compreensã o de como melhor proteger
contra hackers que pretendem causar danos. Embora hackers nã o sejam
geralmente
caros, o conhecimento e as habilidades necessá rias para hacking nã o sã o
facilmente adquiridos e exigem disciplina e dedicaçã o para obter o
domı́nio. Isto faz da comunidade hacker - pelo menos em termos de
sucesso - um grupo bastante exclusivo. També m oferece aos hackers
talentosos uma vantagem sobre a populaçã o em geral, que aqueles com
má s intençõ es exploram prontamente.
A é tica pessoal e a bú ssola moral dos indivı́duos tendem a aparecer em
qualquer atividade que realizem. No entanto, a facilidade com que algumas
pessoas inteligentes podem executar ataques de hackers contra seus pares
menos informados pode apresentar uma tentaçã o imensa para cidadã os
que cumprem a lei. O potencial anonimato com o qual alguns ataques
podem ser lançados apenas aumenta essa tentaçã o.
Alé m disso, pode ser fá cil convencer-se de que os objetivos inais de um
ataque justi icam qualquer meio subversivo. Isto é especialmente verdade
nos casos em que hackers ou grupos de hackers estã o servindo a um
propó sito polı́tico ou social. Cabe a cada indivı́duo determinar se suas
atividades justi icam o risco de prisã o e puniçã o (incluindo
encarceramento) e pensar se o valor que atribuem à sua pró pria segurança
e privacidade se estende aos alvos de seus ataques.
Capı́tulo 10. Crie seu Pró prio Keylogger em C ++
Hoje, com a existê ncia de um programa chamado Keylogger, obter acesso
nã o autorizado à s senhas, contas e informaçõ es con idenciais de um
usuá rio de computador tornou-se tã o fá cil quanto cair seu acesso. Você nã o
precisa necessariamente ter acesso fı́sico ao computador do usuá rio antes
de poder monitorá -lo; à s vezes, basta um ú nico clique em um link para o
seu programa, pelo usuá rio.
Qualquer pessoa com conhecimentos bá sicos sobre computador pode usar
um Keylogger. Quando terminar este capı́tulo, espero que você consiga
criar seu pró prio keylogger atravé s de etapas simples, bem explicadas e
ilustradas que eu iz para você .
Isençã o de Responsabilidade
Quaisquer ações e ou atividades relacionadas ao software e material
contidos neste site são de sua exclusiva responsabilidade. O uso indevido das
informações contidas neste site pode resultar em acusações criminais contra
as pessoas em questão. Eu e o proprietário do software não seremos
responsáveis no caso de serem apresentadas acusações criminais contra
indivíduos que usem mal o software neste site para infringir a lei.
O que é um Keylogger?
Um keylogger, à s vezes chamado de "keystroke logger" ou "monitor do
sistema", é um programa de computador que monitora e registra todas as
teclas digitadas por um usuá rio de computador para obter acesso nã o
autorizado a senhas e outras informaçõ es con idenciais.
1. Máquinas Virtuais
Quando os có digos sã o escritos e precisam ser testados, nem sempre é
aconselhá vel executá -los diretamente no seu computador. Isto ocorre
porque o có digo pode ter uma natureza destrutiva e sua execuçã o pode
deixar o sistema dani icado. E no caso de testes de programas escritos que
a utilizaçã o de uma má quina virtual é ú til.
Uma má quina virtual é um programa que possui um ambiente semelhante
ao sistema do seu computador, onde programas que podem ser destrutivos
podem ser testados sem causar o menor dano a ela, caso seja destrutivo.
Você estará certo se disser - o que quer que aconteça em uma má quina
virtual permanece dentro de uma má quina virtual. Uma má quina virtual
pode ser baixada facilmente.
4. Compilador
Um compilador é um programa especial que processa instruçõ es escritas
em uma linguagem de computador especı́ ica e as converte em linguagem
de má quina ou "có digo" que um processador de computador pode
entender.
Felizmente, até o inal deste capı́tulo, você poderá criar seu pró prio
Keylogger e també m modi icá -lo para se adequar aos seus objetivos.
Capı́tulo 11. Configurando o Ambiente
Assim como precisamos con igurar nossos sistemas de computador antes
de começarmos a trabalhar com eles, da mesma forma, també m
precisamos con igurar um ambiente que nos permita criar có digo em C ++
e, no inal, criar um Keylogger.
Quando chegamos ao site Java, descobrimos que existem inú meras opçõ es
de programas eclipse disponı́veis para download. No entanto, como
pretendemos usar a linguagem de programaçã o C ++, baixamos o “Eclipse
for C / C ++ developer”, ainda tendo em mente que estamos trabalhando
em uma plataforma Windows. Portanto, embora existam versõ es do
Eclipse para sistemas Linux, Solaris, Mac e outras, faremos o download do
Eclipse para a plataforma Windows.
També m precisamos escolher entre a opçã o de sistema operacional de 32
ou 64 bits, dependendo da que o seu computador executa. Você pode
veri icar facilmente em que seu sistema funciona clicando com o botã o
direito do mouse em “PC” ou “Meu computador” e depois nas
propriedades. Estas etapas levam à exibiçã o das especi icaçõ es do seu
sistema. Apó s a determinaçã o dos bits nos quais o sistema é executado, vá
em frente e faça o download do arquivo Eclipse que é compatı́vel com ele.
* As linhas em
textos roxos, azuis e verdes sã o chamadas de "có digos". Estaremos
brincando com eles em pouco tempo.
Termos
Variável. Uma variá vel é um local na memó ria em que um valor pode
ser armazenado para uso por um programa. Uma analogia sã o as caixas
postais onde cada caixa possui um endereço (nú mero da caixa postal).
Quando a caixa é aberta, o conteú do será recuperado. Da mesma forma,
cada local de memó ria tem um endereço e, quando chamado, o conteú do
pode ser recuperado.
Identificador. Um identificador é uma sequê ncia de caracteres
extraı́dos do conjunto de caracteres C ++.
Cada variá vel precisa de um identi icador que a distinga da outra. Por
exemplo, dada uma variá vel a, 'a' é o identi icador e o valor é o conteú do.
Um identi icador pode consistir em alfabetos, dı́gitos e / ou sublinhados.
Para declarar uma variá vel, é necessá rio primeiro fornecer um nome e um
tipo de dados para armazenar. Por exemplo:
Int a; onde 'a' é um identi icador e é do tipo inteiro.
Existem vá rios tipos de dados C ++ e cada um destes tipos de dados tem
suas funçõ es. Listados abaixo estã o os vá rios tipos de dados:
Double: Estes sã o nú meros com pontos decimais, por exemplo,
20,3, 0,45
Long double: Nú meros reais muito grandes
Char: Um ú nico caractere
Exemplos de:
Um comentário de linha única: Nem tudo na vida é um mar de rosas.
Linha 11: Quando observado, na instruçã o Cout << “Valor de a:” pode-se
ver que, apó s a coluna, (apresentando a entrada esperada do usuá rio),
existe um espaço antes das aspas que encerra a instruçã o. Estes espaços
farã o a saı́da parecer como mostrado abaixo, quando o programa estiver
pronto para ser executado.
Valor de a: 50
No entanto, sem este espaço, a saı́da assumirá este formato:
Valor de a: 50
Adiçã o
Subtraçã o
Multiplicaçã o
Divisã o e
Mó dulo
O mó dulo é o nú mero que resta quando você divide dois nú meros. Por
exemplo, quando você divide 5 por 2, o resultado será 2 com o restante 1. O
restante 1 é o mó dulo.
També m temos operadores de comparaçã o e sã o eles:
Enquanto
Escrever algo como "if/se" a == b… (onde “if” é uma declaraçã o
condicional) con irmará se o valor contido em b é o mesmo que em
a. E se for, uma operaçã o especı́ ica especi icada pelo codi icador
será executada.
Operador não igual a! =: Este operador, como o nome indica, implica em
que as duas ou mais variá veis em comparaçã o nã o sã o iguais. Por exemplo,
a! = b implica que os valores nas variá veis a e b sã o diferentes.
O operador and-and &&: Isso representa a palavra e. Entã o, se você tem,
por exemplo:
a! = c && b == a
Pode ser lida como uma condiçã o que lê como "a nã o é igual a c AND/E b é
igual a".
O operador OR || Assim como a palavra OR/OU comum que usamos todos
os dias, a que está aqui em C ++ signi ica o mesmo.
a! = c && b == a
A declaraçã o acima diz simplesmente: "a nã o é igual a c OR/OU b é igual a"
Agora, vamos percorrer as linhas de có digo reais nas quais as instruçõ es de
comparaçã o sã o usadas junto com alguma instruçã o condicional.
Você já vê a ló gica do có digo acima?
Basicamente, a Linha 9 está a irmando que, se o valor contido na variá vel a
for o mesmo que o contido em b e o valor em c nã o for igual ao valor em b ,
a instruçã o “nã o vou dormir ”Escrito na Linha 11 será exibido. No entanto,
se alguma destas condiçõ es for falsa (por exemplo, a nã o é igual a b ou c é
igual a d), será impressa a declaraçã o na linha 15 que diz “lutarei contra o
sono” .
Passar por sé ries e sé ries de có digos para diferentes programas
aprimorará a compreensã o e, a longo prazo, você se acostumará com os
operadores, suas vá rias funçõ es e como elas podem ser usadas.
Ao adicionar algumas novas instruçõ es ao nosso programa analisado
anteriormente e explicá -las passo a passo, nosso entendimento da
codi icaçã o em C ++ melhorará bastante. Quando isto for alcançado,
percorrer o processo de criaçã o de um Keylogger nã o será difı́cil para você .
Vamos analisar os seguintes programas abaixo:
Os có digos das Linhas 1 a 7 sã o familiares e, portanto, foram omitidos.
Nas linhas 9 e 11, a funçã o Cout é usada e a instruçã o "Inserir valor para a:"
e "Digite o valor para b:" será impressa (observe o espaço no inal de
ambas as frases, entre dois pontos e as aspas que inalizam as declaraçõ es.
Lembre-se de sua inalidade). Nas linhas 10 e 12, sã o utilizadas as funçõ es
Cin, que exigirã o que o usuá rio do computador insira um valor. Depois que
os dois valores solicitados ao usuá rio pelo programa sã o inseridos, o
programa faz uma avaliaçã o com base nas instruçõ es condicionais da Linha
14 e, se o resultado for verdadeiro, o programa será impresso conforme
indicado pela Linha 16 "A é maior que B".
Loops:
Pode-se dizer que um loop em C ++ é um caminho circular atravé s do qual
Loop For :
O For executa basicamente a mesma funçã o que o loop While . Eles sã o
parecidos no sentido de que ambos executam um programa em iteraçõ es.
No entanto, uma diferença entre os dois está na maneira como sã o
utilizados no programa.
Pode ser visto na igura acima, como o loop for escrito. For (int i = 0; i <3;
i++) signi ica simplesmente que a variá vel i é designada para reter dados
do tipo variá vel e inicializada em zero. <3; i ++ instrui o programa a
executar continuamente (mantendo a contagem do nú mero de loops
concluı́dos) até i é 1 valor menor que 3 ou seja, o programa será executado
apenas duas vezes. Alé m disso, vale ressaltar que, como o incremento é
feito entre parê nteses apó s o loop for, o incremento funcionará apenas
para o programa dentro desse bloco (linhas 10 a 25).
Há vá rias coisas novas aqui, basicamente a instruçã o getline na Linha 13.
Por enquanto, vamos usar a sintaxe como a vemos, pois ela tem todo um
histó rico pró prio e nos tirará para fora de nossa rota se corrermos atrá s
dela. Aprenderemos mais e mais sobre isso à medida que progredirmos.
Há també m o tipo de variá vel string , como visto na Linha 22. O tipo de
variá vel String é usado para conter espaços, muitas e muitas letras. De fato,
quase todas as instruçõ es que imprimimos na janela de exibiçã o até agora
neste curso podem ser mantidas pela string .
imagem
Apenas para que saibamos, a pequena igura acima foi escrita somente
para introduzir um novo tipo de variá vel, que de initivamente usaremos
mais tarde. O tipo de variá vel é char. Esse tipo de variá vel conté m
caracteres como um cifrã o, uma ú nica letra como a da Linha 13 acima, etc.
Geralmente é utilizado com aspas simples.
Por im, é uma boa prá tica sempre fechar um arquivo no inal de seus
có digos. E um trabalho fá cil e temos uma funçã o integrada para isso,
envolve apenas reescrever o nome de nosso output ilestream / arquivo
de saída (na linha 8: write) dot close e parê nteses com um ponto-e-
vı́rgula, como mostrado na igura abaixo, ou seja, write
Primeiro, porque precisamos de uma variá vel para armazená -la, uma
variá vel x, do tipo string é criada na Linha 11. Na Linha 13, a instruçã o
read>> x; lerá a primeira palavra em x , ou seja, alcançará apenas até o
primeiro espaço aparecer. E na Linha 15, Cout x, instrui o programa a
imprimir na tela a instruçã o a variá vel x.
Na execuçã o do programa, “Windows” é exibido, que é a primeira palavra
da instruçã o que foi enviada ao nosso arquivo (OUR_FILE.txt).
Na linha 11, uma variá vel do tipo char é criada e, na linha 13, o primeiro
loop (loop for começa). Dentro dos parê nteses deste loop, sã o de inidas
condiçõ es para controlar a operaçã o do bloco do programa. Uma variá vel i
do tipo int é criada e inicializada como 0. O loop está de inido para
continuar em execuçã o enquanto i for menor que 3, ou seja, i será
executado duas vezes. O i + + conta e registra o nú mero de ciclos que o
programa concluiu e o interrompe quando ele satis izer a condiçã o de i <3.
O começo e o im ou o inı́cio e o té rmino deste loop sã o de inidos pelas
chaves que se estendem da Linha 14 à Linha 21.
Nota:Chaves entre dentes sã o usadas para marcar o inı́cio e o im das
funções .
Na mesma Linha (18), entre parê nteses, o ios :: app especi ica que nã o
queremos que nosso arquivo seja reescrito toda vez que algué m pressionar
uma tecla. Se nã o especi icarmos isso, sempre que um usuá rio pressionar
uma tecla, o arquivo será aberto novamente e o que foi escrito
anteriormente será sobrescrito pelo novo conteú do.
E necessá rio tempo para incluir casos que abranjam muitos caracteres
possı́veis que possam ser utilizados para um nome de usuá rio ou senha,
pois isso fará com que o Keylogger salve as entradas do usuá rio de uma
maneira que seja entendida. Vamos dar uma olhada nas letras maiú sculas e
minú sculas.
Capı́tulo 17. Letras Maiú sculas e Minú sculas
Tã o importante quanto as letras maiú sculas e minú sculas sã o para quase
qualquer idioma, elas també m sã o importantes para a programaçã o geral,
especialmente quando se trata de utilizá -las para os ins do Keylogger.
Temos que aprender a diferenciar os dois casos de letras. També m faremos
um pouco de iltragem com as teclas tab, caps lock, shift, alt, arrow e do
mouse també m.
Bem, podemos diferenciar entre letras maiú sculas e minú sculas usando o
estado da tecla Shift; també m podemos usar o estado da tecla de seta.
Portanto, se uma dessas duas teclas for pressionada, escreva letras
maiú sculas, caso contrá rio escreva letras minú sculas. E isto que queremos
dizer ao nosso programa. Por padrã o, o programa acima escreverá em
letras maiú sculas, portanto, precisamos de inir o estado para letras
minú sculas.
Uma das coisas que mudamos é a variá vel na qual nossas teclas sã o
inseridas. Alteramos o nome de c para key. Dar nomes que se encaixem nas
informaçõ es a serem colocadas nas variá veis é uma boa prá tica, pois ajuda
na localizaçã o de qualquer informaçã o com muita facilidade ou, caso você
esteja trabalhando com uma equipe de outros redatores de có digo, eles
poderã o localizar qualquer funçã o que procurem muito facilmente.
Na linha 23, incorporamos a funçã o sleep , embora ela tenha sido apenas
comentada até o momento, será usada posteriormente. A funçã o de
sleep/suspensã o ajuda a impedir que a CPU opere no má ximo (causando
lentidã o) como resultado da execuçã o repetitiva. No entanto, a funçã o
sleep nã o é a melhor soluçã o para impedir que a CPU atinja o má ximo,
mas, por agora, a usaremos para evitar problemas complexos.
Enquanto a funçã o Sleep () interrompe o programa por qualquer nú mero
de milissegundos colocado entre parê nteses (por exemplo, sleep (1),
sleep (2), sleep (5)… etc.), a funçã o sleep () com zero entre parê nteses
(por exemplo, sleep (0)) faz algo diferente. Diz ao programa para parar de
usar a CPU sempre que outro programa quiser usá -la.
Vamos seguir em frente e analisar o có digo da Linha 31 até 43, pois é um
bloco que funciona em conjunto.
* Observe que Key + = 32 é equivalente a Key = Key + 32.
Otimo! Como visto acima na igura, nosso Keylogger agora escreve o ponto
de exclamaçã o para e como o que realmente é , e nã o apenas uma igura
engraçada *; a instruçã o destacada é um trabalho testado anteriormente,
nã o faz parte integrante do resultado do teste recente.
A partir deste momento, apenas precisamos continuar desenvolvendo a
instruçã o switch , adicionando mais e mais casos para representar todos
os caracteres que queremos que o nosso Keylogger seja capaz de
interpretar. Isso nos permitirá personalizar nosso Keylogger para um
teclado que geralmente gostamos; assim, mesmo que uma pessoa tenha
suas teclas con iguradas de maneira diferente, isso afetará você , mas nã o
muito.
Até agora, escrevemos nossos có digos em blocos, do bloco de veri icaçã o
de caso, do bloco de incorporaçã o de caracteres ao bloco de arquivamento
etc. e reunimos estes blocos com diferentes funçõ es para cumprir o
objetivo ú nico de um bom Keylogger. Agora vamos prosseguir com a
incorporaçã o de casos ( iltragem) e uma melhor organizaçã o geral do
có digo.
Capı́tulo 18. Abrangendo outros caracteres
Incorporamos mais instruçõ es de interrupçã o no inal de cada veri icaçã o,
portanto, se a instruçã o condicional for avaliada como true, o programa
deverá pular o loop e passar para a pró xima tarefa. També m na parte else ,
onde temos a instruçã o switch com casos sob ela; para todos os caracteres
que vemos, entre parê nteses, barra invertida, barra, ponto de exclamaçã o
etc. na igura abaixo, eles sã o escritos de uma maneira em que o programa
pode dizer que apenas um valor foi pressionado sem a tecla Shift e,
portanto, deve imprimir este valor e nã o um sı́mbolo.
Com a instruçã o break na Linha 55, if/se a condiçã o, que se encontra nas
Linhas 48 e 54, for avaliada como verdadeira, o programa ainda nã o vai
veri icar outros casos, mas sai do loop imediatamente.
Basicamente, para os demais casos do programa da Linha 48, preocupados
em determinar se é ou nã o um nú mero digitado pelo usuá rio, ou um
sı́mbolo que compartilha a mesma tecla que os nú meros individuais no
teclado, seguimos a mesma ló gica de temos para o caso 0 ou parênteses
de fechamento, enquadrado nas Linhas 48 e 53.
Chaves Virtuais:
Até agora, adicionamos uma sé rie de casos que envolvem nú meros, letras e
sı́mbolos; no entanto, uma á rea na qual realmente ainda nã o entramos
muito é a á rea de chaves virtuais. As teclas virtuais abrangem as teclas tab,
caps-lock, backspace, escape, delete e muitas outras teclas, como as
teclas f-keys, a seta etc., que servem para fazer as informaçõ es registradas
obtidas pelo Keylogger parecem apresentá veis e legı́veis.
Imagine como será o seu registro se o seu Keylogger lhe enviar uma
semana de trabalho de entradas coletadas sem incluir backspace, delete ou
tab. O registro será muito longo e será difı́cil iltrar as informaçõ es reais do
lote.
Tentamos restringir nosso Keylogger para conter a maioria das chaves que
os usuá rios provavelmente usarã o para senhas, em vez de apenas adicionar
tudo. Por exemplo, as teclas de seta, num lock e f-keys nã o precisam,
necessariamente, ser adicionadas ao Keylogger.
Da Linha 127 até 145, incorporamos um bom nú mero de có digos
realmente importantes, como backspace, delete, escape e outras chaves,
como visto acima.
Como observado, as Teclas virtuais podem ser gravadas sem usar a
instruçã o if nem os colchetes e ainda funcionam bem.
Perfeito! Nosso Keylogger funciona muito bem, pois informa que visitei o
Udemy e o Gmail antes de, inalmente, tentar acessar o fó rum do Ubuntu.
Capı́tulo 19. Ocultar a janela do console do
Keylogger
Basicamente, incorporamos bastante coisa em nosso Keylogger e podemos
dizer que estamos prontos; no entanto, ainda temos duas coisas
importantes a fazer antes de dizermos que concluı́mos nosso Keylogger. A
primeira é : a criaçã o de uma versã o de lançamento do Keylogger para que
ele possa ser instalado em um CD ou enviado como um arquivo; e a
segunda: ocultando o arquivo. També m veremos um problema que o
Keylogger possui e que nã o podemos ver, ao executá -lo no ambiente
eclipse.
Ocultando o Keylogger:
Ao clicar no Keylogger.exe (o arquivo de execuçã o), uma janela preta, que
salva as teclas digitadas pelo usuá rio, aparece na tela inicial, parecendo
com a igura abaixo:
No entanto, existe uma maneira de ocultar esta janela. Podemos fazer isso
criando uma funçã o - que oculta todo o programa - dentro do nosso có digo.
Vamos começar dando um nome a esta funçã o que nos ajudará a identi icá -
la dentro do có digo, para que possamos fazer referê ncia a ela sempre que
necessá rio, digamos: hide/esconder.
Alé m disso, se você seguiu este curso, espera-se que você entenda
razoavelmente bastante sobre a linguagem de programaçã o C ++, sua
sintaxe e como ela funciona, e você poderá escrever outros programas alé m
do Keylogger que você acabou de aprender.
Continue praticando, pesquisando e encontrando soluçõ es para os
problemas que encontrará ao longo do caminho, e você alcançará grandes
melhorias.
Conclusã o
Enquanto este livro estava sendo escrito, é prová vel que dezenas, se nã o
centenas, de novas vulnerabilidades de computadores e redes, e suas
correspondentes exploraçõ es, tenham se desenvolvido. Esta é a natureza
dinâ mica do mundo dos hackers e da segurança da informaçã o. No espı́rito
com o qual este guia começou - com ê nfase no aprimoramento constante e
na aquisiçã o de habilidades e conhecimentos - o aspirante a hacker deve
seguir o esboço bá sico deste livro e usá -lo como base para expandir
metodicamente cada tema individual, investigando a histó ria e o estado da
arte atual das á reas em que estã o mais interessados. Mais importante
ainda, eles devem construir um espaço livre de consequê ncias - com
hardware virtual ou fı́sico - para praticar exploraçõ es e segurança.
Finalmente, antes de iniciar a jornada de hacking, você deve chegar a um
acordo com as implicaçõ es é ticas, morais e legais de suas atividades, com
um entendimento completo de seus objetivos e responsabilidades.
Livro de bô nus: Baleias Bitcoin
Link no Livro
Outros Livros de Alan T. Norman
Cryptotrading Pro