Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Powermad — PowerShell MachineAccountQuota 및 DNS 익스플로잇 도구 | Kitploit
도구/GitHubGitHub/kevin-robertson/powermad
Privilege EscalationReconnaissanceIdentity ManagementLateral MovementPenetration TestingAuthenticationRed Teaming
GitHubkevin-robertson/powermad

Powermad

PowerShell MachineAccountQuota 및 DNS 익스플로잇 도구

저장소 보기
1.5k1883년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Powermad_logo

PowerShell MachineAccountQuota 및 DNS 익스플로잇 도구

Wiki

  • https://github.com/Kevin-Robertson/Powermad/wiki

블로그 게시물

  • LLMNR/NBNS 스푸핑 너머 - Active Directory 통합 DNS 익스플로잇

함수

  • MachineAccountQuota 함수
  • DNS 함수
  • 동적 업데이트 함수
  • ADIDNS 함수
  • 기타 함수

MachineAccountQuota 함수

기본 Active Directory ms-DS-MachineAccountQuota 특성 설정은 모든 도메인 사용자가 도메인에 최대 10개의 머신 계정을 추가할 수 있도록 허용합니다. Powermad에는 실제 시스템을 AD에 연결하지 않고 ms-DS-MachineAccountQuota를 악용하기 위한 함수 세트가 포함되어 있습니다.

Get-MachineAccountAttribute

이 함수는 머신 계정 특성에 채워진 값을 반환할 수 있습니다.

예제:
  • 'test'라는 머신 계정의 'description' 값을 가져옵니다.
    Get-MachineAccountAttribute -MachineAccount test -Attribute discription

Get-MachineAccountCreator

이 함수는 머신 계정의 ms-DS-CreatorSID 속성을 활용하여 사용자 이름 또는 SID 목록과 연결된 머신 계정을 반환합니다. ms-DS-CreatorSID 속성은 머신 계정이 권한이 없는 사용자에 의해 생성된 경우에만 채워집니다.

예제:
  • 채워진 모든 ms-DS-CreatorSID 특성 목록을 가져옵니다.
    Get-MachineAccountCreator

Disable-MachineAccount

이 함수는 New-MachineAccount를 통해 추가된 머신 계정을 비활성화할 수 있습니다. 이 함수는 머신 계정을 생성한 동일한 사용자와 함께 사용해야 합니다.

예제:
  • test라는 머신 계정을 비활성화합니다.
    Disable-MachineAccount -MachineAccount test

Enable-MachineAccount

이 함수는 Disable-MachineAccount를 통해 비활성화된 머신 계정을 활성화할 수 있습니다. 이 함수는 머신 계정을 생성한 동일한 사용자와 함께 사용해야 합니다.

예제:
  • test라는 머신 계정을 활성화합니다.
    Enable-MachineAccount -MachineAccount test

New-MachineAccount

이 함수는 호스트 시스템의 Active Directory 연결 상태에 영향을 주지 않고 LDAP 추가 요청을 통해 도메인 컨트롤러에 직접 새 머신 계정을 추가할 수 있습니다.

LDAP 추가 요청은 시스템을 도메인에 가입할 때 사용되는 추가 요청을 모델로 합니다. 다음 속성이 설정됩니다(대부분 DC에서 유효성 검사됨):

  • objectClass = Computer
  • SamAccountName = 머신 계정 이름 뒤에 $ 포함
  • userAccountControl = 4096
  • DnsHostName = FQDN
  • ServicePrincipalName = FQDN과 계정 이름을 사용한 2개의 HOST 및 2개의 RestrictedKrbHost SPN
  • unicodePwd = 지정된 암호

새 머신 계정은 'Domain Computers' 그룹에 부여된 권한을 활용하거나 도메인 열거, DNS 익스플로잇 등을 위한 추가 계정으로 사용할 수 있습니다. 기본적으로 머신 계정에는 로컬 로그온 권한이 없습니다. 네트워크 자격 증명을 직접 수락하는 도구/클라이언트를 사용하거나 'runas /netonly' 또는 @harmj0y의 PowerView에 포함된 Invoke-UserImpersonation/Invoke-RevertToSelf를 사용할 수 있습니다.

  • https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon

표준 사용자로 생성된 머신 계정은 mS-DS-CreatorSID에 표준 사용자의 SID가 채워집니다.

참고: ms-DS-MachineAccountQuota는 인증된 사용자가 추가된 머신 계정을 AD에서 삭제할 수 있는 기능을 제공하지 않습니다. 작업을 클라이언트에 넘기는 것을 피하려면 계정을 제거하기 위해 상승된 권한이 필요합니다.

예제:
  • 새 머신 계정 추가
    New-MachineAccount -MachineAccount test

  • runas /netonly로 추가된 계정 사용
    runas /netonly /user:domain\test$ powershell

Remove-MachineAccount

이 함수는 권한 있는 계정으로 머신 계정을 제거합니다.

예제:
  • 도메인 관리자 자격 증명으로 test라는 머신 계정 제거
    Remove-MachineAccount -MachineAccount test -Credential $domainadmin

Set-MachineAccountAttribute

이 함수는 사용자가 쓰기 액세스 권한이 있는 경우 New-MachineAccount를 통해 추가된 계정의 일부 특성을 채울 수 있습니다. 이 함수는 머신 계정을 생성한 동일한 사용자와 함께 사용해야 합니다.

다음은 일반적으로 쓰기 액세스가 활성화된 일부 특성 목록입니다:

  • AccountDisabled
  • description
  • displayName
  • DnsHostName
  • ServicePrincipalName
  • userParameters
  • userAccountControl
  • msDS-AdditionalDnsHostName
  • msDS-AllowedToActOnBehalfOfOtherIdentity
  • SamAccountName
예제:
  • SamAccountName 특성에서 끝에 있는 '$' 제거
    Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test

  • 수정된 계정을 runas /netonly로 사용
    runas /netonly /user:domain\test powershell

Invoke-AgentSmith

이 함수는 New-MachineAccount를 활용하여 MachineAccountQuota를 통해 하나의 권한 없는 계정에서 가능한 많은 머신 계정을 재귀적으로 생성합니다. 자세한 내용은 다음 블로그 게시물을 참조하세요:

  • https://blog.netspi.com/machineaccountquota-transitive-quota

DNS 함수

기본적으로 인증된 사용자는 Active Directory 통합 DNS(ADIDNS) 영역에 대해 '모든 하위 개체 만들기' 권한을 가지고 있습니다. AD 영역에 현재 존재하지 않는 대부분의 레코드를 추가/삭제할 수 있습니다.

동적 업데이트 함수

Invoke-DNSUpdate

이 함수는 도메인 컨트롤러에서 보안 동적 업데이트의 기본 설정이 활성화된 경우 동적 DNS 레코드를 추가/삭제하는 데 사용할 수 있습니다. 현재 A, AAAA, CNAME, MX, PTR, SRV 및 TXT 레코드가 지원됩니다. Invoke-DNSUpdate는 '-g' 또는 'gsstsig' 옵션을 사용할 때 BIND의 nsupdate 도구를 모델로 합니다.

예제:
  • A 레코드 추가
    Invoke-DNSUpdate -DNSType A -DNSName www -DNSData 192.168.100.125

  • A 레코드 삭제
    Invoke-DNSUpdate -DNSType A -DNSName www.test.local

  • SRV 레코드 추가
    Invoke-DNSUpdate -DNSType SRV -DNSName _autodiscover._tcp.test.local -DNSData system.test.local -DNSPriority 100 -DNSWeight 80 -DNSPort 443

ADIDNS 함수

Disable-ADIDNSNode

이 함수는 ADIDNS 노드를 툼스톤 처리할 수 있습니다.

예제:
  • 와일드카드 레코드를 툼스톤 처리합니다.
    `Disable-ADIDNSNode -Node *

Enable-ADIDNSNode

이 함수는 툼스톤 처리된 노드를 유효한 레코드로 되돌릴 수 있습니다.

예제:
  • 와일드카드 레코드를 활성화합니다.
    Enable-ADIDNSNode -Node *

Get-ADIDNSNodeAttribute

이 함수는 DNS 노드 특성에 채워진 값을 반환할 수 있습니다.

예제:
  • test라는 노드의 dnsRecord 특성에 채워진 값을 가져옵니다.
    Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecord

Get-ADIDNSNodeOwner

이 함수는 ADIDNS 노드의 소유자를 반환할 수 있습니다.

예제:
  • test라는 노드의 소유자를 가져옵니다. Get-ADIDNSNodeOwner -Node test

Get-ADIDNSPermission

이 함수는 ADIDNS 노드 또는 영역의 DACL을 가져옵니다.

예제:
  • 도메인에 연결된 시스템에서 기본 Active Directory 통합 영역의 DACL을 가져옵니다.
    Get-ADIDNSPermission

  • 도메인에 연결된 시스템에서 test라는 DNS 노드의 DACL을 가져옵니다.
    Get-ADIDNSPermission -Node test

Get-ADIDNSZone

이 함수는 ADIDNS 영역을 반환할 수 있습니다.

예제:
  • 모든 ADIDNS 영역을 가져옵니다.
    Get-ADIDNSZone

Grant-ADIDNSPermission

이 함수는 DNS 노드 또는 영역 DACL에 ACE를 추가합니다.

예제:
  • "인증된 사용자"에 대한 와일드카드 레코드에 모든 권한을 추가합니다.
    Grant-ADIDNSPermission -Node * -Principal "authenticated users"

New-ADIDNSNode

이 함수는 암호화된 LDAP 추가 요청을 통해 Active Directory 통합 DNS(ADIDNS) 영역에 DNS 노드를 추가합니다.

예제:
  • ADIDNS 영역에 와일드카드 레코드를 추가하고 노드를 툼스톤 처리합니다.
    New-ADIDNSNode -Node * -Tombstone

New-DNSRecordArray

이 함수는 dnsRecord 특성에 대한 유효한 바이트 배열을 생성합니다.

예제:
  • 192.168.0.1을 가리키는 A 레코드에 대한 dnsRecord 배열을 생성합니다.
    New-DNSRecordArray -Data 192.168.0.1

New-SOASerialNumberArray

이 함수는 DNS 영역의 현재 SOA 일련 번호를 가져와 설정된 양만큼 증가시킵니다.

예제:
  • 현재 SOA 일련 번호에서 1 증가된 바이트 배열을 생성합니다.
    New-SOASerialNumberArray

Rename-ADIDNSNode

이 함수는 DNS 노드의 이름을 바꿀 수 있습니다.

예제:
  • test라는 DNS 노드의 이름을 test2로 바꿉니다.
    Rename-ADIDNSNode -Node test -NodeNew test2

Remove-ADIDNSNode

이 함수는 DNS 노드를 제거할 수 있습니다.

예제:
  • 와일드카드 노드를 제거합니다.
    Remove-ADIDNSNode -Node *

Revoke-ADIDNSPermission

이 함수는 DNS 노드 또는 영역 DACL에서 ACE를 제거합니다.

예제:
  • user1 계정과 연결된 GenericAll ACE를 제거합니다.
    Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAll

Set-ADIDNSNodeAttribute

이 함수는 DNS 노드 특성에 값을 추가, 채우기 또는 덮어쓸 수 있습니다.

예제:
  • test라는 노드의 쓰기 가능한 description 특성을 설정합니다.
    Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "do not delete"

Set-ADIDNSNodeOwner

이 함수는 DNS 노드의 소유자를 설정할 수 있습니다. SeRestorePrivilege가 있는 토큰이 필요합니다.

예제:
  • test라는 노드의 소유자를 user1로 설정합니다.
    Set-ADIDNSNodeOwner -Node test -Principal user1

기타 함수

Get-KerberosAESKey

이 함수는 알려진 사용자 이름과 암호에서 Kerberos AES 256 및 128 키를 생성할 수 있습니다. invoke-DNSUpdate에서 패스더해시를 테스트하는 데 사용할 수 있습니다.

예제:
  • 유효한 AD 사용자 [email protected]에 대한 키를 생성합니다.
    Get-KerberosAESKey -Salt TEST.LOCALuser
도구 다운로드