Pentest em Redes de Computadores
Como assumir o controle de qualquer empresa no mundo
Descrição do livro
Para se tornar um ótimo pentester, é necessário dominar conceitos de segurança ofensiva, tirar proveito de uma metodologia de uso comprovado e praticar, praticar, praticar. Este livro apresenta os insights de Royce Davis, especialista em segurança, além de oferecer um ambiente virtual de testes que você poderá usar para aprimorar suas habilidades.
Pentest em Redes de Computadores é um guia para simular uma violação de segurança interna. Você assumirá o papel do invasor, trabalhando em todas as etapas de um pentest profissional, desde coletar informações até assumir o controle de um sistema e dominar a rede. À medida que usar de força bruta para descobrir senhas, explorar vulnerabilidades de serviços sem patches e elevar seus níveis de privilégio na rede, você descobrirá onde estão os pontos fracos – e como tirar proveito deles.
O que este livro contém:
configuração de um laboratório de pentest virtual;
exploração de vulnerabilidades de redes Windows e Linux;
implantação de métodos de reentrada persistentes para comprometer os alvos;
como detalhar suas descobertas em um relatório do procedimento de teste.
Para profissionais da área técnica. Não é necessário ter experiência com segurança.
Ver menos ▲Sumário
- Prefácio
- Agradecimentos
- Sobre este livro
- Sobre o autor
- Sobre a ilustração da capa
- Pentest em rede de computadores
- 1.1 Violações de dados corporativos
- 1.2 Como os hackers invadem
- 1.2.1 Papel do defensor
- 1.2.2 Papel do invasor
- 1.3 Simulação de ataques de adversários: pentest
- 1.3.1 Fluxo de trabalho típico de um INPT
- 1.4 Quando um pentest é menos eficaz
- 1.4.1 Fruto ao alcance das mãos (Low-hanging fruit – LHF)
- 1.4.2 Quando uma empresa realmente precisa de um pentest?
- 1.5 Executando um pentest na rede
- 1.5.1 Fase 1: Coleta de informações
- 1.5.2 Fase 2: Invasão com foco
- 1.5.3 Fase 3: Pós-exploração de falhas e escalação de privilégios
- 1.5.4 Fase 4: Documentação
- 1.6 Configurando o seu ambiente de laboratório
- 1.6.1 Projeto Capsulecorp Pentest
- 1.7 Criando a sua própria plataforma virtual de pentest
- 1.7.1 Comece com o Linux
- 1.7.2 Projeto Ubuntu
- 1.7.3 Por que não usar uma distribuição para pentest?
- Resumo
- Coleta de informações
- Descobrindo hosts na rede
- Coleta de informações
- 2.1 Entendendo o escopo de seu procedimento de teste
- 2.1.1 Escopo caixa-preta, caixa-branca e caixa-cinza
- 2.1.2 Capsulecorp
- 2.1.3 Configurando o ambiente Capsulecorp Pentest
- 2.2 Internet Control Message Protocol
- 2.2.1 Usando o comando ping
- 2.2.2 Usando bash para fazer um pingsweep em uma faixa da rede
- 2.2.3 Limitações ao uso do comando ping
- 2.3 Descobrindo hosts com o Nmap
- 2.3.1 Principais formatos de saída
- 2.3.2 Usando portas de interface de gerenciamento remoto
- 2.3.3 Melhorando o desempenho do scan do Nmap
- 2.4 Métodos adicionais para descoberta de hosts
- 2.4.1 Força bruta de DNS
- 2.4.2 Captura e análise de pacotes
- 2.4.3 Buscando sub-redes
- Resumo
- Descobrindo serviços na rede
- 3.1 Serviços de rede do ponto de vista de um invasor
- 3.1.1 Entendendo a comunicação dos serviços de rede
- 3.1.2 Identificando serviços de rede à escuta
- 3.1.3 Banners de serviços de rede
- 3.2 Scanning de portas com o Nmap
- 3.2.1 Portas comuns
- 3.2.2 Scanning de todas as 65.536 portas TCP
- 3.2.3 Processando a saída de scripts NSE
- 3.3 Parsing da saída XML com o Ruby
- 3.3.1 Criando listas de alvos específicas por protocolo
- Resumo
- Descobrindo vulnerabilidades na rede
- 4.1 Entendendo a descoberta de vulnerabilidades
- 4.1.1 Seguindo o caminho mais fácil
- 4.2 Descobrindo vulnerabilidades de patching
- 4.2.1 Scanning para o MS17-010 Eternal Blue
- 4.3 Descobrindo vulnerabilidades de autenticação
- 4.3.1 Criando uma lista de senhas específica para um cliente
- 4.3.2 Usando força bruta em senhas de contas locais do Windows
- 4.3.3 Uso de força bruta em senhas de bancos de dados MSSQL e MySQL
- 4.3.4 Uso de força bruta em senhas do VNC
- 4.4 Descobrindo vulnerabilidades de configuração
- 4.4.1 Instalando o Webshot
- 4.4.2 Analisando a saída do Webshot
- 4.4.3 Adivinhando senhas de servidores web manualmente
- 4.4.4 Preparando-se para a invasão com foco
- Resumo
- Invasão com foco
- Atacando serviços web vulneráveis
- Invasão com foco
- 5.1 Entendendo a fase 2: invasão com foco
- 5.1.1 Implantando web shells backdoor
- 5.1.2 Acessando serviços de gerenciamento remoto
- 5.1.3 Explorando patches de software ausentes
- 5.2 Conseguindo um acesso inicial
- 5.3 Comprometendo um servidor Tomcat vulnerável
- 5.3.1 Criando um arquivo WAR malicioso
- 5.3.2 Implantando o arquivo WAR
- 5.3.3 Acessando o web shell a partir de um navegador
- 5.4 Shells interativos versus não interativos
- 5.5 Fazendo um upgrade para um shell interativo
- 5.5.1 Fazendo um backup de sethc exe
- 5.5.2 Modificando as ACLs de um arquivo com cacls exe
- 5.5.3 Iniciando o Sticky Keys por meio do RDP
- 5.6 Comprometendo um servidor Jenkins vulnerável
- 5.6.1 Execução do Groovy Script Console
- Resumo
- Atacando serviços de banco de dados vulneráveis
- 6.1 Comprometendo um Microsoft SQL Server
- 6.1.1 Procedimentos armazenados do MSSQL
- 6.1.2 Listando servidores MSSQL com o Metasploit
- 6.1.3 Ativando o xp_cmdshell
- 6.1.4 Executando comandos do sistema operacional com o xp_cmdshell
- 6.2 Roubando hashes de senha de contas Windows
- 6.2.1 Copiando as hives de registro com o reg exe
- 6.2.2 Download das cópias das hives de registro
- 6.3 Extraindo hashes de senha com o creddump
- 6.3.1 Entendendo a saída do pwdump
- Resumo
- Atacando serviços sem patches
- 7.1 Entendendo os exploits de software
- 7.2 Entendendo o ciclo de vida típico de um exploit
- 7.3 Comprometendo o MS17-010 com o Metasploit
- 7.3.1 Verificando se o patch está ausente
- 7.3.2 Usando o módulo de exploit ms17_010_psexec
- 7.4 T Payload do shell Meterpreter
- 7.4.1 Comandos úteis do Meterpreter
- 7.5 Cuidados com o banco de dados público de exploits
- 7.5.1 Gerando um shellcode personalizado
- Resumo
- Pós-exploração de falhas e escalação de privilégios
- Pós-exploração de falhas no Windows
- Pós-exploração de falhas e escalação de privilégios
- 8.1 Objetivos básicos da pós-exploração de falhas
- 8.1.1 Manutenção de um método confiável de reentrada
- 8.1.2 Coleta de credenciais
- 8.1.3 Movimentação lateral
- 8.2 Manutenção de um método confiável de reentrada com o Meterpreter
- 8.2.1 Instalando uma backdoor de execução automática do Meterpreter
- 8.3 Coletando credenciais com o Mimikatz
- 8.3.1 Usando a extensão para o Meterpreter
- 8.4 Coleta de credenciais do domínio em cache
- 8.4.1 Usando o módulo de pós-exploração de falhas do Meterpreter
- 8.4.2 Quebrando credenciais do cache com o John the Ripper
- 8.4.3 Usando um arquivo de dicionário com o John the Ripper
- 8.5 Coleta de credenciais do sistema de arquivos
- 8.5.1 Encontrando arquivos com findstr e where
- 8.6 Movimentação lateral com o Pass-the-Hash
- 8.6.1 Usando o módulo smb_login do Metasploit
- 8.6.2 Passing-the-hash com o CrackMapExec
- Resumo
- Pós-exploração de falhas no Linux ou no Unix
- 9.1 Mantendo um método confiável de reentrada com cron jobs
- 9.1.1 Criando um par de chaves SSH
- 9.1.2 Permitindo uma autenticação com chave pública
- 9.1.3 Tunelamento com o SSH
- 9.1.4 Automatizando um túnel SSH com o cron
- 9.2 Coletando credenciais
- 9.2.1 Coletando credenciais do histórico do bash
- 9.2.2 Coletando hashes de senha
- 9.3 Escalação de privilégios com binários SUID
- 9.3.1 Encontrando binários SUID com o comando find
- 9.3.2 Inserindo um novo usuário em /etc/passwd
- 9.4 Passando chaves SSH
- 9.4.1 Roubando chaves de um host comprometido
- 9.4.2 Scanning de vários alvos com o Metasploit
- Resumo
- Controlando toda a rede
- 10.1 Identificando contas de usuários administradores do domínio
- 10.1.1 Utilizando o comando net para consultar grupos do Active Directory
- 10.1.2 Encontrando usuários administradores do domínio que estão logados
- 10.2 Obtendo privilégios de administrador do domínio
- 10.2.1 Personificando usuários logados com o Incognito
- 10.2.2 Coletando credenciais em formato texto simples com o Mimikatz
- 10.3 ntds dit e as chaves do reino
- 10.3.1 Vencendo as limitações com a VSC
- 10.3.2 Extraindo todos os hashes com o secretsdump py
- Resumo
- Documentação
- Limpeza após o procedimento de teste
- Documentação
- 11.1 Encerrando conexões de shell ativas
- 11.2 Desativando contas de usuários locais
- 11.2.1 Removendo entradas de /etc/passwd
- 11.3 Removendo arquivos remanescentes no sistema de arquivos
- 11.3.1 Apagando cópias das hives de registro
- 11.3.2 Removendo pares de chaves SSH
- 11.3.3 Removendo cópias de ntds dit
- 11.4 Desfazendo mudanças de configuração
- 11.4.1 Desativando os procedimentos armazenados do MSSQL
- 11.4.2 Desativando compartilhamentos de arquivo anônimos
- 11.4.3 Removendo entradas do crontab
- 11.5 Fechando as backdoors
- 11.5.1 Desinstalando arquivos WAR do Apache Tomcat
- 11.5.2 Fechando a backdoor Sticky Keys
- 11.5.3 Desinstalando callbacks de persistência do Meterpreter
- Resumo
- Escrevendo um relatório de pentest robusto para o cliente
- 12.1 Oito componentes de um relatório de pentest robusto para o cliente
- 12.2 Resumo executivo
- 12.3 Metodologia do procedimento de teste
- 12.4 Narrativa do ataque
- 12.5 Observações técnicas
- 12.5.1 Recomendações para as descobertas
- 12.6 Apêndices
- 12.6.1 Definições de níveis de gravidade
- 12.6.2 Hosts e serviços
- 12.6.3 Lista de ferramentas
- 12.6.4 Referências adicionais
- 12.7 Considerações finais
- 12.8 E agora?
- Resumo
- Criando uma plataforma virtual de pentest
- A 1 Criando uma máquina virtual Ubuntu
- A 2 Outras dependências do sistema operacional
- A 2.1 Gerenciando pacotes Ubuntu com o apt
- A 2.2 Instalando o CrackMapExec
- A 2.3 Personalizando a aparência de seu terminal
- A 3 Instalando o Nmap
- A 3.1 NSE: Nmap Scripting Engine
- A 3.2 Dependências do sistema operacional
- A 3.3 Compilando e instalando a partir do código-fonte
- A 3.4 Explorando a documentação
- A 4 Linguagem de scripting Ruby
- A 4.1 Instalando o Ruby Version Manager
- A 4.2 Escrevendo o exemplo Hello World obrigatório
- A 5 Framework Metasploit
- A 5.1 Dependências do sistema operacional
- A 5.2 Gemas Ruby necessárias
- A 5.3 Configurando o PostgreSQL para o Metasploit
- A 5.4 Navegando no msfconsole
- Comandos básicos do Linux
- B 1 Comandos CLI
- B 1.1 $ cat
- B 1.2 $ cut
- B 1.3 $ grep
- B 1.4 $ sort e wc
- B 2 tmux
- B 2.1 Usando comandos tmux
- B 2.2 Salvando uma sessão tmux
- Criando a rede de laboratório Capsulecorp Pentest
- C 1 Requisitos de hardware e de software
- C 2 Criando os principais servidores Windows
- C 2.1 Goku capsulecorp local
- C 2.2 Gohan capsulecorp local
- C 2.3 Vegeta capsulecorp local
- C 2.4 Trunks capsulecorp local
- C 2.5 Nappa capsulecorp local e tien capsulecorp local
- C 2.6 Yamcha capsulecorp local e Krillin capsulecorp local
- C 3 Criando os servidores Linux
- Relatório do pentest na rede interna da Capsulecorp
- Resumo executivo
- Escopo do procedimento de teste
- Resumo das observações
- Metodologia do procedimento de teste
- Coleta de informações
- Invasão com foco
- Pós-exploração de falhas e escalação de privilégios
- Documentação e limpeza
- Narrativa do ataque
- Observações técnicas
- Apêndice 1: Definições de níveis de gravidade
- Crítico
- Alto
- Médio
- Baixo
- Apêndice 2: Hosts e serviços
- Apêndice 3: Lista de ferramentas
- Apêndice 4: Referências adicionais
- Respostas dos exercícios
- Exercício 2.1: Identificando os alvos de seu procedimento de teste
- Exercício 3.1: Criando listas de alvos específicas por protocolo
- Exercício 4.1: Identificando patches ausentes
- Exercício 4.2: Criando uma lista de senhas específicas para um cliente
- Exercício 4.3: Descobrindo senhas fracas
- Exercício 5.1: Implantando um arquivo WAR malicioso
- Exercício 6.1: Roubando as hives de registro SYSTEM e SAM
- Exercício 7.1: Comprometendo tien capsulecorp local
- Exercício 8.1: Acessando seu primeiro host de nível dois
- Exercício 10.1: Roubando senhas do ntds dit
- Exercício 11.1: Fazendo uma limpeza após o procedimento de teste
- Índice remissivo
Sobre o autor
ROYCE DAVIS é um hacker profissional especializado em pentests de redes de computadores e em emulação de ataques adversários em empresas. Vem ajudando os clientes a protegerem seus ambientes de rede há mais de uma década, além de apresentar pesquisas, técnicas e ferramentas em conferências sobre segurança em todos os Estados Unidos. Contribuiu… Ver perfil completo ▶
Livros relacionados
Recursos
Opinião dos leitores
Ricardo T M
O livro está bem escrito, apresenta conceitos complexos com uma linguagem simples e pode ajudar tanto como referência no desenvolvimento de habilidades de pentest, quanto para motivar o aprendizado dos conceitos de redes de computadores
Heitor H H M
Show.






