310 likes | 433 Views
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?.
E N D
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 • Footprinting • Enumeration (dns-discover, network map) • Fingerprinting • Análise de Vulnerabilidades • Análise de Vulnerabilidades em serviços.
Porque automatizar? • Aplicações Web • Levantamento de Informações • Footprinting • Enumeration (spidering, brute directories and files) • 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.
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.
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
Fim • Obrigado! • Perguntas & Respostas • natel@owasp.org