在这段时间学习的感觉来看,众多攻击技术中powershell使用频次极高,攻击者若能在目标主机运行代码,那么它们就会下载powershell脚本(.ps1)到磁盘中执行,甚至可以直接在内存执行,因此有必要好好看看这部分知识。
首先powershell是windows自带的一个交互式命令行界面和脚本环境,攻击者可以利用powershell实现攻击。而攻击者选用powershell的重要目的在于它可以混淆命令来达到:
·绕过检测
·派生其他进程
·下载并执行代码和二进制文件
·收集信息
·更改系统配置
既然powershell这么广泛使用,那么它的特征将会是很明显的,我们可以先从他的利用方式找到其特征:
·执行命令
·利用编码命令
·混淆执行
·下载其他payload
·启动其他进程
那么检测powershell的方法最有效的就是检查命令行参数,还可以使用反恶意软件扫描接口(AMSI)来检测恶意的powershell,书中介绍了一些检测方式:
①命令加密
攻击者使用powershell的时候往往会使用编码和混淆来扰乱视听,那么我们可以想到检测使用编码和混淆的方法特征,去检查有没有可疑的参数,使用包含“-encodecommand”参数变体的命令行来监控powershell的执行情况。
变体例子:-e,-ec,-encode,-en等
②Base64编码
查找powershell.exe的进程以及包含Base64的相应命令行
③混淆
找到了被编码的数据,可能还被做了手脚混淆了,我们需要找到真正需要的内容。所谓混淆,可能存在压缩,拆解,重新组合等方式绕过检测。我们可以使用正则表达式(比如regex)提高检测准确度,去检测包含“^,+,%,$”等特殊字符的powershell命令
④可疑的cmdlet
从混淆中解开明文内容后我们开始分析。我们可以检测各种可疑的会进行恶意活动的cmdlet(powershell环境中的轻量级命令)、方法和进程参数,比如:invoke-expression(或者他们的变体比如iex,.invoke)、DownloadString、DownloadFile方法,或者如-nop、-noni这样比较特殊的参数。
⑤消除误报
很多时候合法用户也会使用编码等命令,所以会出现误报,这就需要我们懂得其中逻辑并且懂的判断。
再继续了解一下powershell吧
常见攻击工具:
①PowerSplit②Nishang③Empire④Powercat

在之前的内网安全学习曾经提到powershell使用,可以回过头看看。