前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >查找 .Net 程序集

查找 .Net 程序集

作者头像
Khan安全团队
发布2022-01-26 17:32:50
5880
发布2022-01-26 17:32:50
举报
文章被收录于专栏:Khan安全团队Khan安全团队

我从观看 .net 程序集被移动和挖空的经验中知道,不会有命令行参数。我的大部分内容都不会触发。但是,现在它的移动对我来说很重要。从过去的工作中,我知道 Windows 上有许多本机 .Net 程序集。有些甚至通过 SDK 或其他开发人员工具进入。本土的可能是最有趣的。我们如何找到它们?

我发现这个是 TheWover 写的——Find -Assemblies.ps1(我们之前写过类似的东西,但是这更适合分享)

这很容易使用。对于我的用例,我在 Server 2016 和 Windows 11 上运行了这个。我知道我没有得到 _everything_ ,但至少我们得到了最常见的 43 个。

代码语言:javascript
复制
. .\Find-Assemblies.ps1 -Directory 'C:\Windows' -Recurse

查找程序集

通过这个列表,我删除了二进制名称和路径,并创建了一个 Splunk 查找。这需要最新的Sysmon TA和 CIM 4.20 及更高版本,以及ESCU

作为新查找上传到 Splunk,为其命名。

现在,让我们测试一下。我将常用路径从列表中拉出并将它们排除在外。

代码语言:javascript
复制
| 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)`

然后我将添加我的查找

代码语言:javascript
复制
| 查找 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_准确。根据需要更新。

最终查询:

代码语言:javascript
复制
| 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 和开发人员实用程序的二进制文件,但是,这是一个很好的开始。

复制一些二进制文件并运行查询:

代码语言:javascript
复制
复制项目 C:\Windows\WinSxS\x86_installutil_b03f5f7f11d50a3a_4.0.15744.161_none_12f75b90c6cbba6c\InstallUtil.exe c:\temp\installut.exe

此分析将识别 Windows 上已移动和重命名的 .Net 程序集。我希望您发现这对了解编写内容的一些幕后检测工程很有用。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档