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 [email protected]