围绕PowerShell事件日志记录的攻防博弈战
2019-10-16
0x00 前言
PowerShell一直是网络攻防对抗中关注的热点技术,其具备的无文件特性、LotL特性以及良好的易用性使其广泛使用于各类攻击场景。为了捕获利用PowerShell的攻击行为,越来越多的安全从业人员使用PowerShell事件日志进行日志分析,提取Post-Exploitation等攻击记录,进行企业安全的监测预警、分析溯源及取证工作。随之而来,如何躲避事件日志记录成为攻防博弈的重要一环,围绕PowerShell事件查看器不断改善的安全特性,攻击者利用多种技巧与方法破坏PowerShell日志工具自身数据,以及事件记录的完整性。今年10月份微软发布补丁的CVE-2018-8415正是再次突破PowerShell事件查看器记录的又一方法,本文将细数PowerShell各大版本的日志功能安全特性,及针对其版本的攻击手段,品析攻防博弈中的攻击思路与技巧。
0x01 PowerShell攻防简介
PowerShell是一种功能强大的脚本语言和shell程序框架,主要用于Windows计算机方便管理员进行系统管理并有可能在未来取代Windows上的默认命令提示符。PowerShell脚本因其良好的功能特性常用于正常的系统管理和安全配置工作,然而,这些特性被攻击者理解并转化为攻击特性(见下),也成为了攻击者手中的利器,给企业网络造成威胁。
PowerShell攻击特性总结:
• 无文件特性防查杀工具,可躲避防火墙、众多反病毒软件和入侵防御系统:PowerShell的无文件特性,使其无需接触磁盘,内存直接加载并执行恶意代码。
• 具备LotL攻击特性,攻击者轻松达到攻击目的的同时躲避常见的攻击检测和入侵防御系统:PowerShell在众多Windows操作系统中是默认安装的,这类系统自带的、受信任的工具,反恶意软件极难检测和限制,使攻击者无需增加额外的二进制文件,有效的躲避了常见的攻击检测和入侵防御系统。
• 极易混淆编码,PowerShell具备脚本类语言的特点,灵活多变,很容易配合多种混淆方法,对抗传统检测工具
• 良好的功能及适应性,满足多种攻击场景的需求:PowerShell内置远程管理机制,可用于远程命令执行;PowerShell支持WMI和.NET Framework,极易使用。