1.1. 简介
攻击者为了确保木马样本的传播效果,通常选择体积较小的方式进行传播。其中一种常见的方法是通过宏、WMI和PowerShell来下载恶意代码。近期,我们也经常看到利用PowerShell绕过UAC(用户帐户控制)下载文件的手法。
1.2. 环境介绍
1.2.1. 注意事项
默认情况下,PowerShell不允许执行PS1脚本,需要使用Set-ExecutionPolicy修改默认策略。可通过Get-ExecutionPolicy获取当前策略。
1.2.2. 开发工具
Windows自带的PowerShell ISE是常用的开发工具,脚本的运行后缀为.ps1。
1.2.3. 代码调试
使用内置编译器进行调试,常用快捷键有F9(设置断点)、F5(执行)、F10(单步执行)。
1.3. PowerShell启动命令参数
在执行PowerShell命令时,常用的参数有EncodedCommand、WindowStyle Hidden、NonInteractive等,这些参数可以帮助隐藏执行痕迹、绕过权限限制等。
1.4. 交互式SHELL
PowerShell提供了许多内置的交互式Shell命令,如获取帮助命令、查找特定任务的命令、将管道输出结果保存到文件中等。
1.5. 变量
在PowerShell中,变量名以美元符号$开头,大小写不敏感。变量可以存储命令输出,也可以包含方法和属性。
1.6. 逻辑表达式
PowerShell支持各种逻辑、比较和计算运算符,可以进行加减乘除、比较大小、匹配字符串等操作。
1.7. 条件语句
条件语句包括if、elseif和else语句,以及选择分支语句switch,用于根据不同条件执行不同的代码块。
1.8. 循环结构
PowerShell支持while、do…while、do…until、for和foreach等循环结构,用于重复执行特定代码块。
1.9. 数组
PowerShell允许一个变量保存多个独立的值,数组可以存储数值、字符串等类型的数据,并支持访问数组、数组分割等操作。
1.10. 字符串操作
PowerShell提供了丰富的字符串操作功能,包括字符串分割、替换、查找等操作,可以通过正则表达式或通配符进行匹配。
1.11. 文件操作
PowerShell可以轻松地进行文件的读取、写入和判断文件是否存在等操作,使用.NET的System.IO命名空间提供的类来实现。
1.12. 命令行参数
$args变量用于返回所有的命令行参数,可以通过传递参数给函数或脚本来获取$args变量中保存的参数。
1.13. 函数
PowerShell允许定义和调用函数,函数可以接受参数并返回值,可以在脚本中重复使用。
1.14. 下载案例
以下是一些利用PowerShell下载恶意文件的示例代码,通过设置参数和执行命令来实现文件的下载和执行。
暂无评论内容