Sunteți pe pagina 1din 33

Invaso Invaso

246 247
Invaso
Captulo
Ataque, defesa e
contra-ataque:
20
Abordar navios mercantes
invadir, pilhar, tomar o que nosso(...)
Preparar a nossa invaso
E fazer justia com as proprias mos.
1
RPM, Rdio Pirata
1. Do lbum Revolues por minuto, de 1985.
Invaso Invaso
248 249
Por que o cachorro entrou na igreja?Ante essa pergunta capiciosa, a maio-
ria das pessoas, depois de raciocinarum pouco, disparam respostas das mais
estapafrdias e incongruentes que o ser humano pode ser capaz de conceber.
Poque o padre chamou. Porque os anjos o conduziram para a plenitude
espiritual. Porque ouviu um chamado de Al para destruir o templo de idola-
tria dos infiis. Porque quis. Porque sim. Porque havia quermesse e ele
sentiu cheiro de lingia. Porque estava no colo da dona. Ah, vai te cat,
mano! Mas a resposta correta a mais simples e lgica de todas. O cachorro
entrou na igreja porque a porta estava aberta.
A partir deste ponto ultrapassamos os limites. A legislao brasileira no
reconhece o acesso a sistemas que estejam abertos Internet como invaso, da
mesma forma como entrar num shopping center tambm no invaso: as
portas esto abertas para tal.
Pela lei norte-americana, entretanto, esse tipo de invaso (de sistemas e de
shopping centers) j considerado invaso de propriedade. Se voc no bem
vindo em um sistema,pode ser processado se entrar.Se no bem vindo em um
shopping center, tambm pode! Houve pelo menos um caso, divulgado pela im-
prensa, de um cidado americano processado por invaso de propriedade por
estar na rea pblica de um shopping. Explico: ele estava com uma camiseta
pacifista (a frase exata era Give peace a chance,de John Lennon) e a segurana
do shopping solicitou que ele retirasse a camiseta ou deixasse o prdio. Como
recusou-se a ambas as coisas, foi preso e processado. Home of the free...
Cuidado, portanto, quando invadir sistemas geograficamente instalados l ou
pertencentes a empresas daquele pas. Voc ser processado pelas leis de l, e
provvel que seja extraditado. Hackerismo =Terrorismo =Priso Perptua...
J deu pra notar, n?
A invaso em etapas
Assim como dividimos nosso ataque em seis passos diferentes, o passo qua-
tro invaso pode ser dividido em duas etapas.
A primeira etapa o acesso a um host da rede acesso a um host da rede acesso a um host da rede acesso a um host da rede acesso a um host da rede. Como vimos nos captulos de
redes, as redes internas das empresas normalmente no utilizam nmeros IP
roteveis pela Internet. Portanto, temos que invadir primeiramente um computa-
dor limtrofe que possua duas interfaces de rede e, portanto, atenda a ambas.
Normalmente o prprio firewall, ou um proxy, mas possvel que falhas de
configurao ou mesmo descuido possam escancarar outros sistemas.
Paraaprimeiraetapa,umnmero limitado de tcnicas pode se empregado.Entre
eles, aprocurapor modems aceitando conexes externas (war dialing) e aexplora-
o de falhas especficas atravs de exploits. Observe que nenhumsistemaemespe-
cial visado. Os crackers podemapontar suas miras tanto emservidores como em
estaes de trabalho e mesmo emcomponentes de rack como roteadores e afins!
A segunda etapa mais trabalhosa que difcil. Uma vez conseguido o acesso rede
interna, passa-se invaso sistemtica dos computadores dentro da rede invaso sistemtica dos computadores dentro da rede invaso sistemtica dos computadores dentro da rede invaso sistemtica dos computadores dentro da rede invaso sistemtica dos computadores dentro da rede. Essa
etapa pressupe quebra de senhas e acesso a reas restritas mesmo para quem est
dentro. Dizemos que trabalhosa porque, uma vez dentro, cada um dos sistemas
autnomos disponveis para os usurios internos requer toda aquela metodologia
que vimos: Planejamento, Observao, Busca, Invaso, Manuteno e Evaso. E no
esquea: vrios microataques 1-2-1-3-1-4-1-5-1-6-1... Sempre corrija e ajuste seu pla-
nos! As coisas mudam, os dados mudam, o administrador muda e voc sempre tem
informaes novas. Se quer sucesso, organize-se!
E, se voc for umlammer, no temo que fazer por aqui, jque voc no quer saber de
aprender nada.Vbrincar comos exploits publicados e deixe os profissionais trabalharem!
War Dialing + Brute Force
Redes bem configuradas permitem acesso a elas apenas por pontos bem espe-
cficos e controladssimos, normalmente uma nica conexo com a Internet.
Empresas muito grandes possuem vrios links, mas todos eles so (ou deveriam
ser) controlados e monitorados com rigor. Entretanto, alguns funcionrios es-
pertos tentam driblar a lentido ou os controles de acesso a sites no-autoriza-
dos com conexes discadas ou ADSL ligados diretamente a suas estaes. Esses
funcionrios no tm noo do perigo real representado por essa prtica: tais
conexes so totalmente desprotegidas, e uma vez com acesso a essas conexes,
o hacker j est dentro da rede, e pode queimar diversas etapas de sua invaso.
Em outras ocasies, a prpria empresa precisa proporcionar acesso discado
a seus funcionrios viajantes, ou aos que trabalham em casa. Para tanto, possu-
em uma bateria de modems e dezenas de nmeros de telefone disponveis para
receber chamadas e conexes. Um prato cheio para hackers!
Sim, sim, no ia deixar de comentar que o termo War Dialing foi cunhado no
filme War Games de 1983 em que Matthew Broderick discava para todos os
nmeros que ele conseguia atrs de modems livres. Mas isso provavelmente
voc j sabe. Se no, v at sua locadora e pea o filme Jogos de Guerra Jogos de Guerra Jogos de Guerra Jogos de Guerra Jogos de Guerra. Se no
um filme excelente, pelo menos as referncias tecnolgicas esto corretas
dentro, claro, dos limites da preciso hollywoodiana. Mais informaes po-
dem ser encontradas em orbita.starmedia.com/~necrose/Sci-Fi/Filmes/
wargames.htm, www.movieprop.com/tvandmovie/reviews/wargames.htm e
j bonl i ne.terra.com.br/ j b/ papel / cadernos/ i nternet/ 2001/ 08/ 15/
jorinf20010815003.html.
Conhea suas armas
War dialing guerra. Se voc um soldado, vai guerra e no leva sua espa-
da, est frito! As ferramentas usadas pelos war dialers so chamadas, normal-
mente de... war dialers. Uma busca no Google traria diversos sites com essas
Invaso Invaso
250 251
ferramentas, a maioria gratuitas e muitas delas com cdigo fonte aberto e livre.
Mas, em uma excepcional colher de ch, a vai um link com algumas delas:
neworder.box.sk/ box.php3?gfx=neworder&prj =neworder&key
=wardil&txt=Wardialers.
Recomendamos epecialmente, entre eles, o THC Scan (www.thc.org). a fer-
ramenta n 1 de War Dialing hoje em dia. Foi desenvolvida para DOS, mas pode
ser usada em Unix com emuladores, como o Dosemu.
Se voc quer dar uma olhada em como as coisas comearam, procure por
Demon Dialer e pelo ToneLoc. So ferramentas parecidas com as que os
Phreakers usavam na poca do filme de Broderick, incluindo o prprio mock-
up da cena.
Para Unix, alm do excelente THC Scan +Dosemu h alguns nativos como o
WARD, cuja descrio est no endereo www.securiteam.com/tools/
6T0001P5QM.html e pode ser baixado e www.0xdeadbeef.info/code/ward.c;
ou prolas como o J ericho e o ShockDial, ambos encontrveis em
www.securityfocus.com/tools/category/26.
Htambm muitos war dialers comerciais, destinados apermitir que empresas
testem suas instalaes procurade modems perdidos. Umadas mais completas
o Phone Sweep (www.sandstorm.net).Alm daexcelnciado software,aempresa
promete consultoriae suporte por assinatura(com pagamento mensal).
Uma lista de equipamentos reconhecidamente vulnerveis e detectveis pelo
Phone Sweep podem ser encontrados em www.sandstorm.net/products/
phonesweep//sysids.shtml.
Outra opo o TeleSweep, da Securelogic. Mais informaes em
telesweepsecure.securelogix.com.
Nossa recomendao: baixe, instale e brinque com, pelo menos, as ferramen-
tas gratuitas listadas aqui. Voc vai descobrir que, nesta poca de ADSL e Cable
Modem, ainda existem MUITOS modems discados recebendo chamadas por a,
especialmente em empresas.
Outra dica: voc pode usar os discadores dos provedores de acesso como
War Dialers improvisados!!! A maioria deles possuem um arquivo externo com
a lista de nmeros de telefone de conexo. Basta substituir essa lista por uma
especialmente criada, e voc ter um war dialer instantneo, inclusive com
rediscagem automtica e varredura de todos os nmeros da lista. Baixe os
discadores de todos os provedores que voc se lembrar e verifique. Esta dica
muito til quando se est usando um computador laranja como discador e no
se quer levantar suspeitas com programas especializados. Um THC Scan levan-
taria suspeitas no computador do seu tio, mas o discador do iG (ou do Terra,
do iBest, do UOL ou da AOL...) passaria despercebido, ainda mais se o seu tio
for assinante de um desses provedores.
Ah, a fora bruta to linda...
Certo, voc descobriu nmeros de telefone que possuem modems atendendo
a chamados externos. Mas e agora, o qu fazer com eles?Entra agora em cena
outro tipo de war dialer que, ao invs de varrer nmeros atrs de modems, faz
inmeras tentativas de login em um mesmo nmero.
Se em outros tipos de controle de acesso por login e senha possvel encon-
trar outros meios de entrada alm do brute-force, com modems a coisa dife-
rente. Voc no tem qualquer outra informao alm do prompt do sistema
pedindo um usurio vlido. Sua nica sada usar um programa de fora bruta
para tentar entrar. Logicamente, usar suas listas de palavras (que vimos nos
captulos sobre vulnerabilidades) e saber o nome de algum usurio ajuda mui-
to aqui. Ateno lammers! Usar SQL injection em modems a demonstrao de
burrice mais enfadonha que voc poderia cometer. No que faa algum mal,
mas mostra claramente que voc no entende nada de nada, mesmo... V brin-
car de carrinho ou de boneca!
Se voc usou o THC Scan, um bom companheiro para ele o THC Login
Hacker. Baixe-o e veja como fcil entrar, quando se encontra um modem
compreensivo. No site oficial h diversos programas, exploits e brute-forcers
para muitos protocolos, incluindo SMB, HTTP, FTP e Proxy. Verifique em
www.thc.org/releases.php.
A propsito, THC acrnimo para The Hackers Choice... Apesar da arrogn-
Invaso Invaso
252 253
cia e presuno do ttulo auto-outorgado, as ferramentas so realmente muito
boas. No site ainda encontramos diversos whitepapers sobre invaso e segu-
rana dignos de leitura.
Entendendo o estouro de pilha
(buffer overflow)
Vrios exploits valem-se dos chamados buffer overflows para conseguir um
shell nos sistemas vulnerveis a eles. Os script kiddies aplicam pesadamente
tais exploits em suas presas sem saber exatamente o que so e como funcio-
nam. Como queremos ter mais do que noes, na verdade, um entendimento
completo de como essas ferramentas operam, teremos que escovar um pouco
mais de bits, dessa vez olhando atentamente o cdigo dos aplicativos. No
preciso dizer que ser necessrio desenferrujar seus conhecimentos de lingua-
gens de programao, mas nada de outro planeta.
Como o nome estouro de pilha, obviamente h uma pilha a ser estourada
(d!). Para entender como o estouro funciona, devemos, primeiramente,
conceituar o que seria essa tal de pilha.
Um amontoado de coisas...
A palavra portuguesa pilha nos traz cabea duas imagens:
1. 1. 1. 1. 1. Uma pilha de pedras, de pratos, de moedas, de corpos no filme do Stallone...
2. 2. 2. 2. 2. Uma clula de energia eltrica usada em lanternas portteis e brinquedos.
Peguemos a primeira imagem. Uma pilha de moedas, por exemplo, daquelas
que o Tio Patinhas tem em cima de sua escrivaninha na caixa-forte. O adorvel
po-duro de Patpolis arruma diligentemente suas moedinhas, uma sobre a
outra. Com isso, quando vai guard-las na caixa-forte o bom varo retira cuida-
dosamente a primeira moeda e a pe no saco de dinheiro, depois a segunda,
depois a terceira... Observe um detalhe: a primeira moeda a ser retirada foi a
ultima a ser colocada.
No exemplo da pilha de pedras, Fred Flintstone usando seu tratorossauro
recolhe pedras retiradas da encosta e as empilha no local indicado pelo Sr.
Pedregulho Slate, seu chefe. Note que, nesse caso, as pedras que Fred pega
primeiro so as que vo ficar por baixo da pilha. Mas talvez o melhor exemplo
(e mais til) seja mesmo o da pilha de pratos. Podemos inclusive usar um exem-
plo de pilhas recursivas. Quando os pratos esto sujos na mesa e a loua do dia
sua (...), voc recolhe-os e os empilha nas mos ou em uma bandeja. Observe:
o ltimo prato que voc pegou fica no topo da pilha. Quando chega cozinha,
faz o caminho inverso. Como no d pra colocar a pilha toda de uma vez, voc
pega prato por prato e os empilha novamente, desta vez na pia. medida que
os vai lavando, voc os empilha pela terceira vez (agora j limpos) do outro
lado da cuba, e novamente o que era ltimo ficou primeiro. Para guard-los no
armrio... , acho que voc j entendeu.
E as pilhas de lanterna?Elas no tm muito haver com o papo agora. S por
curiosidade,o nome pilha dado a esse elemento gerador de energia porque as
primeiras clulas quimio-eltricas eram, er, bem, diversos discos de metais dife-
rentes (parecidos com moedas, s vezes moedas mesmo!) alternados entre si e
mergulhados em uma soluo cida ou salgada. Pensando bem, at tem haver...
As pilhas no reino digital
E o que tm os computadores com isso? Pegando emprestado a noo de
pilhas, os programas em geral (e os sistemas operacionais em particular) po-
dem pegar fragmentos de dados e os guardar em reas de memria chamadas
pilhas ou stacks. uma maneira fcil de armazenar pequenos dados, pois num
acessso convencional de memria o programa obrigado a:
1. 1. 1. 1. 1. Definir a posio de memria onde o dado ser guardado;
2. 2. 2. 2. 2. Definir o tamanho em bytes que o dado ter;
3. 3. 3. 3. 3. Reservar esse tamanho em bytes na posio definida;
4. 4. 4. 4. 4. Mandar o dado para essa posio;
5. 5. 5. 5. 5. Bloquear a posio para que no seja sobreescrita.
Para recuperar o dado, o programa ter que:
1. 1. 1. 1. 1. Lembrar a posio de memria onde o dado est;
2. 2. 2. 2. 2. Apontar para aquela posio;
3. 3. 3. 3. 3. Lembrar o tamanho dos dados em bytes;
4. 4. 4. 4. 4. Puxar esses bytes daquela posio de memria;
5. 5. 5. 5. 5. Liberar a posio para uso futuro.
No caso da pilha, no h necessidade de nada disso. O programa pode sim-
plesmente:
1. 1. 1. 1. 1. Mandar dados para a pilha (push).
Na hora de recuper-los, basta:
1. 1. 1. 1. 1. Puxar dados da pilha (pop).
claro, como um acesso seqencial e no aleatrio, caso queiramos usar o
segundo dado da pilha antes teremos que retirar o primeiro dado. Isso traz
dificuldades adicionais para o programa, que tem que dar um jeitode gerenciar
os dados da pilha corretamente. Mas h aplicaes onde essa abordagem a
melhor. Por exemplo, imagine que queiramos fazer um programinha que faa
uma soma de trs valores. A forma mais simples desse programa seria:
1. 1. 1. 1. 1. Chama funo soma(a,b);
Invaso Invaso
254 255
2. 2. 2. 2. 2. Obtm primeiro nmero e o entrega funo soma;
3. 3. 3. 3. 3. Obtm o segundo nmero e o entrega funo soma;
4. 4. 4. 4. 4. Coloca o resultado na pilha;
5. 5. 5. 5. 5. Chama funo soma(a,b);
6. 6. 6. 6. 6. Obtm terceiro nmero e o entrega funo soma;
7. 7. 7. 7. 7. Puxa o topo da pilha e entrega funo soma;
8. 8. 8. 8. 8. Soma(a,b) faz a operao e joga o resultado na sada.
Observe que o resultado da primeira soma ficou armazenado na pilha, espe-
rando ser chamado de volta ao fluxo normal do programa. Uma soluo como
essa envolvendo posies de memria demandaria funes para reservar me-
mria para trs variveis, envio e recuperao triplicada de dados e possivel-
mente uma funo soma mais complexa.
Esse exemplo foi didtico, mas longe do ideal. Vamos ver um pequeno pro-
grama em C. Deve rodar de forma idntica em qualquer plataforma, pois no
usa bibliotecas especficas.
void funcao_idiota (void)
{
char xuxu[5];
gets (xuxu);
printf(%s\n, xuxu );
}
main()
{
funcao_idiota();
return 0;
}
No se preocupe, voc no precisar ter visto um programa C alguma vez na
vida para entender este aqui. Veja s: qualquer linguagem estruturada que se
preze permite que voc crie, com os comandos bsicos que ela possui, funes
mais complexas para serem usadas pelo programa principal. Em nosso exem-
plo (e em qualquer cdigo C), o programa principal marcadopela funo
main( ). Dentro das chaves {e }temos o programa completo, composto por
duas outras funes:
main()
{
funcao_idiota();
return 0;
}
funcao_idiota( ) chama uma funo criada por ns mesmos, e declarada no
incio do programa. J a prxima linha, return 0, indica que o programa deve
encerrar nessa linha e retornar para o shell que a chamou.
Temos que declarar funcao_idiota( ) antes delapoder ser usada.Ento,vamos aela!
void funcao_idiota (void)
{
char xuxu[5];
gets (xuxu);
printf(%s\n, xuxu );
}
A funo , a grosso modo, uma sub-rotina que pode ser usada vrias vezes
dentro do programa. Em nosso main( ) a usamos apenas uma vez, mas seria
possvel, se quisssemos, us-la em diversos locais do cdigo. O que essa idioti-
ce faz : 1) criar uma varivel chamada xuxu com um tamanho de 5 bytes; 2)
usar a funo gets( ) da linguagem C para pegar caracteres do teclado e jog-
los na varivel xuxu; 3) usar a funo printf( ) para jogar o resultado na tela.
Se voc est em uma mquina Unix, pode compilar o programinha e test-lo.
Na maioria dos sitemas, use o comando:
$ cc -o idiota idiota.c
Sendo idiota.c o arquivo texto contendo o cdigo do programa e idiota o
arquivo executvel gerado pelo compilador cc. No Linux e no FreeBSD use o
gcc em vez do cc.
Para rodar o programa, digite:
$ ./idiota
Aparentemente, nada acontecer. Tente digitar um caractere qualquer e pres-
sionar a tecla <Enter>. O caracter ser replicado na tela. s isso o que o
programinha faz.
Em uma mquina DOS ou Windows, o procedimento parecido. Procure por
algum compilador de linha de comando. Se no souber onde procurar, comece
com alguns destes. Experimente TODOS e escolha seu preferido!
Para DOS podemos indicar:
DJGPP, o GCC do DOS: www.delorie.com/djgpp;
O venervel Borland Turbo C 2.01 (Autorizado! No pirataria!):
community.borland.com/museum ;
Pacific C: www.elrincondelc.com/compila/pacific.html ;
Para Windows, existem, entre muitas, as seguintes opes:
LCC Win32: www.cs.virginia.edu/~lcc-win32/index.html;
DevCPP: www.bloodshed.net/devcpp.html (a escolha dos autores!);
Alis, em www.bloodshed.net existem links para compiladores de diversas
linguagens! Confira!
Invaso Invaso
256 257
Voltemos ao nosso programa. Quando o main( ) chama funcao_idiota( ), o
processamento do programa principal interrompido e desviado para a fun-
o. Quando a funo termina seu processamento, retorna rotina principal.
Observe o cdigo novamente, desta vez com o fluxo de processamento indica-
do por setas:
void funcao_idiota (void)
{
char xuxu[5];
gets (xuxu);
printf(%s\n, xuxu ); Desvio
Retorna ao return; do
programa } processamento
principal
main() Inicio aqui
{
funcao_idiota();
return 0; Fim!
}
Nooofaaaa (Com F mesmo. Lingua presa...) ! Mas no era uma pilha?Porque
est de cabea para baixo? Bem, normalmente as pilhas so armazenadas de
cima para baixo, sendo o dado mais antigo na posio mais alta de memria e
a pilha crescendo em direo posio mais baixa. Pense nela como uma pilha
de moedas feita no teto em direo ao cho. Talvez voc tenha que usar cola
para prender as moedas, mas ainda assim uma pilha.
Como dissemos, os dados de main( ) so jogados na pilha. Note que ela no
precisa estar necessariamente vazia, podendo conter, por exemplo, dados do
shell ou da janela onde o programa foi chamado. Depois do main( ), tambm
guardado no stack um ponteiro, chamado de ponteiro de endereo de retorno
ou return address pointer. ele que indica ao processamento onde encontrar a
prxima instruo depois do desvio (onde que eu estava mesmo?). Em nosso
caso especfico, o return pointer guarda o endereo de memria onde reside a
instruo return 0.
Depois do ponteiro de retorno, o sistema coloca um ponteiro de pilha, que
aponta para uma tabela com dados de controle sobre a prpria pilha que
obviamente o leitor compreende ser necessria. Por ltimo, vo os dados tem-
porrios de nossa funo secundria, chamada por main( ). Em nosso caso, a
varivel xuxu, criada pela nossa funo funcao_idiota( ).
Quando a funo secundria termina seu processamento, os dados dela so
retirados da pilha, depois o ponteiro de controle da pilha, depois o ponteiro do
endereo de retorno. Quando o processamento retomado na posio original,
os dados de main so puxados da pilha e tudo volta a ser como era antes. Ser?
Debug is on the table
2
Lembremos de dois detalhes vistos nos pargrafos anteriores. O segundo
tenho certeza que foi assimilado pelo leitor apenas como curiosidade, o pri-
meiro deve ter passado despercebido:
1. A varivel xuxu foi declarada como contendo apenas cinco bytes;
2. A pilha armazena dados de baixo para cima.
L atrs ns testamos nosso programinha assim:
$ ./idiota
a
a
$
Quando o processamento chegou na funo gets( ), digitamos a letra a. A
funo gets( ) colocou adentro da varivel xuxu, que foi impressa na linha
seguinte pelo printf( ). Lembre-se de que xuxu tem um tamanho de apenas
cinco bytes. O que acontece se passarmos de cinco?
2. Aula de ingls geek? Essa frase realmente foi dita, durante uma conversa entre eu e o diretor de
informticade umaempresade aviao. Umestagirio ouviu apalavradebug no meio daconversae saiu-
se comesta.At hoje eu e esse diretor de informticausamos aexpresso como piadalocal.
Bonito, no?Em princpio, fun-
ciona. Mas, para interromper o
processamento de main( ),
neceesrio colocar tudo o que
main( ) esteja fazendo em algum
lugar, desviar o processamento
para funcao_idiota( ), processar
o que estiver l e depois retorar
a main( ).Alm de devolver os pos-
sveis valores da funo chama-
da (o que no nosso caso para
simplificar no passamos argu-
mentos entre as funes), tam-
bm precisamos ter um meio de
saber ONDE na memria estava
o processamento de main( ) para
que retomemos o processo.
Complicado? Tambm achei.
Uma ilustrao ajuda bastante!
Sentido de Empilhamento
Dados da funo idiota() (ou
seja, a varivel xuxu)
Ponteiro da Pilha
Ponteiro de Retorno
Dados de main ()
Dados anteriores da pilha
Topo da Memria
Invaso Invaso
258 259
Bem, tentamos com cinco letras A, a sada foi AAAAA. Com seis, AAAAAA.
Com sete, AAAAAAA. Com oito, aconteceu algo interessante:
$ ./idiota
AAAAAAAA
AAAAAAAA
Falha de segmentao (core dumped)
$
Falha de segmentao! O programa falhou e gerou um relatrio de erros
com o contedo da memria, gravado no arquivo core. O que ser que aconte-
ceu?Lembremos agora da pilha. O espao para nossa varivel xuxu (que pode-
mos chamar de buffer) era de 5 bytes ns mesmos definimos isso (char
xuxa[5]). Cada caracter ocupa 1 byte, portanto 5 caracteres enche o buffer.
Mas o sistema no possui nenhum mecanismo de checagem, ou melhor, a lin-
guagem C no possui. Portanto, se colocarmos mais de 6 caracteres no buffer,
haver estouro. Os dados a mais sero escritos por cima de alguma outra coisa
(normalmente algo muito importante...).
Agora, o segundo detalhe. A pilha armazena de baixo para cima. Portanto, se
voc olhar a representao grfica que fizemos dela, vai notar que o sexto
caracter vai ser escrito sobre o Ponteiro da Pilha!
O ponteiro de pilha possui vrios bytes ( de tamanho varivel) e o de retorno,
4 bytes
3
. por isso que, quando escrevemos 6 ou 7 caracteres, nada acontece
estamos sobrescrevendo o ponteiro da pilha, em alguma regio que no nos
afeta imediatamente.A partir do oitavo caractere temos um problema imediato:
estamos sobrescrevendo alguma rea importante do ponteiro de pilha.
Se avanarmos mais um pouco, l pelo dcimo-quarto ou dcimo-quinto
caracter certamente chegaremos ao ponteiro de retorno!!!!! Agora o primeiro
byte do endereo de retorno no ser mais o endereo original, ser o valor
hexa do caracter que digitamos! Se for A, por exemplo (ave Aleph1!) o valor
hexadecimal ser 41h. Vamos depurar nosso programa usando o gdb, um
depurador GNU para DOS, procure uma ferramenta adequada (como o debug)
ou use uma das mquina Linux da nossa rede de testes. Primeiro, vamos rodar
nosso programa e gerar um core dump com muitos As:
$ ./idiota
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Falha de segmentao (core dumped)
$
Agora, vamos rodar o gdb e ver o que ele nos diz:
$ gdb idiota core
GNU gdb 5.1
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU ...
(corta)
(no debugging symbols found)...
Core was generated by ./idiota.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libc.so.6...
(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
#0 0x41414141 in ?? ()
(gdb)
$
A linha importante, por enquanto, #0 0x41414141 in ?? (). Ela indica o
endereo de retorno. Observe que, em vez do endereo correto, temos nosso
caracter A (41h) repetido vrias vezes. Bela maneira de fazer o programa abor-
tar! Nosso programinha termina por ali mesmo, mas faamos um teste: entre
as linhas funcao_idiota( ) e return 0; coloque a seguinte linha printf( ):
{
funcao_idiota();
printf(Nao atingiu Ponteiro de Retorno!\n\n);
return 0;
}
Agora compile e rode o programa. Voc ver que, at 11 caracteres, a mensa-
gem final mostrada antes do core dump. Com 12 caracteres ou mais, a mensa-
gem perdida: atingimos o ponteiro de retorno! Esse valor, claro, depende do
programa, dos dados gravados no stack, do tipo de dados do nosso buffer, etc.
Ganhando acesso
por estouro de pilha
S que enfiar um bando de As no buffer no muito til. E se pudssemos
executar algum cdigo de mquina (sim, tem que ser cdigo de mquina, afinal
o programa est compilado...)?Poderamos executar uma pequena rotina car-
regada no prprio buffer, que o nico lugar a que temos acesso. Desviar o
processamento para o buffer no requer prtica nem habilidade: j temos con-
trole sobre o ponteiro de retorno, basta colocar nele o endereo do buffer em
vez da montoeira de As.
3. Explicao tcnica avanada: os ponteiros tmquatro bytes de comprimento, ou 32 bits, o que
equivale aumvalor decimal entre 0 e 4.294.967.295, ou seja, 4 GB.
Invaso Invaso
260 261
Note que este procedimento bem parecido com a injeo de SQL que vimos
no captulo Vulnerabilidades II. Usamos um campo acessvel externamente pelo
usurio no caso do SQL, um campo em um formulrio; aqui, uma varivel
solicitando dados e injetamos nele os comandos pertinentes.
Falamos em cdigo de mquina, no ?Aqui temos o grande pulo-do-gato dos
exploits que se aproveitam do buffer overflow de algum programa mal escri-
to. Ns queremos ganhar um shell no sistema, e isso depende do sistema
operacional. O programa que oferece o shell num Solaris no o mesmo de um
MacOS que no o mesmo no Windows... Por outro lado, para chamar esse
shell temos que colocar um cdigo de mquina no buffer, o que quer dizer que
temos que fazer um exploit para cada dupla SO+Hardware existente. Um exploit
para Linux em Alpha no o mesmo que um para Linux em i386 (os PCs
comuns). o mesmo sistema operacional, mas no o mesmo processador. Por
outro lado, um PC rodando Windows 2000 vai precisar de um exploit diferen-
te do que um Solaris rodando no mesmssimo PC. o mesmo processador, mas
no o mesmo SO. Mesmo considerando que estamos usando o mesmo progra-
ma bugado (por exemplo, o interpretador de Perl de cada um dos SOs) o exploit
desse programa vai ser diferente em cada combinao SO+HW.
Para fins didticos, vamos nos ater ao PC e ao Linux. Vamos desassemblar
nosso programinha com o gdb:
$ gdb idiota
*** mensagens diversas ***
(gdb)disass main
Dump of assembler code for function main:
0x8048464 <main>: push %ebp
0x8048465 <main+1>: mov %esp,%ebp
0x8048467 <main+3>: sub $0x8,%esp
0x804846a <main+6>: call 0x8048430 <funcao_idiota>
0x804846f <main+11>: add $0xfffffff4,%esp
0x8048472 <main+14>: push $0x8048520
0x8048477 <main+19>: call 0x8048334 <printf>
0x804847c <main+24>: add $0x10,%esp
0x804847f <main+27>: xor %eax,%eax
0x8048481 <main+29>: jmp 0x8048483 <main+31>
0x8048483 <main+31>: leave
0x8048484 <main+32>: ret
0x8048485 <main+33>: lea 0x0(%esi,1),%esi
0x8048489 <main+37>: lea 0x0(%edi,1),%edi
End of assembler dump.
(gdb)
Observe a linha
0x804846a <main+6>: call 0x8048430 <funcao_idiota>
Desenferrujando um pouco nossos conhecimentos de assembler, lembramos
que a funo call chama uma outra funo qualquer residente no endereo
especificado. Como em linguagem de mquina no d pra atribuir nomes s
subrotinas, o sistema tem que saber exatamente onde na memria elas esto.
No comeo da listagem, observe que a funo main inicia na posio de mem-
ria 0x8048464 e instruo call chama uma subrotina que se encontra em
0x8048430. Vamos dar agora uma olhada na funo funcao_idiota( ):
(gdb) disass funcao_idiota
Dump of assembler code for function funcao_idiota:
0x8048430 <funcao_idiota>: push %ebp
0x8048431 <funcao_idiota+1>: mov %esp,%ebp
0x8048433 <funcao_idiota+3>: sub $0x18,%esp
0x8048436 <funcao_idiota+6>: add $0xfffffff4,%esp
0x8048439 <funcao_idiota+9>: lea 0xfffffff8(%ebp),%eax
0x804843c <funcao_idiota+12>: push %eax
0x804843d <funcao_idiota+13>: call 0x8048304 <gets>
0x8048442 <funcao_idiota+18>: add $0x10,%esp
0x8048445 <funcao_idiota+21>: add $0xfffffff8,%esp
0x8048448 <funcao_idiota+24>: lea 0xfffffff8(%ebp),%eax
0x804844b <funcao_idiota+27>: push %eax
0x804844c <funcao_idiota+28>: push $0x8048500
0x8048451 <funcao_idiota+33>: call 0x8048334 <printf>
0x8048456 <funcao_idiota+38>: add $0x10,%esp
0x8048459 <funcao_idiota+41>: jmp 0x8048460 <funcao_idiota+48>
0x804845b <funcao_idiota+43>: nop
0x804845c <funcao_idiota+44>: lea 0x0(%esi,1),%esi
0x8048460 <funcao_idiota+48>: leave
0x8048461 <funcao_idiota+49>: ret
0x8048462 <funcao_idiota+50>: mov %esi,%esi
End of assembler dump.(gdb)
Olha s! O call da funo main( ) chama exatamente a funcao_idiota(). Den-
tro da funo idiota, a linha
0x8048461 <funcao_idiota+49>: ret
mostra a instruo assembler de retorno (ret). Essa instruo vai usar o pon-
teiro de retorno para voltar ao main. Chegamos ao cerne da questo dos exploits
por buffer overflow. Trocando em midos, voc precisa:
1. 1. 1. 1. 1. Descobrir uma varivel do tipo buffer que esteja vulnervel;
2. 2. 2. 2. 2. Verificar, no cdigo fonte ou por tentativa e erro, os endereos onde as
chamadas de funo esto, bem como o endereo que marca o incio do buffer
da varivel;
3. 3. 3. 3. 3. Fabricar um exploit que insira cdigos de mquina no buffer, contendo
Invaso Invaso
262 263
instrues para nos dar um shell, e depois estufea pilha at atingir a posio
do ponteiro de retorno, l colocando o endereo do incio do buffer.
Um exemplo, em Unix, seria uma rotina que, atravs da funo execve( )
chamasse um shell. execve( ) uma chamada de sistema que simplesmente
permite executar um arquivo binrio externo ao programa. Que beleza! De
dentro de nosso exploit, executamos /bin/sh !!! O shell executado no usurio
do programa vulnervel. Se for, por exemplo, no Apache, ganharemos um shell
do usurio nobody. O que hackers mais gostam, nessa hora, so programas
vulnerveis rodando com SUID... Mas isso outra histria (v l e pesquise!).
No Windows, programas vulnerveis rodando com privilgio System so um
perigo! Acesso total mquina. Para explorar um buffer overflow, geralmente
faz-se chamadas a funes de DLLs acessveis pela aplicao vulnervel. Dica
para estudo de execuo arbitrria de comandos no Windows:WININET.DLL e
o prprio MFC.DLL. Novamente, mexa-se...
No vamos nos aprofundar mais, pois no est no escopo do livro entrar
muito fundo nas entranhas de nenhum assembler. Para comear, um belo texto
para iniciantes em buffer overflows (mixter.void.ru/exploit.html). Para saber
mais, recomendo a leitura dos whitepapers da Fatal 3rror (struck.8m.com/f3),
o excelente texto de Dark Spyrit sobre buffer overflows no Windows
(community.core-sdi.com/~juliano/bufo.html) e o estudo que comeou tudo
isso:Smashing the stack for fun and profit, do lendrio Aleph1, lanado na
edio 49 da ezine Phrak em 1996 e disponvel online no endereo
www.insecure.org/stf/smashstack.txt.
Outro white-paper digno de nota: como explorar servios avanados com
estouros de pilha, indo muito alm de conseguir um shell. Taeho Oh nos mostra
em postech.edu/~ohhara (ou, alternativamente, em ohhara.sarang.net/security/
adv.txt) como furar firewalls baseados em filtros de pacotes, abrir sockets (e,
portanto, backdoors) no prprio exploit e libertar-se da priso do chroot
4
.
Se voc quer realmente conhecer a fundo todos os meandros dos estouros de
pilha (nos quais 99%dos exploits existentes so baseados), recomendo, nova-
mente, parar a leitura do livro e estudar os sites indicados. Lembre-se, o Google
seu amigo... Desnecessrio dizer que pr-requisito para isso saber alguns
fundamentos de C e Assembler. Apesar de alguns dizerem que no, as lingua-
gens Pascal (e portanto o Delphy/Kylix tambm) e Basic (Visual Basic, Turbo
Basic, Quick Basic,...) e mesmo novas linguagens como C++, C#e Java tambm
padecem do mesmo mal. As formas de explorar os estouros nessas linguagens
so diferentes, mas ainda assim a vulnerabilidade existe.
4. Chroot , simplificando adefinio, umamaneirade enjaularumaaplicao que precise de direitos
de superusurio pararodar. Normalmente, instala-se aaplicao emumdiretrio que possui umacpiado
sistemade arquivos do sistemaoperacional, mas no o sistemade arquivos verdadeiro. Nesse ambiente
falso, aaplicao rodacompseudo-direitos de root, que s valemdentro do ambiente.A aplicao ficafeliz
emser enganadae rodaperfeitamente.Se umhacker invadir essamquinapor meio de umbuffer overflow
da aplicao emchroot, vai conseguir, no mximo, o mesmo superusurio falso que a aplicao usa. 5.Quando o diadestri anoite/ anoitedivideo dia/ tentei correr, tentei meesconder / mas agoraatraves-
so parao outro lado. Break on through [to the other side]. Do lbumThe Doors, de 1967.
You know the day destroys the night / Night divides the day / Tried to run,
tried to hide / Break on through to the other side
5
At agora, invadimos uma nica mquina. Ok, voc pode ter invadido diver-
sas, mas mesmo que 0wnedez ou quinze delas ainda no pesquisou como a
rede ao redor funciona. Ou pior: voc conseguiu um shell restrito e no conse-
gue fazer muitas coisas! Encontramos dois exemplos clssicos nas pginas an-
teriores: o servidor Web Apache (que roda em usurio nobody) e aplicaes
rodando em chroot.
Tomemos o Apache: voc aplicou um exploit nele e conseguiu um shell. S
que, nesse shell, o usurio que est logado o nobody um usurio especial
criado justamente para no dar poderes especiais a potenciais invasores. Como
o Apache no precisa de poderes especiais para rodar, apenas acesso a seus
prprios arquivos, tudo corre s mil maravilhas. Um script kid entra por buffer
overflow, tem acesso a um shell do nobody, pode, talvez, sobrescrever uma ou
outra pgina HTML e s! No tem acesso rede, no tem poderes de root,
no possui sequer um diretrio /home...
No Windows (NT e 2000), apesar de ser mais freqente os administradores
instalarem programas servidores nos grupos System ou Administrator, tam-
bm prtica recomendada de segurana deixar tais programas com o mni-
mo possvel de direitos sobre o sistema.
Nesse cenrio, invadimos a mquina mas no temos, ainda, muito poder so-
bre ela. hora, pois, de tentar conseguir, de alguma forma, acesso a outras
contas e, se possvel, ao superusurio.
A primeira forma a que vimos nas pginas anteriores. Todo usurio tem
acesso a diversos programas em sua mquina normal. Numa mquina Unix
temos diversos scripts, programas de todos os tamanhos como fetchmail, MySQL,
Informix, Oracle, sendmail, login, telnet, popd, inetd... Mais perto do usurio
final, ainda, temos o servidor grfico X Windows, os ambientes KDE, Gnome,
CDE, WindowMaker (etc etc etc) e aplicativos associados. Temos ainda os pr-
prios configuradores do sistema, como Linuxconf no Linux, Smit no AIX,
Admintool no Solaris, SAM no HP-UX... Cada um deles com maior ou menor
grau de direitos sobre o sistema. Exploitarqualquer um dos programas deste
pargrafo pode levar ao root ou a, pelo menos, um usurio com mais direitos.
Uma ltima dica: leia atentamente as pginas de manual dos comandos su su su su su e
sudo sudo sudo sudo sudo e do arquivo /etc/sudoer /etc/sudoer /etc/sudoer /etc/sudoer /etc/sudoers ss ss. Voc talvez ache interessante. (H h h...)
No Windows no nada diferente. IIS, subsistema de segurana e login, Access,
Word, Excel, Powerpoint ( triste, mas j encontramos servidores com o Office
Ganhando acesso a outras contas
Invaso Invaso
264 265
instalado...), MS SQL Server, CGIs diversos... Todos eles podem ser explorados
para oferecer mais controle. At que se chega em algum usurio ou programa
que d acesso linha de comandos com os privilgios do grupo System (o
rootdo Window NT). A dica, neste caso, fica por conta de exploits sucessivos
(para ganhar cada vez mais poder) em direo a alguma DLL do prprio Kernel.
Se voc leu o captulo sobre Plataformas Windows, aprendeu que vrias partes
do kernel rodam em User Mode. Algumas, mesmo assim, rodam com privilgi-
os do grupo System. 2+2...
Embora seja efetivo e fcil, depender de exploits pode deix-lo na moem
sistemas bem configurados e, principalmente, atualizados. H, entretanto, for-
mas alternativas de ganhar acesso a outras contas. A quebra de senhas , segu-
ramente, a mais usada.
Mtodos para descobrir usurios e senhas
No captulo 7 (Vulnerabilidades I) vimos diversas maneiras de quebrar as
senhas do sistema. Vamos relembrar algumas:
1. 1. 1. 1. 1. Logins fracos Logins fracos Logins fracos Logins fracos Logins fracos: Duplas usurio/senha com palavras facilmente encontrveis
no dicionrio ou pior, que possam ser descobertas por engenharia social so
brinquedo na mo de hackers experientes. Listas de palavras e aplicativos que
tentam combinaes baseadas em dicionrios existem s pencas por a.
2. 2. 2. 2. 2. Brute Force Brute Force Brute Force Brute Force Brute Force: se os logins no so assim to fracos, h ainda a possibilida-
de de direcionar um ataque burro, que testa as combinaes possveis de
letras, nmeros e smbolos do teclado at encontrar uma ou mais duplas usu-
rio/senha que entrem.
3. 3. 3. 3. 3. Roubo e decifragem dos arquivos de senhas Roubo e decifragem dos arquivos de senhas Roubo e decifragem dos arquivos de senhas Roubo e decifragem dos arquivos de senhas Roubo e decifragem dos arquivos de senhas: se o hacker conseguir
obter uma cpia dos arquivos de senhas (SAM databases no Windows, /etc/
passwd e /etc/shadow no Unix) est dentro! Basta usar as ferramentas conhe-
cidas para tal (como o LophtCrack para Windows ou o John the Ripper para
Unix) e pronto! Todas as senhas do sistema esto no papo, incluindo as do
Administrador do Windows e do root no Unix.
Antes de tentar descobrir pares de logins e senhas, vamos ver um exemplo de
ataque por dicionrio e brute force. Observe uma coisa: j estamos dentro da
mquina, portanto nosso script no vai mais enviar uma solicitao de login
via rede. Podemos usar os procedimentos de login locais do prprio sistema
operacional para tentar mudar de usurio. Novamente, um pouco de engenha-
ria social, se possvel, sempre ajuda.
Apesar de ser possvel usar programas prontos para tal, como internamente
cada caso um caso o melhor caminho fazer um script (em shell no Unix ou
em WSE ou VBA no Windows) que teste seqencialmente toda a sua lista de
palavras em todas as combinaes de logins e senha possveis. Elaborar as
listas com os nomes obtidos por engenharia social uma boa prtica.
Um script que fizesse isso deveria ter a seguinte estrutura:
1. 1. 1. 1. 1. Pega a prxima palavra do arquivo de dicionrio;
2. 2. 2. 2. 2. Insere esse nome no programa de login do sistema;
3. 3. 3. 3. 3. Pega a primeira palavra do arquivo de dicionrio;
4. 4. 4. 4. 4. Insere como senha no programa de login do sistema;
5. 5. 5. 5. 5. Pega a prxima palavra do arquivo de dicionrio;
6. 6. 6. 6. 6. Insere como senha no programa de login do sistema;
7. 7. 7. 7. 7. Volta ao passo 5 at que todas as palavras tenhas sido usadas;
8. 8. 8. 8. 8. Volta ao passo 1 at que todas as palavras tenhas sido usadas.
fcil implementar isso, por exemplo, com os programas login ou su do
Unix em um shell script. Mas h um problema:VOC EST SENDO VIGIADO!!!
Todas as tentativas malsucedidas de login estaro sendo registradas nos logs
do sistema. Como voc ainda no tem privilgios de root, seria impossvel apa-
gar tais rastros. Esta, portanto, no a melhor maneira de tentar entrar. H
uma, entretanto, fantasticamente simples e muito mais segura: o roubo do ar-
quivo de senhas e posterior decifragem dos hashes.
imperativo no ser descoberto. Portanto, a metodologia usada pela maioria
dos crackers obter o arquivo de senhas do sistema e tentar quebr-las, offline,
em casa. Pode-se usar diversos computadores ligados em clusters muito
fcil fazer em casa, com Linux, supercomputadores com cinco ou seis 486s e
mesmo 386s obtidos do lixo e os programas quebradores de senhas j cita-
dos L0phtCrack e John the Ripper. Uma nica mquina rodando Windows
NT com o L0phtCrack j algo considervel: mesmo que demore um ou dois
meses para conseguir alguma senha usvel, tempo o que o hacker mais tem.
E, trabalhando em casa, o seu trabalho no ser detectvel.
Quebrando senhas no Windows
A sistemtica simples. Deve-se:
1. 1. 1. 1. 1. Roubar o arquivo de senhas e levar pra casa;
2. 2. 2. 2. 2. Passar o arquivo de senhas no programa quebrador;
3. 3. 3. 3. 3. Testar as senhas recuperadas no sistema original pra ver se os usurios
no as alteraram.
Como exemplo prtico, vamos usar um descendente do antigo L0phtCrack, o
LC4, atualmente distribudo pela empresa de segurana @Stake
(www.atstake.com). Criado por hackers como prova de conceito para demons-
trar as fragilidades dos hashes do Windows NT, o software chegou at a verso
2.5 ainda com o cdigo fonte aberto. No final da dcada de 90 os direitos sobre
o software foram transferidos atual proprietria, e o L0phtCrack 2.5 foi
relanado como LC3. O LC4 , portanto, uma evoluo direta do L0phtCrack
2.5. O software hoje vendido a um preo de US$350,00 por licena, mas
possvel fazer download de uma verso de avaliao vlida por 15 dias com as
rotinas de brute-force desabilitadas. No site, a @Stake oferece, gratuitamente e
com cdigo fonte, a verso 1.5 do L0phtCrack ainda em linha de comando.
Invaso Invaso
266 267
Para o passo 1, devemos de alguma forma chuparos hashes dos usurios
contidos no banco de dados SAM, normalmente guardado no registro em
HKEY_LOCAL_MA HKEY_LOCAL_MA HKEY_LOCAL_MA HKEY_LOCAL_MA HKEY_LOCAL_MACHINE\SECURITY\SAM\Domains\Account\User CHINE\SECURITY\SAM\Domains\Account\User CHINE\SECURITY\SAM\Domains\Account\User CHINE\SECURITY\SAM\Domains\Account\User CHINE\SECURITY\SAM\Domains\Account\Users ss ss (achou
que no amos dizer a chave?). Para tanto, podemos usar um utilitrio do pr-
prio LC4, chamado pwdump pwdump pwdump pwdump pwdump.
Outro programa que rouba as senhas do SAM o pwdump3. Originalmente
desenvolvido por Jeremy Allison and Todd Sabin, hoje mantido por uma em-
presa, a PoliVec. Embutido em seu produto multiuso de segurana PoliVec
Scanner, o pwdump3 (www.polivec.com/pwdump3.html) permite que as se-
nhas sejam recuperadas inclusive remotamente, pela rede (incluindo a Internet).
Uma terceira opo um utilitrio que acompanha o pacote de servidores
SMB para Unix, o Samba (www.samba.org). Junto com o produto est includo
um programinha chamado (olha que original...) pwdump pwdump pwdump pwdump pwdump, que extrai o SAM
database e o transforma em um arquivo de senhas do Samba (smbpasswd smbpasswd smbpasswd smbpasswd smbpasswd)
vlido. Mais informaes sobre ele podem ser obtidas em us1.samba.org/sam-
ba/ftp/pwdump/.
Nos trs casos, gera-se arquivos de senhas que o LC4 pode interpretar.Nos trs
casos, tambm, precisa-se de privilgios de Administrador para rodar o progra-
ma. Esse obstculo, apesar de complicado, ainda assim contornvel. H diversas
maneiras de faz-lo: rodando o programa na mquina alvo atravs de um exploit,
rodando o programa em uma mquina de senhas fracas com relaes de confian-
a com a mquina alvo, fazendo invaso fsica no local onde a mquina est...
Uma vez conseguido o arquivo de senhas, passemos ao passo 2. Desconecte-
se completamente da rede a ser invadida e rode, em casa, o LC4 contra seu
arquivo. H uma farta documentao includa com o prprio produto, portan-
to no vamos detalh-lo aqui. A figura a seguir mostra um processo de cracking
em andamento, com algumas senhas j descobertas:
quadro
Observe:como vimos nos captulos sobre Vulnerabilidades,as contas no WinNT
so guardadas em 2 hashes: um para o antigo Lan Manager e outro com a senha
mais forte do NT. Alm do LM Hash ser mais fcil de quebrar, normalmente os
usurios usam a mesma senha localmente (NTLM). O prprio LC4 sabe disso e,
uma vez conseguida a senha LM, interrompe o brute force e tenta a mesma
senha no NT. Como voc pode ver na figura, vrias senhas j esto descobertas
e, no exemplo, TODAS so iguais nos dois campos. O usurio shennesy parece
gostar do seriado Star Treck e o usurio djattan parece no estar muito conten-
te com seu local de trabalho - com um pouco de engenharia social, o hacker
nem precisaria do LC4. O usurio Guest no possui senha (glup!).
A figura anterior foi retirada de um estudo de Dan Smith, na Universidade da
Carolina do Norte, EUA, e pode ser encontrado em www.unc.edu/~smithdr/
inls187/sr.html . O estudo, alm de analisar o software, traz dados sobre tempo
para quebrar senhas de todos os tipos, fracas ou teoricamente seguras.
Por ltimo (passo 3), teste todas as senhas que conseguiu no sistema invadi-
do. possvel que algumas estejam trocadas, mas voc j sabe, pelo menos, o
nome dos usurios vlidos e o padro que eles usam para elaborar suas senhas.
Por exemplo, a conta Administrator mostrada possua uma senha BARNABAS09.
As chances esto entre 80%e 90%de que, nos prximos meses, ela seja
BARNABAS10, BARNABAS11... Acho que o leitor j pescouo mecanismo!
Quebrando senhas no Unix
Voc acha que a sistemtica mudou?Nada disso:
1. 1. 1. 1. 1. Roubar o arquivo de senhas e levar pra casa;
2. 2. 2. 2. 2. Passar o arquivo de senhas no programa quebrador;
3. 3. 3. 3. 3. Testar assenhasrecuperadasno sistemaoriginal praver seo usurio no aalterou.
H diversos programas para Unix que descobrem senhas em arquivos
criptografados. O mais conhecido certamente o John the Ripper. Us-lo to
fcil que d raiva. Uma vez instalado e configurado, basta aliment-locom o
arquivo de senhas e deixar que ele faa o servio. A sintaxe simples:
$ john arquivo_senhas
No passo 1 temos os mesmo problemas que tivemos como Windows.Como vimos
no captulo sobre Plataformas Unix, os sistemas modernos utilizamo sombreamento
de senhas, que consiste em separar o processo de login em dois arquivos:
o /etc/passwd (que contminformaes gerais sobre o usurio, como nome, login,
GID, UID, diretrio /home e shell inicial) e o /etc/shadow (que contmas senhas
criptografadas). Como o /etc/passwd temque ser legvel por todos, os hashes ficari-
amdesprotegidos se ficassema. O arquivo /etc/shadow, ao contrrio, legvel e
editvel apenas e to somente pelo superusurio, o root. Se o sistemainvadido pos-
suir sombreamento de senhas, voc s conseguirroubar o arquivo /etc/shadow se
estiver emumshell root.Se o sistemainvadido no possuir sombreamento,o admi-
nistrador jdeixou metade do servio pronto paravoc...
6
6. Mesmo que o sistemapossuapassword shadowing, voc aindateros nomes vlidos de contas.
Invaso Invaso
268 269
Encontrar e aplicar um exploit que lhe d acesso a root a forma mais direta
para conseguir o arquivo de shadow. Outras formas incluem:
1. 1. 1. 1. 1. Fazer core dumps de programas SUID root que acessem as senhas (como
o FTP, o SSH ou o Telnet);
2. 2. 2. 2. 2. Verificar no arquivo passwd qual dos usurios tm pintade ad
mistrador possvel que ele possua programas SUID em seu /home.
Uma vez descoberta a senha, chegamos ao passo 2. Basta rodar o John the
Riper de acordo com o configurado e esperar. No final, uma lista de senhas
vlidas (possivelmente a do root tambm) ser encontrada. O passo 3 trivial:
volte cena do crime e use as senhas. Nada como logar-se como um usurio
autorizado para despistar as auditorias de invaso...
Ganhando acesso e destruindo a rede
Umavez dentro darede, hdiversas aes possveis de ser tomadas. Estando em
posse de umamquina,pode ser mais fcil invadir outras.Mas nem s de 0wnar
vive um cracker. possvel,por exemplo,usar arede como trampolim paraoutras
redes maiores. Ou capturar senhas dos usurios em servioes externos como
senhas de bancos ou nmeros do carto de crdito. Ou aindadesviar o trfego
paraque os usurios sejam encaminhados paraarmadilhas ou sites falsos.
Apresentaremos nesta seo apenas descries resumidas desses tipos de
ataques, com indicaes para sites com mais informaes.
War Driving e War Chalking
Uma das mais novas formas de invaso corporativa o War Driving. Hackers
saem pelas ruas da cidade com gambiarras feitas de latas de batata frita, arru-
elas e alguns cabos, e capturam conexes de rede wireless que estejam vazan-
do. Como as corporaes no costumam criptografar suas conexes internas,
uma conexo wireless desse tipo fornece um acesso ilimitado, similar ao con-
seguido se o invasor entrar andando pela porta da frente e plugar um cabo do
seu laptop em uma tomada de rede da empresa.
O assunto relativamente novo e merece um estudo muito mais profundo do
que o que seria permitido neste livro. Alis, seria necessrio um livro inteiro
sobre isso. Uma excelente fonte de informaes e recursos (tutoriais, equipa-
mentos, esquemas de antena inclusive feitas em casa) o site
www.wardriving.com. Um esquema simples de antena, construdo com o j
lendrio tubo de batatas fritas Pringles, pode ser encontrado em
www.oreillynet.com/cs/weblog/view/wlg/448.
Hackers europeus foram mais longe e criaram o War Chalking um alfabeto
especial para marcar, com giz e na calada, os pontos de acesso (posio e
orientao da antena) para uma melhor conexo rede alheia. Saiba mais so-
bre as tcnicas usadas no site oficial: www.warchalking.org (ou, alternativa-
mente, www.warchalking.us). Esse site traz informaes tcnicas, tutoriais, clu-
bes e muitos links para outros recursos. O site www.blackbeltjones.com tam-
bm tem diversos recursos. Um artigo sobre o assunto pode ser encontrado na
Meca do wireless, o site 802.11 Planet (www.80211-planet.com/columns/
article.php/1402401).
Indo alm do SQL Injection...
Em nosso segundo estudo sobre vulnerabilidades, vimos maneiras simples de
enganar o script da pgina (seja em ASP, PHP, ColdFusion ou algum CGI) e
injetar nela modificaes na query SQL associada. Mas h outras maneiras de
brincar com sistemas baseados em Web.
A primeira e mais imediata observar e manipular os dados da prpria URL.
Muitos sistemas on-line carregam informaes valiosas em campos presentes de-
pois do endereo HTTP (tarefaparacasa: pesquisar sobre os mtodos HTML GET
e POST). Pentear umaURL grande tentando entender como o sistemafunciona o
primeiro passo paraentrar em tal sistema. Bancos, sites de compras e mesmo sites
governamentais utilizam aURL como transporte de dados do cliente sem se im-
portar com o fato de serem informaes visveis por qualquer um narede.
Um exemplo notrio disso foram as vulnerabilidades encontradas h alguns
anos no Hotmail (www.hotmail.com), em que os identificadores de sesso,
nomes de usurio e hashes das senhas estavam presentes na prpria URL. Hoje
o Hotmail j no padece mais desse mal, mas por muitos anos foi uma brecha
extremamente fcil de explorar.
Preste ateno ainda em sites que usam chamadas ODBC e no SQL. Sistemas
100%Microsoft tendem a privilegiar o inseguro protocolo ODBC para acesso
a bancos de dados Access e SQL-Server.
Alguns links para pesquisa sobre SQL Injection:
www.securiteam.com/securityreviews/5DP0N1P76E.html
online.securityfocus.com/infocus/1644
www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&tabid=3
www.nextgenss.com/papers/advanced_sql_injection.pdf
www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf
Outro mtodo o cookie poisoning cookie poisoning cookie poisoning cookie poisoning cookie poisoning, uma maneira de torcer a autenticao
via W eb. Quase a totalidade dos sites hoje em dia utilizam-se de cookies para
controlar acesso e sesso. Alterar UserID e SessionID em cookies pode ser um
atalho para entrar em contas de outros usurios.
mais difcil encontrar recursos sobre cookie poisoning na Internet. Sugeri-
mos os seguintes recursos:
White paper: Hacking web applications using cookie poisoning
(www.allasso.pt/base/docs/11042206054.pdf).
Buscapelapalavrachave cookie no Security Focus (www.securityfocus.com).
Invaso Invaso
270 271
Na prtica, como a maioria esmagadora dos gateways ligam sua rede interna
Internet, o que o invasor tem disposio tanto seu conjunto potencial de
senhas e informaes confidenciais quanto os e-mails, senhas, informaes e
cartes de crdito que entram e saem de sua empresa. Imagine, num cenrio
ainda mais tenebroso, que um hacker plantou um sniffer em um gateway que
liga sua empresa ao seu site de comrcio eletrnico, ou operadora de cartes
de crdito, ou a seu parceiro, ou ao banco. Fatal!
A primeira providncia quando se vai farejar uma rede colocar a interface
de rede de alguma mquina em modo promscuo. Como vimos nos captulos
Redes I e II, quando um pacote IP chega em uma rede, a interface que detm o
pacote pergunta:qual o MAC Address que contm o endereo IP desse paco-
te?A mquina destino responde com seu MAC Address e o pacote enviado a
ela. Esse o conhecido protocolo ARP.
Enviado a ela, como escrito no pargrafo anterior, ligeiramente mentiro-
so (ou, como dizia um pastor luterano que conheci, um exagero da verda-
de). O pacote , na verdade, jogado no barramento e todas as interfaces po-
dem ler. O que ocorre que as interfaces fazem ouvidos moucosao pacote,
caso este no seja direcionado a elas. Apenas a mquina a que realmente se
destina presta atenoao que est trafegando na rede. As outras simplesmen-
te ignoram-no.
aqui que entra o modo promscuo. Uma interface configurada dessa forma
ouveTODOSos pacotes que trafegamnarede,e no apenas os que so destinados
Dois softwares que trabalham como Proxy baseados no desktop podem ser
usados para facilitar a manipulao de Cookies (e de cabealhos HTTP tam-
bm!): so eles o Achilles e o BrowseGate. A empresa que produz o Achilles
(DigiZen Security Group www.digizen-security.com) parece ter retirado o
site do ar, mas descries sobre o produto podem ser encontradas no
PacketStorm (packetstormsecurity.nl/filedesc/achilles-0-27.zip.html) e no
SecuriTeam.com (www.securiteam.com/tools/6L00R200KA.html).
O BrowseGate, desenvolvido pela NetCPlus (www.netcplus.com/
browsegate.html) outra opo de Proxy Server que pode ser usada de manei-
ra malfica para torcer cookies e autenticao em sites. H uma anlise dele
em www.webattack.com/get/browsegate.shtml.
Para todos os problemas listados, possveis solues podem ser encontradas
no site oficial sobre segurana em sistemas web: www.owasp.org.
Farejando a rede (Sniffing)
Outra forma de ganhar acesso a uma rede, depois de 0wnaruma das m-
quinas que a integram, passar a escutaro que est trafegando nessa rede.
Os programas que fazem esse tipo de trabalho sujo so chamados de sniffers
ou farejadores.
Um sniffer trabalha na camada 2 de nosso modelo de referncia OSI. Isso
quer dizer que impossvel fazer um sniffing diretamente via Internet em
uma rede distante. necessrio que o invasor instale e rode o sniffer em uma
mquina pertencente rede local que se quer farejar.
O objetivo mais imediato de um invasor quando instala um sniffer desco-
brir senhas de outros usurios da mesma rede. Deixando a ferramenta de
campana por alguns dias, possvel conseguir senhas de dezenas de usuri-
os e centenas de servios (sites, e-mail, servidores, sistemas...). Como h servi-
os autorizados para alguns usurios em especial e negados aos outros,
interessante, medida que se
v conseguindo senhas, que
instale sniffers em diversas
mquinas e, com isso, consiga
um universo maior delas.
fcil perceber que, nesse
contexto, o invasor vai
0wnando aos poucos um gran-
de nmero de mquinas dentro
da rede remota. Como uma
ferramenta da camada 2 e, por-
tanto, local, o sniffer deve ser
instalado e deixado em ativida-
de sem que o invasor interve-
nha. A ferramenta escutar a rede e gravar tudo o que for de interesse em um
arquivo. Depois de algum tempo (alguns dias ou semanas) o hacker voltar ao
local do crime apenas para recuperar o arquivo com o tesouro, o qual analisa-
r em casa, desconectado.
H uma forma mais perniciosa de usar o sniffer: coloc-lo em um gateway
entre redes. Como vimos nos captulos pertinentes, um gateway um equipa-
mento que une duas ou mais redes diferentes de forma a passar pacotes entre
elas quando aplicvel. Um sniffer colocado num gateway pode escutar, ento, o
trfego de todas elas.
Invaso Invaso
272 273
aela. Se isso umfacilitador paraaimplementao de ferramentas de monitorao
de rede coisaque todo administrador competente deveriausar tambmpossibi-
litaque algumcomms intenes facilmente escute o que no devia.
Para colocar uma interface de rede em modo promscuo, deve-se ter acesso
privilegiado ao sistema operacional o que equivale a dizer root root root root root em um siste-
ma Unix, Administr Administr Administr Administr Administrator ator ator ator ator em um sistema WinNT ou Admin Admin Admin Admin Admin em um Novell
Netware. Por isso mesmo, tomar completamente pelo menos uma mquina na
rede (como vimos anteriormente) imperativo para que possamos fazer uma
colheitaposterior. H diversas formas de colocar uma interface de rede em
modo promscuo. H programas especiais para isso em qualquer plataforma e
mesmo alguns truques no sistema operacional (seja ele Windows, Novell, HP-
UX...) so possveis sem o auxlio de qualquer programa externo.
Todo sistema operacional possui uma ferramenta qualquer que mostra o
estado e altera as configuraes da placa de rede. Tomando como exemplo um
sistema GNU/Linux, o comando que faz esse trabalho para ns o ifconfig ifconfig ifconfig ifconfig ifconfig.
Emitido (como root) sem argumentos, o comando mostra o estado de todas as
interfaces de rede. Emitido seguido do nome de uma interface, d o estado
atual dessa interface. Por exemplo, para saber a quantas anda a primeira
interface de rede (eth0), o comando seria:
# ifconfig eth0
O resultado seria:
Encapsulamento do Link: Ethernet Endereo de HW 00:08:74:B5:64:95
inet end.: 192.168.1.11 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Mtrica:1
RX packets:13567 errors:0 dropped:0 overruns:1 frame:0
TX packets:8300 errors:0 dropped:0 overruns:0 carrier:0
colises:0
RX bytes:3163776 (3.0 Mb) TX bytes:994079 (970.7 Kb)
Observe as informaes mostradas. Voc sabe, por meio desse comando, que
o encapsulamento do link (ou seja, o protocolo de camada 2) Ethernet, que o
MAC 00-08-74-B5-64-95, que o endereo de rede 192.168.1.11, que o tama-
nho mximo do pacote Ethernet (MTU) de 1.500 bytes, etc... H tambm
alguns flags que indicam se a interface est pronta ou em p(UP), se est
rodando (RUNNING) e se responde a broadcast ou multicast. Agora vejamos o
que acontece com o comando abaixo:
# ifconfig eth0 promisc
Aparentemente, nada acontece. O shell nos devolve o prompt e nenhuma
mensagem de erro ou de tarefa conlcuda mostrada. Mas, se emitirmos nova-
mente o comando ifconfig eth0 ifconfig eth0 ifconfig eth0 ifconfig eth0 ifconfig eth0, o resultado seria um pouco diferente:
Encapsulamento do Link: Ethernet Endereo de HW 00:08:74:B5:64:95
inet end.: 192.168.1.11 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Mtrica:1
RX packets:13567 errors:0 dropped:0 overruns:1 frame:0
TX packets:8300 errors:0 dropped:0 overruns:0 carrier:0 colises:0
RX bytes:3163776 (3.0 Mb) TX bytes:994079 (970.7 Kb)
Bingo! Observe que a placa agora est em modo promscuo (flag PROMISC).
Absolutamente TUDO o que est trafegando na rede interpretado pela pilha
TCP/IP do kernel e pode, portanto, ser monitorado. Isso inclui pacotes no
direcionados a essa mquina.
Sniffing passivo
As redes locais normalmen-
te se utilizam de equipamen-
tos chamados hubs (captulos
Redes I e II) para facilitar e
flexibilizar aconexo de no-
vas mquinas aumarede exis-
tente. O hub age aindacomo
um elemento regenerador do
sinal eltrico presente no
barramento de rede. Mas o
hub um elemento passivo passivo passivo passivo passivo
no tocante acontrole do tr-
fego narede local.
Hubs e repetidores so
equipamentos que traba-
lham na camada 1 do mo-
delo OSI, portanto no tm controle algum sobre o quadro Ethernet (ou qual-
quer outro protocolo de camada 2 como Token Ring, PPP, Frame Relay ou
X.25). Isso significa que uma mensagem enviada de uma mquina para a ou-
tra ser ouvida por todas na rede.
fcil perceber, no desenho acima, que se a mquina A enviar uma mensa-
gem para a C, as estaes B, D e H ainda estaro ouvindo. Portanto, apesar
da aparncia de estrela, uma rede que se utilize de um hub para interligar
as mquinas , na realidade, um barramento.
Conclumos que muito fcil para um sniffer registrar e decodificar tudo
o que trafega nessa rede. Como trabalha com interfaces em modo proms-
cuo, todos os pacotes da rede podem ser interpretados. Mas e se a rede
estiver segmentada com bridges ou switches?
Invaso Invaso
274 275
Sniffing ativo
Um switch ou bridge possui uma tabela que relaciona os MAC addresses que
ouviuna rede com as portas ou segmentos nos quais foram ouvidos. Como
preenchida dinamicamente, essa tabela ser atualizada toda vez que uma
nova mquina for conectada rede.
Como diziaum parente meu (ilustre, mas iletrado),tudo o que demais em
demazia(sic).A memria do switch possui um tamanho limitado, portanto um
nmero muito grande de interfaces de rede ligadas em cadaumadas portas pode-
ria, num caso extremo, preench-lacompletamente. Pensando nisso, os fabricantes
desses equipamentos as dimensionam paraque esse limite nuncasejaatingido.
O problema que um quadro Ethernet nadamais do que umaseqnciade uns
e zeros que pode, por isso mesmo, ser manipulada. Um programacuidadosamente
escrito poderiagerar, ad infinitum, frames Ethernet com MAC adresses aleatrios
e, em alguns minutos, preencher completamente amemriado switch. Como o
show no pode parar, esses equipamentos podem comear arepassar mensagens
indiscriminadamente paratodas as portas.Essatcnica chamadade MAC Flooding.
No captulo 2 (Redes I) vimos en passant a descrio desses equipamentos.
Uma bridge divide a rede em dois segmentos e bloqueia trfego no destinado
cada um deles.
Observe:as mquinas A e B esto no segmento 1, enquanto C e D no segmen-
to 2. Isolando os dois, uma bridge. O trfego de A para B e de B para A fica
restrito ao segmento 1, e o trfego de C para D e de D para C fica restrito ao
segmento 2. A bridge bloqueia o trfego local, no deixando que mensagens
no endereadas a um barramento em especial cheguem nele.
Entretanto, se a mquina C quer enviar uma mensagem para a mquina A, a
bridge deixa passar o pacote.
A determinao de quais pa-
cotes devem passar e quais de-
vem ser bloqueados dinmi-
ca,baseadanos endereos MAC
das interfaces de rede. No mo-
mento que umabridge ligada,
elano tem nadanamemria.
medida que as estaes vo
enviando pacotes paraarede, a
bridge guardaos MAC Adresses
numa tabela, relacionando-os
com o segmento de onde o pa-
cote se originou. Note que tudo
se passanacamada2 do modelo OSI: abridge s tem conhecimento das mquinas
ligadas diretamente em suarede local.
Imagine, agora, um hub que possusse umabridge em cadaporta. Cadamquina
darede receberiaapenas trfego destinado asi. Esse monstrengo existe e se cha-
macomutador ou switch.Observe: assim como em nosso primeiro exemplo, aesta-
o A quer enviar umamensagem paraaestao B.Devido ao switch,nenhumadas
outras mquinas irescutar o que A tem adizer.Alm disso,C poderiafalar com E
simultaneamente, pois arede est, paraelas, ociosa.
Uma rede com um switch no lugar de um hub, alm do controle e diminuio
do trfego, tambm ofereceria uma segurana adicional rede, uma vez que
um sniffer instalado, por exemplo, em D no poderia escutar nada das conver-
sas entre A e B ou C e E. O uso de bridges e switches, ento, minimizaria o
problema dos sniffers, certo?Infelizmente, mais uma vez, a resposta no...
Invaso Invaso
276 277
No diagrama mostrado, a estao A quer falar com a estao B. A partir da
estao H, um hacker quer farejar a comunicao entre A e B. Para isso,
necessrio uma preparao prvia. A primeira coisa que o hacker deve fazer
configurar seu sistema operacional de H para repassar todo e qualquer
trfego que chegue para si, vindo de A, para a verdadeira mquina destino,
que B. A configurao do IP f IP f IP f IP f IP forw orw orw orw orwar ar ar ar arding ding ding ding ding normalmente feita pelo prrpio
sniffer, mas possvel que em alguns casos seja necessrio faz-lo manual-
mente. Tanto Windows quanto Netware e tambm qualquer Unix permitem
esse tipo de redirecionamento. Lembra-se daquele mapa da rede, feito com
ping+traceroute (ou com o Cheops)? Ele ser muito til agora.
O segundo passo enganar a mquina A, fazendo-a acreditar que o IP de B
possui o MAC de H.Isso conseguido fazendo H enviar um nmero monstruoso
de respostas ARP para A, informando que o IP de B possui o MAC de H respos-
tas essas que sequer foram soli-
citadas. Depois de um certo tem-
po,A pensaque, para mandar
mensagens para o IP de B, tem
que construir quadros Ethernet
direcionados ao MAC de H.
Agora s ativar seu sniffer
preferido e esperar. O trfego
vindo de A em direo a B vai
passar por H antes. Nem A nem
B vo desconfiar disso, pois, para
eles, acomunicao apenas en-
tre os dois. Esse tipo de configu-
rao de ataque normalmente
chamado de man in the middle.
Escolhendo seu sabujo
H um nmero gigantesco de ferramentas de sniffing que podem ser usadas
em diversas plataformas. Eis alguns:
tcpdump tcpdump tcpdump tcpdump tcpdump (www.tcpdump.org), a ferramenta nativa de monitoramento
de rede de qualquer Unix. J vimos o funcionamento do tcpdump no captulo
Redes II. Colocando a placa de rede em modo promscuo (por exemplo, com
ifconfig no Linux) e rodando o tcpdump, tem-se o mais bsico possvel (mas
no por isso menos eficiente) sniffer de rede para Unix. A vantagem de se
usar o tcpdump que todos os Unices j o possuem o invasor no precisa
instalar nada, s rodar o programa e direcionar a sada para um arquivo. O
comando seria:
Uma vez nessa situao, qual-
quer sniffer poder farejar a
rede. H ferramentas que fazem
isso (uma delas, escrita em Perl,
pode ser encontrada em
www.safenetworks.com/
Others/3com4.html), mas os
sniffers mais modernos (como
o ettercap e o dsniff) j fazem
todo o trabalho.
Felizmente (ou infelizmente,
dependendo dos intentos do es-
timado leitor), alguns switches
so imunes ao MAC Flooding.
H vrias maneiras de implementar switches assim. Podem ser usados algoritmos
de proteo que impedem que a memria seja completamente preenchida. Ou
ento um sistema de deteco de flood, baseado em padres de dados e um
knlowledge base dos sniffers conhecidos. Uma terceira maneira seria adotar
uma poltica de persistncia, mantendo MACs conhecidos h mais tempo em
detrimento de novas interfaces, caso a memria lote.
Para contornar esse inconveniente,os hackers desenvolveram uma tcnica cha-
mada ARP Spoof ARP Spoof ARP Spoof ARP Spoof ARP Spoofing ing ing ing ing. uma tcnica um pouco mais complicada,mas muito inte-
ligente. Em vez de trabalhar apenas na camada 2 (Ethernet) o invasor vai confun-
dir o computador cujo trfego se deseja esnifarmanipulando sua tabela ARP.
O ARP, como discutido anteriormente, um mecanismo de traduo IP-para-
MAC. A mquina que quer enviar o pacote pergunta, na rede:Quem tem o IP
tal? Todas as mquinas daquele segmento ouvem a pergunta, mas apenas a
interface que possui aquele
IP responde:Sou eu, meu
MAC XXXXXX. A partir
disso, a interface de origem
monta um quadro Ethernet
e o envia ao destino. O ARP
Spoofing uma maneira de
enganar a mquina da vti-
ma, fazendo-a acreditar que
o endereo MAC da mqui-
na onde o sniffer est
corresponde ao endereo IP
da mquina-destino original.
Complicado? Sim, . Vamos
tentar exemplificar:
Invaso Invaso
278 279
#tcpdump [opes] >arquivo.de.sada
Uma verso do tcpdump para Windows pode ser encontrada em
windump.polito.it windump.polito.it windump.polito.it windump.polito.it windump.polito.it.
IPT IPT IPT IPT IPTr rr rraf af af af af (iptraf.seul.org ), o
av de todos os sniffers Unix,
ainda pode ser efetivamente
usado em uma sesso de
sniffing. Apesar de sua idade,
possui recursos poderosos.
Vale a pena dar uma conferida.
Uma de suas vantagens que,
como o tcpdump, comum
encontr-lo j instalado pou-
pando trabalho, recursos e no
levantando suspeitas.
Ether Ether Ether Ether Ethereal eal eal eal eal (www.ethereal. com), um sniffer poderoso, que suporta vrios
protocolos, marca-os com cores diferentes e interpreta seus significados. Pos-
sui uma interface grfica muitssimo amigvel. mais usada por administrado-
res, mas til tambm para crackers malintencionados. Disponvel para
Windows e Unix. Os autores recomendam.
O Ethereal pode, inclusive, decodificar e extrair informaes a partir de um
determinado protocolo. No exemplo acima, uma pgina HTML foi decodificada
de dentro de uma srie de pacotes TCP:
Snif Snif Snif Snif Sniff ff ffem em em em em (www.sniff-em.com), um sniffer comercial para Windows. Faz
sozinho tudo o que o Ethereal, o Ettercap, o Snort e o Dsniff fazem juntos, mas
pago. Na opinio dos autores, no vale a pena pagar para ter algo que pode
ser obtido gratuitamente com ferramentas menores, mas usurios de Windows
gostam de ter tudo integrado num nico programa. Um dos diferencias do
Sniffem sua capacidade de monitorar interfaces no-usuais como sadas seriais,
USB e modems RAS e RDSI/ISDN.
Snor Snor Snor Snor Snort tt tt (www.snort.org) um detector de intrusos (IDS) que serve tam-
bm como sniffer. muito conhecido por analisar de forma perfeita os logs do
Squid. Tem a seu favor, alm de sua coleo de truques, uma vasta lista de plata-
formas na qual roda, incluindo a Linux, Solaris, *BSD, HP-UX, IRIX, MacOS X,
AIX e Windows.
Sniffit Sniffit Sniffit Sniffit Sniffit (reptile.rug.ac.be/~coder/sniffit/sniffit.html) trabalha exclusivamen-
te em Unix, mas venerado pela comunidade por suas capacidades de sniffing
quase esotricas. Possui dois modos de operao. O tradicional (sniff mode)
faz o que qualquer sniffer faz: grava todo o trfego da rede. Um segundo modo,
chamado de interativo, permite que o hacker veja o que est trafegando na
rede em tempo real. possvel escolher apenas um protocolo para monitorar,
e existem filtros que escondem toda a complexidade inerente dos protocolos,
mostrando apenas os dados teis. Com o sniffit, possvel inclusive ver o que a
vtima est digitando em um programa de mensagens instantneas como o
MSN Messenger ou o ICQ tudo isso em tempo real!
Invaso Invaso
280 281
Haf Haf Haf Haf Hafiy iy iy iy iye ee ee (www.enderunix.org/hafiye) umsniffer baseado emknowledge-base.
Possui umbanco de dados compadres dos mais diversos protocolos de comunica-
o e criptografiae capaz de separar os dados teis de dentro de umpacote.
Kismet Kismet Kismet Kismet Kismet (www.kismetwireless.net) um farejador de redes wireless
(802.11) nos moldes do IPTraf e tcpdump. Alm de ser capaz de decodificar os
protocolos pertinentes, consegue dividir as redes por rea e por clula de r-
dio.Desenvolvido especialmente para Linux, suporta nativamente o PDA Zaurus,
da Sharp, com placa de rede wireless. Uma boa pedida para War Driving.
USB Snoop USB Snoop USB Snoop USB Snoop USB Snoop (sourceforge.net/projects/usbsnoop) monitora e grava todo
o trfego entre o driver do dispositivo USB e o prprio dispositivo. til para
engenharia reversa de drivers (para, por exemplo, produzir um driver Open
Source), mas tambm pode ser usado para monitorar o trfego de modems
USB. Uma rede criptografada e superprotegida pode ser descadeiradase um
laptop for ligado a um computador de mesa ligado a ela pelo USB.
APS APS APS APS APS Advanced Packet Sniffer (www.s-wrtec.de/clinux) outro exemplo de pro-
gramaminsculo que pode ser usado parafarejar pacotes. Como extremamente
dependente do kernel, funcionaapenas emLinux, mas suainterface simples e intuitiva
emmodo texto permite suaoperao remotasemsobrecarregar aconexo.
Hunt Hunt Hunt Hunt Hunt (lin.fsid.cvut.cz/~kra/index.html) no apenas um sniffer, mas uma
ferramenta completa de explorao de falhas na pilha TCP/IP. Suporta tudo o
que um sniffer deve ser capaz de oferecer: vigiar diversos tipos de protocolos
(ICMP, TCP, ARP), montar mensagens fragmentadas a partir de pacotes TCP
seqenciais, detectar ACK Storms, seqestrar sesses (hijacking) e aprender
os MACs da rede, entre muitos outros truques. Por ser muito didtico, o pre-
ferido dos professores de cursos de redes e segurana foi, inclusive, desen-
volvido por um professor de matemtica da Universidade de Praga, Pavel Krauz.
Com o Hunt, podemos facilmente colocar-nos como man in the middle numa
conexo, registrar tudo o que estiver sendo transmitido, manipular os dados e
at mesmo termin-la (reset).
ettercap ettercap ettercap ettercap ettercap (ettercap.
sourceforge.net) um
excelente sniffer ativo,
ou seja, especial para
ser usado em redes com
switches. Suporta MAC
Flood e ARP Spoofing e
extremamente fcil de
usar. Como funciona em
modo texto, fica facil-
mente operacional em
qualquer mquina Unix
e extremamente pe-
queno. Atacar com o
ettercap brincadeira de criana: primeiro, escolhe-se a dupla de mquinas
que se quer monitorar as comunicaes.
Escolhe-se, entre as conexes
TCP ou UDP estabelecidas (pode
haver mais de uma), qual a que
se quer monitorar. Depois disso,
a tela mostra os dados que trafe-
gam entre as duas mquinas.
Pode-se grav-los, examin-los em
modo ASC-II ou hexadecimal ou
injetar car
acteres na trasmisso (e assim
manipular a conexo). H plugins
e novos mtodos de sniffing com
nomes sugestivos, como Port Stealing, Hunt, Confusion... As possibilidades so
enormes!
Angst Angst Angst Angst Angst (angst.sourceforge.net), desenvolvido e testado para o OpenBSD,
uma ferramenta que tem a seu favor a robustez e o tamanho diminuto alm
de fazer sniffing ativo. Possui menos recursos que seus primos mais ilustres
como o ettercap e o dsniff, mas pequeno o bastante para passar despercebi-
do em uma mquina invadida. Funciona tambm com FreeBSD e Slackware
Linux, outras plataformas Unix requerem recompilao e testes.
Dsnif Dsnif Dsnif Dsnif Dsniff ff ff (www.monkey.org/~dugsong/dsniff) , na atualidade, o mais res-
peitado sniffer ativo para redes comutadas. Foi testado pelos autores em
OpenBSD e Linux em PCs e Solaris em mquinas SunSPARC, mas j foi testado
em praticamente todos os sabores Unix conhecidos, entre eles AIX, FreeBSD,
HP-UX e at Mac OS X (blafasel.org/~floh/ports/dsniff-2.3.osx.tgz). H ainda
uma verso (desatualizada mas funcional) para Windows, disponvel em
www.datanerds.net/~mike/dsniff.html.
Apesar dos sniffers mais simples seremmais fceis de plantare usar, houtros,
mais elaborados, que so verdadeiras obras-de-arte do mal. O tcpdump sozinho em
umamquinaUnix jpoderiafazer muito estrago, e tem avantagem de jestar
instalado.Por outro lado,mquinas Win9x permitem que uminvasor esnifearede
(usando,por exemplo,o Windump ou o Ethereal) seminvadir mquinas muito com-
plicadas ou seguras. Como qualquer usurio de Win9x temcontrole total sobre a
mquina, possvel rodar umsniffer nela semprecisar quebrar nenhumasenhade
administrador.A inseguranainerente aessaarquiteturaauxiliao inimigo. Qualquer
servidor ou estao,sejameles Unices,Macintoshes,Netwares ou Windows NT/2k/
XP,pode ser umperigo se mal configurados.Entretanto,redes comestaes Windows
95/98/Me nuncasero seguras, qualquer que sejao esforo dispendido nelas.
Para mais opes, procure por sniffno Fresmeat (www.freshmeat.net) ou
no Google (www.google.com). O download.com tambm possui diversas op-
es para Windows, e os CDs do livro tambm trazem mais alguns deles. Uma
ltima dica sobre sniffers (e outras ferramentas): pedram.redhive.com.
Invaso Invaso
282 283
NaCoitada(192.168.1.2) estamos rodando um servidor de Telnet (no esquea
de ativ-lo!). NamquinaUnix, execute o Hunt. Sermostradaumatelacomo esta:
/*
* hunt 1.5
* multipurpose connection intruder / sniffer for Linux
* (c) 1998-2000 by kra
*/
starting hunt
Main Menu rcvpkt 0, free/alloc 63/64
l/w/r) list/watch/reset connections
u) host up tests
a) arp/simple hijack (avoids ack storm if arp used)
s) simple hijack
d) daemons rst/arp/sniff/mac
o) options
x) exit
->
O smbolo -> o prompt do Hunt. Observe o menu. H rotinas para listar,
observar e derrubar conexes, verificar servidores online, faze hijacking etc.
Temos que configurar o Hunt para que passe a escutar nossa rede. Observe: as
opes l/w/r, respectivamente, listam todas as conexes ativas, vigiam uma
delas e interrompem-na (reset). Para que funcionem, necessrio que haja algu-
ma conexo ativa.
Escolha a opo o(options) e pressione a tecla Enter. Um novo menu ser
apresentado:
-> o
options rcvpkt 723, free/alloc 63/64
l) list add conn policy
a/m/d) add/mod/del conn policy entry
c) conn list properties mac n, seq n
g) suggest mac base EA:1A:DE:AD:BE:00
h) host resolving n t) arp req spoof through req y
Antes de comear nosso estudo, dois lembretes. Emprimeiro lugar, observe que
suaconexo domsticaInternet provavelmente se dpor umprotocolo de camada
2 chamado de PPP ou Point-to-Point Protocol. Como o nome jdiz, umprotocolo
ponto aponto: suarede local possui apenas duas interfaces, ade suamquinae ado
modemdo provedor de acesso.Justamente devido ao PPP,voc no poderfarejar o
trfego nasubrede de Internet qual voc est(aparentemente) conectado. Emuma
ligao empresarial normalmente por linhaprivadausando Frame Relay ou X.25
e no PPP possvel (emborano muito provvel devido afirewalls e roteadores)
que asubrede daInternet determinadaparaaempresapossaser farejada. De qual-
quer forma, umsniffer til apenas emestruturas de conectividade internas, onde h
verdadeiramente vrias mquinas trafegando informaes namesmarede local.
O outro lembrete no menos importante. Existem trs condies bsicas
para se poder esnifara rede:
1 11 11. Existir uma rede com pelo menos 3 mquinas (as duas que se quer monitorar
mais a sua, que monitorar as outras duas).
2 22 22. Possuir acesso de superusurio (root para Unix e Mac OS X ou Administra-
dor para WinNT/2k/XP mquinas com Win9x no precisam de nada disso...)
na mquina que ficar em modo promscuo e farejar a rede.
3 33 33. Possuir autorizao para fazer a monitorao e alertar os usurios da rede
para tal. No condio impeditiva para iniciar o sniffing, mas tico. Todos
tm direito, garantido por lei, privacidade. Se sua empresa possui uma polti-
ca de monitorao de trfego, esta deve ser informada aos funcionrios.
Isso posto, vamos ao que interessa. Em nosso primeiro estudo, usaremos o
Hunt. O programa possui uma interface com o usurio em modo texto que,
apesar de singela, muito funcional. No vamos entrar em detalhes sobre a insta-
lao do programa h intrues para isso na documentao que o acompanha.
Em nossa rede de testes (Laboratrio de Redes II), instale o Hunt na mquina
Unix. Ela ser nossa mquina haxor. Vamos monitorar uma conexo entre a
mquina Windows e a mquina coitada. Para que possamos acompanhar me-
lhor a conexo, vamos abrir uma sesso de Telnet, que um protocolo interativo
e que funciona em texto simples perfeita para ser monitorada pela sua sim-
plicidade e baixa velocidade. Observe:
Farejando na prtica
Nada como uma sesso de sniffing para fixar os conceitos aprendidos. Poder-
amos exemplificar esse procedimento com um sniffer grfico como o Ethereal,
que possui umaverso paraWindows e umabelainterface de comando.O Ethereal
ainda separa e interpreta os protocolos para voc, de modo a fazer o mximo
possvel do trabalho sujoe deixar ao administrador de rede apenas com as
informaes teis, mastigadas. Mas lembre-se: se voc est explorando uma
rede remota, possivelmente vai deixar seu sniffer rodando sozinho para depois
recuperar o arquivo contendo o trfego.A interface grfica, os frufruse a inte-
ligncia do Ethereal de nada adiantaro nesse ambiente.
Invaso Invaso
284 285
r) reset ACK storm timeout 4s w) switched environment y
s) simple hijack cmd timeout 2s y) arp spoof with my mac n
q) arp req/rep packets 2 e) learn MAC from IP traffic n
p) number of lines per page 0 v) verbose n
i) print cntrl chars y
x) return
-opt>
So inmeras opes. Por enquanto, vamos nos ater s mais bsicas.As opes
a/m/d manipulam o que chamado, numa traduo livre, de regras de conexo.
Basicamente, uma regra de conexo a maneira pela qual dizemos ao Hunt
quais conexes queremos monitorar.Vamos adicionar uma regra (opo a).
-opt> a
src ip addr/mask ports [0.0.0.0/0]>
O programa pede o endereo IP e a mscara de rede da interface de origem
(src) que queremos monitorar. No nosso caso, a interface de origem aquela
que vai fazer conexo com um servidor telnet, portanto colocaremos a o IP da
mquina Windows. Lembrando do que aprendemos em Redes II, 0 (zero) quer
dizer todos. Portanto, colocar um zero em qualquer lugar do endereo indica
que todas as mquinas com aquele prefixo sero monitoradas. Por exemplo, se
eu colocasse 192.168.1.1/32, eu monitoraria os pacotes originados nessa m-
quina. Se eu colocasse, por outro lado, 192.168.1.0/24, o Hunt farejaria os pa-
cotes de todas as mquinas da rede 192.168.1.0, ou seja, entre 192.168.1.1 e
192.168.1.254. Num caso extremo, colocar 0.0.0.0/0 seria o mesmo que dizer
ao programa:Vasculhe TUDO!
De maneira similar, preencha o endereo de destino. A prxima pergunta
(insert at) simplesmente para definir em que posio da lista nossa regra
aparecer.
A opo llista as regras de conexo existentes. Em nosso caso, teramos:
-opt> l
0) 0.0.0.0/0 [all] <> 0.0.0.0/0 [23 513]
1) 192.168.1.1/32 [all] <> 192.168.1.2/32 [all]
opes do menu-
*opt>
Observe que temos um asterisco no prompt. O Hunt est nos indicando que
as mquinas esto vivasna rede. Para sair do modo opes, usa a opo x.
De volta tela inicial, temos a opo de listar (l) as conexes ativas. Experi-
mente e veja: no h nenhuma conexo no momento. Vamos criar uma ento.
Na estao Windows (192.168.1.1) vamos fazer uma conexo de Telnet para
a Coitada. Abra uma janela do DOS e digite telnet 192.168.1.2 telnet 192.168.1.2 telnet 192.168.1.2 telnet 192.168.1.2 telnet 192.168.1.2. Se tudo esti-
ver certo, vai aparecer a tela de login da mquina Coitadana janela de Telnet
da mquina Windows. Na mquina Unix, volte ao Hunt e escolha a opo l
novamente. Mgica: apareceu a conexo entre 192.168.1.1 e 192.168.1.2. A
porta de origem alta (como deveria ser, leia o captulo Redes II e a RFC1700),
e a de destino a 23 a porta do servio Telnet. Vamos, ento, pedir ao Hunt
que mostre o trfego para ns. Escolha a opo w(watch), escolha qual cone-
xo quer monitorar e, em seguida, a opo b(both).
Volte mquina Windows e d seu login e senha. Se voc observar no Hunt,
essas informaes sero mostradas l. Caso o login seja bem sucedido, o promp
do shell Unix aparecer no Telnet da mquina Windows e tambm na tela do
Hunt, que est numa mquina que nem participou da transao! Faa vrias
experincias: liste diretrios, edite textos com seu editor favorito ou chame
algum programa todas essas atividades sero monitoradas pelo Hunt.
Para o Hunt, esse o bsico. Por sua simplicidade, acaba ficando limitado em
possibilidades, mas muito til na maioria dos casos. bvio que h muito
mais a explorar sobre o programa, mas deixo isso como dever de casa. Brinque
com o Hunt por alguns dias, fareje sua rede, leia toda a documentao e procu-
re por mais recursos na Internet. Depois, tente tambm brincar com o Snort, o
Sniffit, o Ethereal e o IPTraf, tanto em Unix como em Windows. Use tambm
algumas das ferramentas simples disponveis nos CDs. Parar uma semana ou
duas para tal seria o desejvel, e s depois disso prossiga a leitura. Valer a
pena e ser divertido!
Quando a caa v
O Hunt um timo (e didtico...) sniffer, mas tem um problema insolvel
para os modelos clssicos de sniffers: no ustrapassa sniffers ou switches. Para
as redes comutadas, necessrio utilizar sniffers apropriados, que faam ARP
Spoofing ou, pelo menos, MAC Flood.
Dois sniffers o fazem de forma magistral: Ettercap e Dsniff. J falamos sobre
ARP Spoofing e MAC Flood h algumas pginas. Estude a documentao e ex-
perimente ambos os programas. Adicionalmente, sugerimos que o leitor procu-
re mais informaes sobre os seguintes mtodos de sniffing:
SSL Spoofing (falseando ou manipulando certificados digitais);
DNS Spoofing (desviando o trfego Web para servidores falsos);
Snarfing (uma maneira de pentearos pacotes TCP/UDP para extrair de-
les apenas a informao que mostrada na tela da vtima: e-mail, mensagens
instantneas, pginas da web...).
Invaso Invaso
286 287
Who can you trust?
Just say enough is enough / Oh I gotcha / Who who who can you trust
7
Uma maneira de se conseguir um Spoofing mais efetivo atravs das
relaes de confiana (ou trust relations) entre computadores. Isso permite
que um computador possa ter acesso a vrios recursos fazendo login em
apenas um sistema.
7.Apenas digaque jteve o bastante / Hehe, eu pegei voc / Emquem, emquem, emquemvoc pode
confiar?Joan Jett,Who can you trust. Do albumCherry Bomb, de 1995.
e hardware imaginveis, incluindo a Unices, Windows e mesmo sistemas de
grande porte.
Tanto o eDirecory quanto o ADS baseiam-se num padro chamado
Lightwheight Directory, Access Protocol ou LDAP. H verses do LDAP dispo-
nveis para diversos sabores de Unix. Uma das mais famosas o OpenLDAP
(www.openldap.org), verso livre, gratuita e de cdigo aberto. O LDAP uma
forma segura de prover, para aplicaes Unix (e tambm Windows e
Macintosh...), o chamado single-sign-on (ou log-se apenas uma vez) e ter acesso
a vrios recursos disponveis em pontos distantes da rede.
Mas os sistemas Unix possuem dois antepassados desses servios: o NIS
(Network Information Service) e o famigerado Unix Trust. Por sua idade, am-
bos so extremamente inseguros e facilmente hackeveis. Falaremos do NIS
mais para frente, j que sua falha no se trata de IP Spoofing.
O Unix possui uma srie de comandos,todos iniciando em r(de remote) que
permitem que diversos sistemas possam ser operados sem que seja preciso au-
tenticar-se em cada um deles. Imagine, por exemplo, que o usurio est logado
na mquina A.A mquina B confia em A,portanto permitir que os comandos r
sejam executados nela tambm.Por exemplo,se o usurio da mquina A emitir o
comando rlogin IP.DE.B, ser presenteado com um shell da mquina B sem que
seja necessrio fornecer usurio ou senha. B confia em A, ento B confia nos
usurios de A... Da mesma forma, h os comandos rsh (remote shell permite a
execuo de apenas um comando), rcp (remote copy), rmail (l e-mails no outro
sistema) entre outros.Para que seja permitida a execuo dos comandos, neces-
srio que o IP de A esteja contido no arquivo /etc/hosts.equiv de B. Todas as
mquinas cujo IP esto em /etc/hosts.equiv de B so de confiana para B.Alm
desse arquivo, cada usurio de B pode ter, em seu prprio /home, uma lista de
mquinas nas quais confia, guardada no arquivo .rhosts.
Observe: existe uma mquina servidora (vamos cham-la de S) que possui
relao de confiana com outras mquinas (vamos cham-las T1, T2, T3
etc.). Se o usurio logar-se na mquina S, automaticamente ter acesso a recur-
sos das mquinas T. Enquanto essa facilidade quebra um galhopara admi-
nistradores de rede e permite que usurios loguem-se em apenas um sistema
para ter acesso a vrios, se um hacker conseguir fazer-se passar pela mquina
que tem a confiana poder ter acesso a todas as outras, que confiamnela.
Tanto sistemas Unix quanto Windows (e tambm Novell...) possuem facilida-
des parecidas. O Windows 2000 possui um recurso chamado Advanced
Directory Service (ou ADS), que detm o cadastro de todos os usurios e m-
quinas da rede e as relaes entre eles. O usurio, ao logar-se em um domnio
Windows, tem seu nome e senha comparados com os do ADS e, caso aceitos,
todos os servios so disponibilizados.
A Novell possui um produto chamado eDirectory (www.novell.com/pt-br/
products/edirectory) baseado em um ncleo, o Novell Directory Service ou
NDS. O software opera da mesma forma que o ADS da Microsoft, com um
diferencial: no est restrito aos produtos Novell. Na realidade possvel, atra-
vs do eDirectory, criar conexes para todos os tipos de plataformas de software
No exemplo acima, todas as mquinas Se Tso Unix. As estaes podem
ser qualquer coisa. Em cada uma das mquinas Tmostradas, h um arquivo, o
/etc/hosts.equiv, contendo o IP de S. Assim, todos os usurios que se logarem
em Spodero ter acesso aos recursos das mquinas T. possvel crial shell
scripts com os r-comandos, por exemplo, para automatizar o processo e facili-
tar a vida desses usurios.
Invaso Invaso
288 289
Mas o que acontece quando usamos os r-comandos? O usurio est logado
em Se, por meio de um comando rlogin, conseguiu um shell de T3sem que
fossem solicitados um usurio e uma senha vlidos em T3. Ocorre que, na
prtica, o usurio est logado em T3, e todas as suas aes sero originadas
de T3(e no de Sou de H, sua estao de trabalho...). Se o invasor usar
algum scanner contra o site de uma empresa, ou tentar conectar-se por brute-
force a um servio na Internet, ser o IP de T3que ser registrado, no o de
Se muito menos o de H.
Agora que amgicaacontece. Se formos usurios jcadastrados emS, no h
problema. Bastalogarmos emS, dar umrlogin paraT3 e us-lo. Mas e se no for-
mos?E mesmo se formos,seremos registrados nos logs de S,ento o que fazer?
possvel envenenaruma relao de confiana entre duas mquinas usan-
do spoofing, um pouco de sniffing e uma pitada de negao de servio. Imagi-
ne uma rede corporativa onde h uma mquina chamada SERVLOGIN, na qual
os usurios sero autenticados, e outras, cada uma com um nome alusivo ao
recurso que ela disponibiliza (por exemplo, IMPRESSORA, FISCAL, INTRANET,
VAX, FINANCEIRO, entre outros...). Todas essas mquinas usam o /etc/
hosts.equiv para confiar no julgamento de SERVLOGIN no tocante a quais
usurios tm permisso para acessar seus recursos. Imagine tambm que, em
algum lugar ignorado na Internet, h uma mquina Hque deseja conectar-se
a algum computador interno.
Para realizar a tarefa a contento, temos que partir de algumas premissas:
Em primeiro lugar, temos que ter em mente que Hno est na mesma
LAN que SERVLOGIN ou qualquer uma das outras mquinas. Pelo contrrio,
est l beeeem longe na nuvem da Internet. Por isso mesmo, impossvel
esnifar o que ocorre na LAN.
De alguma maneira j descobrimos que SERVLOGIN considerado
confivel pelos outros servidores. Descobrimos isso porque invadimos IM-
PRESSORA, por exemplo, ou o prprio SERVLOGIN, e consultamos os arquivos
.rhosts ou /etc/hosts.equiv ou mesmo os logs do sistema, procura de sinais
de conexo por Unix Trust.
Nosso objetivo , ento, traado: queremos que uma das mquinas (por
exemplo, INTRANET) penseque H, na realidade, SERVLOGIN. Com isso,
teremos um shell em INTRANET, com um IP disposio para usarmos von-
tade em nossas maldades por a...
Vamos dar uma receitinha de bolopara esse ataque. a melhor maneira de
explicar a teoria de cada um dos passos necessrios. Para maior clareza no
texto, chamaremos cada um dos computadores apenas por seus nomes (i.e. H
em vez de a mquina Hou Sem vez de o servidor S).
1. 1. 1. 1. 1. H inicia vrias na verdade, milhares de conexes reais, sem impos-
tura (ou seja, sem spoofing), para INTRANET. Henvia vrios pacotes SYN e
espera pelos ACKs de INTRANET. Baseado nesses ACKs, H pode inferir (ou
antes, adivinhar) a progresso de nmeros seqenciais TCP gerados por
INTRANET. Com isso, H pode ter uma idia dos nmeros a usar mais para
frente, quando estiver conectando ao sistema INTRANET.
2. 2. 2. 2. 2. Depois disso (ou simultaneamente, caso o invasor possua outra mqui-
na) lana-se um ataque de negao de servio contra SERVLOGIN. Com
SERVLOGIN fora da jogada, impedimos que o mesmo envie um pacote TCP
RST e derrube nossa conexo spoofada.
3. 3. 3. 3. 3. Usando um dos r-comandos, Hinicia uma conexo a INTRANET usando
o IP de SERVLOGIN. A INTRANET responde com um ACK para SERVLOGIN,
que est fora de combate devido negao de servio.
4. 4. 4. 4. 4. Agora,amgica:Henviaum ACK paraINTRANET,com o IP de SERVLOGIN
e umaestimativado nmero seqencial TCP calculado pelaprogresso detecta-
dano passo 1 mais o tempo que o processo todo levou at chegar aqui.
5. 5. 5. 5. 5. Caso tenha acertado na mosca (o hacker possui apenas um tiro...) a co-
municao estabelecida e mantida enquanto SERVLOGIN estiver fora do ar.
Se tiver errado, o invasor pode repetir a receitinha at acertar.
Alguns sistemas so idiotamente fceis de prever aseqnciaTCP,outros nemtanto,
e huns poucos onde essaseqncia(?) quase aleatria(?!?!??).A predictabilidade
deladirse o sistema facilmente hackevel por esse mtodo ou no.
Lembradaquelas velhas cantigas do tipo Joo amavaMariaque amavaPedro...?
Pois .No passo 3,Hiniciou umaconexo comINTRANET fingindo ser SERVLOGIN.
Parainiciar essaconexo,usou umr-comando (por exemplo,umrlogin).Se o hacker
acertou a seqencia TCP, foi presenteado com um shell de INTRANET. S que
INTRANET pensaque quem iniciou a comunicao SERVLOGIN, e manda as
respostas paraessamquina. Resultado:Hpode emitir comandos, mas no tema
mnimaidiase esto funcionando ou no no hfeedback natela.
Enquanto isso pode parecer suficiente para um estrago qualquer (assim como
nas vulnerabilidades discutidas anteriormente, como o estouro de pilha ou os
CGIs amigos), o hacker pode usar esse shell (e tambm o do estouro de pilha,
bem como o dos CGIs...) para configurar rapidamente um backdoor em
INTRANET. No se esquea que SERVLOGIN est tinto com a negao de servi-
o, mas recobrar os sentidos a qualquer momento e cortar a comunicao
Invaso Invaso
290 291
(com um TCP RST) entre INTRANET e H. Entre as coisas que o invasor pode
fazer na mquina INTRANET esto:
Colocar o IP de Hno /etc/hosts.equiv;
Criar um usurio com direitos de root no /etc/passwd;
Implantar qualquer tipo de backdoor.
H mais opes alm dessas. A partir dessas alteraes, o hacker pode insta-
lar vrios backdoors, incluir mais mquinas no hosts.equiv (ou mesmo o smbo-
lo ++, que faz com que INTRANET confie em qualquer um...) e criar outras
contas no sistema. claro que administradores atentos logo notaro tais mu-
danas, por isso bom usar essa mquina para rapidamente 0wnar outras.
No esquea ainda que, por mais engenhoso que o procedimento seja, ferra-
mentas de IDS e auditoria de arquivos logo descobriro a faanha.
Como tarefa para casa, sugerimos ao leitor que procure documentao na
Internet sobre os seguintes tipos de Spoofing:
DNS Spoofing
Source Routing
Proxy Spoofing
Daisy-chain Spoofing
Observe que A, B e H no precisam estar na mesma LAN. H pode estar, com
efeito, na LAN de A, na de B ou em qualquer subrede intermediria.A malha de
roteadores mostrada poderia ser substituda por uma nuvemrepresentando a
rede como um todo poderia mesmo ser a Internet. O importante notar que H
tem de estar em algum ponto pelo qual estejam passando os pacotes entre A e B.
A conexo entre A e B poderia ser qualquer coisa, como uma chamada HTTP ou
correio eletrnico sendo transmitido via SMTP. Capturando uma sesso de con-
versao por ICQ, por exemplo, podemos continuar conversando com B en-
quanto ele pensa que somos A. Capturando uma sesso de FTP, SMB (redes
Microsoft) ou Telnet entre o usurio A e o servidor B, por exemplo, podemos
navegar pelos servidores sem precisar fazer login A j o fez anteriormente, e B
agora pensa que somos A.Acendeu uma luzinhaa?Pois , h outras maneiras
de conseguir acesso a sistemas alm do brute force e buffer overflow...
Realmente, por mais que os mecanismos de autenticao sejamseguros (senhas de
mo nica, criptografia, assinaturas digitais, etc.), pode-se capturar umacomunica-
o qualquer DEPOISque aautenticao foi feitae,assim,pular essaparte chata.As
produtoras de software normalmente gastammilhes emdesenvolvimento de es-
quemas seguros de autenticao e esquecem-se do que, umavez feita, o sistemair
SEMPRE acreditar que o usurio o mesmo e, como vimos, nemsempre ...
Outra caracterstica de uma sesso de hijacking que no preciso estimar ou
adivinhar a progresso e a preditabilidade dos nmeros seqenciais TCP. O ata-
cante, estando no meio do caminho entre as duas estaes, tem acesso progres-
so real dos nmeros seqenciais TCP e pode,portanto,control-los quando esti-
ver fazendo se passar por outrem. Em nosso exemplo , H est cuidadosamente
registrando toda a comunicao entre A e B, incluindo a as seqncias TCP.
Na prtica, os passos a serem seguidos so:
1. 1. 1. 1. 1. H deve observar com tcnicas de sniffing a comunicao entre A e B
por um tempo razovel, para determinar o tipo de conexo, o protocolo em
uso (HTTP, SSH, FTP, Telnet, MSN, ICQ...) e a seqncia TCP nos dois sentidos.
Tudo isso deve ser registrado em um arquivo e analisado. Quando a conexo
estiver bem escarafunchada, decide-se que interessante seqestr-la e deter-
mina-se os meios para tal, a podemos iniciar a captura.
2. 2. 2. 2. 2. H comea ento com tcnicas de spoofing - a enganarB, fazendo-o
pensar que H A. A forma mais usual H simplesmente criar trfego entre ele
Captura de sesses (Hijacking)
Lembro-me das aulas de matemtica da primeira srie do primrio (hoje isso
chamado de Educao Fundamental, mas tudo a mesma coisa...). Problemas
matemticos eram resolvidos dividindo a folha do caderno em trs campos:
sentena matemtica, clculo e resposta. Na sentena matemtica, colocva-
mos o que fui, anos depois, aprender que se chama forma algbrica da equao
(ou da inequao ou frmula). A sentena matemtica deveria ser algo claro e
bem detalhado, para que a pessoa que fosse ler a resoluo do problema pu-
desse entend-lo num relance. No campo Clculos, as coisas eram mais livres.
Podamos preencher completamente o espao com clculos e anotaes
mantendo, obviamente, alguma limpeza, seno era nota zero! Na resposta,
nos era permitido colocar apenas o resultado de nossos clculos. Em nossos
estudos sobre invases, podemos colocar, em nossa sentena matemtica, o
seguinte problema: Sniffing +Spoofing =?. Faamos os clculos, ento, e veja-
mos no qual isso vai dar.
Nas pginas anteriores vimos que sniffing um meio de saber o que se passa
numa rede local mesmo que os dados em trnsito no sejam de nossa conta.
Por outro lado, podemos enviar dados a outros computadores fingindo ser
uma terceira pessoa isso spoofing. fcil perceber que, combinando essas
duas tcnicas, podemos roubaruma sesso entre dois computadores. Como
assim roubar?, o leitor perguntaria. Uma imagem vale por mil palavras:
Invaso Invaso
292 293
Quando descreve-
mos, pginas atrs, um
spoofing baseado em
Unix Trusts, retiramos
do ar a mquina
SERVLOGIN (aquela
pela qual queramos
nos fazer passar) por
meio de um ataque do
tipo Negao de Servi-
o. Naquela ocasio, o
fizemos para evitar que SERVLOGIN derrubasse a conexo (que afinal no fora
gerada por ela) com um pacote TCP RST. O caso aqui ligeiramente diferente:
A realmente iniciou a conexo entre ela e B. O trfego injetado por H aprovei-
ta-se disso e a tempestade de ACKs um efeito colateral indesejado, em vez de
ser um procedimento normal do protocolo TCP, como no caso do RST.
Apesar de ser efetivo naquele caso especfico no precisvamos de SERVLOGIN
no decorrer daao , usar Denial of Service nem sempre desejvel:
A mquina fora do ar pode voltar a qualquer momento. No h previso de
quando, e certamente o tempo que ficar desabilitada ser muito pequeno o
suficiente para um ou dois comandos.
Se o computador que sofreu o DoS for atendido por algum, ou seja, hou-
ver usurios conectados nele por exemplo, uma estao de trabalho , o
ataque ser facilmente detectado.
Em alguns casos, necessrio que o computador pelo qual queremos nos
fazer passar fique vivo h recursos que s podem ser destravados por ele,
ou precisamos que o usurio acredite que ainda est conectado.
Era imperativo tirar a mquina do ar devido aos TCP RST, que cancelam a
Nessa configurao, fica claro que, como no h problema de tempestade de
ACKs, podemos emitir comandos para a mquina destino (B, em nosso exem-
plo). Obviamente, quando a conexo entre H e B for encerrada, a diferena
entre os TCP sequence numbers que A envia e que B espera to grande que a
sincronizao entre A e B impossvel e a conexo entre eles tambm cai.
Programas de Hijack modernos (como o Hunt e o Dsniff) possuem, entretanto,
ferramentas para ressincronizar as conexes, assim uma desconexo gratuita
no ir causar desconfianas.
Selecionando seus combatentes
claro que h a possibilidade de se fazer tudo isso manualmente. Entretanto,
a maneira mais fcil usar ferramentas especialmente construdas para tal.
Uma delas o Hunt, visto na sesso sobre sniffing. O Hunt possui duas opes
interessantes: simple hijack simple hijack simple hijack simple hijack simple hijack e arp/simple hijack arp/simple hijack arp/simple hijack arp/simple hijack arp/simple hijack. No menu opes, ele oferece
algumas possibilidades tambm muito interessantes, como arp spoof with my arp spoof with my arp spoof with my arp spoof with my arp spoof with my
mac mac mac mac mac (lembram-se do ARP Spoofing?), lear lear lear lear learn MA n MA n MA n MA n MAC fr C fr C fr C fr C from IP tr om IP tr om IP tr om IP tr om IP traf af af af aff ff ffic ic ic ic ic e s ss sswitc witc witc witc witched hed hed hed hed
environment environment environment environment environment (ferramentas para enganar bridges e switches).
O Dsniff, outra sute de sniffing comentada anteriormente, tambm possui
ferramentas para captura de sesses. Alm do prprio programa Dsniff (es-
pecializado em sniffing), a sute possui as seguintes ferramentas:
Ferramentas de sniffing includas na sute Dsniff:
filesnarf filesnarf filesnarf filesnarf filesnarf: copia na mquina do hacker os arquivos trafegando em uma
conexo NFS (Network File System) entre dois outros computadores.
mailsnarf mailsnarf mailsnarf mailsnarf mailsnarf: reproduz na mquina invasora mensagens de e-mail sendo trans-
mitidas por POP ou SMTP. Com modificaes no cdigo do programa, pos-
svel ler tambm mensagens IMAP e UUCP. As mensagens so armazenadas
em formato mailbox legvel por praticamente todos os programas de e-
mail existentes.
msgsnarf msgsnarf msgsnarf msgsnarf msgsnarf: registra toda a conversao entre duas pessoas que estejam
usando os servios de mensagem instantnea AOL Instant Messenger, ICQ
2000, IRC, MSN e Yahoo.
e B, gerando pacotes cujo endereo IP de origem seja o de A. B pensar que os
pacotes vm de A.
3. 3. 3. 3. 3. Uma vez que B aceita comandos de H pensando serem de A, pode-se
controlar B a partir de H. Se for uma sesso de Telnet ou de SSH, H pode operar
o computador B por comandos shell. Se for uma sesso FTP, H pode baixar
arquivos de B que estejam liberados para A e bloqueados para usurios de
FTP annimo. Se for uma conversao MSN, H pode continuar a conversa com
B fingindo ser A.
Olhando por cima, parece que funciona. Mas h um problema:A ainda est
viva e B devolve a ela pacotes TCP com o bit ACK ligado cada vez que H injeta
trfego na linha. A tentar ressincronizar a conexo e responder a B na mes-
ma medida. Alm desses ACKs esprios gerados pelos pacotes injetados por H
na conexo, h ainda os pacotes normais da conexo entre A e B. Isso causar
o que chamamos de tempestade ACK ou ACK storm.
conexo correspondente. Aqui no h RST pois o originador da conexo foi
realmente A e no H. A passa a ser necessrio e no indesejado.
Negao de Servio algo deselegante e voc vaidoso, no ?
A resposta est em algumas pginas um pouco mais para trs. Quando fize-
mos sniffing ativo, usamos a tcnica de ARP Spoofing para confundir o switch
e as prprias estaes, colocando nossa mquina no meio da conexo. Para tal,
usamos o programa Hunt em uma configurao man-in-the- middle. Bem, pode-
mos usar a mesma idia para evitar o ACK Storm. Com o trfego passando todo
pela mquina que est escutando a rede, podemos controlar a propagao
desses ACKs esprios.
Invaso Invaso
294 295
urlsnarf urlsnarf urlsnarf urlsnarf urlsnarf: fareja requisies HTTP e as apresenta no formato Common
Log Format ou CLF.
Ferramentas de spoofing includas na sute Dsniff:
arpspoof arpspoof arpspoof arpspoof arpspoof: ferramenta para ARP Spoofing.
dnsspoof dnsspoof dnsspoof dnsspoof dnsspoof: forja respostas a solicitaes DNS em uma LAN. til para
contornar regras de acesso baseadas no nome do host ou para implementar
diversos ataques tipo man-in-the-middle baseados em DNS.
macof macof macof macof macof: uma ferramenta para MAC Flooding. Inunda a LAN com uma mul-
tido de endereos MAC randmicos, fazendo com que bridges e switches
vulnerveis passem a se comportar como hubs ou seja, deixando passar
todo o trfego indiscriminadamente por todas as portas.
Ferramentas de captura e controle (hijacking) includas na sute Dsniff:
tcpkill tcpkill tcpkill tcpkill tcpkill: derruba a conexo selecionada.
tcpnice tcpnice tcpnice tcpnice tcpnice: controla a velocidade da conexo entre dois ns sem prejudicar
o restante da rede. interessante para reduzir a velocidade de uma conexo
e, com isso, monitor-la ao vivo.
sshmitm sshmitm sshmitm sshmitm sshmitm: age como um intermedirio (uma espcie de proxy) para cone-
xes SSH. Uma vez desviada a conexo (com ferramentas como, por exemplo,
o dnsspoof), o sshmitm pode farejar o trfego procura de logins e senhas e
mesmo capturar a sesso. A poro mitm mitm mitm mitm mitm do nome significa man-in-the-middle.
webmitm webmitm webmitm webmitm webmitm: age tambm como intermedirio, desta vez para conexes
HTTP/HTTPS (sim, suporta SSL!!!). til para conseguir senhas de acesso a
sites e informaes normalmente inseridas em formulrios como nmeros
de cartes de crdito e informaes criptografadas.
Alm do Hunt e do Dsniff, h algumas outras ferramentas para seqestro
de sesses. Uma delas, muito conhecida, o Juggenaut (packetstorm.
linuxsecurity .com/new-exploits/1.2.tar.gz). Outro tambm muito comenta-
do o IP-Watcher, produto comercial (e pago) da Engarde Systems
www.engarde.com) . Um detalhe: todos eles so para Unix. No h boas op-
es de ferramentas para seqestro de sesses que rodem em Windows ou
outras plataformas neste caso especfico, meu amigo, voc est preso aos
Unix. Uma sada dotar seu Windows de um ambiente Unix simulado como o
Cygwin (www.cygwin.com) e rodar essas ferramentas l. Para isso, ser pre-
ciso instalar tambm as bibliotecas pertinentes a cada um dos softwares den-
tro do Cygwin. Outra maneira dotar seu Windows de uma mquina virtual
PC completa, como o comercial e caro VMWare (www.vmware.com) ou o
livre e gratuito Bochs (bochs.sourceforge.net), e rodar algum Unix para PC
(Linux, FreeBSD, Solaris) dentro dele.
Seqestro na prtica
(ou: como me tornei membro do Al Qaeda)
Anteriormente descrevemos uma sesso de sniffing com o Hunt. Chegamos
ao ponto de verificar os comandos que A emitia para B e ver as respostas que
B enviava para A. Ainda no estvamos exatamente no meio da conversao
simplesmente farejvamos o trfego (p, passam por aqui berrando e no
querem que eu escute...).
Vamos refaz-la, desta vez capturando a sesso. Usaremos nossa rede de tes-
tes e as mesmas instalaes que usamos em nosso experimento anterior. Usare-
mos tambm a mesma sesso de Telnet que descrevemos.
Rapidamente relembrando o procedimento j visto, selecione a opo o
(options) e adicione uma conn policy, de acordo com os IPs das mquinas cujas
conexes queremos monitorar e, posteriormente, capturar. Digite lpara ver
se h interfaces vivasque obedeam a essa regra (observe o prompt do Hunt).
Depois disso, digite xpara voltar tela principal e lnovamente para listar
as conexes existentes que estejam de acordo com as conn policies definidas.
Selecione w(watch) para monitorar uma das conexes, e depois escolha a
conexo de nossa sesso telnet (lembre-se: estamos fazendo um telnet da m-
quina Windows para a Coitada). Logue-se por Telnet e emita alguns comandos.
Se tudo estiver certo, todos os dados em ambos os sentidos da conexo sero
ecoados no Hunt que est rodando na estao Unix. At aqui era o que hav-
amos feito.
Note que, se voc estiver em um ambiente de rede segmentado (por exemplo,
h um switch em sua LAN), voc ter de fazer um ARP Spoofing para engan-lo
caso contrrio, no conseguir ver as conexes que estejam em outro seg-
mento. O prprio Hunt pode fazer isso. Selecione d(daemons) e a(arp spoof
+arp relayer daemon), e configure os endereos IP de origem e destino pelos
quais voc quer fazer ARP Spoofing (opo a add host to host arp spoof).
Digite spara iniciar o daemon e espere alguns minutos. Dependendo do tr-
fego de sua rede e das estaes em questo, pode demorar de um a 20 minutos
para que o switch passe a distribuir pacotes indiscriminadamente.
Com ou sem switch, voc est pronto para seu primeiro seqestro. Volte ao
menu principal e escolha a opo a (arp/simple hijack). Ser perguntado
qual das conexes deseja capturar. Selecione a conexo de nosso telnet e res-
ponda s perguntas sobre conexo e apresentao dos dados. A tela de captura
, em um primeiro momento, idntica tela de observao (watch). O compor-
tamento tambm o mesmo, por enquanto: tudo o que o usurio da mquina
Windows fizer ser ecoado para o Hunt antes de ser enviado Coitada, o
mesmo ocorrendo com a resposta de Coitadapara Windows.
Isso ocorrer indefinidamente, at que o Hacker deseje capturar a conexo.
Para tal, basta pressionar Control+C. Na tela, aparecer a mensagem:
press any key>
Invaso Invaso
296 297
Assim que uma tecla qualquer for pressionada, a tela do Hunt se parecer com
isso:
press any key>
you took over the connection
CTRL-] to break
Pronto! J estamos em modo interativo com a sesso capturada. A mquina
Windows no tem mais controle sobre a conexo, tudo o que o usurio digitar
ser ecoado no Hunt na cor verde, mas no ser enviado Coitada. Por outro
lado, tudo o que o Hacker digitar no Hunt ser enviado mquina Coitada.
Como uma sesso de Telnet, digitar comandos de shell no Hunt resultar em
sua execuo em Coitada.
press any key>
you took over the connection
CTRL-] to break
ls
ls Comandos digitados pelo
ls usurio que perdeu a conexo
exit
cazzo!
coitada [/home/usuario] > ls
Desktop README Xresources Xsetup aliases.sh chooser j tmp
coitada [/home/usuario] > w
1:44am up 7 days, 5:44, 4 users, load average: 0.99, 1.22, 1.20
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - Wed 3pm 3:48m 0.07s 0.07s -bash
usuario pts/2 192.168.1.1 1:07am 0.00s 0.03s 0.01s w
root pts/0 - 29May03 7days 0.00s ? -
root pts/1 - Wed 3pm 9:28m 0.15s 0.15s /bin/bash
coitada [/home/usuario] >
Na tela da mquina Windows ser mostrada a seguinte informao:
$ls
$ls
$ls
$exit
$cazzo!
Ou seja, o usurio tem uma realimentao do que digitou, e nenhuma mensa-
gem de falha ser mostrada simplesmente no acontece nada! Essa sada , na
verdade, fornecida pelo Hunt. Ele inclui o carter $ para dar uma impresso de
prompt do shell lie and deceive...
Com controle sobre Coitada, o hacker pode tentar o que quiser: colocar um
backdoor, apagar tudo, fazer download de documentos e arquivos importantes
(inclusive o arquivo de senhas), usar amquinacomo trampolim paraoutro ata-
que (mais umamaneirade spoofing...), tentar ganhar acesso irrestrito, etc, etc, etc.
muito importante observar que usamos um servidor Linux como exemplo, mas o
procedimento o mesmo paraqualquer plataforma. Poderamos tranqilamente
ter usado o Hunt paraseqestrar umasesso entre umaestao Windows 98 e um
servidor Windows 2000 com IISe Telnet habilitado (ou FTP ou HTTP ou POP...).
Quando cansar de brincar, o invasor pressionaControl+] parasair. Ele ter, ainda,
aopo de derrubar aconexo (e o usurio namquinaWindows receberuma
falsamensagemde problemas comarede) ou ressincroniz-la. O Hunt inteligente
nessa hora: ele tem registrados os nmeros TCP seqenciais vindos da mquina
Windows e daprpriamquinaUnix, naqual esto programa. Dessaforma, o Hunt
sabe quantos pacotes Windows temde enviar parao limboantes de permitir sua
reconexo mquinaCoitada.Por exemplo,se o Hunt enviou 45 pacotes TCP para
aCoitada, quando acapturadasesso for finalizadaamensagem
msg from root: power failure try to type 45 characters
ser mostrada na tela de Windows. Assim que o usurio digitar a 45 tecla, os
nmeros seqenciais TCP estaro novamente em sincronia. A sesso pode con-
tinuar normalmente e, na maioria dos casos, o usurio em questo sequer
perceber o que aconteceu. Mas tenha em mente que a maioria das vezes no
significa todas, e um usurio que conhea o comportamento do Hunt facilmen-
te identificar a falcatrua e avisar a autoridade competente.
T TT TTar ar ar ar aref ef ef ef efa par a par a par a par a para casa a casa a casa a casa a casa:tente fazer exatamente o mesmo com o Dsniff (leia a docu- leia a docu- leia a docu- leia a docu- leia a docu-
mentao!) mentao!) mentao!) mentao!) mentao!). Voc ver que, por no ser uma ferramenta integrada como o
Hunt, mas um conjunto de pequenas ferramentas de uso especfico, ter de
usar vrias delas para obter o mesmo efeito. Entretanto, no mais perfeito estilo
Unix de fazer as coisas, tambm ver que bem mais fcil automatizar o ata-
que com um shell script que faa uso delas.
Outros mtodos de desviar trfego
H muitas outras formas de colocar-se na posio de man-in-the-middle e fazer
o trfego passar por seu computador antes de chegar ao destino.Algumas delas
incluem desviar trfego web por meio de DNSSpoofing. H ferramentas (como
o dnsspoof, incluso na sute Dsniff) que podem ser programadas para enviar
falsas respostas a requisies DNS. Por exemplo, o site da Digerati est hospeda-
do no host 200.246.179.102. possvel usar o dnsspoof para fazer um internauta
qualquer acreditar que, em vez disso, o domnio digerati.com.br est em
200.230.xxx.yyy.L pode haver um site falso ou um sniffer que grave as informa-
es passadas e redirecione o trfego ao site verdadeiro.
Outra forma de desviar o trfego bastante empregada faz uso do Netcat
uma ferramenta poderosssima e presente em todos os Unix e no Windows.
Invaso Invaso
298 299
Veremos os diversos usos do Netcat no prximo captulo.
Uma ltima dica: h um excelente documento em packetstorm.linux
security.com/new-exploits/ssh-insertion-attack.txt que discorre sobre captura
de sesses usando o protocolo Secure Shell ou SSH. O SSH , grosso modo, um
primo do Telnet cuja conexo toda criptografada. Bem, esse documento ensi-
na a meter-senessa conexo que muitos consideram segura.
Negao de servio (Denial of Service)
Nem sempre queremos obter acesso aalgum sistema. Muitas vezes, por vingan-
a, terrorismo ou simples depredao, queremos apenas derrubar um site, sistema
ou rede e causar o mximo possvel de prejuzos vtima.Tal procedimento
chamado atualmente de Negao de Servio porque o resultado , viade regra, a
indisponibilidade temporriaou permanente do servio que estamos atacando.
Outras vezes um Denial of Service (ou DoS, como normalmente chamado)
necessrio como parte de um ataque maior, como vimos em nossos procedi-
mentos de spoofing neste mesmo captulo. De uma forma ou de outra, um
ataque do tipo DoS o cibercrime mais deselegante que se pode cometer
como partir para a ignorncia, como diziam os antigos. Sem entrar em deta-
lhes sobre as conseqncias mercadolgicas, polticas e financeiras de um ata-
que DoS bem-sucedido, podemos consider-lo to mortal quanto moralmente
baixo, da mesma forma que uma briga de rua o .
Para entender a negao de servio, imagine qualquer sistema conectado
Internet que se queira derrubar como sendo um servio no mundo real; flo-
ricultura, pizzaria, polcia, defesa civil, etc... Imagine, por exemplo, que voc
queira colocar fogo em um prdio pblico e ter certeza de que no ter seus
planos arruinados por algum bombeiro com vocao para heri. Uma das ma-
neiras de impedir que os bombeiros entrem em ao impedir que eles saibam
que o prdio est em chamas. Para tal, basta manter todas as linhas do 193
congestionadas com trotes. Emergncias legtimas nunca sero atendidas.
Ainda no mbito telefnico, um belo exemplo de negao de servio pde ser
visto no filme Duro de Matar 3: o terrorista interpretado por Jeremy Irons
colocou uma bomba em alguma escola primria do municpio de Nova York.
Alm de no informar polcia em qual escola o aparato estava instalado, o
bandido ainda divulgou a presena da bomba para a mdia. Resultado: a popu-
lao inteira da cidade comeou a ligar para os nmeros da polcia, congestio-
nando as linhas e impedindo os policiais de trabalhar.
Negao de servio local Negao de servio local Negao de servio local Negao de servio local Negao de servio local
Hdiversos nveis de DoS. Os mais bsicos so os causados por pessoas comacesso
fsico ao sistema emoutras palavras,literalmente meter amarretano equipamento.
Passar como caminho por cimadalombadaeletrnicaparatir-lade servio (e livrar-
se damulta) tambmpode ser considerado umtipo de negao de servio.
Um DoS de nvel um pouco mais alto (no mais na sarjeta, mas ainda mendi-
gando na calada) seria o acesso lgico aos sistemas. Usurios com contas ou
invasores que conseguiram acesso limitado podem tentar destruir o sistema
com comandos nocivos. H diversas maneiras de fazer isso.
A AA AApa pa pa pa pagamento ou destr gamento ou destr gamento ou destr gamento ou destr gamento ou destruio: uio: uio: uio: uio: um usurio com uma conta em um servidor
Solaris poderia tentar um rm -Rf * rm -Rf * rm -Rf * rm -Rf * rm -Rf * em um diretrio sensvel o /etc, por exem-
plo. Caso o ambiente seja Windows, nada mais fcil que um FORMAT C:ou um
DEL *.* /S/Q.
Consumo de recursos Consumo de recursos Consumo de recursos Consumo de recursos Consumo de recursos: mesmo usurios com acesso muito restrito de-
vem poder rodar programas no sistema como trabalharo sem eles? Isso
posto, possvel criar programas especialmente talhados para aumentar em
progresso geomtrica o consumo de recursos da mquina seja por mlti-
plos acessos a disco, inundao das interfaces de rede com trfego esprio,
multiplicao indefinida de processos ou mesmo gravao ininterrupta de
dados em arquivos at preencher todo o espao disponvel.
V VV VVulner ulner ulner ulner ulnera aa aabilidades locais bilidades locais bilidades locais bilidades locais bilidades locais: um buffer overflow, se bem-feito, pode levar a
acesso irrestrito ou execuo de comandos arbitrrios no sistema vulnervel.
Um ataque mal-feito, entretanto, pode apenas travar o programa. Se o progra-
ma for vital para o sistema (como partes expostas do kernel em um Windows
NT) ou oferecer um servio aos usurios externos (como o X-Window ou o
Sendmail em um Unix), o estrago ser maior. Caso o lixo jogado na pilha seja
em quantidade realmente grande, possvel que o sistema todo caia.
Acesso ir Acesso ir Acesso ir Acesso ir Acesso irr rr rrestr estr estr estr estrito ito ito ito ito: usurios com acesso privilegiado (por exemplo, um
administrador de rede insatisfeito com seu salrio) podem fazer diversas
malvadezas como reconfigurar servios ou matar processos importantes, alm
de plantar cavalos de tria, bombas de tempo e diversos tipos de vrus.
H diversas ferramentas na Internet que se prestam a esse papel, e mesmo
script-kiddies com um pouco mais de tutano podem criar ferramentas simples
para tal. Quer um exemplo? Em uma mquina Windows, crie um arquivo
DADOS.BAT e, dentro dele, coloque:
@ ECHO OFF
ECHO Hacker > DADOS.DAT
:VOLTA
TYPE DADOS.DAT >> SYSTEM.DAT
TYPE SYSTEM.DAT >> DADOS.DAT
GOTO VOLTA:
Invaso Invaso
300 301
Rode o programa DADOS.BAT e voc ver os arquivos DADOS.DAT e
SYSTEM.DAT crescerem indefinidamente.Em um shell Unix to simples quanto.
Experimente o seguinte script (chame-o de dados.sh dados.sh dados.sh dados.sh dados.sh):
#/bin/sh
touch dados.dat
touch system.dat
echo hacker >> dados.dat;
while [ 1 = 1 ];
do
cat dados.dat >> system.dat;
cat system.dat >> dados.dat;
done;
Execute o programinha (dados.bat dados.bat dados.bat dados.bat dados.bat no Windows, sh dados.sh sh dados.sh sh dados.sh sh dados.sh sh dados.sh no Unix) e
veja o que acontece. Aparentemente nada, mas se voc der um ls no Unix ou dir
no DOS para listar os arquivos (em outro shell ou outra janela do DOS) ver
que o tamanho de DADOS.DAT e SYSTEM.DAT crescem exponencialmente
medida que o tempo passa. Rodando por apenas um minuto (60 segundos
exatos) os tamanhos ficaro da ordem de 100 MB cada. Mais dez minutos e
teramos dois arquivos de 1 GB cada, em 60 minutos (uma msera hora) tera-
mos 12 GB ocupados. Os programas em DOS e Unix apresentaram desempe-
nho semelhante quando executados no mesmo hardware.
Observe que nenhum dos 2 scripts precisou de privilgios especiais para
rodar: foram executados diretamente na rea autorizada para o usurio e usa-
ram ferramentas e recursos disponveis no sistema nada precisou ser instala-
do. Observe ainda que os quatro problemas listados apagamento ou destrui-
o, consumo de recursos, vulnerabilidades locais e alteraes por acesso
irrestrito podem muito bem ser implementadas nos vrus que chegam a voc
pela Internet e por disquetes e CDs infectados!!! De fato, os vrus de computa-
dor, desde que surgiram no incio dos anos 80, so um exemplo clssico de
negao de servio local!
Mas tudo isso de muitssimo baixo nvel. Se algum sistema computacional
est merc de operrios braais munidos de marretas e picaretas algum
deve perder o emprego provavelmente o segurana da portaria e ee ee o CEO da
empresa... Entretanto, h alguns tipos de ataques orquestrados externamente
em outra parte da rede interna da empresa ou mesmo via Internet.
Negao de servio remoto Negao de servio remoto Negao de servio remoto Negao de servio remoto Negao de servio remoto
Alm do annimato inerente aos ataques remotos, h uma infinidade de m-
todos e ferramentas que permitem que um ataque remoto tipo DoS seja des-
truidor. Vamos nos ater mais teoria sobre DoS e indicar algumas ferramentas
para levar tais ataques a bom termo. Mas como , de longe, a modalidade de
ataque mais popular, documentada e comentada da Internet, deixaremos ao
leitor a tarefa de buscar mais informaes a respeito.
H dois subtipos de ataques DoS remotos. Alguns deles atacam
vulnerabilidades conhecidas nos sistemas-alvo como as falhas de RPC que
resultaram na queda de nove dos 13 roteadores-raiz da Internet (todos nos
EUA) em outubro de 2002. O outro grande grupo de DoS remoto procura
exaurir todos os recursos do alvo seja ocupao de banda da rede, multipli-
cao descontrolada de processos no servidor HTTP ou inundao de mensa-
gens de e-mail possivelmente acompanhadas de vrus potencializadores do
ataque, como o Klez e o BugBear. O famoso e ancio Ping of Death tipo de
ataque usando o utilitrio Ping para gerar pacotes ICMP defeituosos e gigan-
tescos pertencia a ambos os tipos: gerava uma fragmentao defeituosa
dos pacotes e ao mesmo tempo consumia banda.
Um exemplo de ferramenta de DoS remoto do primeiro tipo o veterano
WinNuke. O programa aproveitava uma falha existente no Windows 95 e no
Windows NT 3.51: caso a porta 139 nossa velha conhecida do
compartilhamento de arquivos em redes Microsoft recebesse pacotes no
vlidos em lugar do protocolo SMB, o sistema operacional travava. H ver-
ses atuais do WinNuke que exploram outras vulnerabilidades uma vez
que essa foi consertada no Windows 98 e no NT4 e trabalham tambm com
exausto de recursos.
Para saber mais sobre esse tipo de ferramentas, procure por DoS DoS DoS DoS DoS ou
malformed packet dos attack malformed packet dos attack malformed packet dos attack malformed packet dos attack malformed packet dos attack em seu mecanismo de busca. Inmeras ferra-
mentas para esse e outros tipos de ataque podem ser encontradas em
packetstormsecurity.nl/DoS/ e em www.astalavista.box.sk.
Jrecaindo no segundo tipo, o tipo mais comum de ataque o SYN Flood ou
inundao de pacotes TCP SYN.Lembra-se de nossaprimeiratentativade spoofing?
Enfivamos um SYN com IP de origem diferente do nosso. Naquelasituao, no
conseguamos estabelecer umaconexo spoofadapor dois motivos:
1. 1. 1. 1. 1. Como a mquina atacada no sabia nosso IP verdadeiro, no poderia
responder-nos;
2. 2. 2. 2. 2. A mquina pela qual nos fazamos passar retornava pacotes TCP RST e
acabava com nossa conexo e com nossa alegria...
No caso de um DoS por SYN Flood, de que nos importa se seremos respondi-
dos ou no?O que vale enviarmos tantos TCP SYN Spoofados quanto poss-
vel, para que a mquina-alvo se ocupe de respond-los e no tenha tempo de
responder a outras requisies de outras pessoas. Lembre-se: a vtima vai envi-
ar um SYN-ACK e esperar por ACKs que nunca viro. Isso acabar por impos-
sibilitar a vtima de responder a qualquer outro pedido de conexo ou mesmo
atender a conexes j existentes.
Invaso Invaso
302 303
Obviamente h outros mtodos para DoS alm do SYN Flood. Um outro m-
todo muitssimo usado faz uso de pacotes ICMP Echo Request (ping!) dispara-
dos tambm em inundao. Se o IP estiver spoofado, a mquina-alvo no res-
ponder ao IP de origem, mas ao IP falso. Uma extrapolao do DoS utilizando
ICMP o famoso Smurf: dispara-se ICMP Echo Request para um grande nme-
ro de mquinas, mas colocando como endereo IP de origem o IP da vtima (e
no um falso). O resultado um grande nmero de mquinas refletindo ao
mesmo tempo uma multido de pacotes ICMP em direo vtima, que sai do
ar praticamente no mesmo instante.
Outrapossibilidade usar umamensagem UDP em vez de ICMP.Hum servio
chamado echo,funcionando naporta7 UDP,que simplesmente devolve ao endere-
o de origem tudo o que chegar por ela. Bem, imagine ento enviar um pacote
UDP spoofado, cujo IP de origem 127.0.0.1 (ou seja, o loopback em outras
palavras, aprpriamquina) e o IP de destino o IP damquina. Em umasituao
dessas, o pacote UDP entra em loop dentro da mquina. Um nmero pequeno
desses pacotes bastaparacomprometer todaapilhaTCP/IP do sistemaoperacional
e consumir grandes percentagens dabandade rede disponvel. Extrapolando da
mesmaformacomo no ataque Smurf, pode-se enviar paraaportaUDP 7 de inme-
ras mquinas pacotes com
IP de origem igual ao dav-
tima.Todas elas devolvero
o presente paraamquina
sob ataque comprome-
tendo abandanovamente.
Se o hacker usar broadcast,
ento, o que eraumaleve
malvadezapassaaser uma
calamidade. Tal ataque
chamado de Fraggle.
Alm desses mtodos que tiram a mquina do ar, h outros tipos bem mais
sutis, e mesmo alguns inusitados. Por exemplo, lembra-se de nossos programas
de brute force? Alguns sistemas, para evitar justamente serem invadidos por
brute force, limitam o nmero de logins permitidos (o nmero varia, mas a
quantidade usual trs). Bem, um programa de brute force pode ser usado,
ento, para bloquear sistematicamente todas as contas do sistema, impedindo
que qualquer usurio-se logue. Trs acessos em cada conta so suficientes, o
que torna a operao extremamente rpida e eficaz.
Pode-se tambm multiplicar conexes a um servio especfico at que todos
os recursos do servidor em questo sejam consumidos seja na forma de pro-
cessos abertos, seja por meio de esgotamento de banda. Por exemplo, se quere-
mos derrubar um computador cujo servidor de Telnet esteja ligado, basta ro-
darmos um script como este em nossa mquina Unix:
while [1=1] ;
do
telnet ip.da.vtima.aqui &
done;
possvel fazer o mesmo no Windows com um pouco mais de trabalho.
Troque telnet pelo l ll llynx ynx ynx ynx ynx e voc tem uma ferramenta para causar o mesmo
estrago em servidores HTTP. Troque pelo comando mail mail mail mail mail e voc poder encher
o servidor SMTP, etc. H ainda a possibilidade de fazer o mesmo com ping,
Redes Microsoft, SSH, FTP (servidores FTP do Novell Netware so especial-
mente apetitosos...), Usenet, Finger, MS-SQL, MS-Access, ICQ... Acho que voc j
pescou a idia.
Apesar dos ataques acima descritos poderem ser feitos manualmente por
hackers de verdade, existem algumas ferramentas que facilitam e automatizam
esse tipos de ataque e os lammers as adoram. Tais ferramentas podem ser
encontradas aos montes nos mesmos lugares anteriormente citados:
packetstormsecurity.nl/DoS/ e em www.astalavista.box.sk. No endereo
www.astalavista.com/library/ddos/basics/intro.shtml h um tutorial interes-
sante (em ingls) sobre diversos tipos de pequenos ataques de DoS local e
remoto que podem ser tentados. Estude todos eles, procurando na Internet
exemplos e informaes adicionais sobre cada um.
Mas h algo muito mais malvado que DoS simples: os ataques por negao de
servio remoto distribudo, ou DDoS.
Negao de Servio Remoto Distribudo
Os ataques Smurf e Fraggle j so maneiras efetivas de ampliar ataques origi-
nados em um nico ponto por isso mesmo so chamados de lentes de au-
mento. Entretanto, mesmo se utilizando dessa lente, a banda de rede dispon-
vel para o atacante limitada, e ele no pode manter um ataque com muitos
Invaso Invaso
304 305
pacotes para cada mquina amplificadora e manter, ao mesmo tempo, muitas
mquinas amplificadoras enviando esses mesmos pacotes vtima.
Para resolver a parada, foi desenvolvido um certo tipo de ataque em que os
pacotes destinados s vtimas no saem da mquina do hacker, mas de compu-
tadores zumbis controlados remotamente por ele. Nesses computadores, o
hacker instala certos tipos de cavalo de tria ou vrus que respondem a coman-
dos externos e funcionam como fonte geradora do ataque so os chamados
a aa aag gg ggentes entes entes entes entes ou zumbis zumbis zumbis zumbis zumbis. O contgiod-se pelos mesmssimos mtodos j estuda-
dos at aqui invaso, distribuio camuflada e mesmo cooperao. O atacan-
te possui um ou mais programas mestre mestre mestre mestre mestre, que controlam os agentes.
Lembra-se de quando dissemos que a invaso de sistemas menores poderia
ser usado como trampolim para chegar vtima principal? Pois bem, esta
uma das situaes. O atacante leva semanas, s vezes meses, para invadir pe-
quenos sistemas
computadores pesso-
ais e servidores de pe-
quenas empresas
sem que seu interesse
imediato seja tais m-
quinas. Elas sero usa-
das, isso sim, como
zumbis num ataque a
grandes companhias
(1234 1234 1234...), e
para isso necessrio
que os softwares ade-
quados estejam insta-
lados nelas. O hacker
pode, inclusive, con-
sertar algumas coisas
e at atualizar a m-
quina do indivduo,
caso isso seja necess-
rio para que o ataque
principal seja levado a
termo.
Umavez instalado os
agentes, o hacker pode
iniciar umataque apar-
tir do mestre:
Imagine agora que o hacker mais tarimbado. Um ataque DDoS pode ser
sofisticado com a distribuio de diversos mestres, controlados tambm
distncia pelo invasor. Ele pode tanto usar ferramentas especiais para tal, j
existentes, como tambm usar coisas do sistema operacional como o Netcat
ou o Telnet.
Invaso Invaso
306 307
Agora, uma pitada a mais de maldade: cada um dos agentes pode usar lentes
Smurf ou Fraggle para multiplicar sua fora. Um ataque com essa configura-
o devastador!
Masters and Slaves
H uma infinidade de ferramentas para todos os ataques DoD e DDoS descri-
tos aqui. A maioria pode ser encontrada nos dois sites indicados anteriormente:
packetstormsecurity.nl/DoS/ e www.astalavista.box.sk. Outra seo,
packetstormsecurity.nl/distributed/, trata de ferramentas e tutoriais DDoS.
Procure, nos sites indicados e em seu mecanismo de busca preferido, infor-
maes e download das seguintes ferramentas:
Fapi
Targa
Blitznet
Trin00/WinTrin00
TFN/TFN2k/TFNWin
Stacheldraht
Shaft
Trank
Trinity
Como tarefa para casa, o estimado leitor ter que ler a documentao e tes-
tar todos, um a um, e descobrir em quais categorias (s vezes mais de uma)
cada um deles se encaixa.
Outra tarefa: procure informaes sobre ataques a roteadores. Voc ficar
surpreso em saber que por vezes mais fcil atacar equipamentos intermedi-
rios da Internet do que o alvo final. Se est muito difcil tirar do ar o servidor
daquela empresa inimiga do meio-ambiente, talvez o roteador ligado a ele seja
o lado mais fraco e, de quebra, deixa a rede interna deles sem acessos
Grande Rede.
Defesa e contra-ataque
Bem, l vamos ns. Este foi um captulo longo. Procuramos colocar nele o
bsico do bsico sobre ataques a computadores e redes. Listamos aqui, portan-
to, algumas dicas sobre o que procurar e por onde comear para segurar seus
sistemas e evitar que sejam atacados com essas tcnicas.
Recomendaes aplicveis a todos os tipos de ataques
O mais importante! O mais importante! O mais importante! O mais importante! O mais importante! Deixe ativados apenas os servios que est realmente
usando. Se o servidor apenas de HTTP e FTP, desabilite Finger, Telnet, SSH,
SMTP, POP, IMAP, Quake...
Configure corretamente seu firewall, e tenha sempre mais de um tipo, pelo
menos um diferente para cada lado da DMZ. Prefira filtros de pacote por esta-
do de conexo (Stateful Packet Filters) e firewalls do tipo Proxy. Mesmo com
os servios desabilitados nos servidores, feche as portas correspondentes no
Invaso Invaso
308 309
firewall para evitar trfego fantasma (por exemplo, de backdoors) e ACK
Scanning. No tenha preguia: faa uma tabela de regras de filtragem realmen-
te longa e abrangente, preferencialmente associando portas e endereos e no
simplesmente bloqueando.
Mantenha sempre seus sistemas atualizados para evitar ser invadido por
vulnerabilidades conhecidas e bem documentadas. Ateno especial aos hotfixes
e Service Packs da Microsoft o que no quer dizer que seus sistemas Unix e
Novell precisam de menos cuidado.
Por padro, crie usurios com o mnimo possvel de privilgios e v aumen-
tando-os medida que seja preciso. Caso o usurio no precise mais do privil-
gio, no hesite em cass-lo. Crie polticas severas e consistentes de contas, que
incluam nomes de login no-bvios, gerenciamento ostensivo de contas ativas,
desativao imediata (ou antes, cancelamento) de contas ociosas, senhas fortes
contendo letras, nmeros e smbolos e regras para alterao de senhas em
menos de 30 dias. Alm disso, um documento interno oficial, assinado pelo
funcionrio, deve regular claramente os equipamentos autorizados a conectar
rede e prever punies caso a rede seja invadida ou comprometida por mau
uso ou descuido do usurio.
War Dialinge Brute Force
Em primeiro lugar, tente atacar a si mesmo com ferramentas de fora bruta.
Se voc no deveria possuir modems ou acessos pessoais de alta velocidade
ligados sua rede, esta uma boa maneira de descobrir. Ao menor sinal de
modem discado, cable modem ou aDSL no autorizados em seu sistema, remo-
va-os imediatamente!
Parasistemas acessveis por Internet ou por conexo viaterminal,arecomendao
no dar acesso atodas as contas por default. E cuidado comas contas padro do
sistema! Obrigatoriamente, os acessos devero ser feitos por VPNs criptografadas.
No caso de seu negcio ou instituio realmente necessitar de modems e
logins externos via Internet ou SSH, a poltica de senhas e acesso da empresa
deve ser seguida risca, e as penalidades aplicadas de forma exemplar.
Estouro de pilha
No h muito o que dizer alm do bvio: se voc programador, sua obriga-
o escrever cdigo imune a buffer overflow. Mesmo sendo inerente s lin-
guagens de programao, possvel implementar rotinas de verificao que
barram injeo maliciosa de dados.
Se voc administrador de sistemas ou mesmo usurio domstico, mantenha
seu sistema sempre atualizado com os ltimos remendos publicados pelos
fabricantes de seu software. E no se concentre apenas nos servidores: as esta-
es tambm so vulnerveis e portas de entrada para sua rede.
Quebra de senhas
Para comear, use ferramentas de quebra de senha em voc mesmo. S termi-
ne quando estiver satisfeito com o resultado que deve ser, por acaso, zero:
nenhuma senha a descoberto. Faa esse teste periodicamente, pelo menos com
o dobro da freqncia com a qual as senhas devem ser mudadas. Se a poltica
da empresa obriga os usurios a mudar a senha a cada 30 dias, tente quebrar as
senhas do sistema pelo menos a cada 15 dias.
O mtodo mais eficiente para barrar o brute force limitando o nmero de
logins e bloqueando temporariamente temporariamente temporariamente temporariamente temporariamente (e no em definitivo) as contas do sis-
tema. Isso cria um problema de DoS, mas ainda melhor que ter seus dados
comprometidos.
Evite o roubo de senhas a todo custo, e dificulte ao mximo a vida do cracker
que porventura consegu-lo. Vale desabilitar os LM Hashes no Windows NT/2k,
criar um servidor de login centralizado, com criptografia e segurana (como o
Kerberos), usar Shadow Passwords no Unix (tambm com login centralizado
via LDAP+Kerberos) e mesmo criptografar os sistemas de arquivos.
As severas polticas de senhas descritas acima tambm se aplicam neste caso.
Bem como campanhas de consientizao dos usurios para os males das se-
nhas fracas e do comportamento de risco senhas no devem ser escritas em
lugar algum, muito menos divulgadas. NUNCA!
Por fim, a instalao de softwares que rejeitam senhas fracas no ato do cadas-
tro do usurio (e posterior troca de senha peridica sua empresa instituiu
isso, no ?) um ponto-chave para evitar que os usurios coloquem em risco
toda a rede por colocar o nome do cachorro como senha pessoal.
War Driving
Criptografe sua rede e ative o WEP. Ponto final.
SQL Injections e Cookie Poisoning
Crie dispositivos de verificao em todos todos todos todos todos (repito: todos todos todos todos todos) os campos de to- to- to- to- to-
dos dos dos dos dos (novamente repito: todos todos todos todos todos) os formulrios do seu site na Internet. Bloqueie
sumariamente caracteres perigosos como =, e , *, %e _. Uma boa poltica
liberar apenas apenas apenas apenas apenas letras e nmeros e bloquear todo o resto.
Use sempre o mtodo POST para envi-los ao script processador, uma vez
que o mtodo GET deixa informaes importantes na URL. Se possvel,
criptografe os campos antes de envi-los. Melhor ainda: use conexes HTTPS/
SSL com certificados emitidos por empresas idneas e criptografia forte.
No caso de cookies, faa um controle de sesso coerente, com session IDs
preferencialmente criptografados e, se possvel, dinmicos mudando a cada
pgina acessada. No se deve confiar apenas na criptografia do SSL: criptografe
tudo vrias vezes ANTES de enviar por HTTPS (que tambm criptografado).
Invaso Invaso
310 311
Sniffing, Spoofing e Hijacking
Em primeiro lugar, coloque filtros anti-spoof e detectores de sniffers em to-
dos os pontos de entrada, sada e passagem (roteadores entre sub-redes) de sua
rede. IDSs so bem vindos e grandes companheiros dessas ferramentas.
Mesmo no sendo impeditivo para a ao do hacker, um agente complicador:
instale switches e bridges em vez de hubs e segmente sua rede ao mximo.
Alm do benefcio do desempenho, isso cria uma camada a mais de dificuldade
para o invasor. Se possvel, divida a rede em subredes e coloque roteadores
com filtros de pacotes muito bem estruturados para interlig-las. Dependendo
do nmero de pessoas, tempo, oramento e tamanho da rede, possvel confi-
gurar estaticamente estaticamente estaticamente estaticamente estaticamente as tabelas MAC dos switches e bridges em cada uma de
suas portas. Com isso, o equipamento fica imune a ARP Spoofing e MAC Flooding
(mas no ao entupimento da rede ou mesmo negao de servio possivel-
mente provocados por eles). Mas prepare-se: uma tarefa herclea...
Outro mtodo para dificultar (e muito!) a ao dessas ferramentas a
criptografia sistemtica de toda a rede. Toda ela. Use tudo o que estiver mo,
cada qual para sua funo especfica: PGP/GPG, IPSec, HTTPs, SSH (use sem- sem- sem- sem- sem-
pr pr pr pr pre ee ee SSH verso 2!). J vi projetos de VPNs com vrios nveis de tunelamento,
todos criptografados. Leve em conta o fato de que cada nvel criptogrfico tem
um impacto negativo fenomenal no desempenho total da rede e use o bom
senso para dosar performance e segurana..
Implemente DMZs no s entre a rede corporativa e a Internet (isso mio-
pia!), mas tambm diversos nveis de DMZs e mesmo DMZs interdepartamentais!
Verifique a predictabilidade dos nmeros seqenciais TCP de seus computa-
dores. Mquinas Windows 9x tornam isso brinquedo de criana, mquinas
FreeBSD e Solaris, por outro lado, so famosas por serem praticamente
randmicas nesse ponto.
Se estiver usando sistemas Unix, esquea os Unix Trusts. Alm deles, outro
esquema de confiana muito ruim o que a Microsoft chama de PDC/PDC PDC/PDC PDC/PDC PDC/PDC PDC/PDC
T TT TTr rr rrusted Relations usted Relations usted Relations usted Relations usted Relations no Windows NT. Evite-os completamente.Prefira sistemas
modernos como o Novell eDirectory ou as inmeras implementaes do LDAP,
incluindo a o ADS da Microsoft. Mas use sempr sempr sempr sempr sempre ee ee um esquema de criptografia.
Se nada disso estiver disponvel, mais seguro deixar o usurio logar-se indivi-
dualmente em cada um dos sistemas da empresa do que ter um sistema de
autenticao centralizado cujo esquema de confiana falho.
Negao de Servio
IDSs ajudam a detectar ataques DoS locais a no ser que o ataque destrua o
prprio IDS, o que bem possvel e mesmo provvel.
As defesas contra IP Spoofing, ARP Spoofing e MAC Flooding tambm aju-
dam aqui. Tabelas MAC estticas em switches idem.
Sistemas com a ltima atualizao liberada pela fabricante so menos expos-
tos a DoS baseados em vulnerabilidades conhecidas. Alguns sistemas possuem
patches que os tornam inclusive imunes a ataques do tipo SYN Flood e Smurf.
Se possvel, compre mais velocidade para sua conexo e tenha sempre rotas
alternativas (e secretas!) caso a conexo principal esteja inundada. Adequao
de trfego (Traffic Shape) tambm desejvel.
Para o DDoS, uma nica recomendao, alm das anteriores: mantenha os
zumbis longe de suas mquinas! Faa uma auditoria peridica em todos os
computadores procura de portas suspeitas ou programas no-autorizados.
Uma ltima dica: Echolot (echolot.sourceforge.net).

S-ar putea să vă placă și