用于事件响应的 PowerShell 命令
2023-1-15 11:9:3 Author: Ots安全(查看原文) 阅读量:10 收藏

我们将了解可在事件响应中使用不同的 PowerShell 命令来修复机器。我将以一台机器感染了恶意软件(例如 NanoCore RAT)的真实场景来解释此 PowerShell 命令。

这些命令在您无法访问 GNU 核心实用程序、Python 解释器等工具的受限 Windows 环境中可能非常有用。如果在您的环境中配置了PowerShell 远程处理[2] ,那么您甚至可以在远程感染的计算机上运行这些命令机器从你的清洁机器。

恶意软件感染场景——NanoCore

假设我们的环境中感染了 NanoCore 恶意软件,并且我们正处于事件响应的根除步骤。我们将了解哪些 PowerShell 命令可用于事件响应,但它可适用于任何恶意软件系列。为了简单起见,我们将考虑以下几点:

  • 根据网络日志,在我们的环境中只有一台 Windows 10 机器感染了 NanoCore 恶意软件。

  • 我们可以物理访问这台机器,因此不需要 PowerShell Remoting。

  • 我们有感染机器的初始 NanoCore 样本 0ed2be7c91efdb87c98084bb0a22d8d7的副本,因此我们知道 IoC。

NanoCore IoCs

  1. 将 RAVBg64.exe 和 bat 文件放入 $Env:TEMP

  2. 在 $Env:APPDATA 的 GUID 目录下创建 run.dat 等文件。

  3. 通过在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 中创建自动运行条目来创建持久性

  4. 抄送:anunankis3[.]duckdns[.]org

用于事件响应的 PowerShell 命令

事件响应中此根除步骤的主要目标是从系统中删除所有恶意软件工件并验证系统是否已完全清理。

PowerShell 命令的优点之一是您无需使用不同的工具来处理文件、注册表或进程,所有这些您都可以使用内置的 PowerShell cmdlet 进行管理。所有 PowerShell 命令都在 PowerShell 7(或 Core)上进行了测试,但应该可以在 Windows PowerShell 5.1 上运行。

移除 NanoCore 感染的步骤:

  • 检查恶意进程

  • 终止恶意进程

  • 去除持久性

  • 检查 $env:APPDATA\GUID\ 中的文件

  • 获取文件的哈希值

  • 复制工件进行分析

  • 删除恶意软件工件

1.检查恶意进程

我们必须检查恶意进程 RAVBg64.exe 当前是否正在从 $env:TEMP 目录执行。Get-Process cmdlet 可用于获取当前正在执行的进程,如下图所示。

Get-Process

获取进程 PowerShell cmdlet 输出

我们知道这个 RAVBg64 .exe 进程正在执行,如上图所示,但我们需要知道完整路径以确定它是否从临时目录运行。

Get-Process RAVBg64 | Select-Object Id, ProcessName, Path, Company, StartTime | Format-Table

Get-Process cmdlet 不支持进程命令行,因此请使用Get-WmiObject命令

仅适用于 Windows PowerShell 5.1

Get-WmiObject -Class Win32_Process -Filter "name='RAVBg64.exe'" | Select-Object ProcessId, ProcessName, CommandLine

但是Get-Wmiobject已被弃用,因此如reddit 用户所述,请将 Get-CimInstance用于 PowerShell 7 。

Get-CimInstance -Class Win32_Process | Format-Table -Property ProcessId, ProcessName, CommandLine -Autosize

Get-Process 和 Get-WmiObject PowerShell cmdlets 输出

2.终止恶意进程

Stop-Process可用于根据进程名称或进程 ID (PID) 终止进程,或传递进程对象。

Get-Process RAVBg64 | Stop-Process

您可能需要停止此进程 imapsv.exe 而不是 RAVBg64.exe,如果机器已经重新启动,因为此文件名在注册表中用于持久性。

用于停止进程的 PowerShell 命令

3.删除持久性

Get-ItemProperty  cmdlet 可用于列出注册表项,如下所示:

Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'IMAP Service'

Remove-ItemProperty可用于删除 NanoCore 持久性注册表项

Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' | Remove-ItemProperty -Name 'IMAP Service' Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run'

使用 PowerShell 命令查询和删除 NanoCore 注册表项

4. 检查 $env:APPDATA\GUID\ 中的文件

NanoCore 在 $env:APPDATA 中创建一个唯一的 GUID 目录以保存它的副本和日志。我们可以使用 Get-ChildItem cmdlet 来列出目录,就像 dir cmd。此 cmdlet 可用于文件系统目录、注册表配置单元或证书存储区。

-Recurse – 用于递归列出所有子目录

-Filter – 可以使用参数过滤路径,支持*和?通配符,例如 *.dat、*.exe

Get-ChildItem -Path $Env:APPDATA -Force -Recurse -Filter run.dat

我们可以使用 Test-Path 代替 Get-ChildItem 来检查目录或文件是否存在

Test-Path -Path $Env:APPDATA\*\run.dat

测试路径和 Get-ChildItem PowerShell cmdlet

运行上述命令后,您将能够知道唯一的 GUID 目录名称0319B08F-2B65-4192-B2D2-1E2F62087064,此文件夹包含其他工件,如下面的屏幕截图所示

Get-ChildItem -Path C:\Users\admin\AppData\Roaming\0319B08F-2B65-4192-B2D2-1E2F62087064\ -Force -Recurse

使用强制和递归参数的 Get-ChildItem cmdlet

5. 收集哈希

Get-FileHash cmdlet 可用于使用不同的算法(例如 MD5)获取哈希。SHA1、SHA256 等。默认情况下,Get-FileHash cmdlet 使用 SHA256 算法,但可以使用目标操作系统支持的任何哈希算法。

SHA256Get-FileHash -Path 'C:\Users\admin\AppData\Roaming\0319B08F-2B65-4192-B2D2-1E2F62087064\IMAP Service\imapsv.exe'
MD5Get-FileHash -Algorithm MD5 -Path 'C:\Users\admin\AppData\Roaming\0319B08F-2B65-4192-B2D2-1E2F62087064\IMAP Service\imapsv.exe'

获取 FileHash PowerShell cmdlet

我们可以使用 Get-ChildItem 和 Get-FileHash cmdlet 收集目录中具有 MD5、SHA256、名称和全名的文件哈希值。

我们将使用需要具有名称/标签和表达式键的哈希表的计算属性。name 键是属性名称,Expression 键是将在 Select-Object 接收输入时执行的脚本块。请阅读@adbertram 撰写的这篇关于使用哈希表计算属性的精彩文章 [5]

@{ Name = ''; Expression = {}}

我们使用 E/Expression 计算Get-ChildItem返回的每个文件的 MD5 和 SHA256

Get-ChildItem -Path C:\Users\admin\AppData\Roaming\0319B08F-2B65-4192-B2D2-1E2F62087064\ -Force -Recurse -File | Select-Object @{Name='MD5';E={(Get-FileHash -Algorithm MD5 $_).Hash}}, @{N='SHA256';E={(Get-FileHash -Algorithm SHA256 $_).Hash}}, Name, FullName

收集 NanoCore 文件的 MD5、SHA256、名称和全名

现在我们将使用 Export-Csv 以 FileHashes.csv 格式导出结果

Get-ChildItem -Path C:\Users\admin\AppData\Roaming\0319B08F-2B65-4192-B2D2-1E2F62087064\ -Force -Recurse -File | Select-Object @{Name='MD5';E={(Get-FileHash -Algorithm MD5 $_).Hash}}, @{N='SHA256';E={(Get-FileHash -Algorithm SHA256 $_).Hash}},Name, FullName | Export-Csv -Path FileHashes.csv

用于将散列导出到 csv 的 PowerShell 命令

5.复制工件进行分析

在删除工件之前,如果其他团队需要,我们可能希望复制它们以供进一步分析。

让我们使用New-Item cmdlet 创建目录并使用Copy-Item将文件复制到 IoCs 目录

New-Item -ItemType Directory -Path C:\Users\admin\IoCs
Copy-Item C:\Users\admin\AppData\Roaming\0319B08F-2B65-4192-B2D2-1E2F62087064\ -Destination C:\Users\admin\IoCs\ -Recurse

目录的新建项和复制项 PowerShell cmdlet

6.删除恶意软件工件

我们已经删除了持久性机制,现在我们只需要使用Remove-Item cmdlet 从受感染的机器中删除文件。

递归删除完整目录

Remove-Item -Path $env:APPDATA\0319B08F-2B65-4192-B2D2-1E2F62087064\ -Recurse -Force

删除 NanoCore 恶意软件的副本

Remove-Item -Path $env:TEMP\RAVBg64.exe -Force

删除初始文件

Remove-Item -Path $env:USERPROFILE\Desktop\Serial.exe

用于文件和目录的删除项 cmdlet

结论

在本文中,我解释了可用于 NanoCore 事件响应的有用 PowerShell 命令,但这些命令可应用于任何恶意软件感染。在事件响应中可以使用更多的 PowerShell 命令。

对于下一次迭代,您甚至可以编写 PowerShell 脚本并通过网络部署到多台计算机以进行清理。

如果您正在寻找一种简单的方法来对 PowerShell 进行去混淆处理,那么请检查这个使用 PowerShell 日志记录去混淆处理 PowerShell 。

今日安全动态推荐:
  • 2023 年网络安全预测:威胁形势

https://www.extrahop.com/company/blog/2022/2023-cybersecurity-predictions-the-threat-landscape/

  • 2022 年第三季度 APT 趋势报告

https://securelist.com/apt-trends-report-q3-2022/107787/

  • 网络黑客与汽车行业:法拉利、宝马、劳斯莱斯、保时捷等汽车的关键漏洞

https://samcurry.net/web-hackers-vs-the-auto-industry/

  • 黑客利用 Control Web Panel 漏洞打开反向 shell

https://www.bleepingcomputer.com/news/security/hackers-exploit-control-web-panel-flaw-to-open-reverse-shells/


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247496424&idx=1&sn=98cd3374ac48d78789f6f8361385177f&chksm=9badbba3acda32b50524c0b51664a9b7694ba7fbc9a95ab3eb65ceaacc823ba8b9162ef5b363#rd
如有侵权请联系:admin#unsafe.sh