Top Banner
Automatizando o Nmap com NSE Tiago Natel de Moura
31

Automatizando Nmap com NSE

Jul 18, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Automatizando Nmap com NSE

Automatizando o Nmap com NSE

Tiago Natel de Moura

Page 2: Automatizando Nmap com NSE

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

Page 3: Automatizando Nmap com NSE

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 ...

Page 4: Automatizando Nmap com NSE

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.

Page 5: Automatizando Nmap com NSE

Porque automatizar?

• Aplicações Web

• Levantamento de Informaçõeso 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

Page 6: Automatizando Nmap com NSE

Nmap

Nmap (Network Mapper) é uma ferramenta opensource para descobrimento e auditoria de

redes.

Page 7: Automatizando Nmap com NSE

Nmap

• Network Mapper• Port Scanner• OS Fingerprinter• Service Fingerprinter• Traceroute• Ping• Security

Page 8: Automatizando Nmap com NSE

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.

Page 9: Automatizando Nmap com NSE

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).

Page 10: Automatizando Nmap com NSE

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).

Page 11: Automatizando Nmap com NSE

Objetivos do NSE

• Sofisticadas técnicas de detecção.• Detecção de vulnerabilidades.• Detecção de backdoors.• Exploração de vulnerabilidades.

Page 12: Automatizando Nmap com NSE

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).

Page 13: Automatizando Nmap com NSE

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

Page 14: Automatizando Nmap com NSE

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.

Page 15: Automatizando Nmap com NSE

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.

Page 16: Automatizando Nmap com NSE

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.

Page 17: Automatizando Nmap com NSE

Linha de comando

• --script-trace• Debug script

• --script-updatedb• Atualiza o banco de scripts.

Page 18: Automatizando Nmap com NSE
Page 19: Automatizando Nmap com NSE

http-title

Page 20: Automatizando Nmap com NSE

Formato NSE

Um script NSE consiste em:• Campos de descrição:• Description• Categories• Author• License• Dependencies

Page 21: Automatizando Nmap com NSE

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.

Page 22: Automatizando Nmap com NSE

Formato NSE

• Action: Todas as instruções que devem ser executadas quando alguma das rules for satisfeita.

Page 23: Automatizando Nmap com NSE

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.

Page 24: Automatizando Nmap com NSE

Scripts: http-headers

Page 25: Automatizando Nmap com NSE

Scripts: http-headers

Page 26: Automatizando Nmap com NSE

http-headers

Page 27: Automatizando Nmap com NSE

http-headers

Page 28: Automatizando Nmap com NSE

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.

Page 29: Automatizando Nmap com NSE

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

Page 30: Automatizando Nmap com NSE

Jboss-vuln-CVE2010-0738

Page 31: Automatizando Nmap com NSE

Fim

Obrigado!

Perguntas & Respostas

[email protected]