脚本执行防御
目的:弥补模块执行防御不足,针对可执行脚本进行检测防御
所用技术:AMSI
难点:
如何区分内容脚本与工具脚本
针对内容脚本与工具脚本进行检测
系统性能:不能影响用户使用
AMSI实现的工具脚本防御
AMSI是什么?
AMSI在脚本防御优势有哪些?
什么是工具脚本,如何检测?
什么是内容脚本,如何检测?
如何编写自定义AMSI脚本检测程序
AMSI是什么?
AMSI全称为Windows Antimalware Scan Interface, 即windows反病毒扫描接口,由微软在2015年引入Windows操作系统。AMSI允许Python、Ruby、JavaScript等脚本引擎开发人员,甚至是微软的PowerShell程序,在执行脚本之前请求系统中的防病毒软件(不限于Windows defender)扫描被执行脚本的内容,以确认被执行脚本是否存在恶意行为。
AMSI集成架构

AMSI针对脚本检测优势
工具脚本的检测
目标: 旨在减少内网环境中脚本引擎数量,减少涉及脚本相关的攻击面
实现方式:
•只允许相关工具脚本引擎执行,其余脚本引擎不允许执行
•对工具脚本添加特定签名,不符合签名格式的脚本不允许执行
内容脚本检测
目标:针对广义上所有脚本进行检测
实现方式:
1.获取OSINT中相关恶意脚本特征,构建恶意特征库
2.利用AMSI针对脚本内容进行特征匹配
RPC与内网安全
PSEXEC利用RPC远程执行命令示例

利用ETW监控系统事件

RPC的ETW提供者

主要API和调用流程
StartTrace:创建会话,返回会话句柄。创建后既不接收任何日志,也不发送日志给任何人。
ControlTrace:对会话发出EVENT_TRACE_CONTROL_STOP命令。该命令删除会话,是StartTrace的逆操作。
EnableTraceEx2:让会话开启对某个提供者的事件的监听。提供者产生了日志就会传递给会话。但如果没有消费者日志就不会被读取。
OpenTrace:让会话和某个日志文件或者消费者建立连接。也就是说,这个会话收到的日志应当输出到该日志文件或传递给该消费者。但实际上调用
OpenTrace之后不处理也不会有任何日志输出。
ProcessTrace:处理会话。真的开始往日志文件或者消费者输出日志了。OpenTrace之后再调用ProcessTrace,才会让整个机制真正运作起来。
如何了解PRC的ETW具体的事件日志的格式

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

利用SMB的ETW事件获取对方IP

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

最终演示效果

