Конвертация объектов из post запросов в wireshark
Захват объектов Wireshark
Wireshark — мощный инструмент для анализа сетевого трафика. Он практически всегда является первым средством мониторинга сетевой активности при проведении пентеста и иногда бывают ситуации, когда необходимо выгрузить из трафика переданные объекты (это могут быть документы .docx .xls .pdf, различные изображения, архивы и прочие файлы).
Объекты могут передаваться двумя способами:
- Это либо GET запрос, если пользователь их скачивает.
- Либо POST, если пользователь их загружает на сервер.
При анализе трафика есть возможность извлечения различных объектов, которые передавались по открытому http соединению.
При выгрузке GET данных wireshark сохраняет файлы в указанную нами директорию под изначальным именем и расширением в точности совпадающим с оригиналом.
В то же время выгрузка переданных объектов из POST запросов сохраняется под именем скрипта, на который этот POST отправлялся, что вызывает некоторые неудобства при просмотре таких файлов:
Сама структура таких файлов проста: либо внутри идет содержимое в текстовом виде, если передавалось какое-то значение, либо в том же текстовом виде идут файлы, но с описанием MIME-типа и включающие данные файла.
Ниже пример загрузки текстового файла, где первые 3 строки включают описание запроса с оригинальным названием и Content-Type.
Внутри находится и сам текстовый файл:
Здесь его удобно читать, так как сам kernel.txt является текстовым, в случае же с другим типом файла мы увидим бинарные данные, которые сложно быстро адаптировать для чтения, особенно если этих файлов много.
Проблема: для прочтения множества таких фалов может понадобиться довольно много времени, так как рутина на отрезание начала и конца файла является длительным процессом при повторении этих действий.
Конвертирование объектов с wsconv
Для автоматизации процесса я написал небольшую утилиту, которая позволяет автоматизировать этот процесс. Логика работы следующая:
- Сканируем все файлы выгруженных объектов на наличие Content-Type.
- Переводим в шестнадцатеричный вид c помощью утилиты xxd для сохранения целостности при модификации объектного файла.
- Модифицируем файл.
- Сохраняем в отдельную папку под оригинальным именем.
Очевидно, что после выполнения утилиты в папке found_files мы обнаружим файлы в первозданном виде.
Как пользоваться?
- Для начала необходимо подготовить трафик для экспорта.
- Затем произвести экспорт POST объектов в нужную директорию из интерфейса Wireshark.
- Запустить в директории выгрузки утилиту ./wsconv.sh.
- Все распознанные файлы будут находиться в found_files.
Загрузка доступна из репозитория github:
wget raw.githubusercontent.com/n0a/wireshark-post-convert/main/wsconv.sh
chmod +x wsconv.sh
sudo ./wsconv.sh
Пример работы утилиты wsconv.sh:
Надеюсь, что моя утилита кому-то облегчит жизнь и позволит автоматизировать рутинную задачу по конвертации POST-объектов из Wireshark.
Репозиторий на github: https://github.com/n0a/wireshark-post-convert