Automatizando o Nmap com NSE
Tiago Natel de Moura
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
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 ...
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.
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
Nmap
Nmap (Network Mapper) é uma ferramenta
opensource para descobrimento e auditoria de
redes.
Nmap
•
•
•
•
•
•
•
Network Mapper
Port Scanner
OS Fingerprinter
Service Fingerprinter
Traceroute
Ping
Security
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.
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).
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 (httptitle, http-backup-finder, http-enum, httpgrep, etc).
• Completo suporte ao IPv6 (Raw IPv6, OS IPv6
Detection, etc).
Objetivos do NSE
•
•
•
•
Sofisticadas técnicas de detecção.
Detecção de vulnerabilidades.
Detecção de backdoors.
Exploração de vulnerabilidades.
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).
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
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 (smtpstrangeport).
• Safe: html-title, ssh-hostkey, etc
• Version: skypev2-version, pptp-version, iax2-version.
• Vuln: realvnc-auth-bypass, afp-path-vuln, etc.
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.
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.
Linha de comando
• --script-trace
• Debug script
• --script-updatedb
• Atualiza o banco de scripts.
http-title
Formato NSE
Um script NSE consiste em:
• Campos de descrição:
• Description
• Categories
• Author
• License
• Dependencies
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.
Formato NSE
• Action: Todas as instruções que devem ser
executadas quando alguma das rules for
satisfeita.
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.
Scripts: http-headers
Scripts: http-headers
http-headers
http-headers
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.
Jboss Exploit
• Exploit que desenvolvi para explorar o CVE2010-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
Jboss-vuln-CVE2010-0738
Fim
Obrigado!
Perguntas & Respostas
natel@owasp.org
Download

OWASP Presentation Template