Você está na página 1de 6

SysAdmin

Honeypots

Honeypots no Linux
Descobrir como um agressor trabalha, quais suas ferramentas e seu alvo algo extremamente valioso para um administrador de rede. Para isso, usamos uma "isca", uma ferramenta chamada Honeypot. Veja como montar um com o Linux.
Por Antnio Marcelo

Uma armadilha para os invasores

Csuka Andrs www.sxc.hu

os dias atuais, quando a segurana tornou-se uma preocupao constante dos administradores de rede, conhecer as ameaas que podem comprometer uma estrutura operacional e permitir o roubo de informaes uma necessidade. Muitos consideram-se protegidos por rewalls, sistemas de deteco de intruso ou at mesmo por uma poltica de segurana implementada na empresa. Os cuidados tomados frente a diversas ameaas e situaes concentram-se sobretudo na preveno e na resposta rpida a um evento qualquer de quebra de segurana. Contudo, uma nova idia na rea de segurana da informao vem surgindo e ganhando um nmero cada vez maior de adeptos: a do estudo dos agressores e de seus modi operandi. Trata-se de uma atividade que permite descobrir como um invasor mal-intencionado trabalha e ao mesmo tempo identicar suas ferramentas e o mais importante seu alvo. Essas tcnicas de estudo in vivo devem ser utilizadas de maneira bastante cautelosa, j que muitos administradores acabam abrindo uma brecha em suas redes, em vez de criar um ambiente de estudo isolado. O objetivo deste artigo mostrar como pode ser realizada a montagem de um Honeypot em Linux, obter resultados interessantes em situaes reais e traar um per l dos ataques a uma

rede e de como seus agressores esto agindo. Essa atividade ser realizada em uma mquina com a distribuio Slackware instalada e com alguns recursos de segurana ativos.

Os Honeypots
Existem de nies clssicas como a de Lance Spitzner (veja referncia [1]), criador do projeto Honeynet, que diz que: Um honeypot um recurso de rede cuja funo ser atacado e comprometido (invadido). Signica dizer que um honeypot poder ser testado, atacado e invadido. Os honeypots no fazem nenhum tipo de preveno; eles fornecem informaes adicionais de valor inestimvel Outra de nio seria a seguinte: Um honeypot um sistema que possui falhas de segurana, reais ou virtuais, colocadas de maneira proposital, a m de que seja invadido e o fruto dessa invaso possa ser estudado Muitos administradores pensam erroneamente que um honeypot uma ferramenta de segurana. Engano: uma ferramenta de estudo utilizado na segurana. Por meio de um honeypot possvel desenvolver toda uma metodologia e novas ferramentas para combater os agressores. Os honeypots podem ser classicados de acordo com seus nveis de operao, que seriam os seguintes:

68

agosto 2005

edio 11 www.linuxmagazine.com.br

Honeypots

SysAdmin

Baixa interatividade: esse tipo de honeypot prov os chamados servios falsos em determinadas portas TCP/UDP. No fundo, esse honeypot um listener tcp/udp, aguardando conexes e devolvendo ao atacante respostas falsas; P Mdia interatividade: nesse tipo existe um envolvimento maior, j que o honeypot ir simular, com muitos detalhes, um ambiente totalmente falso. Na realidade ele seria como uma espcie de concha o atacante caria preso num ambiente controlado, sem contato com o sistema real. Os servidores executados respondem s requisies, inclusive simulando bugs e outras peculiaridades de comportamento; P Alta interatividade: esse honeypot na realidade uma mquina executando um sistema operacional real com servios comprometidos e que estaria servindo como isca num ponto real da Internet. Nesse caso, o sistema possui uma srie de recursos de monitorao e proteo. Normalmente ca localizado em uma rede isolada e com um rewall ou bridge na frente. Apesar dos enormes riscos, os honeypots de alta interatividade so bastante usados e tornam-se elementos muito importantes na captura de tcnicas e informaes sobre os agressores. O risco a sua principal vantagem, j que atrai o invasor. Colocaremos em produo um honeypot de mdia interatividade utilizando como congurao o seguinte: P Uma mquina Linux (no nosso caso, rodando o Slackware com o kernel 2.4.29) com a rede congurada P O software Honeyperl do projeto HoneypotBR P O sistema de deteco de intruso snort P Um ltro de pacotes baseado no iptables com regras bsicas para nossos servios.
P

Anlise e monitorao das atividades de usurios e servios; Auditoria e levantamento de vulnerabilidades do sistema; P Reconhecimento dos padres de ataque mais comuns; P Reconhecimento dos padres de violao do sistema; P Anlises estatsticas de atividades incomuns ao sistema; P Integrao com a auditoria (logs) do sistema; P Reativo a ataques e atividades incomuns (opcional); Utilizaremos o snort (que pode ser obtido em [2]) como exemplo de IDS. Como nossa inteno no fazer um manual de instalao do snort, seremos o mais breve possvel. Baixe o cdigo fonte do programa, descompacte-o e compile/instale com a velha seqncia ./configure; make; make install
P P

Listagem 1: regras do snort ativas


01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include include $RULE_PATH/bad-traffic.rules $RULE_PATH/exploit.rules $RULE_PATH/scan.rules $RULE_PATH/finger.rules $RULE_PATH/ftp.rules $RULE_PATH/telnet.rules $RULE_PATH/rpc.rules $RULE_PATH/rservices.rules $RULE_PATH/dos.rules $RULE_PATH/ddos.rules $RULE_PATH/dns.rules $RULE_PATH/tftp.rules $RULE_PATH/web-cgi.rules $RULE_PATH/web-coldfusion.rules $RULE_PATH/web-iis.rules $RULE_PATH/web-frontpage.rules $RULE_PATH/web-misc.rules $RULE_PATH/web-client.rules $RULE_PATH/web-php.rules $RULE_PATH/sql.rules $RULE_PATH/x11.rules $RULE_PATH/icmp.rules $RULE_PATH/netbios.rules $RULE_PATH/misc.rules $RULE_PATH/attack-responses.rules $RULE_PATH/oracle.rules $RULE_PATH/mysql.rules $RULE_PATH/snmp.rules $RULE_PATH/smtp.rules $RULE_PATH/imap.rules $RULE_PATH/pop2.rules $RULE_PATH/pop3.rules $RULE_PATH/nntp.rules $RULE_PATH/other-ids.rules $RULE_PATH/web-attacks.rules $RULE_PATH/backdoor.rules $RULE_PATH/shellcode.rules $RULE_PATH/virus.rules

Iniciando
O processo de instalao do Slackware (ou sua distribuio favorita) deve ser feito respeitando-se os requisitos abaixo: P Perl verso 5.6.0 ou superior; P Nenhum servidor de rede instalado (ftp, web, correio etc); P Nenhum servio de rede sendo executado pelo inetd; P Placa de rede congurada; P Uma conexo ativa com a Internet (pode ser via ADSL); Com isso, podemos comear a trabalhar com o snort.

Instalando o IDS
A idia dos IDS (Intrusion Detection Systems Sistemas de Deteco de Intruso) surgiu no incio da dcada de 80. Seu objetivo era desenvolver um sistema de auditoria que pudesse, alm de registrar a invaso, modicar e preparar o sistema para resistir a ela e, se possvel, lanar um contra-ataque. Um IDS tem as seguintes caractersticas:

agosto 2005 www.linuxmagazine.com.br

edio 11

69

SysAdmin

Honeypots

O prximo passo congurar o snort. O primeiro passo criar um diretrio snort dentro do diretrio /etc, com o comando mkdir /etc/snort. Dentro do diretrio com o cdigo fonte do snort existe o subdiretrio etc, que contm os arquivos de congurao do programa. Copie-os para /etc/snort:
cd snort-2.0.x cp etc/* /etc/snort

Congurando o Honeyperl
O Honeyperl um software de fcil instalao e congurao desenvolvido em Perl. Pode ser obtido no site do projeto HoneypotBR em [3] e instalado de maneira bem rpida. Trata-se de um honeypot de mdia interatividade que simula os seguintes servios: Squid, Apache, servidores de e-mail (Sendmail, Postx, Qmail e MSExchange), FTP, Echo e POP3. Ele ainda capaz de capturar assinaturas de vrus num pequeno Tarpit (poo de piche) implementado. A nica dependncia que o PERL (verso 5.6.0 ou superior) esteja instalado no sistema. Para congurar o Honeyperl basta executar a seguinte seqncia de comandos: P Descompacte o pacote com o comando tar -xzvf
honeyperl.0.0.7.1.tar.gz
P

Feito isso, o prximo passo copiar as regras de dentro do subdiretrio rules, no diretrio com o cdigo fonte do snort, para o diretrio /etc/snort. Essas regras contm as assinaturas dos ataques feitos ao IDS. Copie-as com o comando a seguir: cp -r rules/ /etc/snort.

Congurao do snort
A congurao do snort feita atravs do arquivo snort.conf, em /etc/snort. Para ajust-lo s necessidades de nosso honeypot, edite o arquivo de acordo com os parmetros da listagem 2. As demais regras que denem assinaturas e strings tm de ser escolhidas ao gosto do fregus e no sero citadas neste artigo. Agora devemos escolher as regras de deteco a utilizar. Basta descomentar a linha correspondente, retirando o caracter # do incio:
include $RULE_PATH/regra_a_usar.rules

Execute o comando perl verify.pl para vericar se todos os mdulos Perl necessrios para a execuo do programa. Caso seja necessrio, essa rotina acessa automaticamente o repositrio CPAN e executa o download e a instalao dos mdulos Perl faltantes. O processo de congurao deve ser feito de forma bastante cuidadosa. Inicialmente devem ser escolhidos os servios que sero executados no Honeypot. O Honeyperl fornece dois tipos de arquivo de congurao: honeyperl.conf: Arquivo principal de congurao do programa. Fica localizado no diretrio conf juntamente com o dos outros mdulos. Dentro dele h algumas variveis importantes que devem ser conguradas. So as seguintes:
############# #Secao 1 # #############

Cada uma das regras cobre ataques especcos. Recomendamos a leitura do manual do snort para maiores esclarecimentos. Na listagem 1 temos a lista das regras ativas em nosso caso. tDessa forma o snort estar pronto para uso.

Listagem 2: snort.conf
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 var HOME_NET $ppp0_ADDRESS #ppp0 representa uma conexo discada Internet var EXTERNAL_NET any #define a rede externa de qualquer ip, ou seja, qualquer um var DNS_SERVERS $HOME_NET #define os servios cujo trfego ser analisado pelo snort var SMTP_SERVERS $HOME_NET #define o servidor SMTP var TELNET_SERVERS $HOME_NET #define o servidor Telnet var HTTP_PORTS 80 #define a porta do servidor HTTP var SHELLCODE_PORTS !80 #define qualquer porta diferente (!) de 80 var RULE_PATH ./rules #define o diretrio das regras como ./rules

70

agosto 2005

edio 11 www.linuxmagazine.com.br

Honeypots

SysAdmin

#Dominio que ser utilizado pelos fakes dominio=honeypot.com.br

Listagem 3: iptables com mel


01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #! /bin/sh # # rc.firewall # # Por Antonio Marcelo amarcelo@plebe.com.br #Script padro para firewalls baseados em iptables # # if [ "$1" = "flush" ]; then echo "Flushing" iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F iptables -t nat -F # Flush no NAT iptables -X # Flush nas CHAINS PERSONALIZADAS iptables -Z # Zera regras especificas. Qdo nao houver # argumentos, zera todas as regras. Idem ao -f. echo "done" else echo "Iniciando firewall" iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT #Liberando as portas de nosso honeypot iptables -A INPUT -p tcp -m multiport --destination-port 20,21,25,80,110,3128 iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT FI

Essa varivel permite a denio de um nome de domnio. Coloque o da sua instituio/empresa. Esse parmetro faz com que, na hora em que o intruso zer o levantamento de informaes sobre o servidor, receba como resposta o nome denido. Exemplo: servidor.honeypot.com.br
#email utilizado nos fakes email=admin@honeypot.com.br

Um endereo de email de sua escolha para aparecer como contato nas respostas falsas que os servios iro emitir. Recomendamos um endereo falso ou uma conta especialmente selecionada para isso.
#Usurio utilizado usuario=root

Usurio para execuo do Honeyperl. Deixe-o como root.


#Deseja ver as mensagens no terminal? #opcoes:(sim/yes)/(nao/no) terminal=sim

Mostra as mensagens referentes a ataques em tempo real no terminal, permitindo assim seu acompanhamento.
#Deseja ativar firewall #opcoes:(sim/yes)/(nao/no) firewall=nao

#linux24 : IPTables #linux22 : ipchains so=linux24

Essa opo tem que ser manipulada com muito cuidado. Estando ativa, o Honeyperl ir gerar um arquivo de regras de rewall baseado no iptables, no sub-diretrio firewall e atualizar a tabela do iptables. Alguns usurios tiveram problemas com bloqueio de endereos. Recomendamos no ativar essa opo e, em seu lugar, utilizar o script no nal do artigo.
#Sistemas de firewall disponveis. #Pode-se ter linux22, linu24 ou openbsd: #openbsd : trabalha com PF

Com essa opo, podemos denir se o rewall vai ser feito usando o PF, do OpenBSD, o ipchains ou o iptables. A segunda seo do arquivo de congurao que determina os servios falsos (os fakes) a serem executados. Dependendo da simulao desejada podemos ativar ou no determinado fake.
############# #Secao 2 # ############# #Fakes a serem iniciados fakesquid:squid:conf/fakesquid.conf:3128:Squid Emul

agosto 2005 www.linuxmagazine.com.br

edio 11

71

SysAdmin

Honeypots

fakesmtp:smtp:conf/fakesmtp.conf:25:SMTP emul fakehttpd:httpd:conf/httpd.conf:80:HTTPD emul fakepop3:pop3:conf/pop3:110:POP3 emul #fakeecho:echo::7:Echo emul fakeftp:ftp:conf/fakeftp.conf:21:FTP emul #fakepit:pit:20001:Pit emul
P

A estrutura da denio de um fake a seguinte:


nomedofake:modulo(servico):arquivo de config:porta TCP:comentario

Colocar uma cerquilha (#) na frente de qualquer um dos parmetros impede a execuo daquele servio. Recomendamos ao usurio no modicar esses parmetros de inicializao. A congurao dos fakes pode ser feita modicando seus artigos de congurao correspondentes, encontrados no subdiretrio conf. So eles: P fakesquid.conf: Arquivo de congurao do fakesquid, emulador do proxy Squid. O parmetro de inicializao $bugsquid=" Squid/2.4 Stable3 ";, que indica o banner da verso que deve aparecer nas respostas do fakesquid P fakesmtp.conf: Arquivo de congurao do fakesmtp, emulador de servidores de correio. Possui os seguintes parmetros: $serveremul="sendmail"; indica qual servidor de correio ser emulado. As opes vlidas so: exchange, sendmail, qmail e postfix. J $logdir="logs/smtp"; indica o di-

retrio de log (registro) do servidor de SMTP onde sero armazenados os arquivos de log e das mensagens enviadas com o endereo IP da mquina do agressor. httpd.conf: Arquivo de congurao do fakehttpd, emulador do Apache. Possui o parmetro $httpd="Apache/1.3.27";, que indica a verso do Apache que dever aparecer no banner nas respostas do fakehttp. pop3.conf: Arquivo de congurao do fakepop3, emulador de servidores POP3. Possui os seguintes parmetros: serveremul="qpopper";, que indica qual servidor POP3 ser emulado. As opes vlidas so teapop, qpopper e pop3. J $logdir="logs/pop3.log"; indica o diretrio em que caro os arquivos de log do servio. fakeftp.conf: Arquivo de congurao do fakeftp, o emulador do servidor FTP wuftp. Os parmetros de congurao so os seguintes: $programaftp="wuftp"; indica o servidor FTP a ser emulado. J $conteudoftp="total 0\x0d\x0a"; indica para o fake qual contedo(chamado honeytokens) ser exibido para o agressor. O fake echo no possui arquivo de congurao. O fakepit utilizado para captura de assinaturas de worms, identicados por sua porta de entrada.

Congurando o iptables
Para nalizar o projeto, criaremos um pequeno script de iptables para nosso honeypot. Esse script ir liberar o acesso s portas dos servios executados pelo honeypot. Veja a listagem 3 . Salve o arquivo com o nome de rc.firewall no diretrio /etc/rc.d/ e em seguida digite o comando chmod 755 rc.firewall para que possamos execut-lo a partir do script de inicializao rc.local.

Listagem 4: rc.local
01 #!/bin/sh 02 # 03 # /etc/rc.d/rc.local: Local system initialization script. 04 # 05 # Put any local setup commands in here: 06 # 07 # 08 echo Iniciando o honeypot 09 # 10 #Iniciando o snort 11 snort -c /etc/snort/snort.conf& 12 # 13 #Iniciando firewall 14 /etc/rc.d/./rc.firewall 15 # 16 # Mostrando regras de firewall 17 iptables -nL 18 # 19 echo ok

Executando o Honeypot
Para executar o Honeyperl, simplesente execute o comando perl honeyperl.pl. Uma mensagem surge na tela informando que o programa est em execuo. Para maior comodidade, rode o programa em segundo plano (background ) com o comando perl honeyperl.pl& . possvel adicionar parmetros como -h (ajuda), -v (imprime no terminal avisos sobre os ataques mesmo que o arquivo de congurao determine o contrrio) e -l arquivo.log (especica um arquivo de log e sobrescreve o parmetro equivalente no arquivo honeyperl.conf). A partir desse instante o Honeypot escutar qualquer ataque que seja feito s portas ativas dos fakes em execuo. Os logs caro armazenados no sub-diretrio logs, em sub-diretrios identicados com o nome do servio (echo, ftp, httpd, squid, etc). A estrutura do nome dos arquivos :

72

agosto 2005

edio 11 www.linuxmagazine.com.br

Honeypots

SysAdmin

logs/httpd/12-20-2004(18:15:23).log

Ou seja, logs/servio/ms-dia-ano(hora).log. Dentro do arquivo temos informaes como as mostradas a seguir, que ilustram um ataque ao fakehttpd:
Mon Dec 20 18:21:39 2004 fakehttpd log - Connection from 10.0.0.1:37378 get http 1.1 : Ataque WEB ! Tentativa de execucao de comando

Um toque nal
Vamos deixar nosso sistema pronto para execuo do honeypot logo aps a inicializao. Edite o arquivo /etc/rc.d/rc.local para que se parea com o mostrado na listagem 4. Agora, reinicie seu computador. Aps o login, digite o comando: perl /diretoriodohoneyperl/honeyperl.pl e nosso honeypot estar pronto para o trabalho.

Consideraes
Honeypots devem ser implementados de maneira cuidadosa, e bastante interessante que seja feito um estudo de completo de viabilidade antes da instalao. Um Honeypot pode se tornar uma fonte enorme de informaes, mas se mal-utilizado ser uma brecha de segurana em qualquer sistema.

Antonio Marcelo autor de 13 livros sobre

Sobre o autor

membro da IISFA e especialista em seguTambm professor conferencista da

Linux, mantenedor do projeto HoneypotBR,

rana com mais de 5 anos de experincia.

cadeira de Segurana da Informao do curso de ps-graduao na Faculdade Estcio de S. Seu email de contato

amarcelo@plebe.com.br.

Informaes
[1] SPITZNER, Lance. Honeypots Tracking Hackers. USA: Addison Wesley, 2003 [2] snort: www.snort.org [3] Projeto HoneypotBR: www.honeypot.com.br [4] Iptables: www.netfilter.org [5] AMOROSO, Edward. Intrusion Detection: An Introduction to Internet Surveillance,
Correlation, Trace Back, Traps and Responses. USA: Intrusion NetBooks, 1999.

[6] D.B. Moran, Trapping and Tracking Hackers: Colletive Security for Survival in the Internet Age, Third
Information Survivability Workshop, IEEE Computer Society Press, October 2000.

[7] BAUMANN, R. Platner, C. - Honeypots - Diploma thesis for masters in computer sience Em ingls em www.rbaumann.net [8] FONSECA, Marcelo, Antonio (2002/2003) Anomalias de Pacotes - Partes
I,II,III e IV, revista Geek edies 26,27,28 e 29

[9] FYODOR, Nmap, 2001. Disponvel em: www.insecure.org/nmap [10] HONEYNET PROJECT TEAM. Know Your Enemy. USA: Addison Wesley, 2002. [11] HANDLEY, Mark. Network Intrusion Detection: Evasion Trafc Normalization, and End-to-End
Protocols Semantics. Colletive Security for Survival in the Internet Age, Third Information Survivability Workshop, IEEE Computer Society Press, October 2000.

[12] KLUG, David. Honey Pots and Intrusion Detection, SANS Institute, September 13 2001. [13] NORTHCUTT, Stephen. Network Intrusion Detection: An Analysis Handbook. USA: New Riders Publishing, 1999 [14] STOLL. Cliff. The Cuckoo's Egg: Tracking a Spy Through the Maze of
Computer Espionage, USA: Pocket Books, 2000

[15] STOLL. Cliff. Stalking the Wiley Hacker, Communications of the ACM, Vol 31 No 5, May 1988, pp. 484-497

agosto 2005 www.linuxmagazine.com.br

edio 11

73

Você também pode gostar