T1547.004 у MITRE ATT&CK: Пояснення Winlogon Helper
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
У статті пояснюється методи постійності Winlogon Helper DLL, який відслідковується як T1547.004, і розкриває, як супротивники змінюють ключі реєстру Winlogon для завантаження шкідливого коду під час входу користувача. У ній також згадуються реальні приклади, пов’язані з кампанією ToyBraker, шкідливим програмним забезпеченням KamiKakaBot і зразком, відомим як Mandela.exe. Основна увага приділяється змінам у реєстрі, які викликають автоматичне виконання шкідливих DLL або виконуваних файлів, коли система запускається або користувач входить.
Розслідування
Дослідники задокументували, як атакуючі створюють несанкціоновані облікові записи користувачів та змінюють значення реєстру Winlogon, такі як LegalNoticeText, DefaultUserName, AutoLogonCount і Shell, щоб зберегти доступ. Зразки шкідливих програм і випадки атак також показали використання інструментів командного рядка, таких як net user і reg add, для впровадження шкідливих налаштувань та запуску навантажень PowerShell під час процесу входу.
Захист
Захисникам слід ретельно контролювати і обмежувати зміни ключів реєстру Winlogon, застосовувати управління мінімальними привілеями при створенні облікових записів та використовувати управління додатками для блокування недовіренних або непідписанних DLL. Регулярний огляд запланованих завдань, служб і стартових локацій може також допомогти виявити несанкціоновані зміни постійності.
Відповідь
Коли виявляється підозріла активність реєстру Winlogon, потрібно ізолювати уражену кінцеву точку, захопити летючі докази та відновити змінені значення реєстру до відомого хорошого стану. Судово-медичне розслідування повинно тоді шукати будь-які додаткові механізми постійності та сканувати хост на наявність пов’язаних компонентів шкідливого ПО.
"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef persistence fill:#c2f0c2 classDef technique fill:#ffd699 classDef malware fill:#f4a6a6 %% Node definitions action_create_account["<b>Дія</b> – Створити локальний обліковий запис<br/><b>Методика</b>: T1136.001 Створити обліковий запис: Локальний обліковий запис<br/><b>Опис</b>: Додає нового локального користувача, використовуючи команду net user."] class action_create_account action tool_net_user["<b>Інструмент</b> – команда net user<br/><b>Призначення</b>: Створити або змінити локальні аккаунти Windows."] class tool_net_user tool action_modify_registry["<b>Дія</b> – Змінити реєстр Winlogon<br/><b>Методика</b>: T1112 Змінити реєстр<br/><b>Опис</b>: Змінює ключі Winlogon (Notify, Userinit, Shell, DefaultUserName, AutoLogonCount) за допомогою reg add."] class action_modify_registry action tool_reg_add["<b>Інструмент</b> – команда reg add<br/><b>Призначення</b>: Додати або змінити значення реєстру Windows."] class tool_reg_add tool persistence_winlogon_helper["<b>Постійність</b> – Winlogon Helper DLL<br/><b>Методика</b>: T1547.004 Winlogon Helper DLL<br/><b>Опис</b>: Завантажує шкідливий DLL або виконуваний файл під час входу користувача, надаючи розширені можливості виконання."] class persistence_winlogon_helper persistence technique_T1547_004["<b>Методика</b> – T1547.004<br/><b>Назва</b>: Winlogon Helper DLL<br/><b>Опис</b>: Реєструє DLL, що завантажується Winlogon, надаючи постійність та підвищення привілеїв."] class technique_T1547_004 technique malware_kamkaka["<b>Вірус</b> – KamiKakaBot<br/><b>Використовує</b>: постійність Winlogon Helper DLL."] class malware_kamkaka malware malware_mandela["<b>Вірус</b> – Mandela.exe<br/><b>Використовує</b>: постійність Winlogon Helper DLL."] class malware_mandela malware %% Connections showing flow action_create_account –>|використовує| tool_net_user action_modify_registry –>|використовує| tool_reg_add action_create_account –>|дозволяє| persistence_winlogon_helper action_modify_registry –>|дозволяє| persistence_winlogon_helper persistence_winlogon_helper –>|застосовує| technique_T1547_004 technique_T1547_004 –>|зафіксовано в| malware_kamkaka technique_T1547_004 –>|зафіксовано в| malware_mandela "
Потік атаки
Виявлення
Можливі точки постійності [ASEPs – Winlogon/AppInit вулики] (через registry_event)
Перегляд
Можливі точки постійності [ASEPs – Software/NTUSER вулик] (через cmdline)
Перегляд
Можливість виконання через приховані командні рядки PowerShell (через cmdline)
Перегляд
Можливі точки постійності [ASEPs – Software/NTUSER вулик] (через registry_event)
Перегляд
IOC (Електронні листи) для виявлення: T1547.004 Winlogon Helper в MITRE ATT&CK Пояснено
Перегляд
IOC (HashSha256) для виявлення: T1547.004 Winlogon Helper в MITRE ATT&CK Пояснено
Перегляд
Виявлення шкідливих змін у ключах реєстру Winlogon [Подія реєстру Windows]
Перегляд
Виконання моделювання
Передумова: Повинна бути пройдена перевірка телеметрії та базових параметрів.
Обґрунтування: Цей розділ описує точну реалізацію техніки противника (T1547.004), яка призначена для спрацьовування правила виявлення. Команди та розповідь безпосередньо забезпечують телеметрію, яку очікує логіка виявлення.
-
Опис атаки та команди:
Атакувальник, який отримав права локального адміністратора, хоче постійності між перезавантаженнями. Вони обирають класичну підміну Winlogon “Shell”, оскільки вона запускається до завантаження робочого столу користувача і обходить більшість продуктів AV для кінцевих точок. Кроки такі:- Створити шкідливий вантаж (наприклад,
C:Tempevil.exe). - Додати нове значення до
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShellвказуючи на вантаж. - Перевірити, що зміна набула чинності, а потім виконати вихід/вхід для досягнення виконання.
- Створити шкідливий вантаж (наприклад,
-
Сценарій регресійного тестування:
#------------------------------------------------- # Регресійний тест – Підмана Winlogon Shell (T1547.004) #------------------------------------------------- param( [string]$PayloadPath = "C:Tempevil.exe", [string]$BackupPath = "$env:Tempwinlogon_shell_backup.txt" ) # 1. Розгорнути підсерійний вантаж (проста копія calc.exe для демонстрації) if (-not (Test-Path $PayloadPath)) { Copy-Item "$env:SystemRootSystem32calc.exe" $PayloadPath -Force } # 2. Зберегти поточне значення Shell (якщо є) $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $currentShell = (Get-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue).Shell Set-Content -Path $BackupPath -Value $currentShell -Encoding UTF8 # 3. Встановити шкідливий значення Shell Set-ItemProperty -Path $regPath -Name Shell -Value $PayloadPath -Force Write-Host "[+] Шкідливий Shell Winlogon встановлено на $PayloadPath" Write-Host "[+] Оригінальне значення збережено до $BackupPath" -
Команди очищення:
#--------------------------------- # Очищення – Відновлення Winlogon Shell #--------------------------------- $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $backupFile = "$env:Tempwinlogon_shell_backup.txt" if (Test-Path $backupFile) { $original = Get-Content -Path $backupFile -Raw if ([string]::IsNullOrWhiteSpace($original)) { # Оригінальне значення було порожнім – видалити властивість Remove-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue } else { Set-ItemProperty -Path $regPath -Name Shell -Value $original -Force } Remove-Item $backupFile -Force Write-Host "[+] Shell Winlogon відновлено до оригінального стану." } else { Write-Warning "Файл резервної копії не знайдено – потрібна ручна перевірка." }