mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
166 lines
19 KiB
Markdown
166 lines
19 KiB
Markdown
# Mythic
|
||
|
||
## Що таке Mythic?
|
||
|
||
Mythic - це модульна, з відкритим вихідним кодом система командного управління (C2), розроблена для червоних команд. Вона дозволяє фахівцям з безпеки керувати та розгортати різні агенти (payloads) на різних операційних системах, включаючи Windows, Linux та macOS. Mythic надає зручний веб-інтерфейс для управління агентами, виконання команд та збору результатів, що робить його потужним інструментом для моделювання реальних атак у контрольованому середовищі.
|
||
|
||
### Встановлення
|
||
|
||
Щоб встановити Mythic, дотримуйтесь інструкцій на офіційному **[Mythic repo](https://github.com/its-a-feature/Mythic)**.
|
||
|
||
### Агенти
|
||
|
||
Mythic підтримує кілька агентів, які є **payloads, що виконують завдання на скомпрометованих системах**. Кожен агент може бути налаштований під специфічні потреби та може працювати на різних операційних системах.
|
||
|
||
За замовчуванням Mythic не має жодного агента, встановленого. Однак він пропонує кілька відкритих агентів на [**https://github.com/MythicAgents**](https://github.com/MythicAgents).
|
||
|
||
Щоб встановити агента з цього репозиторію, вам просто потрібно виконати:
|
||
```bash
|
||
sudo ./mythic-cli install github https://github.com/MythicAgents/<agent-name>
|
||
sudo ./mythic-cli install github https://github.com/MythicAgents/apfell
|
||
```
|
||
Ви можете додати нові агенти за допомогою попередньої команди, навіть якщо Mythic вже працює.
|
||
|
||
### C2 Профілі
|
||
|
||
C2 профілі в Mythic визначають **як агенти спілкуються з сервером Mythic**. Вони вказують протокол зв'язку, методи шифрування та інші налаштування. Ви можете створювати та керувати C2 профілями через веб-інтерфейс Mythic.
|
||
|
||
За замовчуванням Mythic встановлюється без профілів, однак, можливо, завантажити деякі профілі з репозиторію [**https://github.com/MythicC2Profiles**](https://github.com/MythicC2Profiles), запустивши:
|
||
```bash
|
||
sudo ./mythic-cli install github https://github.com/MythicC2Profiles/<c2-profile>>
|
||
sudo ./mythic-cli install github https://github.com/MythicC2Profiles/http
|
||
```
|
||
## [Apollo Agent](https://github.com/MythicAgents/Apollo)
|
||
|
||
Apollo - це агент Windows, написаний на C# з використанням .NET Framework 4.0, призначений для використання в навчальних програмах SpecterOps.
|
||
|
||
Встановіть його за допомогою:
|
||
```bash
|
||
./mythic-cli install github https://github.com/MythicAgents/Apollo.git
|
||
```
|
||
Цей агент має багато команд, які роблять його дуже схожим на Beacon від Cobalt Strike з деякими додатковими можливостями. Серед них він підтримує:
|
||
|
||
### Загальні дії
|
||
|
||
- `cat`: Вивести вміст файлу
|
||
- `cd`: Змінити поточний робочий каталог
|
||
- `cp`: Скопіювати файл з одного місця в інше
|
||
- `ls`: Перелічити файли та каталоги в поточному каталозі або вказаному шляху
|
||
- `pwd`: Вивести поточний робочий каталог
|
||
- `ps`: Перелічити запущені процеси на цільовій системі (з додатковою інформацією)
|
||
- `download`: Завантажити файл з цільової системи на локальний комп'ютер
|
||
- `upload`: Завантажити файл з локального комп'ютера на цільову систему
|
||
- `reg_query`: Запитати ключі та значення реєстру на цільовій системі
|
||
- `reg_write_value`: Записати нове значення в зазначений ключ реєстру
|
||
- `sleep`: Змінити інтервал сну агента, який визначає, як часто він перевіряє з'єднання з сервером Mythic
|
||
- І багато інших, використовуйте `help`, щоб побачити повний список доступних команд.
|
||
|
||
### Підвищення привілеїв
|
||
|
||
- `getprivs`: Увімкнути якомога більше привілеїв на поточному токені потоку
|
||
- `getsystem`: Відкрити дескриптор до winlogon і дублювати токен, ефективно підвищуючи привілеї до рівня SYSTEM
|
||
- `make_token`: Створити нову сесію входу та застосувати її до агента, що дозволяє видавати себе за іншого користувача
|
||
- `steal_token`: Вкрасти первинний токен з іншого процесу, що дозволяє агенту видавати себе за користувача цього процесу
|
||
- `pth`: Атака Pass-the-Hash, що дозволяє агенту аутентифікуватися як користувач, використовуючи їх NTLM хеш без необхідності в відкритому паролі
|
||
- `mimikatz`: Виконати команди Mimikatz для витягування облікових даних, хешів та іншої чутливої інформації з пам'яті або бази даних SAM
|
||
- `rev2self`: Повернути токен агента до його первинного токена, ефективно знижуючи привілеї до початкового рівня
|
||
- `ppid`: Змінити батьківський процес для пост-експлуатаційних завдань, вказавши новий ідентифікатор батьківського процесу, що дозволяє краще контролювати контекст виконання завдань
|
||
- `printspoofer`: Виконати команди PrintSpoofer для обходу заходів безпеки спулера друку, що дозволяє підвищити привілеї або виконати код
|
||
- `dcsync`: Синхронізувати ключі Kerberos користувача з локальним комп'ютером, що дозволяє офлайн-ламати паролі або проводити подальші атаки
|
||
- `ticket_cache_add`: Додати квиток Kerberos до поточної сесії входу або вказаної, що дозволяє повторне використання квитка або видачу себе за іншого користувача
|
||
|
||
### Виконання процесів
|
||
|
||
- `assembly_inject`: Дозволяє ввести завантажувач .NET в віддалений процес
|
||
- `execute_assembly`: Виконує збірку .NET в контексті агента
|
||
- `execute_coff`: Виконує COFF файл в пам'яті, що дозволяє виконувати скомпільований код в пам'яті
|
||
- `execute_pe`: Виконує unmanaged виконуваний файл (PE)
|
||
- `inline_assembly`: Виконує збірку .NET в одноразовому AppDomain, що дозволяє тимчасове виконання коду без впливу на основний процес агента
|
||
- `run`: Виконує двійковий файл на цільовій системі, використовуючи PATH системи для знаходження виконуваного файлу
|
||
- `shinject`: Вводить shellcode в віддалений процес, що дозволяє виконувати довільний код в пам'яті
|
||
- `inject`: Вводить shellcode агента в віддалений процес, що дозволяє виконувати код агента в пам'яті
|
||
- `spawn`: Створює нову сесію агента в зазначеному виконуваному файлі, що дозволяє виконувати shellcode в новому процесі
|
||
- `spawnto_x64` та `spawnto_x86`: Змінює за замовчуванням двійковий файл, що використовується в пост-експлуатаційних завданнях, на вказаний шлях замість використання `rundll32.exe` без параметрів, що є дуже шумним.
|
||
|
||
### Mithic Forge
|
||
|
||
Це дозволяє **завантажувати COFF/BOF** файли з Mythic Forge, яка є репозиторієм попередньо скомпільованих вантажів і інструментів, які можуть бути виконані на цільовій системі. З усіма командами, які можуть бути завантажені, буде можливим виконувати загальні дії, виконуючи їх у поточному процесі агента як BOFs (зазвичай більш непомітно).
|
||
|
||
Почніть їх встановлювати з:
|
||
```bash
|
||
./mythic-cli install github https://github.com/MythicAgents/forge.git
|
||
```
|
||
Потім використовуйте `forge_collections`, щоб показати модулі COFF/BOF з Mythic Forge, щоб мати можливість вибрати та завантажити їх у пам'ять агента для виконання. За замовчуванням у Apollo додаються наступні 2 колекції:
|
||
|
||
- `forge_collections {"collectionName":"SharpCollection"}`
|
||
- `forge_collections {"collectionName":"SliverArmory"}`
|
||
|
||
Після завантаження одного модуля він з'явиться у списку як інша команда, наприклад, `forge_bof_sa-whoami` або `forge_bof_sa-netuser`.
|
||
|
||
### Виконання PowerShell та сценаріїв
|
||
|
||
- `powershell_import`: Імпортує новий сценарій PowerShell (.ps1) у кеш агента для подальшого виконання
|
||
- `powershell`: Виконує команду PowerShell у контексті агента, що дозволяє здійснювати розширене сценарне програмування та автоматизацію
|
||
- `powerpick`: Впроваджує збірку завантажувача PowerShell у жертвенний процес і виконує команду PowerShell (без ведення журналу PowerShell).
|
||
- `psinject`: Виконує PowerShell у вказаному процесі, що дозволяє цілеспрямоване виконання сценаріїв у контексті іншого процесу
|
||
- `shell`: Виконує команду оболонки в контексті агента, подібно до виконання команди в cmd.exe
|
||
|
||
### Бічний рух
|
||
|
||
- `jump_psexec`: Використовує техніку PsExec для бічного руху до нового хоста, спочатку копіюючи виконуваний файл агента Apollo (apollo.exe) та виконуючи його.
|
||
- `jump_wmi`: Використовує техніку WMI для бічного руху до нового хоста, спочатку копіюючи виконуваний файл агента Apollo (apollo.exe) та виконуючи його.
|
||
- `wmiexecute`: Виконує команду на локальній або вказаній віддаленій системі за допомогою WMI, з необов'язковими обліковими даними для імперсонації.
|
||
- `net_dclist`: Отримує список контролерів домену для вказаного домену, корисно для ідентифікації потенційних цілей для бічного руху.
|
||
- `net_localgroup`: Перераховує локальні групи на вказаному комп'ютері, за замовчуванням використовуючи localhost, якщо комп'ютер не вказано.
|
||
- `net_localgroup_member`: Отримує членство локальної групи для вказаної групи на локальному або віддаленому комп'ютері, що дозволяє перераховувати користувачів у конкретних групах.
|
||
- `net_shares`: Перераховує віддалені спільні ресурси та їх доступність на вказаному комп'ютері, корисно для ідентифікації потенційних цілей для бічного руху.
|
||
- `socks`: Увімкнення проксі-сервера, що відповідає стандарту SOCKS 5, у цільовій мережі, що дозволяє тунелювання трафіку через скомпрометований хост. Сумісно з такими інструментами, як proxychains.
|
||
- `rpfwd`: Починає прослуховування на вказаному порту на цільовому хості та пересилає трафік через Mythic на віддалений IP-адресу та порт, що дозволяє віддалений доступ до служб у цільовій мережі.
|
||
- `listpipes`: Перераховує всі іменовані канали на локальній системі, що може бути корисно для бічного руху або підвищення привілеїв шляхом взаємодії з механізмами IPC.
|
||
|
||
### Різні команди
|
||
- `help`: Відображає детальну інформацію про конкретні команди або загальну інформацію про всі доступні команди в агенті.
|
||
- `clear`: Позначає завдання як 'очищені', щоб їх не могли взяти агенти. Ви можете вказати `all`, щоб очистити всі завдання, або `task Num`, щоб очистити конкретне завдання.
|
||
|
||
|
||
## [Poseidon Agent](https://github.com/MythicAgents/Poseidon)
|
||
|
||
Poseidon - це агент на Golang, який компілюється в **Linux та macOS** виконувані файли.
|
||
```bash
|
||
./mythic-cli install github https://github.com/MythicAgents/Poseidon.git
|
||
```
|
||
Коли користувач працює в linux, є кілька цікавих команд:
|
||
|
||
### Загальні дії
|
||
|
||
- `cat`: Вивести вміст файлу
|
||
- `cd`: Змінити поточний робочий каталог
|
||
- `chmod`: Змінити дозволи файлу
|
||
- `config`: Переглянути поточну конфігурацію та інформацію про хост
|
||
- `cp`: Скопіювати файл з одного місця в інше
|
||
- `curl`: Виконати один веб-запит з необов'язковими заголовками та методом
|
||
- `upload`: Завантажити файл на ціль
|
||
- `download`: Завантажити файл з цільової системи на локальний комп'ютер
|
||
- І багато іншого
|
||
|
||
### Пошук чутливої інформації
|
||
|
||
- `triagedirectory`: Знайти цікаві файли в каталозі на хості, такі як чутливі файли або облікові дані.
|
||
- `getenv`: Отримати всі поточні змінні середовища.
|
||
|
||
### Бічний рух
|
||
|
||
- `ssh`: SSH до хоста, використовуючи призначені облікові дані, і відкрити PTY без запуску ssh.
|
||
- `sshauth`: SSH до вказаних хостів, використовуючи призначені облікові дані. Ви також можете використовувати це для виконання конкретної команди на віддалених хостах через SSH або використовувати це для SCP файлів.
|
||
- `link_tcp`: Зв'язати з іншим агентом через TCP, що дозволяє безпосередню комунікацію між агентами.
|
||
- `link_webshell`: Зв'язати з агентом, використовуючи профіль webshell P2P, що дозволяє віддалений доступ до веб-інтерфейсу агента.
|
||
- `rpfwd`: Запустити або зупинити зворотне перенаправлення порту, що дозволяє віддалений доступ до служб на цільовій мережі.
|
||
- `socks`: Запустити або зупинити SOCKS5 проксі на цільовій мережі, що дозволяє тунелювання трафіку через скомпрометований хост. Сумісний з такими інструментами, як proxychains.
|
||
- `portscan`: Сканувати хости на наявність відкритих портів, корисно для виявлення потенційних цілей для бічного руху або подальших атак.
|
||
|
||
### Виконання процесів
|
||
|
||
- `shell`: Виконати одну команду оболонки через /bin/sh, що дозволяє безпосереднє виконання команд на цільовій системі.
|
||
- `run`: Виконати команду з диска з аргументами, що дозволяє виконання бінарних файлів або скриптів на цільовій системі.
|
||
- `pty`: Відкрити інтерактивний PTY, що дозволяє безпосередню взаємодію з оболонкою на цільовій системі.
|