Este documento discute a automatização de testes de segurança com Nmap Scripting Engine (NSE). NSE permite que usuários escrevam scripts em Lua para estender as funcionalidades do Nmap, como detecção de vulnerabilidades, backdoors e exploração de vulnerabilidades. O documento explica como usar scripts NSE para realizar tarefas como levantamento de informações, análise de vulnerabilidades em serviços e aplicações web.
2. About Me
• Tiago Natel de Moura aka i4k
• Co-Fundador do BugSec Security Team
• http://bugsec.googlecode.com/
• Co-Fundador do OWASP Florianópolis.
• Consultor de Segurança na SEC+
• www.secplus.com.br
3. Porque automatizar?
• O processo do teste de penetração é
repetitivo.
• Deixe a parte chata para a máquina e use seu
tempo para estudar coisas novas ou fazer
testes mais avançados.
• Diminui o tempo de pentest ...
4. Porque automatizar?
• Rede
• Levantamento de Informações
o Footprinting
o Enumeration (dns-discover, network map)
o Fingerprinting
• Análise de Vulnerabilidades
• Análise de Vulnerabilidades em serviços.
5. Porque automatizar?
• Aplicações Web
• Levantamento de Informações
o Footprinting
o Enumeration (spidering, brute directories and files)
o Fingerprinting (Versão de tecnologias)
• Análise de Vulnerabilidades
• Testes de Autenticação
• Validação de entradas
• Gerencia de Sessões
• Testes da Regra de Negócio
• Testes de WebService
• outros
6. Nmap
Nmap (Network Mapper) é uma ferramenta
opensource para descobrimento e auditoria de
redes.
7. Nmap
• Network Mapper
• Port Scanner
• OS Fingerprinter
• Service Fingerprinter
• Traceroute
• Ping
• Security
8. NSE – Nmap Scripting Engine
• NSE é uma das funcionalidades mais
poderosas do Nmap.
• Permite que usuários escrevam scripts em Lua
para automatizar tarefas ou estender as
funcionalidades do Nmap.
• Scripts executados em paralelo usando toda a
eficiência e velocidade da API do Nmap.
9. NSE
• NSE iniciou com o Nmap 5 e durante esse
release foram criados 59 scripts homologados.
• O Nmap 6 foi lançado dia 21/05/2012 com 6x
mais scripts, agora possui 348 homologados.
• Alguns scripts não criam nenhum tráfego,
simplesmente consomem dados de outros
scripts (address-info, creds-summary, etc).
10. Nmap 6
• Adicionado a biblioteca “vulns”, que pode ser
usada por scripts para reportar e armazenar
vulnerabilidades num formato comum.
• Adicionado uma biblioteca “httpspider” para
crawling de páginas web.
• Adicionado 54 scripts para web scanner (http-
title, http-backup-finder, http-enum, http-
grep, etc).
• Completo suporte ao IPv6 (Raw IPv6, OS IPv6
Detection, etc).
11. Objetivos do NSE
• Sofisticadas técnicas de detecção.
• Detecção de vulnerabilidades.
• Detecção de backdoors.
• Exploração de vulnerabilidades.
12. Linguagem Lua
• Criada no Brasil (PUC-RJ)
• Opensource (MIT License)
• Programada em ISO C
• Extensivel através de uma pequena API C.
• Leve e Rápida. Versão 5.2.0 têm 241Kb com
docs e 20k LoC.
• Multiparadigma (OOP, procedural, funcional,
etc).
13. Categorias de Scripts
• Auth: x11-access, ftp-anon,oracle-enum-users
• Broadcast: Scripts para descobrimentos de outros
hosts não passados na linha de comando.
• Brute: http-brute, oracle-brute, snmp-brute
• Default
• Discovery: smb-enum-shares
• Dos: Denial Of Service
• Exploit: Explora vulnerabilidades
14. Categorias de Scripts
• External: Scripts que enviam dados para um banco de
dados de terceiros ou algum recurso remoto.
• Fuzzer: dns-fuzz
• Intrusive: Scripts que não podem estar na categoria
“safe” pois possuem riscos de danos aos hosts ou a rede.
(snmp-brute)
• Malware: Verifica se o alvo está infectado (smtp-
strangeport).
• Safe: html-title, ssh-hostkey, etc
• Version: skypev2-version, pptp-version, iax2-version.
• Vuln: realvnc-auth-bypass, afp-path-vuln, etc.
15. Tipos de Scripts e Fases
• Prerule Scripts: Estes scripts rodam antes da fase de scan do Nmap,
então ele não tem nenhuma informação coletada sobre a rede. Ex.:
Query DHCP ou DNS.
• Host Scripts: Scripts nesta fase rodam durante o processo normal
de scaneamento. Depois do host discovery, port scanning, version
detection e OS detection. Este tipo de script é invocado sempre que
o host casa com algum valor em “hostrule”.
• Service Scripts: Estes scripts rodam contra serviços. Estes são os
scripts mais comuns e são distinguidos por possuirem a função
“portrule” para decidir contra qual serviço detectado o script deve
rodar.
• Postrule Scripts: Estes scripts rodam depois que o Nmap scaneou
todos os alvos.Eles são úteis para report e apresentação das
informações.
16. Linha de comando
• -sC
• Utiliza o conjunto de scripts default
• --script <filename>|<category>|<directory>|<expression>[…]
• Roda o scanner usando a lista de arquivos separados por virgula, categorias de
scripts e diretórios.
• --datadir
• Diretório de dados (scripts, wordlists, executavel, etc)
• --script-args <args>
• Argumentos para os scripts.
• --script-args-file
• Passa um arquivo para o script.
• --script-help <filename>|<category>|<directory>|all[…]
• Help about script.
17. Linha de comando
• --script-trace
• Debug script
• --script-updatedb
• Atualiza o banco de scripts.
21. Formato NSE
• Rules:
• Rules são usados pra decidir quando que o script pode
executar contra o alvo.
• Deve conter um dos seguintes tipos:
• prerule() : Roda 1x antes, antes de qualquer host
ser escaneado.
• hostrule(host) : Recebe uma tabela de hosts e deve
verificar nessa tabela se pode executar.
• portrule(host, port) : Utiliza uma tabela de hosts e
portas pra decidir se deve rodar.
• postrule() : Roda 1x depois de todos os hosts
escaneados.
22. Formato NSE
• Action: Todas as instruções que devem ser
executadas quando alguma das rules for
satisfeita.
23. NSE Library
NSE Library é composta de módulos Lua e C/C+
+. Recomenda-se escrever todos os módulos
em Lua, mas sempre há casos que se precise
do C para otimização ou porque precisa-se
linkar com alguma biblioteca externa.
28. Use Nmap
O Nmap já tem toda a parte difícil pronta (TCP/
UDP scan, Raw scan, bypass IDS/IPS, OS
version detection, Advanced Service Version
Detection, etc). Utilize todo esse poder com
Lua e estenda o poder do seu pentest.
29. Jboss Exploit
• Exploit que desenvolvi para explorar o
CVE-2010-0738 do JBoss.
• Simplesmente reescrita em Lua/NSE do
exploit daytona_bsh.pl do Kingcope.
• Retorna uma shell reversa na máquina alvo.
• Mais informações:
https://github.com/tiago4orion/nmap-scripts