Вложения .js стали самым популярным способом распространения криптовымогателей в 2016 году. Статистика: Proofpoint
Gmail запрещает передавать с почтой вложения в следующих форматах: ADE, ADP, BAT, CHM, CMD, COM, CPL, EXE, HTA, INS, ISP, JAR, JSE, LIB, LNK, MDE, MSC, MSP, MST, PIF, SCR, SCT, SHB, SYS, VB, VBE, VBS, VXD, WSC, WSF, WSH. Вчера в официальном блоге G Suite опубликовано сообщение, что с 13 февраля 2017 года список запрещённых форматов файлов для передачи через Gmail пополнит формат .js (JavaScript).
Дело в том, что в операционной системе Windows такие файлы по умолчанию запускаются на исполнение с помощью системного компонента Windows Script Host, так что можно внедрить в .js бинарник с криптовымогателем — и отправить его пользователям под Windows. За пределами браузера Windows Script Host позволяет сохранять файлы и запускать их на исполнение, устанавливать сетевые соединения с любым сервером, запрашивать веб-контент.
Встроенные фильтры Gmail блокируют сообщения с исполняемыми файлами, чтобы предотвратить распространение вирусов. Сжатие в GZ/BZ2 или ZIP/TGZ не помогает. Фильтры Gmail автоматически разархивируют и декомпрессируют все вложения ко всем письмам — и проверяют их содержимое (вероятно, на сервере реализована защита от ZIP-бомб, о них ниже).
Защита архива паролем тоже не спасает — в Gmail запрещена пересылка запароленных архивов. Кроме того, запрещена пересылка архивов со вложенными архивами, которые защищены паролем. Таким образом, для передачи исполняемого файла приходится искать другие способы. Например, архивировать и переименовывать в JPG.
В феврале в веб-интерфейсе Gmail при попытке загрузки вложения .js появится сообщение «Заблокировано в целях безопасности» с объяснением причин.
Фильтры у Gmail продвинутые, так что передача картинки JPG со встроенным вирусом тоже может быть заблокирована, как и ссылки на вредоносные страницы. Сама компания Google рекомендует для обмена файлами загружать их на Google Drive, Google Could Storage или другой
Защита от архивных бомб
Чтобы реализовать проверку архивов на сервере для фильтрации спама и вирусов, компании Google наверняка пришлось внедрить защиту от ZIP-бомб, иначе серверы компании стали бы жертвой DoS-атаки.
Самый популярный формат ZIP-бомбы известен со стародавних времён. Это рекурсивный архив типа 42.zip, который распаковывается сам в себя. Если начать его распаковку, то процесс будет идти до тех пор, пока набор данных не достигнет верхнего предела распаковки в 4,3 гигабайта. При этом процесс займет более 4,5 петабайт в оперативной памяти (4 503 599 626 321 920 байт).
Похожий вариант применяется в варианте DoS-атаки с помощью PNG, которую впервые описал в 2015 году программист и хакер Дэвид Фифилд (David Fifield). Как известно, в графическом формате PNG используется алгоритм сжатия DEFLATE в библиотеке zlib. Программист рассчитал, каков может быть максимальный размер картинки с минимальным размером файла. Идея в том, чтобы файл можно было быстро передать по сети, но при этом он не поместился в оперативную память на сервере.
В результате разных экспериментов автор пришёл к наиболее оптимальному соотношению размера файла и занимаемой памяти. Архив spark.png.bz2 размером всего 420 байт занимает в памяти 141,4 ГБ.
Реализовано это следующим образом. Сначала алгоритм DEFLATE заменяет повторяющиеся строки указателями (LZ77), при этом каждая пара бит кодирует 258 одинаковых байтов с нулями. Степень компрессии составляет 1032 к 1. Затем за дело берётся bzip2, который сжимает длинный набор одинаковых значений в максимально компактный вид. В архиве на 420 байт — файл PNG размером 6 132 534 байт (5,8 МБ) и изображением 225 000 × 225 000 пикселей (50,625 гигапикселей). В пиксельном буфере с тремя байтами на пиксель картинка займёт примерно 141,4 ГБ. Картинка почти полностью состоит из нулей, с секретным сообщением в центре. Для лучшего сжатия используется однобитное цветовое пространство, хотя большинство программ для рендеринга графики всё равно резервируют по три бита на пиксель и разворачивают картинку в 141,4 гигабайта.
В Gmail, Habrastorage и других веб-приложениях, разумеется, реализована защита против архивных бомб PNG (более подробно см. статью «Защита приложений Libpng от архивных бомб»). Сканирование файлов на сервере выполняется в изолированной песочнице, и если вложение в вашем письме «повалит» песочницу, то это никак не скажется на работе остальных серверов Google.
Впрочем, применение сжатия в графических форматах позволяет проявить креативность и применить другие трюки, например, со сжатием GIF.
Распространение зловредов через файлы .js
В последнее время злоумышленники часто распространяли вредоносное ПО, прикрепляя скрипты JavaScript к письмам. Например, таким способом авторы криптовымогателя Locky распространяли загрузчик криптовымогателя.
Вложение к письму содержит скрипт, который скачивает исполняемый файл Locky
Код скрипта со ссылкой на исполняемый файл
Позже авторы Locky обнаглели и начали сразу внедрять бинарник в .js.
Кроме Locky, через вложения .js давно распространяются другие криптовымогатели (Ransom32, RAA), а также другой вредоносный софт.
После блокировки .js в Gmail злоумышленникам придётся использовать другие способы, чтобы распространять ссылки на вредоносные программы по почте, через мессенджеры, в твиттере и социальных сетях. Таких способов много.
Автор: alizar