我从观看 .net 程序集被移动和挖空的经验中知道,不会有命令行参数。我的大部分内容都不会触发。但是,现在它的移动对我来说很重要。从过去的工作中,我知道 Windows 上有许多本机 .Net 程序集。有些甚至通过 SDK 或其他开发人员工具进入。本土的可能是最有趣的。我们如何找到它们?
我发现这个是 TheWover 写的——Find -Assemblies.ps1(我们之前写过类似的东西,但是这更适合分享)
这很容易使用。对于我的用例,我在 Server 2016 和 Windows 11 上运行了这个。我知道我没有得到 _everything_ ,但至少我们得到了最常见的 43 个。
. .Find-Assemblies.ps1 -Directory 'C:Windows' -Recurse
复制
查找程序集
通过这个列表,我删除了二进制名称和路径,并创建了一个 Splunk 查找。这需要最新的Sysmon TA和 CIM 4.20 及更高版本,以及ESCU。
作为新查找上传到 Splunk,为其命名。
现在,让我们测试一下。我将常用路径从列表中拉出并将它们排除在外。
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes where NOT (Processes.process_path IN ("*\Windows\ADWS\*","*\Windows SysWOW64*"、"*\Windows\system32*"、"*\Windows\NetworkController\*"、"*\Windows\SystemApps\*"、"*\WinSxS\* ", "*\Windows\Microsoft.NET\*")) 由 Processes.dest Processes.user Processes.parent_process Processes.process_name Processes.process Processes.original_file_name Processes.process_path Processes.process_id Processes.parent_process_id
| `drop_dm_object_name("进程")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
复制
然后我将添加我的查找
| 查找 update=true is_net_windows_file_origname 文件名作为 process_name OUTPUT netFile
| 查找更新=true is_net_windows_file_origname originalFileName as original_file_name OUTPUT netFile
| 搜索 netFile=True
复制
这里有点玄学。我了解到您可以进行两次这样的查找,这对我来说改变了这个查询的游戏。特别是,如果二进制文件被移动和重命名,那么它就不会被称为 installutil.exe。第一个查找是 process_name,第二个是使用 original_file_name。我在本地系统和Strontic之间进行了交叉引用,因此它们应该_all_准确。根据需要更新。
最终查询:
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes where NOT (Processes.process_path IN ("*\Windows\ADWS\*","*\Windows SysWOW64*"、"*\Windows\system32*"、"*\Windows\NetworkController\*"、"*\Windows\SystemApps\*"、"*\WinSxS\* ", "*\Windows\Microsoft.NET\*")) 由 Processes.dest Processes.user Processes.parent_process Processes.process_name Processes.process Processes.original_file_name Processes.process_path Processes.process_id Processes.parent_process_id
| `drop_dm_object_name("进程"
)` | `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | 查找 update=true is_net_windows_file_origname 文件名作为 process_name OUTPUT netFile| 查找更新=true is_net_windows_file_origname originalFileName as original_file_name OUTPUT netFile
| 搜索 netFile=True
复制
我肯定会错过其他依赖于 SDK 和开发人员实用程序的二进制文件,但是,这是一个很好的开始。
复制一些二进制文件并运行查询:
复制项目 C:WindowsWinSxSx86_installutil_b03f5f7f11d50a3a_4.0.15744.161_none_12f75b90c6cbba6cInstallUtil.exe c:tempinstallut.exe
复制
此分析将识别 Windows 上已移动和重命名的 .Net 程序集。我希望您发现这对了解编写内容的一些幕后检测工程很有用。
原文始发于微信公众号(菜鸟小新):查找 .Net 程序集
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论