君子藏器于身待时而动,安全不露圭角覆盂之安。
——AnonySec
项目地址:Metasploit Modules
前言
渗透的本质是信息搜集 —— Micropoor
此篇文章作为后渗透模块信息收集的抛砖引玉。毕竟,一场红蓝双方的对抗,也是时间的较量。
模块实现:收集 已安装的应用程序、主机凭据cmdkey /list && vaultcmd /list
、网络连接netstat -ano|findstr ESTABLISHED
、Internet Explorer历史记录、Google Chrome 历史记录与保存的密码。
回顾Metasploit
Metasploit的后渗透信息收集模块较多,如winenum
,绝对是一条龙,收集的信息也比较全面。但如果sessions
较多,批量执行时就会影响效率,不能做到快速化信息收集。
1 | meterpreter > run winenum |
已安装应用程序
引用post/windows/gather/enum_applications
。
凭据管理器
收集凭据管理器中的信息,使用 cmdkey /list
[列出Windows凭据]与vaultcmd /list
[列出保管库(vault)列表]。但在metasploit终端中,中文输出会使乱码,除非将终端的编码格式改变,这里直接chcp 437
英文输出。
具体解密工具
Web凭据 Get-VaultCredential.ps1
Windows凭据 Invoke-WCMDump.ps1
1 | def credential |
Netstat同样,但此处只显示已建立连接的。
Internet Explorer
历史记录
在Internet Explorer中输入的网址保留在 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
。
所以这里需要Msf::Post::Windows::Registry
,将url
值取出。
1 | def ie_history |
Google Chrome
历史记录
Google Chrome的历史记录存放在%LocalAppData%\Google\Chrome\User Data\Default\History
。
只需要从目标机中将history.sqlite
下载到本地,使用sqlite3
类执行sql语句后把url
输出。
1 | require 'sqlite3' |
登录信息
同理,Google Chrome中保存的密码,记录在%LocalAppData%\Google\Chrome\User Data\Default\Login Data
。密码的解密需要win32crypt.CryptUnprotectData
,其实在Metasploit中也可以使用railgun
去调用Windows API。
但解密过程实在是没有处理好,所以这块只能将Google Chrome中保存密码的Url
与Username
输出,再借助其它工具或RDP登录进行查看。(后续深入研究railgun
调用Windows API)
存在问题
最后,在测试模块过程中发现:使用msfvenom生成payload弹回的session可以完全操控注册表,但使用exploit/windows/smb/psexec
传递弹回的session,却不能完全操控注册表。(具体原因未知)
1 | def run |
解决办法:加上当前进程自动注入到explorer.exe
的选项,防止模块报错。
1 | # migrate to explorer.exe |
完整模块运行Demo:
批量执行
1 | msf5 > sessions -C "run post/windows/gather/collect migrate=true" |