欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

从PowerShell内存中提取取证脚本内容

来源:本站整理 作者:佚名 时间:2019-02-02 TAG: 我要投稿
所以现在我们知道了它的存在,就可以自动化地并有目的性地去提取这些东西! 现在我们正式开始写提取脚本,我们要做的就是:
使用!dumpheap查找此元组类的实例。dumpheap命令会进行字符串搜索,我们可以使用正则表达式进行一些后期过滤
我们拿到了实际想要研究的元组类的MT
使用该MT作为过滤器再次运行!dumpheap

现在我们可以深入其中的一个节点。 它有一个m_key,我们可以研究一下。

差不多了!让我们从结果中提取出两个东西,然后获得一个漂亮的PowerShell对象:

​ 这是一个漫长的过程,但是我们从一开始的假设到最后提取出脚本内容,都完整的过了一遍。现在,即使原始脚本文件已经被删除,你也能够从Powershell内存中恢复有所的脚本内容了。
​ 以下是将所有这些都打包成了一个函数的最终脚本:
function Get-ScriptBlockCache
{
    $nodeType = dbg !dumpheap -type ConcurrentDictionary |
        Select-String 'ConcurrentDictionary.*Node.*Tuple.*String.*String.*]]$'
    $nodeMT = $nodeType | ConvertFrom-String | Foreach-Object P1
    $nodeAddresses = dbg !dumpheap -mt $nodeMT -short
    $keys = $nodeAddresses | % { dbg !do $_ } | Select-String m_key
    $keyAddresses = $keys | ConvertFrom-String | Foreach-Object P7
    foreach($keyAddress in $keyAddresses) {
        $keyObject = dbg !do $keyAddress
        $item1 = $keyObject | Select-String m_Item1 | ConvertFrom-String | % P7
        $string1 = dbg !do $item1 | Select-String 'String:s+(.*)' | % { $_.Matches.Groups[1].Value }
        $item2 = $keyObject | Select-String m_Item2 | ConvertFrom-String | % P7
        $string2 = dbg !do $item2 | Select-String 'String:s+(.*)' | % { $_.Matches.Groups[1].Value }
        [PSCustomObject] @{ Path = $string1; Content = $string2 }
    }
}
 

上一页  [1] [2] 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载