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

时间:2019-03-20 02:18:52

标签: windows powershell hook malware

我是一名研究生,致力于Windows API挂钩。 我知道用修改后的DLL替换System32文件夹中的受保护DLL并不容易。 但是我一直在寻找是否有办法更改/覆盖Windows动态DLL链接程序,从而可以在不使用任何其他系统API的情况下全局挂接W​​indows API?

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

我在Windows Internal Book(第6版)中寻找答案,但是找不到基于此的任何理论。参考也将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分: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 ultra 白皮书标题为在企业中保护PowerShell ,由澳大利亚网络安全中心here发布。我想他们会作为政府机构长期保存在那儿,但是即使天黑了,您也应该可以使用自己选择的搜索引擎找到一份副本。它会定期更新;在撰写本文时,它显示为“ March 2019”,并包含以下有用的骑手:

  

对本建议有疑问的组织或个人可以通过发送电子邮件至defence.gov.au的asd.assist 或致电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 Operational Event Log。
  •   
  • 转录:PowerShell 5.0版允许在所有PowerShell主机中转录代码,并且可以由组策略控制。成绩单功能非常强大,但不会集成到Windows事件日志中,需要像在磁盘文件上一样进行管理。
  •   

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

  

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

我不确定您要怎么处理这个问题,但是在我看来,本文可能对您有用。