
CVE-2019-0708 "BlueKeep" 취약점을 위한 빠른 스캐너.
이것은 Microsoft 원격 데스크톱의 CVE-2019-0708 취약점을 위한 빠르고 간단한 스캐너입니다. 현재 공용 인터넷에 약 90만 대의 시스템이 이 취약점에 노출되어 있어 WannaCry나 notPetya와 같은 웜이 곧 나타날 것으로 예상됩니다. 따라서 네트워크를 스캔하고 취약한 시스템에 패치를 적용하거나 최소한 NLA를 활성화하십시오.
이것은 명령줄 도구입니다. 소스 코드를 다운로드하여 직접 컴파일하거나 위 링크에서 Windows 또는 macOS용 사전 컴파일된 바이너리 중 하나를 다운로드할 수 있습니다.
이 도구는 전적으로 https://github.com/zerosum0x0/CVE-2019-0708 의 rdesktop 패치를 기반으로 합니다.
macOS와 Windows에서 쉽게 컴파일할 수 있도록 코드를 간소화하고
여러 대상을 스캔하는 기능을 추가했습니다.
이 도구는 며칠밖에 되지 않은 실험적인 것입니다. 하지만 masscan의 도움을 받아
전체 인터넷을 스캔하며 테스트하고 있으므로 많은 문제를 상당히 빠르게 해결하고 있습니다.
도움/의견이 있으면 트위터(@erratarob)로 연락주세요.
네트워크를 스캔하려면 다음과 같이 실행합니다:
rdpscan 192.168.1.1-192.168.1.255
각 주소에 대해 다음 세 가지 결과 중 하나가 생성됩니다:
대상 IP 주소에 아무것도 없을 때, 이전 버전은 "UNKNOWN - connection timed out" 메시지를 출력했습니다. 대규모 네트워크를 스캔할 때 이는 관심 없는 시스템에 대한 과도한 정보를 생성합니다. 따라서 새 버전은 명령줄에 -v (verbose)를 추가하지 않는 한 기본적으로 이 정보를 출력하지 않습니다.
작업자 수를 늘려 대규모 네트워크 스캔 속도를 높일 수 있습니다:
rdpscan --workers 10000 10.0.0.0/8
하지만 제 컴퓨터에서는 시스템 제한으로 인해 이 매개변수를 아무리 높게 설정해도 약 1500개의 작업자만 생성됩니다.
아래 두 번째 섹션에서 설명하는 masscan과 함께 사용하면 속도를 더 높일 수 있습니다.
세 가지 일반적인 응답이 있습니다:
대상이 안전하다고 생각하는 세 가지 주요 이유가 있습니다:
시스템이 취약점에 취약하다고 확인되었음을 의미합니다.
알 수 없는 변형은 매우 많습니다.
이 rdpscan 도구는 상대적으로 느리며 초당 수백 개의 대상만 스캔합니다.
대신 masscan을 사용하여 속도를 높일 수 있습니다.
masscan 도구는 약 1000배 빠르지만 대상에 대한 제한된 정보만 제공합니다.
단계는 다음과 같습니다:
masscan의 출력을 rdpscan에 전달하여 활성 상태로 알려진 대상만 스캔하도록 합니다.간단한 실행 방법은 명령줄에서 결합하는 것입니다:
masscan 10.0.0.0/8 -p3389 | rdpscan --file -
제가 하는 방법은 두 단계로 나누는 것입니다:
masscan 10.0.0.0/8 -p3389 > ips.txt
rdpscan --file ips.txt --workers 10000 >results.txt
어려운 점은 OpenSSL 라이브러리를 설치하고 시스템의 다른 버전과 충돌하지 않도록 하는 것입니다. 테스트한 Linux 버전의 몇 가지 예는 다음과 같지만 배포판마다 패키지 이름이 계속 변경됩니다. 또한 BoringSSL 및 LibreSSL과 같은 OpenSSL 호환 API에 대한 많은 옵션이 있습니다.
$ sudo apt install libssl-dev
$ sudo yum install openssl-devel
이 문제를 해결한 후에는 다음과 같이 모든 .c 파일을 함께 컴파일하면 됩니다:
$ gcc *.c -lssl -lcrypto -o rdpscan
이를 수행하는 Makefile을 디렉토리에 넣어 두었으므로 다음과 같이 간단히 실행할 수 있습니다:
$ make
코드는 C로 작성되었으므로 C 컴파일러가 설치되어 있어야 합니다. 예를 들어 다음과 같이 설치할 수 있습니다:
$ sudo apt install build-essential
이 섹션에서는 더 일반적인 빌드 오류에 대해 설명합니다.
ssl.h:24:25: fatal error: openssl/rc4.h: No such file or directory
이는 OpenSSL 헤더가 설치되지 않았거나 경로에 없음을 의미합니다. OpenSSL 바이너리가 설치되어 있어도 개발 관련 파일이 설치되어 있지 않을 수 있습니다. 헤더와 라이브러리 모두 설치되어 있어야 합니다.
Debian에서 설치하려면 다음을 수행하십시오:
$ sudo apt install libssl-dev
경로 문제를 해결하려면 컴파일 플래그 -I/usr/local/include 또는 이와 유사한 것을 추가하십시오.
링커 문제의 예는 다음과 같습니다:
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
macOS에서 여러 버전의 OpenSSL이 있어서 이 문제가 발생합니다. 경로를 하드코딩하여 수정합니다:
$ gcc *.c -lssl -lcrypto -I/usr/local/include -L/usr/local/lib -o rdpscan
다른 사람들의 의견에 따르면 Homebrew로 설치한 경우 다음 명령줄이 macOS에서 작동할 수 있습니다. 그러나 여전히 위의 링크 오류가 발생하는데, 이는 충돌하는 다른 OpenSSL 구성 요소를 설치했기 때문입니다.
gcc $(brew --prefix)/opt/openssl/lib/libssl.a $(brew --prefix)/opt/openssl/lib/libcrypto.a -o rdpscan *.c
위 섹션에서는 프로그램 실행을 위한 빠른 시작 팁을 제공했습니다. 이 섹션에서는 더 자세한 도움말을 제공합니다.
단일 대상을 스캔하려면 대상의 주소를 전달하십시오:
./rdpscan 192.168.10.101
IPv6 주소와 DNS 이름을 전달할 수 있습니다. 여러 대상을 전달할 수 있습니다. 예를 들면 다음과 같습니다:
./rdpscan 192.168.10.101 exchange.example.com 2001:0db8:85a3::1
시작-끝 IPv4 주소 또는 IPv4 CIDR 사양을 사용하여 주소 범위를 스캔할 수도 있습니다. IPv6 범위는 너무 커서 지원되지 않습니다.
./rdpscan 10.0.0.1-10.0.0.25 192.168.0.0/16