Pedro Pereira

Consultoria, tutoriais e outras coisas que podem te ajudar!

Kippo: honeypot SSH

Gostaria da ajuda de um especialista? Entre em contato e peça um orçamento.


O Kippo é um honeypot que simula o serviço SSH e permite a você entender como um atacante age quando consegue comprometer um sistema através deste serviço, dando a oportunidade de melhorar bastante a proteção do seu sistema para que um dos seus servidores reais não seja a próxima vítima.

Vou tentar explicar de forma resumida o conceito de honeypot e falar como instalar, configurar e usar o Kippo.

O que é um honeypot?

De acordo com Lance Spitzner:

“A honeypot is an information system resource whose value lies in unauthorized or illicit use of that resource.”

Em linhas gerais: Um honeypot é um software (como HoneyD ou o próprio Kippo) ou um serviço deliberadamente mal configurado cujo valor está em ser atacado. Ao ser atacado, o honeypot irá logar todas as informções em um local seguro para que você possa analisar e compreender como o atacante conseguiu comprometer o sistema. O produto de tal análise são ferramentas de proteção, assinaturas de IPS (Intrusion Protection System), etc.

Algumas vantagens dos honeypots:

  • Como o honeypot não tem nenhum serviço legítimo disponível, qualquer tráfego direcionado a ele pode ser considerado malicioso, ou seja, o número de falsos-positivos detectados por este tipo de software tende a ser bem baixo;
  • O honeypot não vai ficar inline em relação ao tráfego como um IPS ficaria, por exemplo. Portanto, ele nunca irá interferir no tráfego aumentando o delay, por exemplo. Isso também quer dizer que você não precisa de uma máquina muito forte para configurar o seu honeypot. Na maioria das vezes, uma VM com poucos recursos já consegue fazer um serviço decente;
  • Embora honeypots capturem poucos dados, qualquer coisa que ele capturar pode ser um ataque real.

Como os honeypots não são perfeitos, também existem algumas desvantagens:

  • Não importa o software que você use, o honeypot só é capaz de ver o que chega até ele. Ou seja, por mais que um ataque real tenha acontecido na sua rede o honeypot não vai te ajudar em nada se ele não tiver sido um dos alvos;
  • Se o administrador do honeypot ainda for inexperiente, ele pode acabar criando uma enorme brecha na segurança da rede. É muito importante compreender a fundo o funcionamento de um honeypot antes de colocá-lo em produção na sua rede. Pesquise muito, leia muito e pratique ainda mais antes de pensar em colocar um honeypot em produção.

Honeypots tem vários níveis de interatividade, indo de baixo (geralmente um software ou script emulando o comportamento de um determinado software. Um exemplo deste tipo de honeypot é o HoneyD) a alto (um sistema operacional ou o software propriamente dito utilizando uma configuração incorreta ou insegura. Por exemplo, uma máquina Linux rodando uma versão antiga do kernel ou do Samba). O nível de interatividade define o que o atacante poderá fazer no sistema:

  • Em honeypots de baixa interatividade, geralmente o atacante pode fazer pouquíssimas coisas consequentemente gerando menos informações para análise (o que pode acabar prejudicando a pesquisa do profissional). Porém, honeypots de baixa interatividade tendem a oferecer menos riscos ao ambiente e uma maior facilidade de implantação;
  • Em honeypots de alta interatividade o atacante pode ter acesso a muito mais coisas, justamente por ser o software propriamente dito sendo atacado. Honeypots de alta interatividade requerem um nível de acompanhamento e conhecimento muito maior por parte do administrador à fim de impedir que esta máquina deixe de ser uma ferramenta de estudo e passe a ser utilizada em ataques reais (o que pode acabar causando até problemas legais para o administrador).

O Kippo é um honeypot de média interatividade que emula o serviço SSH em um host. Quando o atacante consegue adivinhar a senha através de brute-force e logar na máquina, todas as ações dele passam a ser logadas pelo Kippo, inclusive os downloads que ele faz para a máquina são guardados para que você possa analisá-los posteriormente.

Como estas máquinas estão “de cara” para a Internet, elas serão atacadas por pessoas com níveis de conhecimento diferentes. Portanto, a máquina que está hospedando o honeypot deve ser extremamente segura para evitar que um atacante mais experiente quebre as proteções do honeypot e ataque o sistema operacional real. Tenha certeza de que seguiu corretamente todos os passos de hardening necessários para qualquer servidor de produção antes de colocar o seu honeypot na Internet.

Instalação

A instalação do Kippo é bem simples. Aqui vou mostrar o processo em um servidor Ubuntu 11.04, porém o processo não deve mudar muito em outras distribuições Linux.

Primeiro, você precisa instalar as dependências do Kippo para que ele funcione corretamente. São principalmente bibliotecas Python:

  • Python 2.5 ou mais recente;
  • Twisted 8.0 ou mais recente;
  • PyCrypto;
  • Zope Interface.

Para instalar todas:

$ sudo apt-get install python-dev openssl python-openssl python-pyasn1 python-twisted

Pronto, com as dependências instaladas podemos fazer o download. A página oficial do Kippo é https://code.google.com/p/kippo/. Lá você pode fazer o download e também tem acesso à toda a documentação disponibilizada pelos desenvolvedores.

Depois de baixar a versão mais recente, descompacte o pacote:

$ tar xzvf kippo-0.5.tar.gz

Isso irá criar o diretório kippo-0.5, lá dentro está tudo o que você vai precisar para executar a ferramenta.

Agora o ambiente está pronto que executemos a ferramenta. Porém, precisamos antes configurá-la.

Configuração

Todas as opções de configuração do Kippo estão no arquivo kippo.cfg dentro do diretório criado quando você descompactou o pacote. O formato deste arquivo é extremamente simples, além dele ser muito bem documentado. Aqui, vou te mostrar como mudar algumas opções importantes. Para entender todas, basta dar uma lida nos comentários do arquivo.

ATENÇÃO: todas as linhas que começam com “#” são comentários e *não* terão efeito. Para que tais linhas sejam interpretadas e afetem o comportamento do Kippo, você deve primeiro remover o “#”.

  • ssh_addr: Define em qual endereço IP do Kippo irá ficar esperando conexões. Se deixar 0.0.0.0 ele irá responder em todos os IP’s;
  • ssh_port: Define em qual porta o Kippo irá esperar novas conexões;
  • hostname: Define qual será o hostname do honeypot;
  • log_path: Diretório onde todos os logs gerados serão armazenados;
  • download_path: Se o atacante fizer download de algum arquivo, ele será salvo no diretório definido nesta opção;
  • data_path: Diretório para arquivos com dados importantes, como as senhas;
  • public_key e private_key: São os arquivos que contém as chaves privadas e públicas do SSH. Se não existirem serão criados automaticamente pelo Kippo;
  • password: Senha inicial do root. Se o atacante trocar esta senha no futuro, o novo valor será armazenado no arquivo pass.db dentro do diretório definido na opção data_path, explicada anteriormente;
  • out_addr: Esta opção é utilizada apenas pelo wget (quando executado dentro do honeypot). Ela define qual o endereço IP que será utilizado pelo host quando conexões externas forem iniciadas;
  • sensor_name: Se você utilizar mais de uma instância do Kippo, é interessante mudar o sensor_name para que você consiga definir a qual sensor determinado log pertence;
  • fake_addr: Modifica o endereço IP que é exibido quando comandos como w e last são executados.

Além disso, você também pode usar o MySQL como um repositório para os logs gerados pela ferramenta ao invés de usar arquivos texto. Para isso, basta configurar corretamente as opções:

  • host: O endereço IP do host onde o MySQL está rodando;
  • database: Nome do banco de dados que será utilizado pela ferramenta;
  • username: Nome de usuário para fazer o login no BD;
  • password: Senha do usuário especificado no item anterior.

Depois de configurar estas opções, não se esqueça de descomentar a linha “[database_mysql]” para que tudo tenha efeito.

Kippo configurado, vamos iniciar o serviço e fazer um teste para ver se tudo está funcionando corretamente!

Inicializando o serviço e testando

Inicializar o serviço é muito simples. Basta entrar no diretório do Kippo e:

$ ./start.sh

Note que o Kippo não pode (e nem deve, em circunstância alguma) ser executado como root devido aos problemas de segurança que isso implicaria. Se o serviço iniciar corretamente, você deverá ver uma mensagem no console parecido com:

Starting kippo in background…

E o prompt será mostrado novamente. Agora o serviço está em operação e já pode ser atacado. Para confirmar, vamos fazer um teste simples: vamos conectar à porta na qual o Kippo está ouvindo:

$ ssh [email protected]

O Kippo irá agir como se esta fosse uma conexão SSH normal, pedindo a senha. Basta informar a senha que você configurou e ele irá te mostrar o prompt:

sales:~#

No meu caso, deixei o hostname padrão “sales”. Mas a string exibida ali irá depender de como você configurou a opção “hostname” no arquivo de configuração.

Considerações sobre a segurança do seu honeypot

  • Nunca execute um honeypot (qualquer que seja ele) como root. O Kippo, como vimos, não permite isso mas outros honeypots podem não ter este tipo de verificação e acabar lhe causando problemas;
  • Configure um firewall extremamente restritivo para o seu honeypot para diminuir a possibilidade de uma invasão que não seja controlada;
  • Registre toda as vezes em que uma conexão é gerada do honeypot para a Internet;
  • Nunca em hipótese alguma configure um honeypot na mesma máquina em que serviços legítimos estão sendo executados;
  • Monitore de perto todas as atividades do seu honeypot;
  • Mantenha seu honeypot atualizado, sempre aplicando os patches de segurança;
  • Desabilite *todos* os serviços desnecessários do sistema operacional que está hospedando o honeypot;
  • Use chroot() quando configurar o software de honeypot. Aqui não mostrei como seria este tipo de configuração pois fugiria do escopo do post, mas sempre use o chroot!

Enfim, mantenha em mente que um honeypot é como qualquer outro software: pode conter bugs (sejam eles conhecidos ou não) que acabam adicionando um problema de segurança no seu sistema. Por isso, é importantíssimo manter um ambiente muito bem monitorado para não acabar dando um tiro no pé ao usar um honeypot.

Conclusão

Como dito anteriormente, o honeypot é uma ferramenta que oferece um material riquíssimo para que você estude e melhore a segurança do seu ambiente. Porém, caso não seja bem configurado e monitorado pode acabar causando problemas ao invés de ajudar. Sempre tome todas as medidas de segurança ao seu alcance para manter o honeypot seguro, sendo “invadido” apenas quando tudo estiver sob controle do software.

Também é importante que você entenda que um honeypot não é uma ferramenta que vai proteger a sua rede. Ela irá fornecer informações utilíssimas para descobrir ataques, exploits, malwares, etc. na rede para que você tome as ações de proteger os seus sistemas. Não pense que o honeypot pode susbstituir uma ferramenta como um firewall ou mesmo um IDS/IPS.

Encontrou algum erro no texto? Quer adicionar alguma informação? Deixe um comentário!

Compartilhe o post! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Webnews
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Ask
  • Bloglines
  • email
  • Facebook
  • Furl
  • Google Bookmarks
  • LinkedIn
  • Live-MSN
  • Pownce
  • Print
  • Rec6
  • Slashdot
  • Technorati
  • TwitThis

Não há posts relacionados a este!





Deixe seu comentário!

Acompanhe!

    Assine o feed RSS! Me acompanhe no Twitter! Me adicione no LinkedIn!

Creative Commons


Mais lidos