
Скрипт-агрессор, отслеживающий операционные изменения, внесённые в ходе участия Red Team. Предоставляет полный аудит изменений и того, что ещё необходимо очистить.
Ledger — это скрипт-агрессор для Cobalt Strike, который отслеживает каждое операционное изменение, внесённое во время задания. Каждый включенный вами сервис, пробитое правило брандмауэра, созданная учётная запись или изменённый ключ реестра регистрируется с оценкой риска, информацией об операторе и статусом очистки. По завершении задания у вас будет полный аудиторский след того, что было изменено и что ещё нужно очистить.
Задания red team оставляют артефакты. Включаются сервисы, создаются учётные записи, открываются правила брандмауэра, изменяются ключи реестра. Без структурированного журнала о них легко забыть — особенно в длительных заданиях или когда одновременно работают несколько операторов.
Ledger предоставляет текущий журнал с:
ledger.cna в каталог скриптов Cobalt Strike.ledger.cna.dirty теперь доступен в любой консоли Beacon.Все команды выполняются из консоли Beacon с помощью псевдонима dirty.
dirty <КАТЕГОРИЯ> <команда> [комментарий] [оценка]
комментарий и оценка необязательны. Если опущены, используются разумные значения по умолчанию на основе категории.
dirty RPC "sql-enablerpc lon-db-1 lon-db-2"
dirty DEFENDER "add-exclusion C:\windows\temp" "Payload staging" 8
dirty GROUP "net group 'Domain Admins' svc_backup /add /domain"
dirty USER "net user backdoor P@ssw0rd! /add"
dirty SCHEDULED_TASK "schtasks /create /tn updater /tr C:\temp\beacon.exe /sc onlogon"
dirty exec <КАТЕГОРИЯ> <команда> [комментарий] [оценка]
Записывает изменение и сразу выполняет команду на биконе — одним шагом вместо двух.
dirty exec RPC "sql-enablerpc lon-db-1 lon-db-2"
dirty exec USER "net user backdoor P@ssw0rd! /add"
dirty exec DEFENDER "sc config WinDefend start= disabled"
dirty exec FIREWALL "netsh advfirewall set allprofiles state off"
Ограничения dirty exec
dirty exec внутренне использует brun, который выполняет двоичный файл напрямую без обёртки cmd.exe /c. Это означает:
net, sc, reg, nltest, whoami, ipconfig и т.д.sleep, cd, ls, pwd, download, upload, execute-assembly, inject и т.д. Для таких команд выполните обычную команду Beacon и используйте dirty <КАТЕГОРИЯ> <команда> отдельно для записи.dirty show
dirty show DEFENDER
dirty show DESKTOP-ABC123
Показывает все записанные записи. Необязательный фильтр сопоставляется с командой, комментарием, категорией, именем хоста и именем пользователя.
dirty score
Показывает сводку рисков для каждого хоста с общей оценкой, количеством ожидающих очистки и визуальной полосой. Хосты отсортированы по убыванию оценки.
dirty clean <id>
dirty clean all
dirty clean host <имя_хоста>
Сопоставление имени хоста нечувствительно к регистру и поддерживает частичное совпадение — DESKTOP соответствует DESKTOP-FGN4LPG.
dirty export text
dirty export json
dirty export text DEFENDER
dirty export json DESKTOP-ABC
Экспорт записывается в каталог, содержащий ledger.cna, и включает сводку оценок хостов вверху, за которой следует полный журнал изменений. Кнопки в строке меню Ledger запускают нефильтрованный экспорт напрямую.
dirty help
Любая не перечисленная категория принимается с оценкой по умолчанию 3.
На запись
| Метка | Оценка |
|---|---|
| LOW | < 5 |
| MEDIUM | 5 – 7 |
| HIGH | 8+ |
Совокупный (на хост)
| Метка | Оценка |
|---|---|
| LOW | < 5 |
| MEDIUM | 5 – 9 |
| HIGH | 10 – 14 |
| CRITICAL | 15+ |
Когда бикон становится мёртвым с незавершёнными записями в журнале, Ledger выводит красное предупреждение в журнал событий Cobalt Strike, видимое всем подключённым операторам:
Предупреждение срабатывает один раз на бикон и сбрасывается автоматически, если бикон восстанавливается и снова входит в связь. Связанные (дочерние) биконы и биконы, явно убитые оператором, исключаются. Время срабатывания предупреждения масштабируется в зависимости от настройки сна бикона — сон 60 с срабатывает примерно через 2 минуты, сон 5 минут — примерно через 10 минут.
LEDGER EXPORT -- 2026-05-21 19:50:34
HOST SCORE SUMMARY
================================================================================
Host Risk Score Pending Bar
--------------------------------------------------------------------------------
DESKTOP-RLP4KBJ (sally *) CRITICAL +21 2 pend [##########]
DESKTOP-FGN4LPG (Admin) CRITICAL +18 0 pend [#########]
================================================================================
CHANGE LOG
================================================================================
[000002] 2026-05-21 19:22:56 | neo | GROUP | MEDIUM +6 | CLEANED
Host : DESKTOP-FGN4LPG
User : Admin
Process : HTTP Listener_x64.exe (PID 4716)
Command : net group 'Domain Admins' svc_backup /add /domain
Comment : Added svc_backup to Domain Admins for lateral movement
{
"exported": "2026-05-21 19:53:19",
"host_summary": [
{
"host": "DESKTOP-FGN4LPG (Admin)",
"risk": "CRITICAL",
"score": 18,
"pending": 0
},
{
"host": "DESKTOP-RLP4KBJ (sally *)",
"risk": "CRITICAL",
"score": 21,
"pending": 2
}
],
"entries": [
{
"id": "000004",
"timestamp": "2026-05-21 19:31:36",
"operator": "neo",
"beacon_id": "1607712302",
"computer": "DESKTOP-RLP4KBJ",
"beacon_user": "sally *",
"beacon_process": "HTTP Listener_x64.exe (PID 11540)",
"functionality": "USER",
"command": "net user svc_backup P@ssw0rd123! /add /domain",
"comment": "Created service account for persistence",
"score": 7,
"risk": "MEDIUM",
"cleaned": false
}
Каждая запись о добавлении и очистке транслируется в журнал событий Cobalt Strike через elog, поэтому все подключённые операторы видят изменения друг друга в реальном времени. Журнал хранится в памяти teamserver на время сессии.
ledger.cna.dirty USER "net user ..." "my comment" 9 — последний аргумент задаёт явную оценку.cmd.exe: dir, echo, set, type, конвейеры (|), перенаправления (>) и т.д. Записывайте их вручную с помощью dirty КАТЕГОРИЯ "shell <команда>"..cna, не будут правильно обрабатываться через dirty exec.| Категория | Оценка по умолчанию | Комментарий по умолчанию |
|---|
| REGISTRY | 2 | Изменён реестр |
| FIREWALL | 3 | Изменено правило брандмауэра |
| SERVICE | 3 | Изменена конфигурация службы |
| RPC | 4 | Внесены изменения в RPC |
| WINRM | 4 | Включён WinRM |
| SMB | 4 | Изменена подпись SMB |
| DCOM | 4 | Включён DCOM |
| RDP | 5 | Включён RDP |
| SCHEDULED_TASK | 5 | Создано запланированное задание |
| DEFENDER | 6 | Изменена конфигурация Defender |
| GROUP | 6 | Изменено членство в группе |
| USER | 7 | Изменена учётная запись |
| ACL | 8 | Изменён ACL |
| SPN | 8 | Изменён SPN |
| DOMAIN_ADMIN | 9 | Изменена группа доменных админов |
| TRUST | 9 | Изменены доверительные отношения |