Download - Automatizando o Nmap com NSE
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 Footprintingo 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 Footprintingo 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 (http-title, http-backup-finder, http-enum, http-grep, 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 (smtp-strangeport).
• 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 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
Jboss-vuln-CVE2010-0738