Pentest Playbook

[Enumeration] PowerView & SharpView

Active Directory 환경에서 정보 수집(Enumeration)을 위한 도구

1. Tool Comparison

AD 기반의 점검 환경에 따라서 적절한 도구를 선택해서 사용

특징 PowerView (.ps1) SharpView (.exe)
기반 PowerShell Script .NET Assembly (C#)
장점 파이프라인(\|)을 통한 데이터 가공 용이 CLM(Constrained Language Mode) 우회, AMSI 회피 용이
데이터 출력 PowerShell 객체(Objects) 문자열(Strings)
단점 Windows Defender 탐지율 높음 결과가 Text로 출력되어 2차 가공 불편
실행 Import-Module .\PowerView.ps1 .\SharpView.exe {Command}

Note: SharpView는 인자값에 공백이 있을 경우 반드시 큰따옴표("")로 감싸야 한다.

2. 설정 및 실행

2.1. PowerView

AMSI 및 실시간 보호가 해제된 환경이거나 탐지 설정이 미흡한 경우 모듈을 로드하여 사용한다.

#공개된 Github에서 powerview.ps1 다운로드 및 저장위치 접근하여 명령어 입력
Import-Module .\PowerView.ps1

#명령어 실행 확인
Get-DomainPolicy

2.2. SharpView

sharpview 도구의 경우 exe 로 실행하게 되는데 배포할 때는 컴파일된 실행 파일을 사용하지 않음

#실행 예시
.\SharpView.exe Get-DomainPolicy

3. Basic Command

주요 함수 docs : https://powersploit.readthedocs.io/en/latest/Recon/

3.1. 기본 정보 조회

도메인 컨트롤로 식별 및 정책 조회 (Domain/LDAP Functions)

Get-Domain #도메인 정보
Get-DomainController #도메인 컨트롤러 목록
Get-DomainPolicy #도메인 정책

Get-DomainOU #도메인의 조직 단위 정보, 파이프 라인으로 원하는 값 출력 가능(findstr)
Get-DomainOU | findstr /b "name"

Get-DomainUser -KerberosPreauthNotRequired #사용자 정보수집 및 속성 지정 가능

3.2. 사용자 및 그룹

사용자 식별 및 권한 확인

#사용자 상세 정보 확인
Get-DomainUser -Identity {UserName}

#'admin'이 포함된 사용자 검색 (PowerView 전용)
Get-DomainUser | ? { $_.name -like "*admin*" }

#특정 그룹의 멤버 확인 (예: Domain Admins)
Get-DomainGroupMember -Identity "Domain Admins"

3.3. 컴퓨터 및 정책

조직에 적용된 정책 및 컴퓨터 목록 확인

# 도메인 내 컴퓨터 목록 확인
Get-DomainComputer
Get-DomainComputer | select name # name을 기준으로 컴퓨터 이름만 전체 조회
Get-NetShare -ComputerName EXAMPLE01 #특정 컴퓨터의 공유 폴더 조회

# GPO(그룹 정책) 목록 확인
Get-DomainGPO

#특정 컴퓨터 대상의 GPO 조회
Get-DomainGPO -ComputerIdentity {data} | select {column}

# 특정 컴퓨터에 적용된 GPO 확인
Get-DomainGPOApplied -ComputerIdentity {ComputerName}

3.4. 권한

3.5. Utility

도메인 사용자 이름을 SID로 변환 및 복원

#현재 사용자 확인
whoami

#사용자 이름을 SID 값으로 출력
ConvertTo-SID {username}
.\SharpView.exe ConvertTo-SID -Name {username}

#SID 값을 사용자 이름으로 출력
Convert-ADName -ObjectName {SID}
.\SharpView.exe Convert-ADName -ObjectName {SID}

도메인 사용자의 위치 조회 (Meta Functions)

Find-DomainUserLocation

도메인의 신뢰 관계 조회 (Domain Trust Functions)

Get-DomainTrust

참고

[1] PowerSploit

[2] PowerShell - findstr & select

명령어 실행 결과에서 원하는 데이터만 출력할 때 기준

구분 select (Select-Object) findstr
기반 PowerShell 객체 (Object) 기반 단순 텍스트 (String) 기반
작동 방식 원하는 속성(Column, 열)만 남김 특정 단어가 포함된 줄(Row, 행)만 남김
비유 엑셀에서 특정 열(A열, C열)만 선택 엑셀에서 Ctrl+F로 찾은 행만 필터링
데이터 유지 데이터 구조가 살아있음 (재가공 가능) 데이터 구조가 깨짐 (단순 글자가 됨)
속도 대량 데이터 처리 시 상대적으로 느림 텍스트 검색 속도는 매우 빠름
ESC

💡 검색 팁

  • #T1572 - 태그로 검색
  • persistence - 키워드로 검색