Скрытая передача через HTML (HTML smuggling) - это сокрытие вредоносной полезной нагрузки внутри HTML-файлов с помощью JavaScript Blobs и/или атрибутов загрузки HTML5. Используя технику HTML-контрабанды, злоумышленники могут обходить контент-фильтры и средства контроля безопасности, скрывая вредоносную полезную нагрузку в кажущихся доброкачественными HTML-файлах.
Обфусцированные файлы или данные: Скрытая передача через HTML
В HTML5 появился атрибут загрузки для тега якоря (<a>). Атрибут download указывает, что при нажатии пользователем на гиперссылку будет загружен целевой файл (файл, указанный в атрибуте href).
1 | <a href='/files/maliciousfile.doc' download='myfile.doc'>Click</a> |
Атрибут загрузки также может быть создан с помощью JavaScript вместо HTML:
1 2 | var myAnchor = document.createElement('a'); myAnchor.download = 'myfile.doc'; |
Злоумышленники комбинируют атрибут загрузки с JavaScript Blobs (Binary Large Object). HTML-документы имеют возможность хранить большие двоичные объекты, называемые JavaScript Blobs. Блоб - это файлоподобный объект с неизменяемыми необработанными данными, который может быть прочитан как текст или двоичные данные. Злоумышленники могут использовать блобы в HTML-файлах для хранения вредоносной полезной нагрузки. Поскольку конечное содержимое может иметь доброкачественные MIME-типы, такие как text/plain и/или text/html, фильтры веб-контента могут не распознать контрабандные вредоносные файлы внутри HTML/JS-файлов. Blob может быть создан локально с помощью чистого JavaScript.
1 | var myBlob = new Blob([maliciousData], {type: 'text/plain'}); |
Эта строка создает Blob MIME-типа text/plain и заполняет его данными, содержащимися в переменной maliciousData. Затем, используя URL.createObjectURL, мы можем сгенерировать URL из объекта Blob и связать его с точкой привязки и именем файла с атрибутом download:
1 2 | var myUrl = window.URL.createObjectURL(blob); var myAnchor = document.createElement('a'); myAnchor.href = myUrl; myAnchor.download = 'myfile.doc'; |
Например, вредоносная программа QakBot, похищающая данные, использует технику HTML Smuggling, чтобы обмануть пользователей и заставить их думать, что HTML-вложение безвредно. Однако злоумышленники тайно поместили в тег гиперссылки вредоносный JavaScript-файл в формате Base64. Когда пользователь нажимает на гиперссылку, сброшенный JavaScript-файл запускает команду PowerShell, которая разворачивает QakBot в системе жертвы.
URL-адреса данных также позволяют разработчикам вредоносного ПО встраивать небольшие вредоносные файлы в документы. Например, закодированная в base64 вредоносная полезная нагрузка может быть сохранена в URL данных следующего формата:
1 | data:[<text/plain>][;base64],<закодированная в base64 вредоносная полезная нагрузка> |
Поскольку MIME-тип этого URL-адреса данных - text/plain, он может обойти некоторые фильтры содержимого.