_ SEARCH_ARCHIVE [/]
[ CLOSE_SESSION ]
:(

SYSTEM_HALTED

Your device ran into a critical error due to an unauthorized shell command. The system was halted to prevent data leakage and kernel corruption.

SYS_SEARCH v1.0.4 // CORE_INDEX ⚠️ [!] NEVER TYPE "EXIT" OR "SHUTDOWN" [ESC] TO ABORT
>>
>> LOC: ARCHIVE_ROOT/tools/a_detailed_guide_on_evil-winrm // SEC_LEVEL: 01 // STATUS: CONFIDENTIAL

>

#GUIDE#PRIVILEGE ESCALATION#ACTIVE DIRECTORY#ENUMERATION
FILE_INFO_DECRYPTED
TRANSLATE: @exploit.com.ua

Інструмент Evil-winrm спочатку був розроблений командою Hackplayers. Мета цього інструменту — максимально спростити тестування на проникнення, особливо в середовищі Microsoft Windows. Evil-winrm працює з протоколом віддаленого керування PowerShell (PSRP). Системні та мережеві адміністратори часто використовують протокол Windows Remote Management (WinRM) для завантаження, редагування та передачі файлів. WinRM базується на протоколі SOAP, є «дружнім до фаєрволів» і працює через HTTP-транспорт за замовчуванням на порту 5985. Для отримання додаткової інформації про PowerShell remoting рекомендуємо відвідати офіційний сайт Microsoft.

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/enable-psremoting?view=powershell-7.3

Зміст

  • Вступ до Evil-winrm
  • Виявлення служби WinRM
  • Довідка Evil-winrm – список доступних функцій
  • Вхід із паролем у відкритому вигляді
  • Вхід із паролем у відкритому вигляді – з увімкненим SSL
  • Вхід із NTLM-хешем – атака Pass-The-Hash
  • Завантаження PowerShell-скриптів
  • Збереження логів за допомогою Evil-winrm
  • Вимкнення автодоповнення віддалених шляхів
  • Вимкнення кольорового інтерфейсу
  • Запуск виконуваних файлів
  • Перерахування служб за допомогою Evil-winrm
  • Передача файлів за допомогою Evil-winrm
  • Використання Evil-winrm через Docker
  • Вхід за допомогою ключа через Evil-winrm
  • Висновок

Вступ до Evil-winrm

Evil-winrm — це інструмент із відкритим вихідним кодом, написаний мовою Ruby, який максимально спрощує етап післяексплуатації (post-exploitation). Він має багато крутих функцій, серед яких: віддалений вхід із паролем у відкритому вигляді, вхід із шифруванням SSL, автентифікація за NTLM-хешем, вхід за ключами, передача файлів, логування тощо. Автори постійно оновлюють інструмент і додають нові можливості, що значно полегшує проведення внутрішнього аудиту безпеки. Використовуючи Evil-winrm, ми отримуємо PowerShell-сесію на віддаленому хості. Ця утиліта попередньо встановлена у всіх сучасних версіях Kali Linux, але за бажання ви можете завантажити її з офіційного репозиторію на GitHub.

Посилання на завантаження: https://github.com/Hackplayers/evil-winrm

Виявлення служби WinRM

Як ми вже згадували раніше, інструмент Evil-winrm використовується у випадках, коли на віддаленому хості активована служба WinRM. Щоб підтвердити це, ми можемо за допомогою nmap перевірити, чи відкриті два стандартні порти служби WinRM: 5985 та 5986. Результати сканування nmap підтвердили, що службу WinRM увімкнено, отже ми можемо використовувати Evil-winrm для входу в систему та виконання інших завдань, які ми розглянемо на наступних етапах.

nmap -p 5985,5986 192.168.1.19

Довідка Evil-winrm – список доступних функцій

Багато пентестерів та гравців CTF часто використовують цей інструмент під час внутрішніх аудитів. Проте чимало з нас досі не знають про додаткові можливості інструменту, які можуть значно полегшити процес оцінки безпеки. Щоб вивести список усіх доступних функцій Evil-winrm, достатньо використати прапорець -h, який відобразить усі команди довідки з їхніми описами. У цій статті ми охопимо якомога більше функцій і заохочуємо кожного протестувати й інші можливості самостійно.

evil-winrm -h

Вхід із паролем у відкритому вигляді

Припустимо, під час етапу збору інформації (enumeration) ми отримали пароль у відкритому вигляді та помітили, що на віддаленому хості увімкнено службу WinRM. У такому разі ми можемо встановити віддалену сесію з цільовою системою через Evil-winrm, вказавши IP-адресу хоста за допомогою прапорця -i, ім’я користувача — -u та пароль — -p. На зображенні нижче видно, що було встановлено віддалену сесію PowerShell.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987

Вхід із паролем у відкритому вигляді — з увімкненим SSL

Оскільки ми вже зазначали, що служба WinRM передає трафік через протокол HTTP, ми можемо використати функцію Secure Socket Layer (SSL), щоб зробити з’єднання безпечним. Після активації SSL наші дані передаватимуться через зашифрований рівень захищених сокетів. В Evil-winrm цього можна досягти за допомогою прапорця -S, додавши його до нашої попередньої команди для встановлення з’єднання з віддаленим хостом.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -S

Вхід із NTLM-хешем — атака Pass-The-Hash

Під час проведення внутрішнього аудиту або розв’язання CTF-завдань, пов’язаних із підвищенням привілеїв у Windows та експлуатацією Active Directory, ми часто отримуємо NTLM-хеш за допомогою експлуатації вразливостей або атак. У середовищі Windows ми можемо використати Evil-winrm для отримання PowerShell-сесії шляхом проведення атаки Pass-The-Hash, де замість пароля у відкритому вигляді ми надаємо хеш. Крім того, ця атака підтримує й інші протоколи. Передати хеш можна за допомогою прапорця -H, замінивши ним частину з паролем у раніше розглянутій команді.

evil-winrm -i 192.168.1.19 -u administrator -H 32196B56FFE6F45E294117B91A83BF38

Завантаження PowerShell-скриптів

Evil-winrm також має функцію, яка дозволяє використовувати скрипти з нашої основної машини. Ми можемо завантажувати скрипти безпосередньо в пам’ять, використовуючи прапорець -s разом із шляхом до директорії на локальній машині, де вони зберігаються. Крім того, інструмент підтримує роботу з функціями обходу AMSI, що часто є необхідним перед імпортом будь-якого скрипта. У наведеному нижче прикладі ми обходимо AMSI, а потім викликаємо скрипт Invoke-Mimikatz.ps1 з нашої системи на цільову машину, завантажуючи його прямо в пам’ять. Після цього можна використовувати будь-які команди Mimikatz. Для демонстрації ми зробили дамп облікових даних із кешу. Отримавши NTLM-хеш, можна знову виконати атаку Pass-the-Hash. Виконайте наведені нижче кроки, щоб відтворити цю атаку за допомогою Evil-winrm.

https://github.com/clymb3r/PowerShell/blob/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -s /opt/privsc/powershell
Bypass-4MSI
Invoke-Mimikatz.ps1
Invoke-Mimikatz

Збереження логів в Evil-winrm

Ця функція розроблена для збереження логів на локальній системі під час проведення розвідки (enumeration) після отримання віддаленої сесії. Під час участі в CTF або реального тестування на проникнення нам необхідно зберігати результати для звітності. Evil-winrm надає можливість зберігати всі логи на основну машину за допомогою прапорця -l. Ви можете встановити будь-яку віддалену сесію через Evil-winrm і додати прапорець -l — тоді всі логи будуть збережені в директорії /root/evil-winrm-logs із зазначенням дати та IP-адреси. У наведеному нижче прикладі ми використали команду ipconfig, і її вивід був одночасно збережений на нашій машині.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -l

Ми можемо переконатися в цьому, перевіривши вміст збережених логів: ви помітите, що інструмент зафіксував усе, що відбувалося в терміналі під час виконання команди ipconfig.

Вимкнення автодоповнення віддалених шляхів

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

 evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -N

Вимкнення кольорового інтерфейсу

Кожного разу, коли ми встановлюємо віддалену сесію через Evil-winrm, інструмент створює привабливий кольоровий інтерфейс командного рядка. Якщо ви все ж хочете вимкнути кольори, це можна зробити за допомогою прапорця -n під час встановлення сесії.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -n

Запуск виконуваних файлів

Ця функція розроблена для розв’язання практичних труднощів, з якими ми стикаємося під час аудиту, коли маємо PowerShell-сесію, але не можемо перейти у звичайний командний рядок (CMD). У таких сценаріях виникає потреба запускати файли формату .exe безпосередньо в сесії Evil-winrm. Припустимо, у вас є виконуваний файл, який потрібно запустити на цільовій системі.

Команда Hackplayers додала спеціальну можливість, яка дозволяє запускати будь-які виконувані файли прямо в PowerShell-сесії Evil-winrm. Подібно до того, як ми використовували прапорець -s для вказання шляху до PowerShell-скриптів, цього разу ми використовуємо прапорець -e для бінарних файлів .exe. У наведеному нижче прикладі ми вказуємо шлях до файлу WinPEAS.exe на локальній машині та запускаємо його за допомогою додаткової функції (Invoke-Binary) з меню Evil-winrm. Ця функція дозволяє виконувати будь-які бінарні файли, які зазвичай працюють у командній оболонці.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -e /opt/privsc
Bypass-4MSI
menu
Invoke-Binary /opt/privsc/winPEASx64.exe

Після того як ми вказали шлях до виконуваних файлів, ми можемо запускати будь-який файл на цільовій системі. У наведеному нижче прикладі ми викликаємо WinPEASx64.exe та запускаємо його на цільовій системі через Evil-winrm. Як бачимо, все працює належним чином.

Перерахування служб за допомогою Evil-winrm

Іноді інструменти для збору даних після експлуатації не можуть виявити назви служб, що запущені в системі. У такому разі можна скористатися Evil-winrm для пошуку активних служб. Для цього знову перейдіть у меню та скористайтеся функцією services. Вона виведе список усіх служб на скомпрометованому хості. Ця функція дуже корисна, коли в системі встановлено службу з незаключеним у лапки шляхом (unquoted service path), а інші інструменти не можуть визначити назву цієї служби.

Передача файлів за допомогою Evil-winrm

Без сумніву, Evil-winrm зробив усе можливое, щоб максимально спростити нашу роботу. Нам постійно потрібно передавати файли з атакуючої машини на віддалену для проведення розвідки або інших завдань. Замість того, щоб піднімати Python-сервер і завантажувати файл із цільової системи, можна просто використати команду upload, вказавши ім’я файлу. Це надзвичайно корисна функція, особливо коли на цільовій системі встановлені правила для вихідного трафіку або коли ви використовуєте Evil-winrm через проксі. У наведеному нижче прикладі ми завантажуємо файл notes.txt на цільову систему.

upload /root/notes.txt .

Аналогічно, ми можемо завантажити файл із цільової системи на машину атакуючого за допомогою команди download, вказавши ім’я файлу.

download notes.txt /root/raj/notes.txt

Ми можемо підтвердити успішне завантаження, перевіривши шлях, куди було збережено файл notes.txt на атакуючій машині.

Використання Evil-winrm через Docker

Цей інструмент також можна встановити в Docker. Якщо у вас є інша система в Docker, де встановлено Evil-winrm, ви можете викликати його звідти. Він працюватиме так само, як і в основній системі, без жодних проблем. Для цього використовуйте синтаксис Docker разом із командою Evil-winrm для його виклику з контейнера.

docker run --rm -ti --name evil-winrm  oscarakaelvis/evil-winrm -i 192.168.1.105 -u Administrator -p 'Ignite@987'

Вхід за допомогою ключа через Evil-winrm

Evil-winrm також дозволяє використовувати публічні та приватні ключі для встановлення віддаленої сесії, використовуючи прапорець -c для публічного ключа та -k для приватного. Крім того, ми можемо додати прапорець -S, щоб увімкнути SSL для шифрування та захисту нашого з’єднання.

evil-winrm -i 10.129.227.105 -c certificate.pem -k priv-key.pem -S

Висновок

Ми коротко розглянули інструмент Evil-winrm та його спеціальні функції, які значно полегшують проведення внутрішнього аудиту. Ми вивчили кілька технік встановлення віддаленої сесії, а також ознайомилися з деякими розширеними можливостями, що підвищують продуктивність як у реальних робочих середовищах, так і в CTF. Наостанок я хотів би подякувати команді Hackplayers за створення такого чудового інструменту. Сподіваюся, сьогодні ви дізналися щось нове. Вдалого хакінгу!

[!] SYSTEM_INCOMPATIBILITY_REPORT

FATAL_ERROR: MOBILE_DISPLAY_NOT_SUPPORTED

The requested resource "exploit.com.ua" is optimized for desktop terminal environments only.

Mobile UI decoding is currently in progress...