利用Frida从TeamViewer内存中提取密码
作者:admin | 时间:2017-8-11 11:11:18 | 分类:黑客技术 隐藏侧边栏展开侧边栏
今天给大家介绍一款能够从TeamViewer内存中提取密码的工具,这款工具名叫Frida。
使用Frida从TeamViewer的内存中提取密码
在这篇文章中,我将会跟大家分享我们近期对TeamViewer密码安全性所进行的研究分析结果。需要注意的是,我们在研究中所使用的方法可以在渗透测试(后渗透阶段)的过程中通过TeamViewer来获取其他设备的访问权。
GitHub主页
extractTVpasswords-【点我访问】
TeamViewer的自动认证机制
在几天之前,我通过TeamViewer访问了我的VPS云服务器(Windows),我当时还专门为这台服务器设置了自定义的密码。完成了相应任务之后,我便断开了与服务器的连接。但是当我下次想要连接这台服务器时,我发现TeamViewer竟然会自动填写连接密码。
这就非常有意思了,那我怎么样才能拿到TeamViewer保存的密码呢?而且这个密码是如何存储在我的电脑里的呢?
密码位置
我导出了TeamViewer的内存数据,然后使用搜索命令(grep)来尝试搜索密码。
oh,耶~内存中果然保存了密码,而且密码是以Unicode格式存储的。在进行了深入分析后我发现,如果你使用完TeamViewer之后没有结束TeamViewer进程的话,或者你通过点击菜单中的“Exit TeamViewer”退出程序的话,密码将仍然存储在内存中。注意上图中的两个红色框框圈出来的部分(00 88和00 00 00 00 00 00),两个框框中间的数据就是我们所要寻找的密码。
获取密码的脚本
为了从TeamViewer内存中提取出密码,我们专门编写了两个小程序,这两个小程序分别采用Python和C++开发。(感谢Frida团队提供的帮助)
我们的Python脚本会绑定到TeamViewer.exe进程上,然后获取到这个进程的内存基地址以及内存大小。接下来,它会将每一块内存区域中的数据导出,然后搜索数据中以[00 88]字节开头并以[00 00 00]字节结尾的数据,然后将搜索到的数据拷贝到一个数组中保存。最后一步就是根据正则表达式和密码策略来解码原始数据了。
在执行完C++代码之后,你就可以得到明文密码了(“asdQWE123”)。
未完待续
1. 我们还会为这个小程序添加其他的功能,比如说远程提取ID以及密码,并尽量降低假阳性率。 2. 优化C++代码。
使用样例
C++例子:
Python例子
如果你对本项目有任何的疑问或者建议,可以直接与我们联系(@vah_13、@NewFranny)或在GitHub上留言。
* 参考来源:extractTVpasswords, FB小编Alpha_h4ck编译