Académique Documents
Professionnel Documents
Culture Documents
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.
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.
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
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
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.
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.
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
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:
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.
<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>.
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.
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:
firewall – 200.200.200.1
dns – 200.200.200.2
mail – 200.200.200.3
www – 200.200.200.4
<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.
ou
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:
ou
Sobre o Autor:
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