dez 292010
 

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

 Posted by at 22:22

  16 Responses to “Instalando um “honeypot” com a ferramenta honeyd”

  1. 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?

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

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

  4. 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 !

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

  6. 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!

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

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

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

  10. 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??

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

  12. 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?

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

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

  15. 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?

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

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)