Цією статтею ми починаємо серію публікацій про невловимі малварі. Програми для злому, що не залишають слідів атаки, відомі також як fileless («безтілесні», невидимі, безфайлові), як правило, використовують PowerShell на системах Windows, щоб потай виконувати команди для пошуку і вилучення цінного контенту. Виявити хакерську діяльність без шкідливих файлів - складне завдання, т.к. антивіруси та багато інших систем виявлення працюють на основі сигнатурного аналізу. Але хороша новина полягає в тому, що таке ПЗ все ж таки існує. Наприклад,
Коли я вперше почав вивчати тему крутих хакерів,
Великий та жахливий PowerShell
Я писав про деякі з цих ідей раніше
Крім самих зразків на сайті можна побачити, що роблять ці програми. Гібридний аналіз запускає шкідливе ПЗ у власній пісочниці та відстежує системні виклики, запущені процеси та дії в мережі, а також витягує підозрілі текстові рядки. Для двійкових файлів та інших виконуваних файлів, тобто. там, де ви навіть не можете подивитися на фактичний код високого рівня, гібридний аналіз вирішує, чи ПЗ є шкідливим або просто підозрілим на основі його активності під час виконання. І після цього оцінюється зразок.
У випадку PowerShell та інших зразків сценаріїв (Visual Basic, JavaScript тощо), я зміг побачити і сам код. Наприклад, я натрапив на такий PowerShell екземпляр:
Ви також можете запустити PowerShell у кодуванні base64, щоб уникнути виявлення. Зверніть увагу на використання Noninteractive та Hidden параметрів.
Якщо ви прочитали мої записи по обфускації, то знаєте, що параметр -e вказує на те, що вміст кодується в base64. До речі, гібридний аналіз допомагає також і з цим декодуючи все назад. Якщо ви захочете спробувати декодувати base64 PowerShell (далі – PS) самостійно, потрібно виконати цю команду:
[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($EncodedText))
Вникай глибше
Я декодував наш PS-сценарій за допомогою цього методу, наведений нижче текст програми, правда злегка мною модифікований:
Зауважте, що скрип був прив'язаний до дати 4 вересня 2017 року і передавав сесійні cookies.
Я писав про цей стиль атаки в
Для чого це потрібно?
Для програмного забезпечення безпеки, що сканує журнали подій Windows або фаєрвола, кодування base64 запобігає виявлення рядка «WebClient» за простим текстовим шаблоном для захисту від виконання такого веб-запиту. І оскільки все "зло" шкідливого ПЗ потім завантажується і передається в наш PowerShell, цей підхід таким чином дозволяє повністю ухилятися від виявлення. Точніше, це я так думав спочатку.
Виявляється, з включенням просунутого логування журналу Windows PowerShell (див. мою статтю) ви зможете побачити завантажений рядок у журналі подій. Я як
Додамо додаткові сценарії
Хакери спритно приховують атаку PowerShell у макросах Microsoft Office, написаних на Visual Basic та інших скриптових мовах. Ідея полягає в тому, що жертва отримує повідомлення, наприклад, від служби доставки з вкладеним звітом у форматі .doc. Ви відкриваєте цей документ, який містить макрос, і зрештою він сам запускає шкідливий PowerShell.
Найчастіше сам сценарій Visual Basic обфусцірується так, що він вільно ухиляється від антивірусів та інших сканерів шкідливих програм. У дусі вже викладеного, я вирішив як вправу закодувати наведений вище PowerShell JavaScript. Нижче наведено результати моєї роботи:
Обфусцований JavaScript, що ховає наш PowerShell. Реальні хакери роблять це на раз-два.
Це ще одна з техніки, яку я зустрів на просторах мережі: використання оболонки Wscript.Shell для запуску кодованого PowerShell. До речі, JavaScript сам по собі є
У нашому випадку, шкідливий скрипт JS вкладений як файл c.doc.js розширенням. Windows зазвичай показує лише перший суфікс, тому він буде відображатися жертві як документ Word.
Значок JS відображається лише у піктограмі у вигляді сувоя. Не дивно, що багато людей відкриватимуть це вкладення, думаючи, що це Word-документ.
У прикладі я змінив наведений вище PowerShell, щоб завантажити сценарій з мого веб-сайту. Віддалений сценарій PS просто друкує Evil Malware. Як бачите, він зовсім не злий. Звісно, реальні хакери зацікавлені у отриманні доступу до ноутбука чи серверу, скажімо, через командну оболонку. У наступній статті я покажу, як це зробити за допомогою PowerShell Empire.
Сподіваюся, що для першої ознайомчої статті ми не надто глибоко поринули у тему. Тепер я дозволю вам перевести дух, і наступного разу ми почнемо розбирати реальні приклади атак з використанням fileless-малварі без зайвих вступних слів та підготовки.
Джерело: habr.com