MSF-HTTPS默认证书检测
前言
进行过MSF的默认payload专项测试后,其他明文传输的payload方式或多或少都可以找到相关的流量特征,而HTTPS走的是标准TLS格式,数据完全加密,这样想检测HTTPS的payload难度就非常的大了。但是在TLS传输加密数据之前的证书交换协商过程却是明文传输的,我们可以从这部分入手来尝试检测MSF的HTTPS证书。
代码分析
经过生成多个payload样本后发现,样本的证书貌似是随机生成的,这样我们就需要去后台查看MSF的源代码找到证书的生成逻辑。
1 | 06/09/2020-15:35:55.502904 10.50.1.183:52691 -> 10.50.1.175:8888 TLS: Subject='C=US, ST=OH, O=Bosco-Kovacek, OU=multi.byte, CN=bosco.kovacek.org/emailAddress=multi.byte@bosco.kovacek.org' Issuerdn='C=US, ST=OH, O=Bosco-Kovacek, OU=multi.byte, CN=bosco.kovacek.org/emailAddress=multi.byte@bosco.kovacek.org' |
MSF证书生成代码在文件lib/msf/core/cert_provider.rb
里,代码如下:通过调用faker库的Address.state_abbr、Address.city、Company.name、Internet.domain_suffix等list,从中随机选择相关的词汇生成证书。
检测方案
在了解证书的生成过程后,我们使用逆向思维同时也利用faker的list,将证书Subject进行拆分,逐个匹配faker list中的字典,查看是否均存在于字典中,若都存在则判断为MSF HTTPS SSL证书。
suricata lua脚本如下:
1 | suffix_list = {"Inc", "and Sons", "LLC", "Group"} |
结论
当然,只要换了证书,本方法就不适用,只能从其他方面入手检测了。