PowerShell介绍
Powershell 是早期一种VBScript的代替脚本语言,同时也是一种shell命令行执行窗口。微软最初出行PowerShell的原因是为管理员提供的自动化管理工具。在2016年中期,微软迈出了之前想都不会想的一步,完整开源了Windows PowerShell。
为什么要重视Powershell?
1.GUI无法带来效率上的提升。
2.其他脚本语言总是有种种缺憾。
3.越来越多的产品和Windows系统中组件已经采用PowerShell
现今的反病毒产品,对于检测磁盘上的恶意文件,是相当在行的;然而,要想检测到只存在于内存中的恶意代码,他们往往是事倍功半。内存的易失性、动态性,使得恶意软件很容易地改变形态;同时,可以自由地运行,无需顾忌任何反恶意技术的侦测。Powershell因其功能强大,而且无文件落地内存中执行,所以在无文件攻击中Powershell的攻击方式是非常流行的。例如:PowerGhost,2018年被发现使用Powershell无文件方式进行攻击感染的挖矿以及DDOS病毒。今年11月份深信服披露的MSASCMiner组织的挖矿病毒等等。
PowerShell的参数
在Windows cmd命令窗口中使用powershell -h命令即可方便查看参数用处。
Powershell脚本类攻击经常用到的参数 :
Nologo 表示启动时隐藏版权标志
NoProfile 不使用用户配置文件
NonInteractive 不向用户显示交互式提示
ExceptionPolicy 执行策略 一般都是bypass
WindowsStyle 一般都是Hidden
enc 就是encode的宿写,默认指base64编码加密。
PowerShell的去混淆与解密
去混淆与美化时的逻辑:
遇到“$ ;” 必换行
遇到{和}换行 遇到第二个{再缩进2个空格
最后统一转换为小写字母(部分代码可能会受影响无法执行,但方便观察)
这样可以使杂乱无章的powershell脚本变漂亮,容易审查。也可以写个python。
Powershell最常用的就是base64编码加解密,BASE64加解密
该网站比较适合加解密powershell的base64编解码。
PowerShell的调试
调试前需要关闭执行策略限制:
1 | set-executionpolicy remotesigned |
或者
1 | set-executionpolicy unrestricted |
Win10以上还需要关闭Windows Defender
1 | reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender” /v “DisableAntiSpyware” /d 1 /t REG_DWORD /f |
调试方法有两种:ISE调试 和VSCode调试 ,相比之下VScode调试比较灵活,因为可以在调试时添加代码,显示的变量比较方便。
掌握powershell的一些语法在遇到一些复杂的脚本类病毒会有很大帮助,推荐一本《Windows PowerShell实战指南 第2版》
使用VSCode调试powershell的可以参考
https://blog.csdn.net/m0_37552052/article/details/108978935
参考文献
https://blog.csdn.net/m0_37552052/article/details/108978935