
monitor de comando e controle de botnet
Hale é um monitor/espião de comando e controle (C&C) para botnets, com design modular para facilitar o desenvolvimento de novos módulos que monitoram novos protocolos usados por servidores C&C. Hale vem com monitores IRC e HTTP desenvolvidos com Twisted para lidar com escalabilidade de um grande número de conexões. Esses módulos possuem gramática de protocolo e configurações de bot configuráveis, mas também podem ser modificados para atender às suas necessidades. Todos os logs e arquivos capturados são salvos em um banco de dados e, no caso do IRC, os números de IP rastreados também.
Para ocultar a localização do operador, as conexões podem ser feitas através de proxies SOCKSv5, e isso é configurável através da interface web, onde também todos os logs estão disponíveis para navegação, juntamente com gráficos estatísticos e linhas do tempo. A interface foi desenvolvida com Django e a API de Visualização do Google. Alguns extras na interface web incluem suporte para uma API RESTful com suporte a OAuth e um mecanismo de busca.
A ideia principal do Hale é ajudar na caça a botnets e na pesquisa, colaborando através da criação de uma rede de sensores (monitores Hale). Para melhorar essa ideia, um bot XMPP está disponível para se conectar a um servidor XMPP centralizado, onde atualmente duas salas de grupo diferentes são usadas para coordenar entre sensores e uma sala para compartilhar logs e arquivos. A sala de coordenação faz uso de hashes de botnet que são gerados a partir das chaves únicas nas configurações do botnet, dessa forma, duas botnets não precisam ser monitoradas simultaneamente se tiverem o mesmo hash (identidade), melhorando a utilização. Para ajudar terceiros a usarem essa rede, um bot pode entrar na sala de coordenação e pedir a um sensor para começar a rastrear uma botnet se ela não estiver sendo rastreada, enviando as configurações para isso. Além disso, na sala de compartilhamento, bots de terceiros podem obter logs e arquivos capturados pelos sensores em tempo real. Para auxiliar no histórico de logs, a API web pode ser usada, suportando solicitações GET.
Hale tem as seguintes dependências:
Python == 2.6
Django == 1.2.1
Twisted == 10.1.0
GeoIP-Python == 1.2.4 (e lib C do GeoIP)
Whoosh == 0.3.18
django-haystack == 1.0.1-final
django-piston == 0.2.3rc1
pefile == 1.2.10-63
sleekxmpp == 0.9Rrc1
wsgiref == 0.1.2
zope.interface == 3.6.1
oauth2 == 1.2.0
httplib2 == 0.6.0
Além disso, o monitor requer um driver de backend de banco de dados correspondente ao banco de dados usado pelo Django. Quando essas bibliotecas estiverem instaladas, baixe o código-fonte daqui e extraia em qualquer lugar.
Primeiro, crie um banco de dados que será usado pelo Hale. O mecanismo do banco de dados pode ser de sua escolha. Se você estiver usando um banco de dados existente, pule esta etapa.
O próximo passo é instalar os drivers de backend de banco de dados Python correspondentes ao mecanismo do servidor.
Edite settings.py em hale/src/webdb/ e edite as seguintes configurações: ENGINE, NAME, USER, PASSWORD, HOST e PORT, onde a configuração do mecanismo é, por exemplo, django.db.backends.mysql se o mecanismo do seu servidor for MySQL. A configuração de nome é o nome do seu banco de dados usado ao criá-lo.
Se você não quiser iniciar sua própria interface web, pule esta etapa e vá para 8). Em settings.py, altere PATH_TO_APP para apontar para o caminho completo do aplicativo Django, por exemplo: '/home/..../Hale/src/webdb'. No diretório webdb, execute o seguinte comando: python manage.py syncdb. Se você receber algum erro aqui, provavelmente as configurações do banco de dados em settings.py estão incorretas. Além disso, durante a sincronização, defina o superusuário que será usado ao administrar os usuários.
Para suportar a pesquisa na interface web, execute python manage.py rebuild_index para permitir que o mecanismo de busca indexe pela primeira vez. Isso criará um diretório chamado whoosh.index/. Para permitir que o servidor web escreva aqui, execute chmod o+w whoosh.index/. Depois disso, execute python manage.py update_index e coloque isso como uma tarefa cron para atualizar os índices em um intervalo regular de sua escolha.
Execute python manage.py runserver e acesse http://127.0.0.1:8000 para verificar se a configuração foi feita corretamente.
O comando runserver implanta um servidor de desenvolvimento que não é recomendado para uso em produção devido a problemas de desempenho. Em vez disso, implante a interface web instalando o mod_wsgi para Apache. Supondo que você esteja usando Ubuntu, execute apt-get install libapache2-mod-wsgi. Em /etc/apache2/sites-available/default adicione o seguinte:
Alias /media /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/
<Location /media>
Order allow,deny
Allow from all
</Location>
WSGIDaemonProcess username processes=2 maximum-requests=500 threads=10
WSGIProcessGroup group
WSGIScriptAlias / /home/..../webdb/django.wsgi
e edite o nome de usuário e o grupo para os quais o daemon WSGI deve ser executado. WSGIScriptAlias deve ser definido como o caminho completo para o arquivo django.wsgi localizado no diretório webdb. O alias especificado acima é necessário para que a página de administração seja renderizada corretamente. Para poder enviar módulos através da interface web, execute chmod o+w webdb/modules.
Envie os módulos que serão usados de hale/src/modules/ ou escreva os seus próprios (consulte a seção Desenvolvimento). Envie o módulo desejado na interface de administração e edite, por exemplo, o nome do módulo para irc e o nome do arquivo para ircModule.py . Especifique regras de configuração para o módulo na seção correspondente localizada em hale/conf/modules.conf e coloque-as na caixa de texto. Adicione também as seções uniqueKeys para o módulo que está sendo enviado.
Antes de executar o monitor, edite hale.conf em hale/src/conf/ se desejar usar um servidor XMPP. Para ativar o bot XMPP, defina a configuração de uso como True e edite as informações de login para uma conta e servidor existentes ou inicie seu próprio servidor XMPP. Uma etapa importante ao iniciar um servidor XMPP é aumentar o tamanho máximo do stanza do valor padrão para algo como 10Mb. Caso contrário, a publicidade de malware não será possível. As configurações de canal em hale.conf são usadas para a sala de grupo de compartilhamento usada pelo bot, e a configuração coord é usada para a sala de grupo onde toda a coordenação entre sensores ocorre.
Edite hale.conf e defina as configurações do cliente e do servidor.
Para iniciar o monitor, vá para hale/src/ e execute python server.py. Se ele iniciar com erros, o arquivo settings.py do Django não está configurado corretamente ou faltam algumas bibliotecas. Com o cliente, é possível emitir comandos para o servidor, mas requer que o usuário se autentique no servidor; o acesso é concedido para usuários que são definidos como membros da equipe através da interface web. Quando o cliente estiver em execução, digite help ou ? para obter os comandos disponíveis. Digite help comando para obter mais informações sobre o comando específico. Iniciar um bot monitor é feito primeiro editando o arquivo hale/src/conf/modules.conf, por exemplo usando uma configuração IRC da seguinte forma:
[uniqueKeys]
irc = botnet, *grammar