编写 Metasploit 模块获取 SecureCRT 明文密码

Andrew2020-10-03 19:50:37

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.1 前言

最后的功能是支持7.3.3版本之前和之后的两种解密算法,并且支持Passphrase解密(前提是你要知道用户设置的Passphrase),这次主要学习了一个河豚解密算法的编写。旧版本的加解密算法正是使用了河豚算法,这个算法比较容易恢复明文密码,所以新版本添加了Passphrase的SHA256数据摘要作为AES-256-CBC算法的Key,增加了解密难度,和Xshell的主密码一样。

No.2 配置文件

安装完SecureCRT后,设置主密码,创建一个新的连接,点开属性设置保存密码,就会在当前用户的%AppData%\Roaming\VanDyke\Config\Sessions下创建一个以连接名称为文件名的会话配置文件,为了保险起见,我还是通过读取注册表’HKEY_CURRENT_USER\Software\VanDyke\SecureCRT’获取session配置文件的保存目录,有价值的信息:用户名,登录密码。有时候还会有脚本登录密码,主机地址和端口等等。

因为配置文件不是一个可序列化的文件,所以无法转化为Ruby对象,这里就选择使用则正表达式去匹配关键信息

protocol = Regexp.compile('S:"Protocol Name"=([^\r\n]*)').match(file) ? Regexp.last_match(1) : nil

经过上面的正则就可以匹配到两个版本的关键信息,并且通过对应的解密算法解密,最终入库并呈现给攻击者。

No.3 算法实现

现有的解密程序是Python语言编写的,各个语言之间的加解密和编码可能不太一样,转为Ruby语言开发还是遇到了一些有趣的地方。

首先Python语言可以在字符串的前面添加指定字母表示不同的编码格式,例如:

self.IV = b'\x00' * Blowfish.block_size

在Ruby中,用双引号括起来的就是原始的数据,不需要添加修饰,一定要有双引号才会转义,单引号括着什么就是什么,并不是hex数据了。

key1 = "\x24\xA6\x3D\xDE\x5B\xD3\xB3\x82\x9C\x7E\x06\xF4\x08\x16\xAA\x07"

因为双引号和单引号括的根本就不是同一个东西。

irb(main):001:0> "\x24\xA6\x3D\xDE\x5B\xD3\xB3\x82\x9C\x7E\x06\xF4\x08\x16\xAA\x07".unpack('H*')

Python中的bytes.fromhex(Ciphertext)方法实现的是将ciphertext的hex转换为bytes类型,Ruby实现的方法为:[ciphertext].pack(‘H*’)

旧版本解密

河豚解密函数,非常幸运的是OpenSSL库中自带了这个算法,在使用中注意实例化的模式是bf-cbc,CBC模式。

def blowfish_decrypt(secret_key, text)

按照Python语言中的解密流程,转为Ruby语言的代码如下,要注意的是:Ruby与Python的切片的第二个参数的含义是不一样的,Ruby可以使用.step(2)设置循环的步长为2,剩下的都是编码问题了。

def securecrt_crypto(ciphertext)  

新版本解密

bytes类型转int,按照小端顺序的Python实现代码:int.from_bytes(padded_plain_bytes[0:4], ‘little’),转为Ruby实现为:padded_plain_bytes[0,4].unpack1(‘l’)。

def securecrt_crypto_v2(ciphertext)

No.4 使用演示

首先获得一个meterpreter会话,执行run post/windows/gather/credentials/securecrt PASSPHRASE=123456,后面的PASSPHRASE参数为主密码。

No.5 总结

如果已知加解密的算法,或者有现成的分析文章,在编写解密代码时就比较容易,编写解密模块主要是要对Ruby的pack和unpack的灵活运用,还有对配置文件的解析,像这个不是规范的INI配置文件,无法将文本序列化成可用对象,还需要使用到正则表达式提取文本信息。

参考

https://github.com/HyperSine/how-does-Secu...

https://github.com/rapid7/metasploit-frame...

metasploitsecurecrt
本作品采用《CC 协议》,转载必须注明作者和本文链接
最后的功能是支持 7.3.3 版本之前和之后的两种解密算法,并且支持 Passphrase 解密(前提是你要知道用户设置的 Passphrase),这次主要学习了一个河豚解密算法的编写。旧版本的加解密算法正是使用了河豚算法,这个算法比较容易恢复明文密码,所以新版本添加了 Passphrase 的 SHA256 数据摘要作为 AES-256-CBC 算法的 Key,增加了解密难度,和 Xshell 的主密码一样。
这些工具大多数是免费开源的安全工具,只有两款是收费工具
Pass The Hash 即哈希传递攻击,简称 PTH
渗透测试工具收集整理
1.IPC横向 IPC(Internet Process Connection)共享命名管道的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,使用139、445端口。 1.1 利用条件
是一套用于对域名进行侦察的工具。该程序会检查 SPF 和 DMARC 记录中是否存在允许欺骗的弱配置。用于发现计算机网络上的主机和服务,从而构建网络的“地图”。自动渗透测试侦察扫描仪。不受 API 限制,因为它使用 Selenium 检测浏览器。输出报告以帮助关联跨站点的目标。是一个 python 脚本,它检查电子邮件帐户是否在数据泄露中受到损害,如果电子邮件帐户受到损害,它会继续查找受损害帐户的密码。LinkedIn 枚举工具,通过搜索引擎抓取从组织中提取有效员工姓名。
Ceye DNS:DNS oob平台 http://ceye.io/. TLS证书信息查询Censys:https://censys.io. 网络空间搜索Fofa:https://fofa.info/
Ceye DNS:DNS oob平台 http://ceye.io/. TLS证书信息查询Censys:https://censys.io. 网络空间搜索Fofa:https://fofa.info/
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
Andrew
暂无描述