是否可以覆盖Windows加载时动态链接?

问题描述 投票:0回答:1

我是一名研究生,从事Windows API挂钩工作。我知道用修改后的DLL替换System32文件夹中的受保护DLL并不容易。但我正在寻找是否有办法,这样我可以更改/覆盖Windows动态DLL链接器,我可以全局挂钩Windows API,而不使用任何其他系统API?

我的目的是全局分析Powershell脚本,以便任何监视拜占庭行为。挂钩是我想到的第一个想法。

我在Windows Internal Book(第6版)中寻找答案,但在此基础上找不到任何理论。参考也将被赞赏。

谢谢。

windows powershell hook malware
1个回答
1
投票

可以使用名为Detours的旧功能。有一个名为AppInit_DLLs的注册表项,它包含一个库列表,这些库在开始时加载到每个进程中。例如,Sophos Anti-Virus使用它。它是真正的全球性,AFAIK。每个进程都会检查进程创建。但是,这里可能有相关的讨论:Preventing a DLL file from loading into my process via MS Detours

但是,如果它是你想要监控的专用Powershell,并且你可以指望PSv5及更高版本,那么Powershell为你提供了一些非常强大的本机功能来监控和约束。使用它可能会更好。

绝对ne plus白皮书的标题是企业中的Securing PowerShell,由澳大利亚网络安全中心here发布。我想他们会把它保存在那里很长一段时间,作为一个政府机构,但即使天黑了你也应该能够找到你选择的搜索引擎的副本。它会定期更新;在写作时它显示“2019年3月”,并包含这个有用的骑手:

对此建议有疑问的组织或个人可以通过发送电子邮件至defence.gov.au或致电1300 CYBER1(1300 292 371)与ACSC联系。

致澳大利亚信号局,谢谢。由于这是一个澳大利亚号码,不要忘记把你的电话倒挂。

本着SO的精神,我会给你一个精确的。该文件列出了一系列可实现的步骤,以实现从低到高的安全性。阶段是:

  • 默认配置
  • 脚本白名单
  • 脚本的代码签名
  • PSv5
  • 中央伐木和转录
  • 基于角色的白名单
  • WinRM强化
  • 约束端点

整个文件是20页,所以这不是一个很大的时间投资。但由于你的问题似乎涉及中央记录和转录部分,这里有一个显示功能的相关摘录:

  • 引擎生命周期日志记录:PowerShell记录PowerShell主机的启动和终止。 PowerShell 5.0版能够记录传递给PowerShell主机的命令行参数,包括通过命令行传递给powershell.exe的PowerShell代码。默认情况下启用引擎生命周期日志记录,可在“应用程序和服务日志”\ Microsoft \ Windows \ PowerShell \ Operational日志中找到。
  • 模块/管道日志记录:PowerShell 3.0版及更高版本可以基于每个模块或全局将管道事件记录到Windows事件日志。这可以通过组策略设置。
  • 脚本块跟踪:PowerShell 5.0版可以记录详细信息,包括运行的代码并输出到Windows操作事件日志。
  • 转录:PowerShell 5.0版允许在所有PowerShell主机中转录代码,并且可以通过组策略进行控制。虽然非常强大,但成绩单不会集成到Windows事件日志中,需要像磁盘文件一样进行管理。

以下是与该部分相关的附录的摘录:

Details of Group Policy settings to enforce appropriate logging for PowerShell based activities

我不确定你到底在哪里,但在我看来,这篇论文可能对你有用。

© www.soinside.com 2019 - 2024. All rights reserved.