Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
rdpscan-BlueKeep — CVE-2019-0708 "BlueKeep" 취약점을 위한 빠른 스캐너. | Kitploit
도구/GitHubGitHub/gh0st0ne/rdpscan-bluekeep
ReconnaissanceVulnerability ScannersExploitationInformation GatheringNetwork SecurityPenetration Testing
GitHubgh0st0ne/rdpscan-bluekeep

rdpscan-BlueKeep

CVE-2019-0708 "BlueKeep" 취약점을 위한 빠른 스캐너.

저장소 보기
127년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Windows download macOS download Linux download Follow

rdpscan: CVE-2019-0708 BlueKeep 취약점 스캐너

이것은 Microsoft Remote Desktop의 CVE-2019-0708 취약점을 위한 빠르고 간편한 스캐너입니다. 현재 공용 인터넷에 약 900,000대의 머신이 이 취약점에 노출되어 있어, WannaCry 및 notPetya와 같은 웜이 곧 등장할 것으로 예상됩니다. 따라서 네트워크를 스캔하고 취약한 시스템에 패치를 적용하거나 적어도 NLA를 활성화하십시오.

이것은 명령줄 도구입니다. 소스 코드를 다운로드하여 직접 컴파일하거나 위 링크에서 Windows 또는 macOS용으로 미리 컴파일된 바이너리를 다운로드할 수 있습니다.

이 도구는 전적으로 https://github.com/zerosum0x0/CVE-2019-0708의 rdesktop 패치를 기반으로 합니다. macOS와 Windows에서 쉽게 컴파일할 수 있도록 코드를 간소화하고 여러 대상을 스캔하는 기능을 추가했습니다.

상태

이것은 며칠 되지 않은 실험적인 도구입니다. 하지만 전체 인터넷을 스캔하여 테스트 중이며(masscan을 활용), 많은 문제를 빠르게 해결해 나가고 있습니다. 도움말이나 의견은 트위터(@erratarob)로 연락 주세요.

  • 2019-05-38 - 더 나은 출력 결과 설명 및 그 의미에 대한 문서 추가 (아래 참조).
  • 2019-05-27 - Windows 및 macOS 바이너리 출시 (위 배지 클릭).
  • 2019-05-26 - Windows 네트워킹 문제 수정
  • 2019-05-25 - Linux 및 macOS에서 잘 작동, Windows에 일부 네트워크 오류 있음
  • 2019-05-24 - Linux 및 macOS에서 작동, Windows에 컴파일 버그 있음
  • 2019-05-23 - 현재 XCode 내 macOS에서 작업 중

주요 사용법

네트워크를 스캔하려면 다음과 같이 실행합니다:

root@kitploit:~
rdpscan 192.168.1.1-192.168.1.255

각 주소에 대해 다음 세 가지 결과 중 하나가 생성됩니다:

  • SAFE - 대상이 패치되었거나 최소한 CredSSP/NLA가 필요한 것으로 확인된 경우
  • VULNERABLE - 대상이 취약한 것으로 확인된 경우
  • UNKNOWN - 대상이 응답하지 않거나 프로토콜 오류가 발생한 경우

대상 IP 주소에 아무것도 없는 경우, 이전 버전에서는 "UNKNOWN - connection timed out" 메시지를 출력했습니다. 대규모 네트워크를 스캔할 때 이는 관심 없는 시스템에 대한 과도한 정보를 생성합니다. 따라서 새 버전은 기본적으로 이 정보를 출력하지 않으며, 명령줄에 -v(verbose)를 추가해야 출력됩니다.

워커 수를 늘려 대규모 네트워크 스캔 속도를 높일 수 있습니다:

root@kitploit:~
rdpscan --workers 10000 10.0.0.0/8

하지만 제 컴퓨터에서는 이 매개변수를 아무리 높게 설정해도 시스템 제한으로 인해 약 1500개의 워커만 생성됩니다.

아래 두 번째 섹션에 설명된 대로 masscan과 함께 사용하면 속도를 더 높일 수 있습니다.

결과 해석

세 가지 일반적인 응답이 있습니다:

  • SAFE - 대상이 패치되었거나 버그에 취약하지 않을 가능성이 높음을 의미합니다.
  • VULNERABLE - 대상이 이 버그에 취약하며 웜이 발생할 경우 감염될 가능성이 높음을 확인했음을 의미합니다.
  • UNKNOWN - 어느 쪽도 확인할 수 없음을 의미합니다. 일반적으로 대상이 응답하지 않거나 RDP를 실행하지 않기 때문이며, 이는 대부분의 응답에 해당합니다. 또한 대상이 리소스 부족 또는 네트워크 문제를 겪을 때도 이러한 결과가 많이 발생합니다. 마지막으로 프로토콜 오류로 인한 경우도 많습니다.

세 가지 주요 응답은 SAFE, VULNERABLE, UNKNOWN이지만, 각각 진단을 설명하는 추가 텍스트를 포함합니다. 이 섹션에서는 볼 수 있는 다양한 문자열을 설명합니다.

SAFE

대상이 안전하다고 판단하는 세 가지 주요 이유가 있습니다:

  • SAFE - Target appears patched 이는 대상이 트리거 요청에 응답하지 않을 때 발생합니다. 패치된 Windows 시스템이거나 Windows 10 또는 Unix와 같이 처음부터 취약하지 않은 시스템을 의미합니다.
  • SAFE - CredSSP/NLA required 이는 RDP 연결을 설정하기 전에 대상이 먼저 네트워크 수준 인증(Network Level Authentication)을 요구함을 의미합니다. 도구는 합법적인 자격 증명 없이 이 지점을 넘을 수 없으므로 대상이 패치되었는지 확인할 수 없습니다. 그러나 해커도 이 지점을 넘어 취약한 시스템을 악용할 수 없으므로 "안전"할 가능성이 높습니다. 다만 익스플로잇이 등장하면 유효한 사용자 이름/비밀번호를 가진 내부자가 패치되지 않은 시스템을 악용할 수 있습니다.
  • SAFE - not RDP 이는 시스템이 RDP가 아니라 같은 포트를 사용하는 다른 서비스(예: HTTP, SSH)이며, RDP가 아닌 응답을 생성함을 의미합니다. 단, 식별 가능한 프로토콜 대신 서버가 RST 또는 FIN 패킷으로 응답하는 경우 SAFE 대신 UNKNOWN으로 식별됩니다.

VULNERABLE

시스템이 버그에 취약하다는 것을 확인했음을 의미합니다.

  • VULNERABLE - got appid 시스템이 취약할 때의 유일한 응답입니다.

UNKNOWN

UNKNOWN에는 수많은 변형이 있습니다.

  • UNKNOWN - no connection - timeout 이것은 단연 가장 흔한 응답으로, 대상 IP 주소가 전혀 응답하지 않을 때 발생합니다. 실제로 워낙 흔하기 때문에 대규모 주소 범위를 스캔할 때는 보통 생략됩니다. 활성화하려면 -v(verbose) 플래그를 추가해야 합니다.
  • UNKNOWN - no connection - refused (RST) 이는 두 번째로 흔한 응답으로, 대상이 존재하고 네트워크 트래픽에 응답하지만 RDP를 실행하지 않아 TCP RST 패킷으로 연결을 거부할 때 발생합니다.
  • UNKNOWN - RDP protocol error - receive timeout 이는 세 번째로 흔한 응답으로, RDP 연결이 성공적으로 설정되었지만 서버가 더 이상 응답하지 않을 때 발생합니다. 이는 네트워크 오류 또는 대상 시스템이 어떤 이유로 과부하된 경우에 발생합니다. 또한 NAT 뒤에서 너무 많은 연결로 과부하가 걸린 경우처럼 로컬 측의 네트워크 오류일 수도 있습니다.
  • UNKNOWN - no connection - connection closed 이는 연결이 설정되었지만(TCP SYN-ACK) 즉시 연결이 종료됨(RST 또는 FIN)을 의미합니다. 다음과 같은 여러 이유로 발생할 수 있으며, 구분할 수 없습니다:
    • RDP를 실행 중이지만 리소스 부족 등으로 연결을 닫는 경우
    • RDP가 아니며, 보낸 RDP 요청을 수용하지 않아 정상적인 오류 메시지 대신(그러면 SAFE - not RDP가 트리거됨) 갑자기 연결을 닫는 경우
    • IPS, 방화벽, NAT 같은 중간 장치가 이 연결을 적대적이라고 판단하거나 리소스 부족으로 연결을 닫는 경우
    • 인터넷 스캔 시 확인되지 않은 기타 이유 (많은 이상한 현상이 발생함)
  • UNKNOWN - no connection - host unreachable (ICMP error) 원격 네트워크에서 호스트에 도달할 수 없거나 실행 중이 아니라고 보고합니다. 해당 호스트가 살아 있어야 한다고 생각되면 나중에 다시 시도하십시오.
  • UNKNOWN - no connection - network unreachable (ICMP error) 원격 측에 (일시적인) 네트워크 오류가 있습니다. 해당 네트워크가 작동 중이어야 한다고 생각되면 나중에 다시 시도하십시오.
  • UNKNOWN - RDP protocol error RDP 프로토콜에서 손상이 발생했음을 의미합니다. 원격 측이 잘못 구현했거나(Windows 시스템이 아님), 일시적인 네트워크 오류를 잘못 처리하거나, 기타 이유일 수 있습니다.
  • UNKNOWN - SSL protocol error Windows Vista 이후 RDP는 SSL을 통해 실행되도록 STARTTLS 프로토콜을 사용합니다. 이 계층은 위와 같은 자체 문제가 있으며, 기본 네트워크 오류를 잘못 처리하거나 호환성 문제가 있는 시스템과 통신을 시도하는 경우가 포함됩니다. 여기서 매우 긴 오류 메시지(예: SSL3_GET_RECORD:wrong version)가 표시된다면, 상대방의 SSL 버그 또는 사용 중인 SSL 라이브러리의 버그 때문입니다.

masscan과 함께 사용하기

이 rdpscan 도구는 상당히 느려서 초당 수백 개의 대상만 스캔합니다. 대신 masscan을 사용하여 속도를 높일 수 있습니다. masscan 도구는 약 1000배 빠르지만 대상에 대한 제한된 정보만 제공합니다.

단계는 다음과 같습니다:

  • 먼저 masscan으로 주소 범위를 스캔하여 포트 3389(또는 사용 중인 포트)에 응답하는 호스트를 빠르게 찾습니다.
  • 둘째, masscan의 출력을 rdpscan에 전달하여 활성 상태로 확인된 대상만 스캔합니다.

간단한 실행 방법은 명령줄에서 결합하는 것입니다:

root@kitploit:~
masscan 10.0.0.0/8 -p3389 | rdpscan --file -

제가 사용하는 방법은 두 단계로 나누는 것입니다:

root@kitploit:~
masscan 10.0.0.0/8 -p3389 > ips.txt
rdpscan --file ips.txt --workers 10000 >results.txt

빌드

어려운 부분은 OpenSSL 라이브러리를 설치하고 시스템의 다른 버전과 충돌하지 않도록 하는 것입니다. Debian Linux에서는 다음과 같이 합니다:

root@kitploit:~
$ sudo apt install libssl-dev

이 문제를 해결한 후에는 모든 .c 파일을 다음과 같이 함께 컴파일합니다:

root@kitploit:~
$ gcc *.c -lssl -lcrypto -o rdpscan

디렉터리에 Makefile을 포함시켜 두었으므로 다음과 같이 간단히 실행할 수 있습니다:

root@kitploit:~
$ make

코드는 C로 작성되었으므로 C 컴파일러가 설치되어 있어야 합니다. 예를 들어 다음과 같이 설치할 수 있습니다:

root@kitploit:~
$ sudo apt install build-essential

일반적인 빌드 오류

이 섹션에서는 더 명백한 빌드 오류를 설명합니다.

root@kitploit:~
ssl.h:24:25: fatal error: openssl/rc4.h: No such file or directory

이는 OpenSSL 헤더가 설치되지 않았거나 경로에 없음을 의미합니다. OpenSSL 바이너리가 설치되어 있어도 개발용 파일이 설치되지 않았을 수 있습니다. 헤더와 라이브러리 모두 설치되어 있어야 합니다.

Debian에서 설치하려면:

root@kitploit:~
$ sudo apt install libssl-dev

경로 문제를 해결하려면 컴파일 플래그 -I/usr/local/include 등을 추가합니다.

링커 문제의 예:

root@kitploit:~
Undefined symbols for architecture x86_64:
"_OPENSSL_init_ssl", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_RSA_get0_key", referenced from:
    _rdssl_rkey_get_exp_mod in ssl-d5fdf5.o
"_SSL_CTX_set_options", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_X509_get_X509_PUBKEY", referenced from:
    _rdssl_cert_to_rkey in ssl-d5fdf5.o

여러 버전의 OpenSSL이 있기 때문에 macOS에서 이 문제가 발생합니다. 경로를 하드코딩하여 해결합니다:

root@kitploit:~
$ gcc *.c -lssl -lcrypto -I/usr/local/include -L/usr/local/lib -o rdpscan

다른 사람들의 의견에 따르면 Homebrew로 설치한 경우 macOS에서 다음 명령줄이 작동할 수 있습니다. 하지만 여전히 위의 링크 오류가 발생하는데, 이는 충돌하는 다른 OpenSSL 구성 요소를 설치했기 때문입니다.

root@kitploit:~
gcc $(brew --prefix)/opt/openssl/lib/libssl.a $(brew --prefix)/opt/openssl/lib/libcrypto.a -o rdpscan *.c

실행

위 섹션에서는 프로그램 실행에 대한 빠른 시작 팁을 제공했습니다. 이 섹션에서는 더 자세한 도움말을 제공합니다.

단일 대상을 스캔하려면 대상의 주소를 전달합니다:

root@kitploit:~
./rdpscan 192.168.10.101

IPv6 주소와 DNS 이름을 전달할 수 있습니다. 여러 대상을 전달할 수도 있습니다. 예:

root@kitploit:~
./rdpscan 192.168.10.101 exchange.example.com 2001:0db8:85a3::1

시작-끝 IPv4 주소 또는 IPv4 CIDR 표기법을 사용하여 주소 범위를 스캔할 수도 있습니다. IPv6 범위는 너무 커서 지원되지 않습니다.

root@kitploit:~
./rdpscan 10.0.0.1-10.0.0.25 192.168.0.0/16

기본적으로 한 번에 100개의 대상만 스캔합니다. --workers 매개변수로 이 숫자를 늘릴 수 있습니다. 하지만 이 매개변수를 아무리 높게 설정해도 실제로 시스템에 따라 한 번에 약 500~1500개의 워커가 최대입니다.

root@kitploit:~
./rdpscan --workers 1000 10.0.0.0/24

명령줄에 대상을 지정하는 대신 --file 매개변수를 사용하여 파일에서 로드할 수 있습니다:

root@kitploit:~
./rdpscan --file ips.txt

파일 형식은 한 줄에 하나의 주소, 이름 또는 범위입니다. 또한 masscan에서 생성된 텍스트를 사용할 수 있습니다. 추가 공백은 제거되고, 빈 줄은 무시되며, 주석 줄은 무시됩니다. 주석은 # 문자 또는 // 문자로 시작하는 줄입니다.

출력은 stdout으로 전송되며 VULNERABLE, SAFE 또는 UNKNOWN 상태를 표시합니다. 각각에 대한 추가 이유가 있을 수 있습니다. 이러한 이유는 위에서 설명되었습니다.

root@kitploit:~
211.101.37.250 - SAFE - CredSSP/NLA required
185.11.124.79 - SAFE - not RDP - SSH response seen
125.121.137.42 - UNKNOWN - no connection - refused (RST)
40.117.191.215 - SAFE - CredSSP/NLA required
121.204.186.182 - SAFE - CredSSP/NLA required
99.8.11.148 - SAFE - CredSSP/NLA required
121.204.186.114 - SAFE - CredSSP/NLA required
49.50.145.236 - SAFE - CredSSP/NLA required
106.12.74.155 - VULNERABLE - got appid
222.84.253.26 - SAFE - CredSSP/NLA required
144.35.133.109 - UNKNOWN - RDP protocol error - receive timeout
199.212.226.196 - UNKNOWN - RDP protocol error - receive timeout
183.134.58.152 - UNKNOWN - no connection - refused (RST)
83.162.246.149 - VULNERABLE - got appid

추가 unix 명령어(grep, cut)로 처리할 수 있습니다. 취약한 시스템만 목록으로 보려면:

root@kitploit:~
./rdpscan 10.0.0.0/8 | grep 'VULN' | cut -f1 -d'-'

-dddd 매개변수는 진단(diagnostic) 정보를 의미하며, d를 많이 추가할수록 더 많은 세부 정보가 출력됩니다. 이 정보는 stdout 대신 stderr로 전송되므로 스트림을 분리할 수 있습니다. bash에서는 다음과 같이 수행합니다:

root@kitploit:~
./rdpscan --file myips.txt -ddd 2> diag.txt 1> results.txt

진단 정보

-d 매개변수를 추가하면 연결에 대한 진단 정보가 stderr에 출력됩니다.

root@kitploit:~
./rdpscan 62.15.34.157 -d

[+] [62.15.34.157]:3389 - connecting...
[+] [62.15.34.157]:3389 - connected from [10.1.10.133]:49211
[+] [62.15.34.157]:3389 - SSL connection
[+] [62.15.34.157]:3389 - version = v4.8
[+] [62.15.34.157]:3389 - Sending MS_T120 check packet
[-] [62.15.34.157]:3389 - Max sends reached, waiting...
62.15.34.157    - SAFE - Target appears patched

macOS/Linux에서는 일반적인 방식으로 stdout과 stderr를 별도의 파일로 리디렉션할 수 있습니다:

root@kitploit:~
./rdpscan --file ips.txt 2> diag.txt 1> results.txt

SOCKS5 및 Tor (재미로)

SOCKS5 지원이 포함되어 있습니다:

root@kitploit:~
./rdpscan --file ips.txt --socks5 localhost --socks5port 9050

연결 문제를 악화시켜 훨씬 더 많은 "UNKNOWN" 결과를 얻을 수 있습니다.

도구 다운로드