Vous êtes sur la page 1sur 9

1

Aumentando a segurança com “Hogwash Light BR”


Autor: Rogerio Ferreira
http://rogeriotux.objectis.net
Versão: 1.3

Imagine-se numa situação em que seu chefe lhe pede para aumentar a segurança de
um servidor web microsoft. O que você faria? Alguns iriam sugerir uma solução
LAMP, outros Python/Zope/Plone (Eu sugeriria essa!). Mas se seu chefe quisesse
que fosse conservado o legado? Nesse caso, uma alternativa seria atualizar o
service pack, aplicar os patches de segurança... ou implementar um IPS, isso
mesmo!, um IPS(Intrusion Prevention System).

Uma solução de IPS Comercial custa uma fortuna (literalmente!), por isso
resolvi encontrar uma solução open source e implementá-la aqui no trabalho. Foi
quando conheci o Hogwash Ligth BR, foi amor à primeira vista.

Mas o que é Hogwash Light BR?

O Hogwash Light BR (http://hlbr.sourceforge.net) é um projeto brasileiro,


criado em novembro de 2005, derivado do Hogwash (desenvolvido por Jason Larsen
em 1996). Este projeto é destinado à segurança em redes de computadores.

O Hogwash Light BR é um IPS (Intrusion Prevention System) capaz de filtrar


pacotes diretamente na camada 2 do modelo OSI (não necessita de endereço IP na
máquina). A detecção de tráfego malicioso é baseada em regras simples (o
próprio usuário poderá confeccionar novas regras). É bastante eficiente e
versátil, podendo ser usado até mesmo como bridge para honeypots e honeynets.
Como não usa a pilha TCP/IP do sistema operacional, ele é "invisível" a outras
máquinas na rede e atacantes.

A Implementação

Vou mostrar como criar um laboratório para testes, para que você seja capaz de
implementá-lo de acordo com suas necessidades. Vou utilizar um cenário que usei
nos meus testes. Precisaremos de 3 máquinas para montarmos o laboratório: uma
para o Alvo (O Servidor Web, no meu caso o IIS), outra para o IPS (Hogwash
Ligth BR), e uma para o Atacante.

Alvo – Windows XP com Service Pack 2, rodando o IIS 5.1


IPS – Debian Sarge (3.1) com Hogwash Light BR
Atacante – Pode ser qualquer Sistema Operacional com um interpretador python
instalado.

Nota: Usei o Windows XP, pois já tinha uma máquina com ele instalado, e porque
queria explorar uma vulnerabilidade dele. Por isso escrevi um exploit para
fazer os testes de ataque à máquina Alvo, o qual você pode baixar e executá-lo
a partir da máquina Atacante. O programa pode ser baixado no seguinte endereço:
http://rogeriotux.objectis.net/downloads/iis5hack.py.

Vamos precisar de um cabo cross-over e duas placas de rede, pois o IPS trabalha
como uma brigde, ou seja, ele faz uma ponte entre o firewall e o roteador (ver
figura 1). Mas no nosso cenário de testes ele fará a ponte entre o Alvo e o
Atacante.
2

Figura 1 – Topologia básica de um Ambiente de Produção

O cenário de nosso laboratório será o seguinte:

Figura 2 – Laboratório para simular um Ambiente de Produção

Vamos lá à configuração da máquina que vai rodar o Hogwash Light BR. Não vou
mostrar como configurar um Servidor Web IIS, nem como instalar o Debian Sarge.
Existem muitos tutorais bons espalhados pela internet que mostram como instalar
o Debian e além do mais a instalação é bem intuitiva.

Laboratório de Testes

Primeiro Passo: Depois de baixar o Hogwash Light BR, descompacte-o.

Nota: Você pode baixá-lo em um dos mirrors em:


http://prdownloads.sourceforge.net/hlbr/hlbr-1.0.tar.gz.

root@lab:/home/lab# tar -xvfz hlbr-1.0.tar.gz

Nota: O símbolo # indica que você é o super usuário (root)

Segundo Passo: Entre no diretório onde o HLBR foi descompactado e execute o


comando configure.

root@lab:/home/lab# cd hlbr-1.0
root@lab:/home/lab/hlbr-1.0# ./configure
3
Nota: Será solicitado que você selecione o idioma desejado. Para selecionar o
Português tecle a letra P e Enter, para o Inglês basta pressionar Enter.

Terceiro Passo: Compile-o e instale-o.

root@lab:/home/lab/hlbr-1.0# make
root@lab:/home/lab/hlbr-1.0# make install

Quarto Passo: Compile o kernel para retirar toda a parte TCP/IP ou configure a
eth0 e a eth1 com endereços da rede 127.0.0.0 (Não use 127.0.0.1, pois já
pertence ao endereço de loopback). Vamos usar a segunda opção: atribuir
endereços da rede 127.0.0.0 a eth0 e eth1.

root@lab:/home/lab/hlbr-1.0# nano /etc/network/interfaces

O seu arquivo interfaces deve ficar assim:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 127.0.0.2
netmask 255.0.0.0

auto eth1
iface eth1 inet static
address 127.0.0.3
netmask 255.0.0.0

Após a configuração do arquivo interfaces, basta reiniciar a rede:


root@lab:/home/lab/hlbr-1.0# /etc/init.d/networking restart

Quinto Passo: Agora vamos fazer algumas alterações no arquivo hlbr.config. Você
precisará somente alterar a seção IP Lists para atender as suas necessidades.
Vou fazer as alterações necessárias para nosso laboratório. Sendo que o IP da
máquina alvo será 192.168.0.80. O arquivo de configuração já está pronto com
alguns exemplos para facilitar as customizações, como podemos ver abaixo a
seção IPList:

<IPList www>
200.xxx.yyy.195
200.xxx.yyy.196
</list>

<IPList dns>
200.xxx.yyy.195
200.xxx.yyy.197
</list>

<IPList email>
200.xxx.yyy.198
</list>

<IPList firewall>
200.xxx.yyy.210
</list>

<IPList network>
200.xxx.yyy.192/26
4
</list>

<IPList others>
200.xxx.yyy.194
200.xxx.yyy.199
</list>

<IPList servers>
www
dns
email
firewall
others
200.xxx.yyy.209
</list>

Vamos customizá-lo comentando algumas linhas, pois você precisará delas quando
for configurá-lo para produção:

<IPList www>
192.168.0.80
</list>

#<IPList dns>
#200.xxx.yyy.195
#200.xxx.yyy.197
#</list>

#<IPList email>
#200.xxx.yyy.198
#</list>

#<IPList firewall>
#200.xxx.yyy.210
#</list>

#<IPList network>
#200.xxx.yyy.192/26
#</list>

#<IPList others>
#200.xxx.yyy.194
#200.xxx.yyy.199
#</list>

#<IPList servers>
#www
#dns
#email
#firewall
#others
#200.xxx.yyy.209
#</list>

Comentei as linhas que no momento não são úteis, para que seja possível
aproveitá-las futuramente.

Sexto Passo: Agora vamos testar o Hogwash Ligth BR, para ver se está tudo
certo:

root@lab:/home/lab/hlbr-1.0# cd /etc/hlbr
root@lab:/etc/hlbr# hlbr –c hlbr.config –r empty.rules &
5
Se aparecer as linhas abaixo é porque está tudo ok:

Rules file is empty.rule


Loaded 0 rules
Tree is empty
Tree is empty
Tree is empty
Tree is empty
Tree is empty
Tree is empty
eth0: Promiscuous mode enabled.
device eth0 entered promiscuous mode
eth1: Promiscuous mode enabled.
device eth1 entered promiscuous mode

Nota: As regras ficam no diretório /etc/hlbr/rules. Existe um arquivo chamado


empty.rules, como o nome já diz, está vazio, e é usado para teste de
conectividade. Ele está localizado no /etc/hlbr.

Sétimo passo: Vamos testar a conectividade disparando um ping da máquina


Atacante contra a máquina Alvo:

atacante@lab:~$ sudo ping 192.168.0.80


Password:

Se o ping foi bem sucedido, isto quer dizer que, no quesito conectividade as
coisas estão bem.

Oitavo Passo: Vamos disparar um ataque contra o servidor web (ISS 5.1) que está
instalado na máquina Alvo. Certifique-se que ele esteja no ar. Se você estiver
usando Linux, você já tem um interpretador python instalado. Para o nosso
exemplo eu baixei o programa iis5hack.py para o diretório home do usuário
atacante. Na máquina Atacante execute o exploit:
6
Observe que na máquina Alvo aparecerá a seguinte mensagem de erro:

Isto indica que o ataque foi bem sucedido. O inetinfo.exe é o IIS em execução.

Ei, espera aí! A máquina Alvo não está atrás de um IPS, porque o ataque foi bem
sucedido? É porque ainda não criamos a regra para inibir o ataque. Usamos um
arquivo de regras vazio (empty.rules) somente para testar a conectividade.
Agora é que vamos criar a regra para esse tipo de ataque.

Nono Passo: Vamos criar uma regra contra esse tipo de ataque.

root@lab:/etc/hlbr# touch rules/iisattacks.rules


root@lab:/etc/hlbr# nano rules/iisattacks.rules

O arquivo iisattacks.rules deve ficar assim:

<rule>
ip dst(www)
tcp dst(80)
tcp regex(0|1|2|3|4|5|6|7|8|9)
message=(iisattacks) Ataque ao IIS 5.1
action=action1
</rule>

A escrita de uma regra é muito simples, inicia-se com <rule> e termina com
</rule>.

ip dst(www) – IP de Destino do Alvo, no caso um servidor web IIS, cujo IP foi


definido no arquivo hlbr.config, na variável www.

tcp dst(80) – Protocolo do Destino, escutando na porta 80 (http).

tcp regex – O HLBR faz uso de expressões regulares, que torna possível a
escrita de regras mais inteligentes. Em nosso exemplo o ataque escolhe um
número randômico entre 0 à 9.

message – Somente uma descrição do Ataque.

action – A ação que será executada. action1 como definida no hlbr.config,


registra o ataque no arquivo /var/log/hlbr/hlbr.log e /var/log/hlbr/hlbr.dump e
em seguida descarta a tentativa de ataque.
7
Nota: O arquivo README.pt_BR que vem com Hogwash Light BR, é um ótimo manual
para se aprender a instalar, configurar e até mesmo a confeccionar suas
próprias regras. Existe também o site do hogwash que dispõe de um manual on-
line: http://hogwash.sourceforge.net/docs/index.html.

Vamos parar o daemon no Hogwash Light BR para carregar a nossa regra:

root@lab:/etc/hlbr# killall hlbr


root@lab:/etc/hlbr# hlbr –c hlbr.config –r rules/iisattacks.rules &

Vamos ficar a espera do log do ataque:

root@lab:/etc/hlbr# tail –f /var/log/hlbr/hlbr.log

Reinicie o serviço inetinfo.exe na máquina Alvo e tente novamente disparar o


mesmo ataque contra ela. Você verá o log sendo registrado e o ataque sendo
“dropado”.

Implementação em Ambiente de Produção

Antes de colocar qualquer coisa em produção é sempre bom criar um cenário para
testes, para evitar que alguma coisa dê errado. Foi o que fizemos acima. Agora
vamos implementar o HLBR no seguinte cenário:

Figura 3 – HLBR em Ambiente de Produção

No cenário acima, usaremos os seguintes IP’s(eles não são reais):

firewall – 200.200.200.1
dns – 200.200.200.2
mail – 200.200.200.3
www – 200.200.200.4

Nota: Os IP’s acima são somente para exemplificar os arquivos de configuração


que vamos utilizar neste exemplo.
8
Primeiro Passo: Vamos customizar o hlbr.config. Neste arquivo adicionaremos os
ip’s de nossos servidores públicos (www, mail, dns, etc.), que precisam ser
protegidos pelo HLBR. No arquivo hlbr.config, procure a seção IP Lists e faça
as seguintes alterações:

<IPList www>
200.200.200.4
</list>

<IPList dns>
200.200.200.2
</list>

<IPList email>
200.200.200.3
</list>

<IPList firewall>
200.200.200.1
</list>

#<IPList network>
#200.xxx.yyy.192/26
#</list>

#<IPList others>
#200.xxx.yyy.194
#200.xxx.yyy.199
#</list>

<IPList servers>
www
dns
email
firewall
#others
#200.xxx.yyy.209
</list>

Nota: Note que comentei algumas coisas que não serão úteis no momento, no caso,
para o cenário proposto neste tutorial.

Segundo Passo: O arquivo hlbr.rules vem com 86 regras prontas para usar,
bastando somente inicializar o daemon do HLBR com os arquivos de regras
contidos no arquivo hlbr.rules.

root@lab:/etc/hlbr# hlbr –c hlbr.config –r hlbr.rules &

ou

root@lab:/etc/hlbr# /etc/init.d/hlbr start

Aparecerá as linhas abaixo informando que está tudo ok:

Rules file is /etc/hlbr/hlbr.rules


Loaded 86 rules
Tree is empty
Tree is empty
Tree is empty
eth0: Promiscuous mode enabled.
device eth0 entered promiscuous mode
eth1: Promiscuous mode enabled.
device eth1 entered promiscuous mode
9
Agora é só aproveitar as facilidades e o poder do Hogwash Light BR.

Nota: Para adicionar novos arquivos de regras e só editar o hlbr.rules, incluir


o novo arquivo e reiniciar o HLBR.

Arquivo hlbr.rules:

<include rules/awstats.rules>
<include rules/bufferoverflow1.rules>
<include rules/bufferoverflow2.rules>
<include rules/bufferoverflow3.rules>
<include rules/codered-nimda.rules>
<include rules/coppermine.rules>
<include rules/dnsattacks.rules>
<include rules/mailvirus.rules>
<include rules/mambo-phpnuke.rules>
<include rules/webattacks.rules>
<include rules/iisattacks.rules> # Seu novo arquivo de regras

Reiniciando o HLBR:

root@lab:/etc/hlbr# /etc/init.d/hlbr restart

ou

root@lab:/etc/hlbr# killall hlbr


root@lab:/etc/hlbr# hlbr –c hlbr.config –r hlbr.rules &

Sobre o Autor:

Precursor da implantação de Software Livre no Tribunal de Contas


do Estado do Amazonas na área de Segurança de Redes, é também
fiel defensor de Software Livre. Trabalha atualmente no TCE-AM na
Administração da Rede.

Informações:

http://hlbr.sourceforge.net
http://cvs.sourceforge.net/viewcvs.py/hlbr/hlbr/README.pt_BR?view=markup
http://hogwash.sourceforge.net/docs/index.html
http://rogeriotux.objectis.net/downloads/iis5hack.py

Vous aimerez peut-être aussi