Olá!
Honeypots são servidores que não possuem serviços “de produção” ativos, mas possuem serviços sem informações importantes ou apenas simulações de serviços (dependendo do nível de interatividade do honeypot). Por quê ter um servidor assim? Bom, um potencial atacante pode “perder tempo” no honeypot, tentando invadí-lo. Enquanto isso, o honeypot pode gerar um alerta para a equipe de segurança da rede para que esta bloqueie o atacante antes que ele perceba a armadilha e passe para um servidor “de verdade”. O honeypot também pode capturar as ações do atacante, assim podemos ver o que ele queria fazer, e como estava fazendo.
Neste post, veremos um passo-a-passo para instalar um honeypot de baixa interatividade com a ferramenta honeyd.
Primeiro, instalamos um linux Ubuntu Server 10.04 i386. O computador não precisa ser muito potente, o que eu utilizei tinha só 512MB de memória, por exemplo. Durante a instalação, eu configurei as partições assim:
- Partição “/boot”: com 100MB de espaço e sistema de arquivos “ext4”;
- Partição de “swap”: com 1GB de espaço e sistema de arquivos “Linux swap”;
- Partição “/”: com o restante do espaço do HD virtual e sistema de arquivos “ext4”.
Instalei o Ubuntu com todas as opções padrão. As únicas alterações foram:
- Instalei o servidor OpenSSH, para facilitar o gerenciamento do servidor, posteriormente;
- Desativei as atualizações automáticas (eu prefiro fazê-las quando quiser :P).
Depois, instalei alguns pacotes necessários:
# sudo su
# apt-get update
# apt-get install gcc
# apt-get install g++
# apt-get install libpcap-dev
# apt-get install libreadline-dev
# apt-get install libzip-dev
Você vai precisar baixar as bibliotecas libdnet e libevent. Abaixo, como as instalei:
- libdnet versão 1.11
# tar -zxvf libdnet-1.11.tar.gz
# cd libdnet-1.11
# ./configure –prefix=/opt/libdnet
# make
# make install
- libevent versão 1.4.14b-stable
Mesma coisa que a libdnet, só alterando o nome dos caminhos e pastas para o respectivo “libevent”, claro ;).
Feito isto, passamos para a instalação do honeyd versão 1.5c:
# tar -zxvf honeyd-1.5c.tar.gz
# cd honeyd-1.5c
# ./configure –prefix=/opt/honeyd –with-libevent=/opt/libevent –with-libdnet=/opt/libdnet
# make
# make install
Também instalei uma ferramenta auxiliar, que precisaremos, o arpd versão 0.2:
# tar -zxvf arpd-0.2.tar.gz
# cd arpd
Apliquei algumas correções necessárias (clique aqui para vê-las).
# ./configure –prefix=/opt/arpd –with-libevent=/opt/libevent –with-libdnet=/opt/libdnet
# make
# make install
# cd /lib
# ln -sf /opt/libevent/lib/libevent-1.4.so.2
Estes dois últimos passos foram necessários porque senão o arpd não funcionava…
Pronto! Tudo instalado!
Agora, criei arquivos de inicialização do honeyd e do arpd:
- /etc/init.d/honeyd
#! /bin/sh
### BEGIN INIT INFO
# Provides: honeyd
# Required-Start: $networking $arpd
# Required-Stop: $networking $arpd
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: honeyd
### END INIT INFO
CONFIG=/opt/honeyd/share/honeyd/honeyd.conf
LOG=/var/log/honeyd/honeyd.log
#Defina abaixo qual sera o IP do honeypot!
ENDERECO=192.168.1.251
case “$1” in
start)
/opt/honeyd/bin/honeyd -l $LOG -i eth0 -f $CONFIG $ENDERECO
;;
stop)
killall honeyd
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo “Usage: /etc/init.d/honeyd {start|stop|restart}”
exit 1
esac
exit 0
- /etc/init.d/arpd
#! /bin/sh
### BEGIN INIT INFO
# Provides: arpd
# Required-Start: $networking
# Required-Stop: $networking
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: arpd
### END INIT INFO
#Defina abaixo qual sera o IP do honeypot!
ENDERECO=192.168.1.251
case “$1” in
start)
/opt/arpd/sbin/arpd -i eth0 $ENDERECO >> /dev/null 2>&1
;;
stop)
killall arpd
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo “Usage: /etc/init.d/arpd {start|stop|restart}”
exit 1
esac
exit 0
Adicionei estes arquivos à inicialização automática do Ubuntu. Assim, se eu precisasse reiniciar o honeypot, o honeyd e o arpd seriam iniciados junto com o Ubuntu:
# update-rc.d honeyd defaults
# update-rc.d arpd defaults
E antes de iniciar manualmente os dois serviços, ainda precisei criar o arquivo de configuração do honeyd:
- /opt/honeyd/share/honeyd/honeyd.conf (exemplo bem simples, não vai ter simulação de serviços, apenas contabilizará as tentativas de acesso)
create template
set template personality “Linux kernel 2.4.18 – 2.4.20 (X86)”
set template uptime 1728650
set template maxfds 35
bind 192.168.1.251 template
Lembre-se de alterar o IP que o honeypot utilizará na última linha!
Agora sim! Tudo pronto! É só iniciar o arpd e o honeyd:
/etc/init.d/arpd start
/etc/init.d/honeyd start
Até o próximo post! 😉
#tar -zxvf arpd-0.2.tar.gz
#cd arpd
#./configure –prefix=/opt/arpd –with-libevent=/opt/libevent –with-libdnet=/opt/libdnet
#make
#make install
Olá, no ARPD eu estou com dificuldades no make, você coloca um link onde é indicada um correçao para o problema. Como criar o patch para resolver o problema?
Olá!
Pra ser bem sincero, não sei bem como se usa o “patch”, e como são poucas linhas, eu fiz “na mão” :P.
Se você observar o “patch” que eles mencionam no forum referenciado, tem algumas linhas que começam com o sinal de “menos” (“-“) e logo abaixo tem uma linha com o sinal de mais (“+”). Estas linhas indicam o que está sendo alterado… É só localizar as linhas que contenham “syslog(LOG_DEBUG” (e que no post começam com “-“) e alterá-las para que fiquem iguais as respectivas linhas do forum que começam com “+” ;). Depois de alterar e salvar o arquivo, você conseguirá compilar o arpd.
[]’s
otimo post, pra aqueles que nao conseguiram fazer uso do patch colocado no tutorial,
basta vcs abrirem o arquivo arpd.c e copiar as linhas do patch onde tem um “+” na frente subtituindo pelas linhas onde tem o menos no arquivo original e compilar novamente… e so isso abrass
Não sei se esse blog ainda funciona . mas cara não esta funcionando o honeyd também !
tá dando erro no ‘make’ também !
Olá Renato!
Se você seguir os passos exatamente como estão descritos, e utilizar exatamente as mesmas versões que eu usei (Ubuntu, bibliotecas, etc), não vejo porque daria erro.
[]’s
Huff
Ola Huff, gostaria de saber se você tem algum material ou indicação de algum site ou fórum para que eu possa dar continuidade na parte de testes do honeypot. Valeu!
Olá Ulisses!
Não tenho muitas referências, mas aqui vão duas!
http://www.honeypots-alliance.org.br
http://www.honeyd.org/phpBB2/ (em inglês)
[]’s
Huff
Ola Huff,
quero agradecer a iniciativa do post, parabens.
Fiz todo o processo conforme detalhado mas na fase final quando vou iniciar o serviço tanto o /etc/init.d/honeyd quanto o arpd eles dão o mesmo erro:
/etc/init.d/honeyd: 42: restart}”: not found
stop: faltando nome do trabalho
Try `stop –help’ for more information.
tu poderia me ajudar???
grato.
Olá!
Obrigado! 😀
Você copiou/colou os scripts aqui do post? De repente ficou algum caracter “inválido” no final das linhas, e o Linux não está conseguindo interpretar o script corretamente.
De repente você pode tentar remover os “enters” e adicionar novamente. Normalmente isto resolve.
Ou então, digitar o script todo 🙂 hehe.
[]’s
Huff
Bom dia Huff, vc tem o tutorial com essas correções para efetuar no arpd antes de compilar? Pois os links com informações como efetuar não estão funcionando.
Vc poderia me ajudar??
Boa noite!
Pior que não tenho salvo as alterações indicadas naquele fórum :(, e a versão 0.2 ainda é a última que tem no site do honeyd.
Pelo jeito do erro, é algo temporário.
[]’s
Huff
Boa tarde Huffs,
Consegui configurar o honeyd tudo certinho, mais quando faço um scanner com o Nmap para identificar o sistema operacional simulado pelo honeyd, a informação que retornar são flags e não a identificação sobre o S.O. Vc poderia me ajudar pq esta acontecendo esse erro?
Informações exibidas sobre o S.O. :
TSeq(Class=RI%gcd=<6%SI=24CA0)
T1(DF=Y%W=7F53%ACK=S++%Flags=AS%Ops=MENNTNW)
T2(Resp=N)
T3(Resp=Y%DF=Y%W=7F53%ACK=S++%Flags=AS%Ops=MENNTNW)
T4(DF=N%W=0%ACK=O%Flags=R%Ops=)
T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
T6(DF=N%W=0%ACK=O%Flags=R%Ops=)
T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)
PU(DF=N%TOS=C0|A0|0%IPLEN=164%RIPTL=148%RID=E
%RIPCK=E%UCK=F%ULEN=134%DAT=E
Olá Flávio,
Isto não é necessariamente um erro.
O que acontece é que o nmap envia alguns pacotes de teste e compara as flags recebidas com as informações que ele possui, a fim de identificar qual o S.O. que foi analisado.
Quando ele mostra as flags, ao invés do resultado, é porque ele não conseguiu identificar o S.O.
Você pode tentar atualizar o nmap, para verificar se a última versão já possui as informações necessárias para identificar o S.S.
[]’s
Huff
Bom dia Huff,
Já fiz as atualizações orientadas por vc, mais mesmo assim ainda não funcionou. Vc teria algum modelo de arquivos para que eu possa aplicar e fazer os testes?
Olá Flávio,
Não tenho…
Você poderia entrar no site do nmap e enviar uma sugestão para adicionar na lista.
Lembro que era possível fazer isto, há um tempo atrás.
Era preciso enviar estas flags que o nmap coletou (que você postou aqui), entre outras coisas.
[]’s
Huff