• Открыта запись на вторую часть курса по анонимности и безопасности в сети интернет "Paranoid II" от команды codeby. Анонимные роутеры, Подъём, настройка и администрирование Tor-ноды, Работа с железом ПК, Удаление аппаратных закладок, Минимизация рисков, Авторские разработки и многое другое. Подробнее ...

Soft Pixload: вредоносный скрипт в изображении

Vertigo

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 160
3 406
pixload.png
Добрый день,Уважаемые Форумчане и Друзья.
Когда-то стали известны способы размещения вредоносного кода в изображении.
Немногим позднее появилась атака Polyglot,когда вредоносный файл одновременно является изображением и JavaScript-кодом.

В основном,это касалось файлов BMP,при этом,2 первых байта представляли 16-ричное представление символов ВМ в изображении ВМP.
Далее,4 байта отвечают за размер,затем 4 нулевых байта и байты,отвечающие за смещение данных.
При выполнении техники Polyglot,контролируется размер изображения,а 16-ричные символы представляются так,чтобы компьютерами интерпретировались иначе.
Т.е.,чтобы выполнялись как код.

Соответственно,появился генератор полезной нагрузки Pixload,который создал Alexandr Savca (chinarulezzz).
И который представляю Вашему вниманию.
Pixload умеет сгенерировать нагрузку в файлах BMP,GIF,JPG и PNG .
Работает он как с дефолтными файлами,которые прилагаются в его директории,так и может начинять небольшие произвольные файлы соответствующего формата.
В отличии от других аналогичных техник,файлы не требуется конвертировать в иконки и т.п.

Если кому потребуется начинка из shell-кода х86 как в старые добрые времена,то смотрим и
Другие полезные ссылки для информации Вы найдёте на странице

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


Установка:
Код:
# apt install libgd-perl libimage-exiftool-perl libstring-crc32-perl
# git clone https://github.com/chinarulezzz/pixload.git
# cd pixload
Использование:
Если работать с дефолтными данными и произвольный выходной файл отсутствует,то при следующем генерировании,такой файл перезапишется.
Если имеется скачанный произвольный выходной файл,то указываем на выходе его название,и нагрузка запишется в него.
Для удобства поместите такой файл в директорию инструмента.
1) Для файлов BMP # ./bmp.pl -output file.bmp
2) Для JPG 2 вида нагрузки,либо в параметр COMMENT,либо DQT table
И именно для данного типа файлов существует лимитирование нагрузки в 64 байта и требование,чтобы файл был произвольным.
Код:
# ./jpg.pl -place DQT -output file.jpg
# ./jpg.pl -place COM -output file.jpg
3) Для PNG # ./png.pl -output file.png
4) Для GIF # ./gif.pl -output file.gif
Вот пример изображения
После генерирования полезной нагрузки,размер в свойствах останется неизменным,но само изображение примет минимальный размер.
Сам процесс можно видеть на главном скриншоте.
page1.png
Опасность такие файлы представляют для посетителей ресурсов,у которых,особенно присутствует XSS-уязвимость.
Например,находятся вот таким способом уязвимые ресурсы по доркам.
xssvuln1.png
Наличие уязвимости позволяет даже себя любимого вывести на главную страницу.
Загружаются файлы если это позволяется и выполняется атака через браузеры при взаимодействии с файлом.
Мы конечно не станем ничего никуда грузить и заниматься вредительством.
xssvuln.png
Защитой от подобной атаки служит по-прежнему контроль javascript в браузере за счёт дополнений.
И при изучении файла hex-редактором ,а лучше,анализатором пакетов,можно сразу увидеть,что с файлом что-то не так и виден в нём скрипт.
pixload2.png
На этом обзор завершаю,всех благодарю за внимание и до новых встреч.
 
Z

Zodiac

New member
18.06.2017
2
1
Если я правильно понял, браузер отрендерит картинку и алерт должен появиться ?
 
Vertigo

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 160
3 406
Если я правильно понял, браузер отрендерит картинку и алерт должен появиться ?
Отчасти да,но возможны варианты.
Ведь одно из принципиальных отличий атак с poliglot в том ,что не требуются после загрузки файла сторонние программы для вызова содержимого.
Смысл в превращении типа обычного файла в переменную javascrypt с присвоением нагрузки.
Если скрипт к примеру будет иметь такой вид <img src = "file.bmp" /> ,то пользователь через браузер будет видеть изображение.
А если к скрипту добавляется такой элемент <script src = "file.bmp"> </ script>,то вместо изображения будет выполняться скрипт.
 
  • Нравится
Реакции: Zodiac
Z

Zodiac

New member
18.06.2017
2
1
Скрипт в картинке <svg onload=alert()>, в консоли браузера получаю:
Chrome - Uncaught SyntaxError: Invalid or unexpected token -
Firefox - SyntaxError: illegal character -
Что я не так делаю ?
 
  • Нравится
Реакции: Vertigo
Vertigo

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 160
3 406
Что я не так делаю ?
Хороший вопрос.Такие ошибки стали получать разрабы ,которые работают с javascrypt.
Связано это то ли с обновлением политик безопасности в браузерах,то ли с наличием в коде недопустимых знаков.
Об этом можно посмотреть и .
Также методом проб и ошибок изучаются техники bypass с применением таких скриптов.
Можно попробовать так </script><svg onload=alert()>
Либо использовать более сложную конструкцию :
%0ajavascript:`/*\"/*-->&lt;svg onload='/*</template></noembed></noscript></style></title></textarea></script><html onmouseover="/**/ alert()//'">`
Подробнее о технике обхода и фильтрации описано
 
Ruby

Ruby

Happy New Year
16.07.2019
7
23
Хотел протестировать. Получаю вот такую ошибку в консольке.
Refused to execute script from 'http://localhost/tr.bmp' because its MIME type ('image/x-ms-bmp') is not executable.
Инжект скрипта с картинки таким образом: <script src="tr.bmp"> </script>
 
Мы в соцсетях: