使用
windbg
从powershell
的dump
文件提取命令记录,用于恶意行为分析译自:https://www.leeholmes.com/extracting-activity-history-from-powershell-process-dumps/
假设正在调查一个被黑客使用powershell
入侵的系统,而这个系统的powershell
的日志功能被停用了,而手上只有一个powershell
进程的dump
文件。该怎么办?
dump
文件是取证黄金,而windbg
的托管代码调试扩展(“SOS”--Strike之子)可以用来研究它。
在菜单选中打开dump文件
,可以看到
执行如下操作,加载SOS
.loadby sos clr
.symfix
.reload
使用!help
命令可以看到 SOS CLR
调试扩展所有特性,其中一个很有用的命令是!DumpHeap
,用来枚举托管内容所有对象,并且可以根据类型过滤。
Powershell
把命令历史记录在HistoryInfo
对象,使用!DumpHeap –Type HistoryInfo
看一下,如果有报错,重新操作一下。
可以看到有6条HistoryInfo
(黑客执行的命令),有7组HistoryInfo
(内部数据)。堆是包含暂时在用的数据,所以不是所有都表示唯一的命令。
点击HistoryInfo
的MT
列,可以知道对象的类型。然后再点击出来的地址,就可以看到HistoryInfo
对象的内容。这些点击操作其实就是下图windbg
下两条命令!DumpHeap /d -mt 00007ff8a140be70
和!DumpObj /d 0000024226256100
有一个偏移量为8的字符串的名称叫_cmdline
,使用!DumpObj /d 0000024226255a30
看一下内容
可以看到是执行whoami
命令。
手工一个个地看HistoryInfo
很费事,使用windbg
的脚本语言来看。
.foreach (historyinfo { !dumpheap -type HistoryInfo -short }) { .echo ${historyinfo}; !DumpObj poi(${historyinfo}+8) }
对!dumpheap
的结果遍历,把每个内存地址分配给historyinfo
变量,再打印这个变量内容,使用poi
函数计算_cmdline
的地址,然后使用!dumpobj
把_cmdline
内容打印出来。
可以看到,攻击者使用whoami
获取管理域的用户密码,再使用powershell
远程连接域控。
=========================================
文中和文末的小广广,渴望你手指的触碰!!!
请关注,转发,点“在看”,谢谢!!
如需要转载,请在公众号留言!!
暗号:0d159