课时3:脚本的防御

脚本执行防御

目的:弥补模块执行防御不足针对可执行脚本进行检测防御

所用技术:AMSI

难点:

  •   如何区分内容脚本与工具脚本

  •   针对内容脚本与工具脚本进行检测

  •   系统性能:不能影响用户使用


AMSI实现的工具脚本防御

  • AMSI是什么

  • AMSI在脚本防御优势有哪些 

  • 什么是工具脚本如何检测

  • 什么是内容脚本如何检测

  • 如何编写自定义AMSI脚本检测程序


AMSI是什么

AMSI全称为Windows Antimalware Scan Interface, windows反病毒扫描接口,由微软在2015年引入Windows操作系统。AMSI允许PythonRubyJavaScript等脚本引擎开发人员,甚至是微软的PowerShell程序,在执行脚本之前请求系统中的防病毒软件(不限于Windows defender)扫描被执行脚本的内容,以确认被执行脚本是否存在恶意行为。

AMSI集成架构

AMSI针对脚本检测优势

  • 1.能够确定脚本类型 

  • 2.在脚本代码最终执行之前进行检测可做到无视混淆及加密等反检测技术 

  • 3.攻击者无法轻易绕过

工具脚本的检测

目标旨在减少内网环境中脚本引擎数量减少涉及脚本相关的攻击面

实现方式

只允许相关工具脚本引擎执行其余脚本引擎不允许执行 

对工具脚本添加特定签名不符合签名格式的脚本不允许执行

内容脚本检测

目标针对广义上所有脚本进行检测

实现方式

1.获取OSINT中相关恶意脚本特征构建恶意特征库

2.利用AMSI针对脚本内容进行特征匹配

RPC与内网安全

  • RPC可以视为一种命令序列

  • RPC是远程调用的基础设施,无法完全禁止 

  • 许多内网基于操作(如PsExecWMI)基于RPC

  • 内网刺探和横向移动都可利用RPC 

  • 利用PsExecWMI等可通过内网远程安装服务

PSEXEC利用RPC远程执行命令示例

利用ETW监控系统事件

RPCETW提供者

主要API和调用流程


  • StartTrace:创建会话,返回会话句柄。创建后既不接收任何日志,也不发送日志给任何人。 ControlTrace:对会话发出EVENT_TRACE_CONTROL_STOP命令。该命令删除会话,是StartTrace的逆操作。 

  • EnableTraceEx2:让会话开启对某个提供者的事件的监听。提供者产生了日志就会传递给会话。但如果没有消费者日志就不会被读取。 

  • OpenTrace:让会话和某个日志文件或者消费者建立连接。也就是说,这个会话收到的日志应当输出到该日志文件或传递给该消费者。但实际上调用

  • OpenTrace之后不处理也不会有任何日志输出。

  •  ProcessTrace:处理会话。真的开始往日志文件或者消费者输出日志了。OpenTrace之后再调用ProcessTrace,才会让整个机制真正运作起来。

如何了解PRCETW具体的事件日志的格式

打印所有RPC调用:信息不完整,缺失对方IP

利用SMBETW事件获取对方IP

综合SMB日志和PRC日志找到对方IP

最终演示效果