美文网首页
nmap ssl-ccs-injection脚本解析

nmap ssl-ccs-injection脚本解析

作者: 御浅永夜 | 来源:发表于2018-06-07 19:47 被阅读0次

1. 代码分析

1.1 require

nmap:与Nmap内部接口。

shortport:建立短portrules的函数

stdnse:标准的Nmap脚本引擎功能。 该模块包含各种方便的功能,这些模块功能太小而无法证明自己。

table:将输出排列成表格。

vulns:漏洞管理功能。

tls

1.2 description

1.2.1 CCS Injection vulnerability(CVE-2014-0224)

How I discovered CCS Injection Vulnerability (CVE-2014-0224)

1.2.2 脚本流程

脚本发送一个失序的ChangeCipherSpec信息,检查服务器是否返回UNEXPECTED_MESSAGE警告字段。 由于未修复该漏洞的服务器只会接受此消息,因此CCS数据包将发送两次,以强制服务器发出警报。 如果警报类型与“UNEXPECTED_MESSAGE”不同,我们可以得出结论,服务器容易受影响。

1.3 function test_ccs_injection

1.3.1 向目标服务器发送Client Hello

s:send(hello)

检测发送状态,若失败返回错误信息Couldn't send Client Hello: errerr为s:send返回的err信息。

1.3.2 读取回复

-- 判断是否是提示超时
tls.record_buffer(s, response, i)

tls.record_read(response, i)

-- 循环record
  -- 判断record.type == “handshake"
    -- 判断body.type == "server_hello_done"
      stdnse.debug1("Handshake completed (%s)", version)

1.3.3 重复发送change_cipher_spec

change_cipher_spec消息

ccs = tls.record_write("change_cipher_spec", version, "\x01")

发送第一个ccs消息

s:send(ccs)

发送第二个ccs消息

s:send(ccs)

读取警告信息

vulnerable = alert_unexpected_message(s)

1.4 function alert_unexpected_message(s)

buffer = tls.record_buffer(s, buffer, 1)

record = tls.record_read(buffer, 1)

if record.type ~= "alert" then
    -- VULNERABLE 标记,预期中的alert record
    return true,true
  end

  for _, body in ipairs(record.body) do
    if body.level == "fatal" and body.description == "unexpected_message" then
      return true,false
    end
  end

1.5 action = function(host, port)

tls.PROTOCOLS迭代

local vulnerable, err = test_ccs_injection(host, port, tls_version)

2. 检测

2.1 对自建易受攻击环境的检测

客户端执行nmap:

renz@ubuntuserver17:~$ nmap -p 443 --script ssl-ccs-injection 192.168.80.211

Starting Nmap 7.50 ( https://nmap.org ) at 2018-06-08 11:52 CST
Nmap scan report for 192.168.80.211
Host is up (0.00042s latency).

PORT    STATE SERVICE
443/tcp open  https
| ssl-ccs-injection:
|   VULNERABLE:
|   SSL/TLS MITM vulnerability (CCS Injection)
|     State: VULNERABLE
|     Risk factor: High
|       OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h
|       does not properly restrict processing of ChangeCipherSpec messages,
|       which allows man-in-the-middle attackers to trigger use of a zero
|       length master key in certain OpenSSL-to-OpenSSL communications, and
|       consequently hijack sessions or obtain sensitive information, via
|       a crafted TLS handshake, aka the "CCS Injection" vulnerability.
|
|     References:
|       http://www.openssl.org/news/secadv_20140605.txt
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0224
|_      http://www.cvedetails.com/cve/2014-0224

Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds

客户端抓包:ssldump -i eth0

...
10 2  0.0019 (0.0015)  S>C  Handshake
      ServerHello
        Version 3.1
        session_id[32]=
          b6 d5 f5 96 08 bc c0 6c 1c 31 5b df 34 11 e5 60
          d4 61 d1 da f1 c3 78 b4 d1 64 d3 df 00 48 e7 71
        cipherSuite         TLS_RSA_WITH_3DES_EDE_CBC_SHA
        compressionMethod                   NULL
10 3  0.0019 (0.0000)  S>C  Handshake
      Certificate
10 4  0.0019 (0.0000)  S>C  Handshake
      ServerHelloDone
10 5  0.0022 (0.0002)  C>S  ChangeCipherSpec
10 6  0.0426 (0.0404)  C>S  ChangeCipherSpec
10 7  0.0429 (0.0002)  S>C  Alert
    level           fatal
    value           decryption_failed
10    0.0430 (0.0001)  C>S  TCP FIN
10    0.0431 (0.0001)  S>C  TCP FIN

107行未检测到unexpected_message表明未修复该漏洞

2.2 对自建不受攻击环境的检测

客户端执行nmap:

renz@ubuntuserver17:~$ nmap -p 443 --script ssl-ccs-injection 192.168.80.215

Starting Nmap 7.50 ( https://nmap.org ) at 2018-06-08 11:39 CST
Nmap scan report for 192.168.80.215
Host is up (0.00046s latency).

PORT    STATE SERVICE
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds

客户端抓包:

78 2  0.0010 (0.0005)  S>C  Handshake
      ServerHello
        Version 3.3
        session_id[32]=
          57 bc 8c 2c ba 85 97 52 1f 0e 68 5c 56 c1 21 96
          88 db a6 b6 8c 4d b4 4b eb 36 e1 a7 b8 29 6d 57
        cipherSuite         TLS_RSA_WITH_AES_256_CBC_SHA
        compressionMethod                   NULL
78 3  0.0010 (0.0000)  S>C  Handshake
      Certificate
78 4  0.0010 (0.0000)  S>C  Handshake
      ServerHelloDone
78 5  0.0013 (0.0003)  C>S  ChangeCipherSpec
78 6  0.0016 (0.0002)  S>C  Alert
    level           fatal
    value           unexpected_message
78 7  0.0016 (0.0000)  C>S  ChangeCipherSpec
78    0.0016 (0.0000)  S>C  TCP FIN
78    0.0018 (0.0001)  C>S  TCP FIN

78行检测到unexpected_message表明已修复该漏洞

3. 利用漏洞攻击

能力有限,虽然手头有易被攻击的环境,但仍没有什么可行的办法以己之矛攻己之盾。是不是说自己作为中间人,成功诱导c/s双方使用弱加密套件,自己这边穷举算出密钥的可能性就大了。
我果然最后都没能搞出。
看了以下几篇文章推荐给大家,如果有什么可行性高的办法请一定分享。
早期ChangeCipherSpec攻击
How I discovered CCS Injection Vulnerability (CVE-2014-0224)

3.1 使用1.0.1h之前版本的openssl进行ssl握手

进行这样一个测试,我觉得我需要两个ubuntu,作为服务端的ubuntu安装openssl-1.0.1g,并运行命令openssl s_server,客户端运行nmap。
或者通过gdb来运行openssl s_server来查看openssl如何接受ChangeCipherSpec。

handshark flow:

Client                                                Server

ClientHello                   -------->
                                                 ServerHello
                                                Certificate*
                                          ServerKeyExchange*
                                         CertificateRequest*
                              <--------      ServerHelloDone
Certificate*
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished                      -------->
                                          [ChangeCipherSpec]
                              <--------             Finished
Application Data              <------->     Application Data

相关文章

  • nmap ssl-ccs-injection脚本解析

    1. 代码分析 1.1 require nmap:与Nmap内部接口。 shortport:建立短portrule...

  • Nmap加载第三方插件

    nmap脚本可使nmap获取更多识别内容且更增加可信度,由于默认安装的nmap工具脚本仅包含官方当时收录的脚本,因...

  • 在 Kali Linux 下实战 Nmap(网络安全扫描器)

    Nmap 能够快速找到活动的主机和与该主机相关联的服务。Nmap 的功能还可以通过结合 Nmap 脚本引擎(通常缩...

  • Nmap输出过滤-xml转excel

    一个简单的python脚本,将nmap输出的xml格式提取为excel 一、Nmap扫描 在信息收集阶段,一个重要...

  • nmap脚本写作教程

    原文:Script Writing Tutorial 事实上,在你看这篇译文之前,我必须要解释两点按照这篇译文写出...

  • 入门安全

    SSH暴力破解 Medusa, hydra 内网arp欺骗 推送 JS脚本 扫描端口nmap, MESSCAN, ...

  • Python开发端口扫描器

    首先是最常用的端口扫描器: 虽说有nmap等强大的工具,不过如果由于条件限制无法安装Nmap呢? 我这个脚本写的比...

  • 2021-02-06 nmap 拾遗

    nmap -n 不反向解析域名-M 线程-exclude 排除单个-excludefile 排除一组 -sV 探...

  • 浏览器工作原理

    处理脚本和样式表的顺序 脚本 网络的模型是同步的。网页作者希望解析器遇到 标记时立即解析并执行脚本。文档的解析将停...

  • 【udp】如何检测UDP端口的连通性

    nmap yum -y install nmap nmap -sU -p 123 10.0.8.7nmap...

网友评论

      本文标题:nmap ssl-ccs-injection脚本解析

      本文链接:https://www.haomeiwen.com/subject/mlknsftx.html