Impacket для тестувальників на проникнення: методи зміни паролів
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
У цій статті пояснюється, як можна зловживати конфігураціями Active Directory, щоб примусово скинути паролі користувачів за допомогою інструментарію Impacket. Особливу увагу приділено impacket-changepasswd , що може використовувати право Reset Password ACE для захоплення облікового запису. Техніка підтримує кілька протоколів, включаючи SMB-SAMR, RPC-SAMR, LDAP і Kerberos.
Розслідування
У звіті представлений лабораторний сценарій, у якому одному користувачеві надано права Reset Password стосовно об’єкта іншого облікового запису. Описано різні підходи до автентифікації, включаючи plaintext облікові дані, Pass-the-Hash, Pass-the-Key та використання кешу Kerberos TGT для зміни паролів облікових записів через різні протоколи.
Запобігання
Захисники повинні регулярно перевіряти ACL Active Directory за допомогою таких інструментів, як BloodHound, щоб виявити надмірно дозволені права Reset Password. Застосування моделі владного адміністрування та використання групи безпеки Protected Users може значно зменшити експозицію. Також рекомендується реалізувати підпис LDAP та розгортання Credential Guard.
Відповідь
Якщо виявлено підозрілу активність, команди з безпеки повинні розслідувати Windows Event ID 4723, 4724, 4738, 4771, та 5136. Аналітикам слід переконатися, чи було скидання пароля авторизованим, та перевірити середовище на наявність незвичайного трафіку SAMR або зміни LDAP-довідника. Негайні дії повинні включати аудит дозволів постраждалого облікового запису та ротацію облікових даних для всіх потенційно скомпрометованих адміністраторів.
Потік Атаки
Ми все ще оновлюємо цю частину. Підпишіться, щоб отримати сповіщення
Сповістити МенеВиявлення
Ймовірне Використання Windows Hacktools [Частина1] (через cmdline)
Переглянути
Ймовірне Використання Windows Hacktools [Частина3] (через file_event)
Переглянути
Виявлення Невпевненого Маніпулювання Паролями Active Directory [Журнал Безпеки Microsoft Windows]
Переглянути
Виконання Симуляції
Передумова: Перевірка Телеметрії та Базових лімітів має бути пройденою.
Обґрунтування: У цьому розділі деталізується точне виконання техніки супротивника (TTP), розробленої для ініціювання правила виявлення. Команди та наратив ПОВИННІ безпосередньо відображати виявлені TTP та націлені на генерацію точної телеметрії, яку чекає логіка виявлення. Абстрактні або невідносні приклади можуть призвести до неправильної діагностики.
-
Наратив Нападу та Команди: Супротивник успішно скомпрометував обліковий запис користувача з делегованими дозволами або підвищив привілеї до рівня адміністрування домену. Щоб забезпечити тривалу стійкість і уникнути виявлення в пізнішій фазі операції, зловмисник вирішує скинути пароль відомого облікового запису служби. Використовуючи стандартні інструменти PowerShell (
Set-ADAccountPasswordornet user), зловмисник намагається змінити парольService_SVC. Ця дія є класичним прийомом «Життя за рахунок наявного» (Living off the Land), розробленим для змішання з рутинними адміністративними завданнями, але вона активує специфічні ID подій безпеки Windows (4724/4738), які правила виявлення здатні вловлювати. -
Скрипт Для Тестування Регресії:
# Симуляційний Скрипт: Скидання Пароля через PowerShell # Примітка: Це потрібно виконувати в контрольованому лабораторному середовищі з відповідними дозволами. $TargetUser = "Service_SVC" Write-Host "[*] Перевірка наявності цільового користувача..." -ForegroundColor Cyan if (Get-ADUser -Filter "SamAccountName -eq '$TargetUser'") { Write-Host "[+] Цільовий користувач $TargetUser знайдений. Продовження з симуляцією скидання пароля..." -ForegroundColor Green # Генерація Event ID 4724 / 4738 try { $NewPassword = ConvertTo-SecureString "SimulatedPass123!" -AsPlainText -Force Set-ADAccountPassword -Identity $TargetUser -NewPassword $NewPassword Write-Host "[+] УСПІХ: Скидання пароля ініційовано. Перевірте Логи Безпеки для Event ID 4724/4738." -ForegroundColor Green } catch { Write-Host "[-] ПОМИЛКА: Не вдалося скинути пароль. Переконайтеся, що ви працюєте як Адміністратор/Авторизований користувач." -ForegroundColor Red Write-Error $_ } } else { Write-Host "[-] ПОМИЛКА: Цільовий користувач $TargetUser не знайдений. Будь ласка, створіть користувача спочатку." -ForegroundColor Red } -
Команди Очищення:
# Скрипт Очищення: Відновлення оригінального стану $TargetUser = "Service_SVC" $OriginalPassword = ConvertTo-SecureString "Original_Safe_Pass_2025!" -AsPlainText -Force Write-Host "[*] Відновлення оригінального пароля для $TargetUser..." -ForegroundColor Cyan Set-ADAccountPassword -Identity $TargetUser -NewPassword $OriginalPassword Write-Host "[+] Очищення завершено." -ForegroundColor Green