Metasploitを使用してテストマシンを悪用し、SAMファイルからハッシュを取得できました。コマンドをSYSTEM
として実行して取得しようとしましたが、実行できません。 SAMファイルからハッシュを抽出するよりポータブルな方法は何ですか?
編集:長年の放棄を経て編集することにしました。
Windows SAMファイルは、コピー/読み取りとは異なり、ロックされています/etc/shadow
Linuxシステムでは。代わりに、このツールを回避するには、メモリからハッシュを抽出します。
これを回避する方法はいくつかありますが、以下で説明します。
sekurlsa::logonpasswords
でmimikatzを実行します。
Mimikatzと同様の機能。それを実行すると、ハッシュがローカルファイルにダンプされます。
Meterpreterに組み込まれています。メモリからハッシュを抽出します。
レジストリから抽出することもできます(SYSTEM
アクセス権がある場合):
reg save hklm\sam %tmp%/sam.reg
およびreg save hklm\system %tmp%/system.reg
samdump2 system sam
SAMファイルはバックアップ場所に保存することもできます:C:\Windows\Repair\SAM
また、ツールには最低でもAdministrator
権限が必要であることにも触れておきます。 SYSTEM
アクセスが得られない限り、ほとんどのハッシュが取得されません。
これは権限の問題ではありません。WindowsはSAMファイルの排他ロックを保持します(これは、私の知る限り、読み込まれたレジストリハイブの標準的な動作です)。そのため、他のプロセスで開くことはできません。
ただし、最近のWindowsバージョンには「ボリュームシャドウコピー」と呼ばれる機能があり、これは主にバックアップ用に、ボリューム全体の読み取り専用のスナップショットを作成するように設計されています。ファイルロックは、データの整合性を確保するために存在するため、ファイルシステム全体のスナップショットを作成する場合は不要です。つまり、C:
のスナップショットを作成してマウントし、SAM
ファイルをコピーして、そのスナップショットを破棄することができます。
これを行う方法は、お使いのWindowsバージョンによって異なります。XP外部プログラムが必要、Vistaおよび7にはvssadmin create shadow
、Server 2008にはdiskshadow
コマンドがあります。ページLive Domain Controllersからハッシュを安全にダンプするこれに関する詳細プロセス、および手順とスクリプト。
または、samdump
などのツールがあり、LSASSプロセスをさまざまな方向から悪用して、すべてのパスワードハッシュをメモリから直接抽出します。これらはVSSスナップショットよりもはるかに高速ですが、システムをクラッシュさせるリスクが高くなります。
最後に、Googleはこのスニペットを引き出します。メタスプロイトを自分で使用したことがないので、その有用性を評価することはできません。
meterpreter> use priv
meterpreter> hashdump
シャドウボリュームの管理や外部ツールの使用を必要としない、より簡単なソリューションがあります。 Microsoftが提供するreg
コマンドを使用して、SAMとSYSTEMをコピーするだけです(Windows 7およびWindows Server 2008でテスト済み)。
reg save hklm\sam c:\sam
reg save hklm\system c:\system
(最後のパラメーターは、ファイルをコピーする場所です)
その後、パッケージsamdump2を使用してLinuxシステムでハッシュを抽出できます(Debianで利用可能:apt-get install samdump2
):
$ samdump2 system sam
Administrator:500:aad3b435b51404eeaad3b435b51404ee:c0e2874fb130015aec4070975e2c6071:::
*disabled* Guest:501:aad3b435b51404eeaad3b435b51404ee:d0c0896b73e0d1316aeccf93159d7ec0:::
Red Teaming /ペネトレーションテストでは多くの時間が最も明白な方法にアクセスできず(拒否され、Blue Teamによって監視されているなど)、利用可能なすべてのテクニックを知っているので、ここで説明されていない追加のメソッドを指定します。
システムがハンドルを持っている(通常どおりにコピー/削除できない)ファイルへのアクセスの回避策の1つは、上記のvssshadow.exe
です。
2番目-esentutil.exe
。
ハンドル付きのファイルのコピーを取る正確なコマンド:
esentutl.exe /y /vss c:\windows\ntds\ntds.dit /d c:\folder\ntds.dit
これは、SAM、SYSTEM、SECURITY、NTDS.DITなどに適用されます。
追伸impacketのパッケージにはesentutl.py
があります: https://github.com/SecureAuthCorp/impacket/blob/master/examples/esentutl.py
P.S.S. esentutl PoC画像
Obscuresecメソッドは、Windows Powershell 1.0対応マシンのローカルでの問題を克服します。私が知っているいくつかのターゲットを除外しますが、ねえ、いい仕事です! (ありがとうクリス)。
注:このような操作を実行するには、常に管理者権限が必要です
あなたは使うことができます
http://gallery.technet.Microsoft.com/scriptcenter/Get-PasswordFile-4bee091d
または別のソースから(最近追加した可能性があります)
https://github.com/obscuresec/PowerShell/blob/master/Get-PasswordFile
推奨読書:
リモートシステムを取得する場合は、SAMおよびSYSTEMハイブを上記と組み合わせて使用します。