From ab13285e4dfa28f31db6e755511efeaba9b9e3bb Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 18 Jul 2025 13:22:00 +0000 Subject: [PATCH] Translated ['src/windows-hardening/ntlm/README.md'] to ja --- hacktricks-preprocessor.py | 3 +- src/windows-hardening/ntlm/README.md | 52 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/hacktricks-preprocessor.py b/hacktricks-preprocessor.py index 5d070c39f..7c6d8b319 100644 --- a/hacktricks-preprocessor.py +++ b/hacktricks-preprocessor.py @@ -50,6 +50,7 @@ def ref(matchobj): pass #nDont stop on broken link else: try: + href = href.replace("`", "") # Prevent hrefs like: ../../generic-methodologies-and-resources/pentesting-network/`spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md` if href.endswith("/"): href = href+"README.md" # Fix if ref points to a folder if "#" in href: @@ -74,7 +75,7 @@ def ref(matchobj): logger.debug(f'Recursive title search result: {chapter["name"]}') except Exception as e: logger.debug(e) - logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}') + logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,Error getting chapter title))}') sys.exit(1) diff --git a/src/windows-hardening/ntlm/README.md b/src/windows-hardening/ntlm/README.md index a23c715a7..1f0a8ca89 100644 --- a/src/windows-hardening/ntlm/README.md +++ b/src/windows-hardening/ntlm/README.md @@ -10,7 +10,7 @@ ネットワークパケット内の **"NTLMSSP"** ヘッダーの存在は、NTLM 認証プロセスを示します。 -認証プロトコル - LM、NTLMv1、および NTLMv2 - のサポートは、`%windir%\Windows\System32\msv1\_0.dll` にある特定の DLL によって提供されます。 +認証プロトコル - LM、NTLMv1、NTLMv2 - のサポートは、`%windir%\Windows\System32\msv1\_0.dll` にある特定の DLL によって提供されます。 **重要なポイント**: @@ -25,7 +25,7 @@ ### GUI -_secpol.msc_ を実行 -> ローカルポリシー -> セキュリティオプション -> ネットワークセキュリティ: LAN マネージャー認証レベル。レベルは 0 から 5 の 6 段階です。 +_secpol.msc_ を実行 -> ローカルポリシー -> セキュリティオプション -> ネットワークセキュリティ: LAN マネージャー認証レベル。レベルは 0 から 5 までの 6 段階です。 ![](<../../images/image (919).png>) @@ -35,7 +35,7 @@ _secpol.msc_ を実行 -> ローカルポリシー -> セキュリティオプ ``` reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 5 /f ``` -可能な値: +可能な値: ``` 0 - Send LM & NTLM responses 1 - Send LM & NTLM responses, use NTLMv2 session security if negotiated @@ -44,44 +44,44 @@ reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t RE 4 - Send NTLMv2 response only, refuse LM 5 - Send NTLMv2 response only, refuse LM & NTLM ``` -## 基本 NTLM ドメイン認証スキーム +## 基本的な NTLM ドメイン認証スキーム 1. **ユーザー**が**資格情報**を入力します。 -2. クライアントマシンが**ドメイン名**と**ユーザー名**を送信する**認証リクエスト**を送ります。 +2. クライアントマシンが**認証要求**を送信し、**ドメイン名**と**ユーザー名**を送ります。 3. **サーバー**が**チャレンジ**を送信します。 -4. **クライアント**がパスワードのハッシュをキーとして**チャレンジ**を**暗号化**し、応答として送信します。 +4. **クライアント**が**チャレンジ**をパスワードのハッシュをキーとして**暗号化**し、応答として送信します。 5. **サーバー**が**ドメインコントローラー**に**ドメイン名、ユーザー名、チャレンジ、応答**を送信します。Active Directoryが構成されていない場合やドメイン名がサーバーの名前である場合、資格情報は**ローカルで確認**されます。 6. **ドメインコントローラー**がすべてが正しいか確認し、情報をサーバーに送信します。 -**サーバー**と**ドメインコントローラー**は、ドメインコントローラーがサーバーのパスワードを知っているため、**Netlogon**サーバーを介して**セキュアチャネル**を作成できます(それは**NTDS.DIT**データベース内にあります)。 +**サーバー**と**ドメインコントローラー**は、**Netlogon**サーバーを介して**セキュアチャネル**を作成できます。ドメインコントローラーはサーバーのパスワードを知っているため(それは**NTDS.DIT**データベース内にあります)。 ### ローカル NTLM 認証スキーム -認証は前述のものと同様ですが、**サーバー**は**SAM**ファイル内で認証を試みる**ユーザーのハッシュ**を知っています。したがって、ドメインコントローラーに尋ねる代わりに、**サーバーは自分で**ユーザーが認証できるかどうかを確認します。 +認証は前述のものと同様ですが、**サーバー**は**SAM**ファイル内で認証を試みる**ユーザーのハッシュ**を知っています。したがって、ドメインコントローラーに尋ねる代わりに、**サーバーは自分で**ユーザーが認証できるか確認します。 ### NTLMv1 チャレンジ **チャレンジの長さは 8 バイト**で、**応答は 24 バイト**の長さです。 -**ハッシュ NT (16 バイト)**は**3 つの 7 バイトの部分**に分割されます(7B + 7B + (2B + 0x00\*5)):**最後の部分はゼロで埋められます**。次に、**チャレンジ**は各部分で**別々に暗号化**され、**結果として得られた**暗号化バイトが**結合**されます。合計:8B + 8B + 8B = 24 バイト。 +**ハッシュ NT (16 バイト)**は**3 つの 7 バイトの部分**に分割されます(7B + 7B + (2B+0x00\*5)):**最後の部分はゼロで埋められます**。次に、**チャレンジ**は各部分で**別々に暗号化**され、**結果として得られた**暗号化バイトが**結合**されます。合計:8B + 8B + 8B = 24 バイト。 **問題**: - **ランダム性**の欠如 - 3 つの部分は**個別に攻撃**されて NT ハッシュを見つけることができます -- **DES は破られる可能性があります** +- **DESは破られる可能性があります** - 3 番目のキーは常に**5 つのゼロ**で構成されます。 -- **同じチャレンジ**が与えられた場合、**応答**は**同じ**になります。したがって、被害者に**"1122334455667788"**という文字列を**チャレンジ**として与え、**事前計算されたレインボーテーブル**を使用して応答を攻撃できます。 +- **同じチャレンジ**に対して**応答**は**同じ**になります。したがって、被害者に**"1122334455667788"**という文字列を**チャレンジ**として与え、**事前計算されたレインボーテーブル**を使用して応答を攻撃できます。 ### NTLMv1 攻撃 現在、制約のない委任が構成された環境を見つけることは少なくなっていますが、これは**構成された Print Spooler サービス**を**悪用できない**という意味ではありません。 -すでに AD にあるいくつかの資格情報/セッションを悪用して、**プリンターに対して認証を要求**することができます。次に、`metasploit auxiliary/server/capture/smb`または`responder`を使用して、**認証チャレンジを 1122334455667788**に設定し、認証試行をキャプチャし、**NTLMv1**を使用して行われた場合は**クラック**できるようになります。\ -`responder`を使用している場合は、**認証をダウングレード**するために`--lm`フラグを**使用してみる**ことができます。\ +すでに AD にあるいくつかの資格情報/セッションを悪用して、**プリンターに対して認証を要求**することができます。次に、`metasploit auxiliary/server/capture/smb`または`responder`を使用して、**認証チャレンジを 1122334455667788**に設定し、認証試行をキャプチャします。もしそれが**NTLMv1**を使用して行われた場合、**クラック**できるでしょう。\ +`responder`を使用している場合は、**フラグ `--lm`**を使用して**認証をダウングレード**しようとすることができます。\ _この技術では、認証は NTLMv1 を使用して行う必要があります(NTLMv2 は無効です)。_ -プリンターは認証中にコンピューターアカウントを使用し、コンピューターアカウントは**長くランダムなパスワード**を使用するため、一般的な**辞書**を使用して**クラック**することは**おそらくできません**。しかし、**NTLMv1**認証は**DES**を使用します([こちらに詳細](#ntlmv1-challenge))、したがって、DESのクラックに特化したサービスを使用すれば、クラックできるでしょう(例えば、[https://crack.sh/](https://crack.sh)や[https://ntlmv1.com/](https://ntlmv1.com)を使用できます)。 +プリンターは認証中にコンピューターアカウントを使用し、コンピューターアカウントは**長くランダムなパスワード**を使用するため、一般的な**辞書**を使用して**クラック**することは**おそらくできません**。しかし、**NTLMv1**認証は**DES**を使用します([こちらに詳細](#ntlmv1-challenge))。したがって、DESのクラックに特化したサービスを使用すれば、クラックできるでしょう(例えば、[https://crack.sh/](https://crack.sh)や[https://ntlmv1.com/](https://ntlmv1.com)を使用できます)。 ### hashcat を使用した NTLMv1 攻撃 @@ -149,7 +149,7 @@ bd760f388b6700 # this is part 2 586c # this is the last part ``` -I'm sorry, but I need the specific text you would like me to translate in order to assist you. Please provide the content you want translated. +I'm sorry, but I need the specific text you want me to translate in order to assist you. Please provide the content you would like translated. ```bash NTHASH=b4b9b02e6f09a9bd760f388b6700586c ``` @@ -185,7 +185,7 @@ LinuxからPass-the-Hashを使用してWindowsマシンでコード実行を取 ### Impacket Windowsコンパイルツール -[ここからWindows用のimpacketバイナリをダウンロードできます。](https://github.com/ropnop/impacket_static_binaries/releases/tag/0.9.21-dev-binaries) +[こちらからWindows用のimpacketバイナリをダウンロードできます。](https://github.com/ropnop/impacket_static_binaries/releases/tag/0.9.21-dev-binaries) - **psexec_windows.exe** `C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local` - **wmiexec.exe** `wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local` @@ -194,7 +194,7 @@ LinuxからPass-the-Hashを使用してWindowsマシンでコード実行を取 ### Invoke-TheHash -ここからpowershellスクリプトを取得できます: [https://github.com/Kevin-Robertson/Invoke-TheHash](https://github.com/Kevin-Robertson/Invoke-TheHash) +こちらからpowershellスクリプトを取得できます: [https://github.com/Kevin-Robertson/Invoke-TheHash](https://github.com/Kevin-Robertson/Invoke-TheHash) #### Invoke-SMBExec ```bash @@ -214,7 +214,7 @@ Invoke-SMBEnum -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff ``` #### Invoke-TheHash -この関数は**他のすべてのミックス**です。**複数のホスト**を渡すことができ、**除外**したいものを指定し、使用したい**オプション**を**選択**できます(_SMBExec, WMIExec, SMBClient, SMBEnum_)。**SMBExec**と**WMIExec**の**いずれか**を選択した場合、_**Command**_パラメータを指定しないと、単に**十分な権限**があるかどうかを**確認**します。 +この関数は**他のすべての混合**です。**複数のホスト**を渡すことができ、**除外**する人を指定し、使用したい**オプション**を**選択**できます(_SMBExec, WMIExec, SMBClient, SMBEnum_)。**SMBExec**と**WMIExec**の**いずれか**を選択した場合、_**Command**_パラメータを指定しないと、単に**十分な権限**があるかどうかを**確認**します。 ``` Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administ -ty h F6F38B793DB6A94BA04A52F1D3EE92F0 ``` @@ -236,15 +236,15 @@ wce.exe -s ::: ## Extracting credentials from a Windows Host -**Windowsホストから資格情報を取得する方法についての詳細は、** [**このページを読むべきです**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/ntlm/broken-reference/README.md)**。** +**Windowsホストから資格情報を取得する方法についての詳細は** [**このページを読むべきです**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/ntlm/broken-reference/README.md)**。** ## Internal Monologue attack -Internal Monologue Attackは、攻撃者が被害者のマシンからNTLMハッシュを**LSASSプロセスと直接やり取りすることなく**取得できるステルスな資格情報抽出技術です。Mimikatzとは異なり、メモリから直接ハッシュを読み取ることはなく、エンドポイントセキュリティソリューションやCredential Guardによって頻繁にブロックされることはありません。この攻撃は、**Security Support Provider Interface (SSPI)を介してNTLM認証パッケージ(MSV1_0)へのローカルコールを利用します**。攻撃者はまず、NTLM設定(例:LMCompatibilityLevel、NTLMMinClientSec、RestrictSendingNTLMTraffic)を**ダウングレード**してNetNTLMv1が許可されるようにします。その後、実行中のプロセスから取得した既存のユーザートークンを偽装し、既知のチャレンジを使用してNetNTLMv1応答を生成するためにローカルでNTLM認証をトリガーします。 +Internal Monologue Attackは、攻撃者が被害者のマシンからNTLMハッシュを**LSASSプロセスと直接やり取りすることなく**取得できるステルスな資格情報抽出技術です。Mimikatzとは異なり、Mimikatzはメモリから直接ハッシュを読み取るため、エンドポイントセキュリティソリューションやCredential Guardによって頻繁にブロックされます。この攻撃は、**Security Support Provider Interface (SSPI)を介してNTLM認証パッケージ(MSV1_0)へのローカルコールを利用します**。攻撃者はまず**NTLM設定をダウングレード**(例:LMCompatibilityLevel、NTLMMinClientSec、RestrictSendingNTLMTraffic)してNetNTLMv1が許可されるようにします。その後、実行中のプロセスから取得した既存のユーザートークンを偽装し、既知のチャレンジを使用してNetNTLMv1応答を生成するためにローカルでNTLM認証をトリガーします。 これらのNetNTLMv1応答をキャプチャした後、攻撃者は**事前計算されたレインボーテーブル**を使用して元のNTLMハッシュを迅速に回復でき、横移動のためのPass-the-Hash攻撃を可能にします。重要なことに、Internal Monologue Attackはネットワークトラフィックを生成せず、コードを注入せず、直接メモリダンプをトリガーしないため、Mimikatzのような従来の方法と比較して防御者が検出するのが難しくなります。 -NetNTLMv1が受け入れられない場合—強制されたセキュリティポリシーのために、攻撃者はNetNTLMv1応答を取得できない可能性があります。 +NetNTLMv1が受け入れられない場合—強制されたセキュリティポリシーのため、攻撃者はNetNTLMv1応答を取得できない可能性があります。 この場合に対処するために、Internal Monologueツールが更新されました:`AcceptSecurityContext()`を使用してサーバートークンを動的に取得し、NetNTLMv1が失敗した場合でも**NetNTLMv2応答をキャプチャ**します。NetNTLMv2は解読がはるかに難しいですが、限られたケースでリレー攻撃やオフラインブルートフォースの道を開きます。 @@ -255,7 +255,7 @@ PoCは**[https://github.com/eladshamir/Internal-Monologue](https://github.com/el **これらの攻撃を実行する方法についての詳細なガイドをこちらで読む:** {{#ref}} -../../generic-methodologies-and-resources/pentesting-network/`spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md` +../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {{#endref}} ## Parse NTLM challenges from a network capture @@ -266,7 +266,7 @@ PoCは**[https://github.com/eladshamir/Internal-Monologue](https://github.com/el Windowsには、ホストから発信されたNTLM(またはKerberos)認証が**同じ**ホストにリレーされてSYSTEM権限を取得するのを防ぐためのいくつかの緩和策があります。 -Microsoftは、MS08-068(SMB→SMB)、MS09-013(HTTP→SMB)、MS15-076(DCOM→DCOM)およびその後のパッチでほとんどの公開チェーンを破りましたが、**CVE-2025-33073**は、**SMBクライアントが*marshalled*(シリアライズされた)ターゲット情報を含むサービスプリンシパル名(SPN)を切り捨てる方法を悪用することで、保護を回避できることを示しています**。 +Microsoftは、MS08-068(SMB→SMB)、MS09-013(HTTP→SMB)、MS15-076(DCOM→DCOM)およびその後のパッチでほとんどの公開チェーンを破りましたが、**CVE-2025-33073**は、**SMBクライアントが*marshalled*(シリアライズされた)ターゲット情報を含むサービスプリンシパル名(SPN)を切り捨てる方法を悪用することで保護を回避できることを示しています**。 ### TL;DR of the bug 1. 攻撃者は、マシュアルされたSPNをエンコードした**DNS Aレコード**を登録します – 例: @@ -295,9 +295,9 @@ ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support ``` ### パッチと緩和策 -* **CVE-2025-33073** のKBパッチは、`mrxsmb.sys::SmbCeCreateSrvCall` にチェックを追加し、ターゲットにマシュールされた情報が含まれているSMB接続をブロックします(`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`)。 +* **CVE-2025-33073** のKBパッチは、`mrxsmb.sys::SmbCeCreateSrvCall` にチェックを追加し、ターゲットにマシャル情報が含まれているSMB接続をブロックします(`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`)。 * パッチが適用されていないホストでも反射を防ぐために**SMB署名**を強制します。 -* `*...*` に似たDNSレコードを監視し、強制ベクトル(PetitPotam、DFSCoerce、AuthIPなど)をブロックします。 +* `*...*` に似たDNSレコードを監視し、強制ベクトル(PetitPotam、DFSCoerce、AuthIP...)をブロックします。 ### 検出アイデア * クライアントIP ≠ サーバーIPの`NTLMSSP_NEGOTIATE_LOCAL_CALL`を含むネットワークキャプチャ。 @@ -305,7 +305,7 @@ krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support * 同じホストからのリモートSMB書き込みに続いて即座に発生するWindowsイベント4624/4648 SYSTEMログオン。 ## 参考文献 -* [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html) +* [NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html) * [MSRC – CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073) {{#include ../../banners/hacktricks-training.md}}