Windows Security Controls
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
アプリケーションホワイトリストは、システム上で存在し実行されることが許可された承認済みのソフトウェアアプリケーションまたは実行可能ファイルのリストです。目的は、環境を有害なマルウェアや、組織の特定のビジネスニーズに合致しない未承認のソフトウェアから保護することです。
AppLockerは、マイクロソフトのアプリケーションホワイトリストソリューションであり、システム管理者にユーザーが実行できるアプリケーションやファイルを制御する権限を与えます。これは、実行可能ファイル、スクリプト、Windowsインストーラーファイル、DLL、パッケージアプリ、パッケージアプリインストーラーに対して詳細な制御を提供します。 組織がcmd.exeとPowerShell.exeをブロックし、特定のディレクトリへの書き込みアクセスを制限することは一般的ですが、これらはすべて回避可能です。
ブラックリスト/ホワイトリストに登録されているファイル/拡張子を確認します:
このレジストリパスには、AppLockerによって適用された構成とポリシーが含まれており、システム上で強制されている現在のルールセットを確認する方法を提供します:
HKLM\Software\Policies\Microsoft\Windows\SrpV2
AppLockerポリシーをバイパスするための便利な書き込み可能フォルダー:AppLockerがC:\Windows\System32
またはC:\Windows
内の任意のものを実行することを許可している場合、このバイパスに使用できる書き込み可能フォルダーがあります。
一般的に信頼された "LOLBAS's" バイナリは、AppLockerを回避するのにも役立ちます。
不適切に書かれたルールも回避される可能性があります
例えば、<FilePathCondition Path="%OSDRIVE%*\allowed*"/>
の場合、どこにでも**allowed
というフォルダーを作成**すれば許可されます。
組織はしばしば**%System32%\WindowsPowerShell\v1.0\powershell.exe
** 実行可能ファイルをブロックすることに焦点を当てますが、他の PowerShell実行可能ファイルの場所(例えば、%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
やPowerShell_ISE.exe
)を忘れがちです。
DLLの強制は非常に稀に有効であり、システムにかかる追加の負荷や、何も壊れないことを確認するために必要なテストの量が理由です。したがって、DLLをバックドアとして使用することでAppLockerを回避するのに役立ちます。
ReflectivePickやSharpPickを使用して、任意のプロセスでPowershellコードを実行し、AppLockerを回避することができます。詳細については、https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-modeを確認してください。
ローカル資格情報はこのファイルに存在し、パスワードはハッシュ化されています。
資格情報(ハッシュ化されたもの)は、シングルサインオンの理由からこのサブシステムのメモリに保存されます。 LSAはローカルのセキュリティポリシー(パスワードポリシー、ユーザー権限など)、認証、アクセス トークンを管理します。 LSAは、提供された資格情報をSAMファイル内で確認し(ローカルログイン用)、ドメインユーザーを認証するためにドメインコントローラーと通信します。
資格情報はプロセスLSASS内に保存されます:Kerberosチケット、NTおよびLMのハッシュ、簡単に復号化可能なパスワード。
LSAはディスクにいくつかの資格情報を保存することがあります:
アクティブディレクトリのコンピュータアカウントのパスワード(到達不可能なドメインコントローラー)。
Windowsサービスのアカウントのパスワード
スケジュールされたタスクのパスワード
その他(IISアプリケーションのパスワードなど...)
これはアクティブディレクトリのデータベースです。ドメインコントローラーにのみ存在します。
Microsoft Defenderは、Windows 10およびWindows 11、Windows Serverのバージョンで利用可能なアンチウイルスです。一般的なペンテストツール(例:WinPEAS
)をブロックします。しかし、これらの保護を回避する方法**があります。
Defenderの状態を確認するには、PSコマンドレット**Get-MpComputerStatus
を実行できます(RealTimeProtectionEnabled
**の値を確認して、アクティブかどうかを知る):
列挙するには、次のコマンドを実行することもできます:
EFSは、対称鍵であるファイル暗号化キー(FEK)を使用してファイルを暗号化します。この鍵はユーザーの公開鍵で暗号化され、暗号化されたファイルの$EFS 代替データストリーム内に保存されます。復号が必要な場合、ユーザーのデジタル証明書の対応する秘密鍵を使用して$EFSストリームからFEKを復号します。詳細はこちらで確認できます。
ユーザーの操作なしでの復号シナリオには以下が含まれます:
ファイルやフォルダーがFAT32のような非EFSファイルシステムに移動されると、自動的に復号されます。
SMB/CIFSプロトコルを介してネットワーク上で送信される暗号化ファイルは、送信前に復号されます。
この暗号化方法により、所有者は暗号化されたファイルに透過的にアクセスできます。ただし、所有者のパスワードを変更してログインするだけでは復号は許可されません。
重要なポイント:
EFSは、ユーザーの公開鍵で暗号化された対称FEKを使用します。
復号にはユーザーの秘密鍵を使用してFEKにアクセスします。
FAT32へのコピーやネットワーク送信など、特定の条件下で自動的に復号が行われます。
暗号化されたファイルは、追加の手順なしで所有者がアクセスできます。
このサービスを使用したかどうかを確認するには、このパスが存在するか確認します:C:\users\<username>\appdata\roaming\Microsoft\Protect
ファイルへのアクセス権を確認するには、cipher /c <file>\を使用します。
フォルダー内でcipher /e
およびcipher /d
を使用して、すべてのファイルを暗号化および復号することもできます。
この方法では、被害者ユーザーがホスト内でプロセスを実行している必要があります。その場合、meterpreter
セッションを使用してユーザーのプロセスのトークンを偽装することができます(incognito
のimpersonate_token
)。または、ユーザーのプロセスにmigrate
することもできます。
Microsoftは、ITインフラストラクチャにおけるサービスアカウントの管理を簡素化するために**グループ管理サービスアカウント(gMSA)**を開発しました。従来のサービスアカウントは「パスワードの有効期限なし」設定が有効なことが多いのに対し、gMSAはより安全で管理しやすいソリューションを提供します:
自動パスワード管理:gMSAは、ドメインまたはコンピュータポリシーに応じて自動的に変更される複雑な240文字のパスワードを使用します。このプロセスはMicrosoftのキー配布サービス(KDC)によって処理され、手動でのパスワード更新が不要になります。
強化されたセキュリティ:これらのアカウントはロックアウトに対して免疫があり、対話的ログインには使用できないため、セキュリティが向上します。
複数ホストのサポート:gMSAは複数のホストで共有できるため、複数のサーバーで実行されるサービスに最適です。
スケジュールタスク機能:管理サービスアカウントとは異なり、gMSAはスケジュールタスクの実行をサポートします。
簡素化されたSPN管理:コンピュータのsAMaccountの詳細やDNS名に変更があった場合、システムは自動的にサービスプリンシパル名(SPN)を更新し、SPN管理を簡素化します。
gMSAのパスワードはLDAPプロパティ_msDS-ManagedPassword_に保存され、ドメインコントローラー(DC)によって30日ごとに自動的にリセットされます。このパスワードは、MSDS-MANAGEDPASSWORD_BLOBとして知られる暗号化データブロブであり、認可された管理者とgMSAがインストールされているサーバーのみが取得できるため、安全な環境が確保されます。この情報にアクセスするには、LDAPSのような安全な接続が必要であるか、接続は「Sealing & Secure」で認証される必要があります。
このパスワードはGMSAPasswordReaderで読み取ることができます:
また、gMSAのパスワードを読み取るためのNTLMリレー攻撃を実行する方法についてのウェブページも確認してください。
**ローカル管理者パスワードソリューション (LAPS)**は、Microsoftからダウンロード可能で、ローカル管理者パスワードの管理を可能にします。これらのパスワードは、ランダム化され、ユニークで、定期的に変更され、Active Directoryに中央集権的に保存されます。これらのパスワードへのアクセスは、ACLを通じて承認されたユーザーに制限されています。十分な権限が付与されると、ローカル管理者パスワードを読み取る能力が提供されます。
LAPSPowerShell 制約付き言語モードは、COMオブジェクトのブロック、承認された.NETタイプのみの許可、XAMLベースのワークフロー、PowerShellクラスなど、PowerShellを効果的に使用するために必要な多くの機能を制限します。
現在のWindowsでは、そのバイパスは機能しませんが、 PSByPassCLMを使用できます。
コンパイルするには 次のことが必要です 参照を追加 -> 参照 -> 参照 -> C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll
を追加し、プロジェクトを.Net4.5に変更します。
ReflectivePick または SharpPick を使用して、任意のプロセスで Powershell コードを実行し、制約モードを回避できます。詳細については、次を確認してください: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode。
デフォルトでは restricted に設定されています。このポリシーを回避する主な方法:
More can be found here
ユーザーを認証するために使用できるAPIです。
SSPIは、通信を希望する2台のマシンに適切なプロトコルを見つける役割を担います。これに対する推奨方法はKerberosです。次に、SSPIは使用される認証プロトコルを交渉します。これらの認証プロトコルはSecurity Support Provider (SSP)と呼ばれ、各Windowsマシン内にDLLの形で存在し、両方のマシンが同じものをサポートする必要があります。
Kerberos: 推奨されるもの
%windir%\Windows\System32\kerberos.dll
NTLMv1およびNTLMv2: 互換性の理由
%windir%\Windows\System32\msv1_0.dll
Digest: WebサーバーおよびLDAP、MD5ハッシュ形式のパスワード
%windir%\Windows\System32\Wdigest.dll
Schannel: SSLおよびTLS
%windir%\Windows\System32\Schannel.dll
Negotiate: 使用するプロトコルを交渉するために使用されます(KerberosまたはNTLM、デフォルトはKerberos)
%windir%\Windows\System32\lsasrv.dll
User Account Control (UAC)は、昇格された活動のための同意プロンプトを有効にする機能です。
UAC - User Account ControlTrickestを使用して、世界で最も高度なコミュニティツールによって駆動されるワークフローを簡単に構築および自動化します。 今すぐアクセスを取得:
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)