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 (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
Fim




     Obrigado!

Perguntas & Respostas
  natel@owasp.org

Automatizando Nmap com NSE

  • 1.
    Automatizando o Nmapcom NSE Tiago Natel de Moura
  • 2.
    About Me • TiagoNatel 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
  • 3.
    Porque automatizar? • Oprocesso 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 ...
  • 4.
    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.
  • 5.
    Porque automatizar? • AplicaçõesWeb • 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
  • 6.
    Nmap Nmap (NetworkMapper) é uma ferramenta opensource para descobrimento e auditoria de redes.
  • 7.
    Nmap • Network Mapper • Port Scanner • OS Fingerprinter • Service Fingerprinter • Traceroute • Ping • Security
  • 8.
    NSE – NmapScripting 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.
  • 9.
    NSE • NSE inicioucom 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).
  • 10.
    Nmap 6 • Adicionadoa 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).
  • 11.
    Objetivos do NSE • Sofisticadas técnicas de detecção. • Detecção de vulnerabilidades. • Detecção de backdoors. • Exploração de vulnerabilidades.
  • 12.
    Linguagem Lua • Criadano 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).
  • 13.
    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
  • 14.
    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.
  • 15.
    Tipos de Scriptse 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.
  • 16.
    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.
  • 17.
    Linha de comando •--script-trace • Debug script • --script-updatedb • Atualiza o banco de scripts.
  • 19.
  • 20.
    Formato NSE Um scriptNSE consiste em: • Campos de descrição: • Description • Categories • Author • License • Dependencies
  • 21.
    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.
  • 22.
    Formato NSE • Action:Todas as instruções que devem ser executadas quando alguma das rules for satisfeita.
  • 23.
    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.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
    Use Nmap O Nmapjá 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.
  • 29.
    Jboss Exploit • Exploitque 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
  • 30.
  • 31.
    Fim Obrigado! Perguntas & Respostas natel@owasp.org