Social Icons

^^

sábado, 4 de junho de 2011

Hackeando com o Linux


















Plataforma: Linux

URL: http://www.mbc-corp.com.br/produtos



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



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
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;

}



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

found <_do_global_dtors_aux> -Skipping.

found - skipping.

found - 0K. Do it.

found <_do_global_ctors_aux> -Skipping.

found - 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 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.

Nenhum comentário:

Postar um comentário

Popular Posts

- Arquivo -

 

Seguidores

Hora exata:

Total de visualizações de página