Christopher Duffy
Novatec
Copyright © Packt Publishing 2015. First published in the English language under the title “Learning Penetration Testing with Python” (9781785282324) Copyright © Packt Publishing 2015. Publicação original em inglês intitulada “Learning Penetration Testing with Python” (9781785282324) Esta tradução é publicada e vendida com a permissão da Packt Publishing. © Novatec Editora Ltda. 2016. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates PY20160517 Tradução: Edson Furmankiewicz Revisão técnica: BrodTec Assistente editorial: Priscila Yoshimatsu Revisão gramatical: Smirna Cavalheiro Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-505-9 Histórico de impressões: Maio/2016
Primeira edição
Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 E-mail:
[email protected] Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
Sumário
Aviso legal ............................................................................................................................11 Sobre o autor ........................................................................................................................12 Agradecimentos ....................................................................................................................14 Sobre os revisores .................................................................................................................15 Prefácio ................................................................................................................................17 Capítulo 1 Entendendo a metodologia dos pentests .............................................................21 Uma visão geral dos pentests ............................................................................... 22 Entendendo o que um pentest não é .................................................................... 23 Auditorias de vulnerabilidade ...........................................................................24 Auditorias de engenharia reversa ......................................................................24 Hacking ...........................................................................................................24 Metodologias de auditoria ................................................................................... 25 Padrão de execução de pentest ............................................................................. 25 Interações pré-contrato ....................................................................................27 Coleta de inteligência .......................................................................................31 Modelagem de ameaças ....................................................................................32 Análise de vulnerabilidade ...............................................................................34 Exploração ......................................................................................................35 Pós-exploração.................................................................................................37 Relatórios ........................................................................................................37 Um exemplo de contrato ..................................................................................38 Ferramentas de pentest.........................................................................................41 NMAP.............................................................................................................42 Metasploit .......................................................................................................43 Veil ................................................................................................................. 44 Burp Suite....................................................................................................... 46 Hydra ............................................................................................................. 46 ■
5
6
Aprendendo Pentest com Python
John the Ripper ...............................................................................................47 oclHashcat ......................................................................................................50 Ophcrack.........................................................................................................51 Mimikatz e Incognito .......................................................................................51 SMBexec .........................................................................................................51 Cewl ................................................................................................................52 Responder .......................................................................................................52 theHarvester e Recon-NG ................................................................................53 pwdump e fgdump ...........................................................................................53 Netcat .............................................................................................................53 Ferramentas do Sysinternals .............................................................................54 Resumo ...............................................................................................................54
Capítulo 2 Noções básicas de script em Python ....................................................................55 Entendendo a diferença entre linguagens interpretadas e compiladas .....................56 Python – o mocinho e o bandido ......................................................................58 Um interpretador interativo de Python versus um script ................................... 60 Variáveis de ambiente e PATH ......................................................................... 60 Entendendo linguagens com tipagem dinâmica .................................................61 Seu primeiro script Python ...................................................................................62 Desenvolvendo scripts e identificando erros ..........................................................63 Palavras reservadas, palavras-chave e funções internas ......................................63 Variáveis globais e locais ................................................................................. 64 Entendendo um namespace ..............................................................................65 Módulos e importações ....................................................................................65 Formatação com Python ..................................................................................... 66 Indentação...................................................................................................... 66 Variáveis em Python .............................................................................................67 Depuração de valores de variáveis .....................................................................67 Variáveis string ................................................................................................68 Variáveis numéricas .........................................................................................69 Convertendo variáveis string e variáveis numéricas ...........................................70 Variáveis do tipo lista .......................................................................................72 Variáveis do tipo tupla .....................................................................................74 Variáveis do tipo dicionário ..............................................................................74 Entendendo valores e construtores-padrão ........................................................75 Atribuindo uma variável para uma string ..........................................................75 Operadores ......................................................................................................... 77 Operadores de comparação ............................................................................. 77 Operadores de atribuição .................................................................................78 Operadores aritméticos ....................................................................................79 ■
Sumário
7
Operadores lógicos e de afiliação ......................................................................79 Instruções compostas .......................................................................................... 80 Instrução if ..................................................................................................... 80 Loops do Python .............................................................................................81 Rotinas de tratamento de eventos condicionais .................................................83 Funções .............................................................................................................. 84 Impacto das linguagens com tipagem dinâmica em funções.............................. 84 Colchetes ........................................................................................................ 84 Como comentar seu código ............................................................................. 86 Guia de estilo do Python ......................................................................................87 Classes ............................................................................................................87 Funções ...........................................................................................................87 Variáveis e nomes de instância ..........................................................................87 Argumentos e opções .......................................................................................... 88 Seu primeiro script auditor ...................................................................................89 Resumo ...............................................................................................................93
Capítulo 3 Identificando alvos com Nmap, Scapy e Python .................................................. 94 Entendendo como os sistemas se comunicam........................................................95 Arquitetura de quadros Ethernet ......................................................................97 Arquitetura de pacotes IP ................................................................................ 99 Arquitetura do cabeçalho TCP .......................................................................100 Entendendo como funciona o TCP ................................................................. 101 Arquitetura do cabeçalho UDP .......................................................................101 Entendendo como funciona o UDP ................................................................. 101 Entendendo o Nmap .......................................................................................... 102 Fornecendo os intervalos-alvo para o Nmap....................................................103 Executando os diferentes tipos de verificação ..................................................104 Executando varreduras UDP e TCP combinadas .............................................106 Ignorando as varreduras de sistema operacional ..............................................108 Diferentes tipos de saída .................................................................................108 Mecanismo de script Nmap ............................................................................113 Sendo eficiente com varreduras Nmap ............................................................ 114 Bibliotecas Nmap para Python ...........................................................................117 Biblioteca Scapy para Python ..............................................................................125 Resumo .............................................................................................................130 ■
Capítulo 4 Executando ataques de credenciais com Python ................................................131 Tipos de ataques de credenciais ..........................................................................132 Definindo o ataque online de credenciais ........................................................132 Definindo o ataque offline de credenciais ........................................................132 ■
8
Aprendendo Pentest com Python
Identificando o alvo ...........................................................................................135 Criando nomes de usuário-alvo ..........................................................................135 Gerando e verificando nomes de usuário com a ajuda do censo dos EUA .........136 Gerando os nomes de usuário ........................................................................137 Testes para identificação de usuários utilizando SMTP VRFY .............................146 Criando o script SMTP VRFY ........................................................................147 Resumo .............................................................................................................153
Capítulo 5 Explorando serviços com Python .......................................................................154 Entendendo a nova era da exploração de serviços ................................................155 Entendendo o encadeamento de exploits .............................................................157 Verificando senhas fracas, senhas-padrão ou senhas conhecidas ..........................157 Adquirindo acesso root ao sistema......................................................................159 Entendendo a quebra de hashes no Linux .......................................................166 Testando a sincronização de credenciais de conta ............................................167 Automatizando o encadeamento de exploits com Python ....................................172 Resumo .............................................................................................................178 ■
Capítulo 6 Auditando aplicações web com Python .............................................................179 Identificando aplicativos ativos contra portas abertas .......................................... 181 Identificando arquivos e diretórios ocultos com Python.......................................183 Ataques de credenciais com o Burp Suite ............................................................187 Usando o twill para analisar o código-fonte ........................................................192 Entendendo quando usar o Python para auditorias web ......................................193 Entendendo quando usar bibliotecas específicas .............................................193 Sendo eficiente durante as auditorias web .......................................................195 Resumo .............................................................................................................196 ■
Capítulo 7 Rompendo o perímetro com Python ..................................................................197 Entendendo o perímetro de hoje .........................................................................197 Protocolos de texto ........................................................................................197 Aplicativos web..............................................................................................198 Serviços de acesso remoto criptografados........................................................199 Redes Privadas Virtuais (VPNs) ......................................................................199 Serviços de correio .........................................................................................199 Domain Name Service (DNS) .........................................................................200 Serviços User Datagram Protocol (UDP) .........................................................200 Entendendo a relação entre contas e serviços.......................................................200 Invadindo caixas de entrada com o Burp Suite ....................................................201 ■
Sumário
9
Identificando o caminho do ataque.....................................................................202 Entendendo as limitações da varredura do perímetro ......................................202 Download de arquivos de backup a partir de um servidor TFTP......................204 Quebrando hashes Cisco MD5 .......................................................................207 Ganhando acesso por meio de sites.....................................................................208 A execução de ataques de inclusão de arquivo .................................................209 Resumo .............................................................................................................213
Capítulo 8 Desenvolvimento de exploits com Python, Metasploit e Immunity.....................214 Introdução aos registradores ............................................................................... 214 Entendendo os registradores de uso geral ........................................................215 Entendendo os registradores de uso específico ................................................216 Entendendo a estrutura de memória do Windows ............................................... 217 Entendendo a pilha e o heap ........................................................................... 217 Entendendo imagens de programa e bibliotecas de vínculo dinâmico ...............220 Entendendo o bloco de ambiente de processo..................................................222 Entendendo o bloco de ambiente de thread .....................................................222 Kernel............................................................................................................222 Entendendo endereços de memória e sua ordenação ............................................223 Entendendo a manipulação da pilha ...................................................................224 Entendendo o Immunity ....................................................................................227 Entendendo o básico sobre o buffer overflow.......................................................227 Escrevendo um exploit de buffer overflow básico.................................................231 Entendendo os ajustes de pilha ...........................................................................247 Entendendo o propósito dos exploits locais .........................................................250 Noções básicas sobre outros scripts de exploit ....................................................251 Explorando binários independentes através da execução de scripts ..................252 Exploração de sistemas através de serviço TCP ...............................................252 Exploração de sistemas através de serviço UDP ...............................................253 Fazendo a engenharia reversa dos módulos do Metasploit ...................................254 Entendendo os mecanismos de proteção .............................................................262 Resumo .............................................................................................................262 ■
Capítulo 9 Automatizando tarefas e relatórios com Python ................................................263 Entendendo como analisar arquivos XML para a criação de relatórios .................263 Entendendo como criar uma classe em Python....................................................269 Criando um script em Python para analisar um XML do Nmap ......................271 Criando um script em Python para gerar planilhas do Excel ............................279 Resumo .............................................................................................................286 ■
10
Aprendendo Pentest com Python
Capítulo 10 Adicionando durabilidade a ferramentas Python .............................................287 Entendendo o registro em log do Python.............................................................287 Entendendo a diferença entre multithreading e multiprocessamento ....................288 Criando um script multithreaded em Python ..................................................288 Criando um script com multiprocessamento em Python..................................294 Construindo ferramentas com padrão de indústria ..............................................301 Resumo .............................................................................................................302 ■