
BlueGate Exploit 검증기 - OpenSSL DTLS를 UDP/3391 포트로 사용하는 CVE-2020-0609 및 CVE-2020-0610(BlueGate)용 RD Gateway 검증기.
Microsoft 원격 데스크톱 게이트웨이 취약점과 관련된 패치 동작을 원격으로 검증하기 위한 작은 검증 전용 Python 유틸리티입니다:
일반적으로 BlueGate 연구와 연관된 이 취약점은 Microsoft 원격 데스크톱 게이트웨이(RD Gateway) 에 영향을 미치며, 패치되지 않은 서버에서 인증되지 않은 원격 공격자가 임의 코드를 실행할 수 있게 할 수 있습니다.
이 유틸리티는 원격 코드 실행, 서비스 거부, 지속성 또는 페이로드 전달을 구현하지 않습니다.
단일 프로토콜 수준 검증 요청을 수행하고 RD Gateway 응답을 평가합니다.
| 속성 | 세부 사항 |
|---|
| CVE | CVE-2020-0609, CVE-2020-0610 |
| 구성 요소 | Microsoft 원격 데스크톱 게이트웨이 |
| 취약점 유형 | 원격 코드 실행 |
| 인증 필요 여부 | 아니요 |
| 사용자 상호 작용 | 아니요 |
| 공격 경로 | 네트워크 |
| 심각도 | 치명적(Critical) |
| CVSS v3.1 | 9.8 |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 주요 프로토콜 | RD Gateway UDP 전송 |
| 기본 UDP 포트 | 3391/UDP |
| 공개 명칭 | BlueGate |
영향을 받는 Windows Server 제품군은 다음과 같습니다:
Windows Server 2012
Windows Server 2012 R2
Windows Server 2016
Windows Server 2019
Microsoft의 2020년 1월 보안 업데이트 또는 이후 누적 업데이트를 설치한 시스템에는 관련 수정 사항이 포함되어 있어야 합니다.
RD Gateway 배포는 여러 관련 서비스를 노출할 수 있습니다.
예를 들어:
Microsoft RD Gateway
|
+------------+------------+
| |
TCP/443 UDP/3391
| |
HTTPS / RDWeb RD Gateway UDP
RPC-over-HTTPS DTLS 전송
RDWeb 포털은 브라우저에서 다음 주소로 볼 수 있습니다:
https://gateway.example/RDWeb/
RD Gateway 기능은 TCP/443을 통해서도 노출될 수 있습니다.
그러나 이 BlueGate 스타일 검증기가 테스트하는 공격 표면은 일반적으로 다음 주소에서 수신 대기하는 RD Gateway UDP 전송입니다:
UDP/3391
따라서 스캐너는 TCP/443을 통한 HTTPS가 아닌 UDP/3391을 통한 DTLS를 사용합니다.
스크립트를 포트 443으로 변경하면 다음을 테스트하는 것입니다:
UDP/443
이는 다음과 동일하지 않습니다:
TCP/443
취약점 검증기를 실행하기 전에 UDP/3391을 Nmap으로 확인할 수 있습니다:
nmap -Pn -sU -p3391 --reason <TARGET>
예시:
PORT STATE SERVICE
3391/udp open savant
savant 서비스 레이블은 단순히 Nmap의 포트 이름 매핑일 뿐이며 실제 서비스를 식별하지는 않습니다.
RD Gateway DTLS 서비스는 OpenSSL로 더 안정적으로 확인할 수 있습니다.
openssl s_client \
-dtls1 \
-connect <TARGET>:3391 \
-state
openssl s_client \
-dtls1_2 \
-connect <TARGET>:3391 \
-state
핸드셰이크가 성공하면 UDP/3391에서 DTLS 서비스가 응답하고 있음을 확인할 수 있습니다.
일반적인 성공 출력에는 다음이 포함됩니다:
SSL handshake has read ...
New, SSLv3, Cipher is ...
Protocol: DTLSv1
또는:
Protocol: DTLSv1.2
검증기는 다음을 수행합니다:
검증에는 인증 자격 증명이 필요하지 않습니다.
이 유틸리티는 의도적으로 다음을 포함하지 않습니다:
리버스 셸 없음
명령 실행 없음
익스플로잇 페이로드 없음
서비스 거부 루프 없음
반복적인 잘못된 패킷 전송 없음
다음 환경에서 테스트되었습니다:
Python 3
OpenSSL 명령줄 클라이언트
Linux
OpenSSL 확인:
openssl version
Python 확인:
python3 --version
스크립트가 시스템 openssl s_client 구현을 실행하므로 Python OpenSSL 모듈은 필요하지 않습니다.
이를 통해 다음과 같은 더 이상 사용되지 않는 Python/OpenSSL API에 의존했던 기존 BlueGate 구현에서 발생하는 호환성 문제를 피할 수 있습니다:
DTLSv1_client_method
기본 스캔:
python3 BlueGate.py <TARGET>
예시:
python3 BlueGate.py 192.0.2.10
기본 대상은 다음과 같습니다:
UDP/3391
python3 BlueGate.py \
-P 3391 \
192.0.2.10
python3 BlueGate.py \
--dtls 1 \
192.0.2.10
python3 BlueGate.py \
--dtls 1.2 \
192.0.2.10
두 가지를 모두 테스트하는 것이 유용할 수 있습니다:
python3 BlueGate.py --dtls 1 192.0.2.10
python3 BlueGate.py --dtls 1.2 192.0.2.10
패치된 RD Gateway의 예시 결과:
[*] Target: 192.0.2.10:3391/udp
[*] DTLS mode: 1.2
[*] Starting OpenSSL DTLS client...
[+] DTLS handshake completed.
[*] Probe (11 bytes): 0500070000004100010041
[*] Sending one validation packet...
[*] Response length: 16
[*] Response hex: 02000c0000000000ffffffffffff0080
[*] Status: 0x8000ffff
[+] PATCHED SIGNATURE RECEIVED
Server returned 0x8000ffff, which is
the rejection value used by the public
CVE detector to identify a patched host.
동일한 패치된 응답이 DTLS 1.0을 통해서도 반환될 수 있습니다:
Response length: 16
Response hex: 02000c0000000000ffffffffffff0080
Status: 0x8000ffff
0x8000ffff다음으로 끝나는 응답:
0x8000ffff
은 공개 BlueGate/RD Gateway 스캐너가 잘못된 단편화 조건이 거부되었음을 식별하는 데 사용하는 거부 값입니다.
따라서 도구는 다음을 보고합니다:
PATCHED SIGNATURE RECEIVED
이는 CVE-2020-0609/CVE-2020-0610에 대해 테스트된 특정 조건이 알려진 공개 탐지 기술을 사용하여 악용될 수 없음을 강력한 프로토콜 수준 증거로 제공합니다.
16바이트 RD Gateway 응답을 수신했지만 최종 DWORD가 다음이 아닌 경우:
0x8000ffff
도구는 다음을 보고합니다:
DETECTOR POSITIVE
이는 다음과 같이 처리해야 합니다:
잠재적으로 취약함
즉각적인 원격 코드 실행 성공의 증거가 아닙니다.
결과는 가급적 다음을 사용하여 뒷받침해야 합니다:
Windows 빌드 정보
설치된 KB 정보
Microsoft 패치 인벤토리
자격 증명 기반 취약점 스캐닝
취약점을 확정적으로 악용 가능하다고 보고하기 전에 말입니다.
애플리케이션 응답을 수신하지 못한 경우:
INCONCLUSIVE
도구는 의도적으로 시간 초과를 취약한 것으로 분류하지 않습니다.
시간 초과는 다음과 같은 원인으로 발생할 수 있습니다:
따라서:
응답 없음 != 취약함
공개 BlueGate/RDG 탐지 방식은 비정상적인 단편 수를 포함하는 RD Gateway 단편화 패킷을 사용합니다.
개념적으로:
DTLS 연결
|
v
+-----------------------+
| RD Gateway UDP 파서 |
+-----------------------+
|
| 단편화 검증 패킷
v
+-----------------------+
| 단편 검증 |
+-----------------------+
|
+---- 패치됨 ----> 거부
| 0x8000ffff
|
+---- 예상치 못함 --> 조사 필요
이 유틸리티가 사용하는 검증 패킷은 한 번만 전송됩니다.
이 프로젝트는 다음 용도로만 사용됩니다:
명시적 승인을 받은 시스템만 테스트하십시오.
저자는 이 소프트웨어의 사용 또는 수정으로 인해 발생하는 오용, 무단 액세스, 서비스 중단, 데이터 손실 또는 기타 결과에 대해 책임을 지지 않습니다.
탐지 방법론은 BlueGate 및 RD Gateway 보안 연구 커뮤니티에서 수행된 작업을 포함하여 Microsoft RD Gateway 취약점 CVE-2020-0609 및 CVE-2020-0610에 대한 공개적으로 문서화된 연구를 기반으로 합니다.
이 프로젝트는 주로 더 이상 사용되지 않는 pyOpenSSL DTLS 내부 대신 시스템 OpenSSL DTLS 구현을 사용하여 검증 워크플로를 현대화합니다.