首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rdpscan:一款BlueKeep快速扫描工具

Rdpscan:一款BlueKeep快速扫描工具

作者头像
FB客服
发布2019-09-11 17:07:19
2.4K0
发布2019-09-11 17:07:19
举报
文章被收录于专栏:FreeBufFreeBuf

这是一款快速的CVE-2019-0708漏洞扫描工具。目前,公共互联网上大约有900,000台机器容易受到这种漏洞的影响,这还是一个命令行工具。您可以下载源代码并自行编译,也可以从上面的链接下载一个用于Windows或macOS的预编译二进制文件。

此工具完全基于https://github.com/zerosum0x0/CVE-2019-0708的rdesktop补丁。我只是修改了代码,也可以在macOS和Windows上轻松编译,并添加了扫描多个目标的功能。

状态

这只是几天的实验。但是,我正在通过扫描整个互联网来测试它(借助于masscan,所以我很快就解决了很多问题。你可以尝试联系我(@erratarob)寻求帮助/评论。

1.2019-05-38 - 输出完善的结果描述,以及文档的含义(见下文)。 2.2019-05-27 - 发布了Windows和macOS二进制文件。 3.2019-05-26 - 修复Windows网络问题 4.2019-05-25 - 在Linux和macOS运行良好,但Windows有一些网络错误 5.2019-05-24 - 适用于Linux和macOS,但Windows有一些编译错误 6.2019-05-23 - 目前在XCode中处理macOS

主要用途

要扫描网络,如下运行:

rdpscan 192.168.1.1-192.168.1.255

这会为每个地址生成3个结果中的一个:

1.SAFE - 目标是安全的

2.VULNERABLE - 目标是脆弱的

3.UNKNOWN - 目标没有响应或有一些协议失败

您可以通过增加工作人员数量来提高扫描大型网络的速度:

rdpscan --workers 10000 10.0.0.0/8

使用masscan

这个rdpscan工具相当慢,每秒只能扫描几百个目标。你可以masscan用来加快速度。该masscan工具的速度大约快1000倍,但只能提供有限的目标信息。

步骤是:

1.首先使用masscan扫描地址范围,以快速查找在端口3389(或您使用的任何端口)上响应的主机。

2.第二次输入masscaninto 的输出rdpscan,因此它只需要扫描我们知道的活动目标。

运行它的简单方法是在命令行上组合:

masscan 10.0.0.0/8 -p3389 | rdpscan --file -

我这样做的方式分为两步:

masscan 10.0.0.0/8 -p3389 > ips.txtrdpscan --file ips.txt --workers 10000 >results.txt

编译

困难的部分是安装OpenSSL库,而不是与系统上的其他版本冲突。我测试的Linux版本的一些示例如下,但它们不断将包名称从一个分发更改为下一个分发。此外,OpenSSL兼容API有很多选项,例如BoringSSL和LibreSSL。

$ 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

这意味着您要么没有安装OpensSSL标头,要么它们不在某个路径中。请记住,即使您安装了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

默认情况下,它一次只扫描100个目标。您可以使用--workers参数增加此数字。但是,无论您设置此参数有多高,实际上您最多可以同时运行大约500到1500名工作人员,具体取决于您的系统。

./rdpscan --workers 1000 10.0.0.0/24

您可以使用命名良好的--file参数,而不是在命令行上指定目标,而是从文件加载它们:

./rdpscan --file ips.txt

文件的格式是每行一个地址,名称或范围。它还可以使用生成的文本masscan。修剪额外的空白,忽略空行,忽略任何注释行。一个注释是开始与行#字符,或//字符。

输出将发送stdout给VULNERABLE,SAFE或UNKNOWN状态。可能还有其他原因。以上描述了这些原因。

211.101.37.250 - SAFE - CredSSP/NLA required185.11.124.79 - SAFE - not RDP - SSH response seen125.121.137.42 - UNKNOWN - no connection - refused (RST)40.117.191.215 - SAFE - CredSSP/NLA required121.204.186.182 - SAFE - CredSSP/NLA required99.8.11.148 - SAFE - CredSSP/NLA required121.204.186.114 - SAFE - CredSSP/NLA required49.50.145.236 - SAFE - CredSSP/NLA required106.12.74.155 - VULNERABLE - got appid222.84.253.26 - SAFE - CredSSP/NLA required144.35.133.109 - UNKNOWN - RDP protocol error - receive timeout199.212.226.196 - UNKNOWN - RDP protocol error - receive timeout183.134.58.152 - UNKNOWN - no connection - refused (RST)83.162.246.149 - VULNERABLE - got appid

额外的Unix命令一样,你可以处理这个grepcut。要获取易受攻击的计算机列表:

./rdpscan 10.0.0.0/8 | grep 'VULN' | cut -f1 -d'-'

参数-dddd表示诊断信息,d您添加的s越多,打印的详细信息就越多。这是发送给stderr而不是stdout 为了你可以分开流。使用bash它是这样做的:

./rdpscan --file myips.txt -ddd 2> diag.txt 1> results.txt

诊断信息

添加-d参数转储连接的诊断信息stderr

./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分别以通常的方式不同的文件:

./rdpscan --file ips.txt 2> diag.txt 1> results.txt

SOCKS5和Tor lulz

SOCKS5支持:

./rdpscan --file ips.txt --socks5 localhost --socks5port 9050

静态链接OpenSSL

为了将作为发行版附加的Windows和macOS二进制文件发布到此项目,我静态链接OpenSSL,因此不需要单独包含它,程序就可以正常工作。本节介绍了有关如何执行此操作的一些注意事项,尤其是因为OpenSSL自己的页面上的描述似乎已过时。

这两个步骤都从下载OpenSSL源并将其放在rdpscan目录:

git clone https://github.com/openssl/openssl

windows

对于Windows,您需要先安装某个版本的Perl。我使用ActiveState中的那个。

接下来,您将需要一个特殊的“汇编程序”。我使用推荐的一款名为 NASM的产品

接下来,您将需要一个编译器。我使用的是VisualStudio 2010.您可以从Microsoft下载最新的“Visual Studio Community Edition”(即2019年)。

现在你需要构建makefile。这是通过进入OpenSSL目录并运行ConfigurePerl程序来完成的:

perl Configure VC-WIN32

我为Windows选择了32位,我想让程序尽可能与旧版本兼容。

我想要一个完全静态的构建,包括C运行时。为此,我在编辑器中打开生成的makefile,并将C编译标志从 /MD(意味着使用DLL)更改为/MT。我将以下内容添加到CPPFLAGS中-D_WIN32_WINNT=0x501,它将OpenSSL限制为可在Windows XP和Server 2003上运行的功能。否则,bcrypt.dll 如果您在这些旧系统上运行,则会收到无法找到的错误。

现在你需要确保一切都在你的道路上。我复制nasm.exe 到了PATH中的一个目录。对于Visual Studio 2010,我运行程序vcvars32.bat来设置编译器的路径变量。

在命令行的这一点上,我输入:

nmake

这使得图书馆。静态的是libssl_static.liblibcrypto_static.lib我用来链接的rdpscan

MAC系统

首先,您需要安装编译器。我使用Apple的Developer Tools,安装XCode和编译器。我认为您可以使用Homebrew来安装gcc

然后进入OpenSSL的源目录并创建一个makefile:

perl Configure darwin64-x86_64-cc

现在简单地说:

make dependmake

此时,它创建了dynamic(.dylib)和static(.lib)库。我删除了动态库,以便它默认捕获静态库。

现在rdpscan,只需构建macOS makefile:

make -f Makefile.macos

编译所有rdpscan源文件,然后链接到../openssl刚刚构建的目录中的OpenSSL库。

*参考来源:GitHub,FB小编周大涛编译,转载请注明来自FreeBuf.COM

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 状态
  • 主要用途
  • 使用masscan
  • 编译
  • 常见的构建错误
  • 运行
  • 诊断信息
  • SOCKS5和Tor lulz
  • 静态链接OpenSSL
    • windows
      • MAC系统
      相关产品与服务
      SSL 证书
      腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档