基于流量的OpenSSL漏洞利用检测方法

最后编辑时间: 2017-04-12

CVE-2014-0160漏洞背景

2014年4月7日OpenSSL发布了安全公告,在OpenSSL1.0.1版本中存在严重漏洞(CVE-2014-0160),此次漏洞问题存在于ssl/dl_both.c文件中。OpenSSL Heartbleed模块存在一个BUG,当攻击者构造一个特殊的数据包,满足用户心跳包中无法提供足够多的数据会导致memcpy把SSLv3记录之后的数据直接输出,该漏洞导致攻击者可以远程读取存在漏洞版本的openssl服务器内存中长大64K的数据。

OpenSSL受影响和不受影响版本

  • OpenSSL 1.0.1f(受影响)
    OpenSSL 1.0.1g (不受影响)
    OpenSSL 1.0.0 branch (不受影响)
    OpenSSL 0.9.8 branch (不受影响)

对此我们给出如下建议

  • OpenSSL版本升级到最新的1.0.1g
    重新生成你的私钥
    请求和替换SSL的证书
    使用-DOPENSSL_NO_HEARTBEATS参数重新编译低版本的OpenSSL以禁用Heartbleed模块

最新版本升级地址为:https://www.openssl.org/source/. (OpenSSL官方)

分析与验证

目前该漏洞的利用和验证脚本已经可以被广泛获取,地址包括。

http://fi****o.io/Heartbleed/  (web测试页面)

http://s3. ****guin.org/ssltest.py  (python脚本)

http:// **.* u u.com/s/1nt3BnVB (python脚本)

尽管从安全团队的角度,我们不适宜明文传播这些地址,但我们必须提醒用户的是,几乎所有的攻击者都已经拥有了相关资源,在过去24小时内,这一漏洞已经遭到了极为广泛的探测和尝试。相信大多数有漏洞的站点均遭到了不止一次的攻击。
鉴于该漏洞的严重程度和攻击爆发事件,我们不得不打破搭建环境,测试验证的管理,
在第一时间,选择相对“轻量级”的网站做出直接验证,以分析其实际后果敏感信息。通过网络中已有的测试方法,我们寻找到几个存在问题的网站进行分析,为了避免行为失当,我们没有选择与金融、交易相关的站点。
存在问题的网站地址:

Ap***.*****.gov.cn  (测试时间为2014-04-09 01:00)
my-****.in  (测试时间为2014-04-09 01:10)
www.shu****.cn   (测试时间为2014-04-09 01:15)
git****.com(测试时间为2014-04-09 01:20)
feng*****.com  (测试时间为2014-04-09 01:30)

获取回来的敏感信息截图如下:

13970090269252.jpg

图 1 测试网站1

通过漏洞利用工具发送数据后,返回的数据中可以看到有内网IP地址、路径等信息。

获取敏感信息有内网IP地址、路径等。

13970090514645.jpg

图 2  测试网站2
通过漏洞利用工具发送数据后,返回的数据中可以看到有APP信息、cookie信息和用户名信息等。

获取敏感信息有APP信息、cookie信息和用户名信息等

13970090865605.jpg

图 3  测试网站3
通过漏洞利用工具发送数据后,返回的数据中可以看到有手机号码等。

获取敏感信息是手机号码等。

13970091148591.jpg

图 4  测试网站4

通过漏洞利用工具发送数据后,返回的数据中可以看到有信箱和密码等信息。
通过上面的几个网站的分析测试,发现该漏洞确实可以获取到带有敏感信息的内存内容。例如:用户的cookie信息、内网IP地址、用户名、密码、手机号、信箱等。如攻击者利用此漏洞对网络交易、证券、银行等网络进行攻击,那么将会获取到用户名、密码、银行账号等敏感信息。再次提醒网站管理员和使用SSL协议连接网站的用户请尽快按照我们的处置建议进行操作。

网络检测相关方法
通用Snort规则检测
由于众所周知的SSL协议是加密的,我们目前没有找到提取可匹配规则的方法,我们尝试编写了一条基于返回数据大小的检测规则,其有效性我们会继续验证,如果有问题欢迎反馈。

alert tcp $EXTERNAL_NET any -> $HOME_NET 443 (msg:"openssl Heartbleed attack";flow:to_server,established; content:"|18 03|"; depth: 3; byte_test:2, >, 200, 3, big; byte_test:2, <, 16385, 3, big; threshold:type limit, track by_src, count 1, seconds 600; reference:cve,2014-0160; classtype:bad-unknown; sid:20140160; rev:2;)

Snort规则说明:此次漏洞主要针对的SSL协议。是针对心跳数据包前4个字节中包含x18x03,而在数据包第5个字节和第6个字节的数值按大尾模式转化成数值在200和16385之间,在后面则是一些报警和过滤功能,日志记录里,每10分钟记录一次。
行为检测
从公共网络管理者的角度,可以从同一IP短时间探测多个443端口的网络连接角度进行检测。这样可以发现攻击者或肉鸡的大面积扫描行为。
另外由于攻击者可能定期性的进行数据持续获取,也可以从连接持续规律的时间性和首发数据数量的对比的角度进行检测。
其他
是否相关攻击的主机痕迹和取证方式,我们正在验证。

参考资料列表:
http://heartbleed.com/
http://www.freebuf.com/vuls/31339.html
http://drops.wooyun.org/papers/1381
http://blog.fox-it.com/2014/04/08/openssl-heartbleed-bug-live-blog/
https://www.nccgroup.com/en/blog/2014/04/heartbleed-openssl-vulnerability/

请在下方留下您的评论.加入TG吹水群