Может ли быть вирус в png файле

Обновлено: 04.07.2024

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


Соответственно,появился генератор полезной нагрузки Pixload,который создал Alexandr Savca (chinarulezzz). И который представляю Вашему вниманию.

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

Если кому потребуется начинка из shell-кода х86 как в старые добрые времена,то смотрим здесь и здесь

Другие полезные ссылки для информации Вы найдёте на странице автора

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

Категорически запрещается применение рассматриваемого инструмента в незаконных целях.

Установка:

Использование:

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

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

Для удобства поместите такой файл в директорию инструмента.

2) Для JPG 2 вида нагрузки,либо в параметр COMMENT,либо DQT table

И именно для данного типа файлов существует лимитирование нагрузки в 64 байта и требование,чтобы файл был произвольным.

После генерирования полезной нагрузки,размер в свойствах останется неизменным,но само изображение примет минимальный размер.

Опасность такие файлы представляют для посетителей ресурсов,у которых,особенно присутствует XSS-уязвимость. Например, находятся вот таким способом уязвимые ресурсы по доркам.

Наличие уязвимости позволяет даже себя любимого вывести на главную страницу.

Загружаются файлы если это позволяется и выполняется атака через браузеры при взаимодействии с файлом. Мы конечно не станем ничего никуда грузить и заниматься вредительством.

Защитой от подобной атаки служит по-прежнему контроль javascript в браузере за счёт дополнений.

И при изучении файла hex-редактором ,а лучше,анализатором пакетов,можно сразу увидеть,что с файлом что-то не так и виден в нём скрипт



Картинки формата PNG всегда несли опасность как для владельцев сайтов так и для простых интернет-обывателей своей возможностью работать контейнером для лишней информации, а значит переносить реальные метаданные

Проще говоря - это бомба с дистанционным механизмом которая выжидает своего времени, когда какое-то условие или действие приведет ее в ход



Недавно группа исследователей обнаружили новый способ использования уязвимости PNG формата и javascript для iframe инъекций компьютера пользователя. Техника выполнения настолько уникальна что выявить ее доступными сканерами просто невозможно, поскольку метаданные хранятся отдельно от самого исполнительного кода, глубоко в недрах PNG изображения.

Peter Gramantik описал всю суть в своем блоге

Попробую и я ввести вас в курс дела. Итак что же такое эта Iframe инъекция?
Начнем с того что iframe сейчас как и раньше популярный способ вставки кода с чужого сайта(страницы) на своем сайте. Он поддерживается всеми браузерами и есть на 90% сайтов. Самый простой пример - реклама Adsense.

Это на руку злоумышленникам, поскольку для того что бы использовать вирус ему не надо иметь доступа к сайту "донору". Изменяется код на выводимой в iframe странице и все. Выглядит это примерно так



Новый же способ - плавающий фрейм. Уникальность не в использовании тега iframe, а в том что часть кода была спрятана в недрах PNG изображения.

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

Сам фрейм ничего плохого не делал, он подгружал просто Javasript, который использовал для компактности популярную и безопасную библиотеку jquery.js ,и с первого взгляда был безопасным и не нес никакой угрозы



Сначала этот код их озадачил, поскольку ничего критичного в нем не нашли, но чувство опасности не оставляло "исследователей". Подозрение вызвала маленькая функция LoadFile (), которая подгружала внешний файл. Естественно его открыли


Первое ваше мнение? Конечно же "что за хрень", и закрыли файл. Так же сделали и они. Код решили проверить чуть ли не по буквах. И вот она новая загадка - цикл декодирования



Подозрительным стало то что декодировали изображение, поэтому решено было отдебагить этот процесс. И вот что они увидели в результате



Вот оно, то ради чего было потрачено столько времени. Теперь и вы явно видите код вставки плавающего iframe в ваш белый и пушистый сайт с вредоносным кодом. Вы никогда не увидите этот блок, потому что он физически находится за пределами экрана - elm.style.position.left и elm.style.position.top, с абсолютным позиционированием, что не создает скроллбаров, а вот ваш браузер увидит. Интересная и миленькая фишечка для создания SEP атак.

В чем же уникальность? А вот как раз в этой картинке



Все современные сканеры остановятся на яваскрипте и не будут собирать весь код по хлебным крошкам. Сейчас уязвимость нашли в png файле, но кто гарантирует что вскоре эту технику не переключат на остальные графические форматы? Именно поэтому вы должны быть в курсе что и когда было загружено на ваш сервер и когда были сделаны какие-то изменения, чтоб вовремя остановить злоумышленников. Поскольку найти такие уязвимости простому обывателю просто не по силе. А сканеры еще не скоро перейдут на анализ графики в соединении с яваскриптом.

Кстати сайт на который ведет этот фрейм базируется в России и по данным Google Safe Browsing advisory содержит два вида троянов что за последние 90 дней заразили более 1000 сайтов.

Слышал, что вирус может быть замаскирован под файл .jpg, у меня на сайте скриптом проверяется сайт на предмет появления новых и изменившихся файлов, чтобы быстро обнаружить вирус, но при проверке делается исключение для .jpg .jpg и пр. форматов, чтобы не нагружать сильно систему. Означает ли это что я могу пропустить вирус и не заметить его? Я просто не знаю как его маскируют и сможет ли мой скрипт обнаружить подмену, если файл будет вида file.jpg___exe то это одно. Реально ли замаскировать вирус в файл вида именно file.jpg?

от вируса в jpg не должно быть никому ничего плохого. важнее php html и т.п. проверять. в общем проверяйте все.

Proctor, в теории возможен любой самый маловероятный сценарий. Причем, хакер может оказаться упорнее вас и все исследует пока вы спите. Если вы "воюете" с хакером давно, он эксплуатирует какую-то не известную вам уязвимость, он даже может поставить эксперимент и узнать следите ли вы за файлами jpeg или нет.

Формальный ответ - да, возможен.

пара практических не таких уж маловероятных примеров :

1. Используется два файла. Крайне простой php-код может подключать сложный, записанный уже в jpeg. Никакой антивирус не будет помещать такой простой код в базу, потому что срабатываний будет слишком много. Да и вы вручную ничего криминального там не увидите.

2. Достаточно распространенная уязвимость возникает при совпадении условий : если возможна загрузка фото пользователем, движок записывает оригинальные байты из файла jpeg без обработки и можно запустить php-код заключенный в исходном из-за настройки cgi.fix_pathinfo=1.

Proctor, что вы понимаете под "вирусом"? Исполняемый файл (дроппер) для загрузки зверья на пользователя сайта? Тогда злоумышленнику нужен "эксплойт", простой "exe" никуда не встанет.

Или вы ведете речь о взломе хоста для заливки шелла? Если второй вариант, то netwind все верно написал. В двух словах - проблема будет не в типе файлов, а в инъекции - php include или sql include. Поэтому не имеет смысла зацикливаться на типе файла, нужно играть от вашей cms и системы фильтрации скриптов.

Обязательно проверяю и файлы с расширениями .jpg, .jpg, .jpg

Открывал код Notepad++ и был вшит eval(base64_decode

Пересохранив картинку,код удалялся.

а если еще учесть что в папке куда пользователи грузят изображения, в .htaccess запрещено исполнение любых скриптов, есть смысл проверять эту папку все равно?

Недавно компания Eset, специализирующаяся на создании антивирусного ПО сообщила об появлении нового троянского вируса, который маскируется под картинки в формате .jpg. То есть защифрованные вирусы jpeg расширением

Вирусы jpeg

Вирусы jpeg

Как работают вирусы jpeg?

Целью действия вредоносного ПО является похищение личных данных пользователя, в частности его паролей из e-mail. Он способен делать скриншоты рабочего стола и передавать своему создателю информацию о логинах и паролях жертвы. Вирус также интересуют данные для авторизации в социальных сетях и платёжных системах.

Вирус старается предельно скрыть свою «работу», чтобы не дать пользователю себя выявить и уничтожить. С этой целью блокируется доступ к редактору реестра, панели управления и диспетчеру задач.

Как удалить вирус

Аккуратные и внимательные пользователи не попадутся на столь простую уловку, как письмо от неизвестного адресата с вредоносным файлом. Антивирусы, как правило, своевременно предупреждают о запуске исполняемых файлов из e-mail либо браузера. Однако если вы всё-таки заразились, то ниже приведённый текст будет вам весьма полезен.

Поскольку изображение повреждено, его тело придётся удалять на базе регулярных выражений. Детальный осмотр jpg и png файлов выявил модификации вирусов. То есть они не все были одинаковыми. Иногда во время записи на новое изображение тело вируса видоизменялось. Причём менялся конец, название переменных, что делает его удаление весьма сложной задачей.

Чтобы избавиться от проблемы, следует найти место, где сохраняется вредоносное ПО даже после изменения изображения. Это место, как правило, . EXIF - сопутствующие данные о картинке. Здесь содержится информация о том, на что сделано фото, в каких условиях и т. д. Данный момент следует модернизировать.

Посмотрите, что там написано и сравните с данными первого фото, сделанного с помощью фотоаппарата.

А затем взгляните на имеющийся файл.


Итак, код вируса от начала до конца найден. Теперь можно будет избавиться и от видоизменяющегося вируса, не нанося повреждений файлу. Для этого потребуется редактирующая EXIF утилита, к примеру, exiftools. Из имеющихся в этой программе атрибутов нам нажжен «-all=»/

Теперь прогоним картинку:

exiftool -h brovi.jpg

exiftools –all= brovi.jgp

В результате получаем:


Далее на базе найденного выше создаётся регулярное выражение.

find . -name '*.jpg' -exec exiftool -h <> \; | grep -o base64

Таким образом, можно узнать имеется ли вирус в файле.

Рассказывать о многочисленных вариациях регулярного выражения мы говорить не будем, а ограничимся перечислением основным проблем при его создании:

  • Exiftools не может вернуть путь к не отредактированным файлам;
  • Grep + cat отказываются открыть бинарники;
  • Exiftools при редактировании файла создаёт его копии;
  • Необходимо исключить не заражённые файлы в exif и ничего с ними не делать.

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

find . -type f \( -name '*\.jpg' -or -name '*\.jpg' -or -name '*\.jpg' -or -name '*\.jpg' -or -name '*\.JPG' -or -name '*\.PNG' -or -name '*\.JPEG' -or -name '*\.GIF' \) -exec grep -rl base64 <> \; -exec exiftool -all= <> \; -exec rm '<>_original' \;

Команда может быть сокращена до более понятного варианта:

find . -type f -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)" -exec grep -rl base64 <> \; -exec exiftool -all= <> \; -exec rm '<>_original' \;

sudo apt-get install libimage-exiftool-perl

Уместно для ветки Debian.

Во время лечения следует помнить, что удалению подлежит не только вирус, но и его последствия, шелл скрипта и все их копии.

Читайте также: