SOC Prime Bias: Високий

10 Jul 2026 18:23 UTC

Impacket для тестувальників на проникнення: методи зміни паролів

Author Photo
SOC Prime Team linkedin icon Стежити
Impacket для тестувальників на проникнення: методи зміни паролів
shield icon

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-довідника. Негайні дії повинні включати аудит дозволів постраждалого облікового запису та ротацію облікових даних для всіх потенційно скомпрометованих адміністраторів.

Потік Атаки

Ми все ще оновлюємо цю частину. Підпишіться, щоб отримати сповіщення

Сповістити Мене

Виконання Симуляції

Передумова: Перевірка Телеметрії та Базових лімітів має бути пройденою.

Обґрунтування: У цьому розділі деталізується точне виконання техніки супротивника (TTP), розробленої для ініціювання правила виявлення. Команди та наратив ПОВИННІ безпосередньо відображати виявлені TTP та націлені на генерацію точної телеметрії, яку чекає логіка виявлення. Абстрактні або невідносні приклади можуть призвести до неправильної діагностики.

  • Наратив Нападу та Команди: Супротивник успішно скомпрометував обліковий запис користувача з делегованими дозволами або підвищив привілеї до рівня адміністрування домену. Щоб забезпечити тривалу стійкість і уникнути виявлення в пізнішій фазі операції, зловмисник вирішує скинути пароль відомого облікового запису служби. Використовуючи стандартні інструменти PowerShell (Set-ADAccountPassword or net 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