nishang--安装、使用
用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。
一、Nishang 简介
Nishang 是一款基于 PowerShell 的开源渗透测试框架,专注于 Windows 环境下的红队操作、渗透测试及后渗透攻击。它由安全社区开发维护(核心开发者包括 Nikhil Mittal),通过模块化设计整合了信息收集、权限提升、远程控制、凭证窃取等功能,充分利用 PowerShell 在 Windows 系统中的原生性和隐蔽性,成为红队评估和安全测试的重要工具。
二、核心原理
Nishang 的工作原理基于 PowerShell 的特性和 Windows 系统的底层机制,主要包括:
-
PowerShell 原生性
PowerShell 是 Windows 内置的命令行 shell 和脚本语言,与系统深度集成(如通过 .NET 框架调用系统 API),且默认被大多数 Windows 系统支持。Nishang 脚本无需依赖额外二进制文件,可直接在目标系统中执行,降低被传统安全工具(如杀毒软件、防火墙)检测的概率。 -
内存加载与无文件攻击
许多 Nishang 模块支持通过内存加载执行(如利用Invoke-Expression
或IEX
命令),避免将脚本写入磁盘,减少留下痕迹的风险,实现 “无文件攻击”,绕过基于文件的检测机制。 -
利用 Windows 内置组件
模块设计依赖 Windows 原生功能(如 WMI、注册表、计划任务、远程桌面服务等),例如通过 WMI 远程执行命令、修改注册表实现持久化,无需安装额外工具即可完成攻击链。 -
规避防御机制
通过脚本编码(如 Base64)、混淆处理(如替换关键字、添加垃圾代码)等方式,规避 PowerShell 执行日志记录和安全软件的特征检测。
三、用途
Nishang 作为基于 PowerShell 的渗透测试框架,其核心用途是辅助安全人员在合法授权的前提下,对 Windows 系统进行渗透测试、红队评估和安全弱点验证,具体使用场景包括以下几个方面:
1. 信息收集与 reconnaissance
通过内置模块对目标系统进行全面信息探测,为后续攻击提供基础数据,例如:
- 收集系统基本信息(用户名、操作系统版本、补丁级别、进程列表等),判断目标脆弱性;
- 探测网络配置(IP 地址、端口开放情况、域环境信息等),梳理目标网络拓扑;
- 检测目标是否运行在虚拟机中(如
Check-VM
模块),评估攻击隐蔽性难度。
2. 权限提升与权限维持
针对 Windows 系统的权限机制,实现从低权限到高权限的突破,并维持控制权:
- 利用系统漏洞(如过时补丁、服务配置错误)的提权模块,获取管理员或 SYSTEM 权限;
- 通过修改注册表、创建计划任务、添加启动项等方式(如
Add-Persistence
模块),实现攻击持久化,确保目标重启后仍能控制。
3. 远程控制与命令执行
建立与目标系统的交互式连接,执行命令或操作:
- 通过反向 TCP/UDP shell(如
Invoke-PowerShellTcp
)、HTTP/HTTPS 隧道(如Invoke-PowerShellHttp
)等方式,绕过防火墙限制,获取目标 shell; - 利用 Windows 原生组件(如 WMI、WinRM)远程执行命令(如
Invoke-WMICommand
模块),实现无文件操作。
4. 凭证窃取与敏感信息获取
提取目标系统中的账号密码、哈希值等敏感数据,扩大攻击范围:
- 通过 PowerShell 版 Mimikatz(
Invoke-Mimikatz
模块)抓取内存中的明文密码、NTLM 哈希; - 收集浏览器保存的密码、VPN 配置、数据库连接信息等(如
Get-BrowserData
模块)。
5. 横向移动与内网渗透
在突破单台主机后,向内网其他主机扩散:
- 利用获取的凭证(如哈希传递攻击)登录内网其他主机;
- 通过 SMB、RDP 等协议横向移动,控制更多节点(如
Invoke-Command
结合凭证复用)。
6. 安全防御测试与绕过
验证目标系统的安全防护能力,帮助优化防御策略:
- 测试终端防护(如杀毒软件、EDR)的检测能力,通过脚本混淆、编码等方式验证防御绕过效果;
- 模拟真实攻击场景,评估企业内网的安全监控与响应能力。
四、安装
下载地址:【免费】nishang-一款强大的内网PowerShell攻击框架资源-CSDN下载
下载完成后界面如图所示
接着在此页面进入终端,然后运行以下命令
Set-ExecutionPolicy Bypass -Scope Process -Force
因为需要调整执行策略:默认情况下,PowerShell 禁止执行脚本(策略为 Restricted
),需临时调整(仅在授权测试环境中使用)。
ok、安装完成,接下来就可以使用了。
五、使用
我介绍一下各个文件夹所对应的功能,文件夹里面都有对应的脚本文件,这里我就不再多说
1. ActiveDirectory
用途:针对 Windows 域环境(Active Directory) 的攻击模块,聚焦域内渗透。
- 典型场景:
- 枚举域用户、组、计算机、域管理员(如
Get-DomainUser
类模块); - 利用域漏洞(如 ACL 配置错误、MS14-068)实现权限提升或横向移动;
- 窃取域凭证、模拟域用户登录(Pass-the-Hash 等)。
- 枚举域用户、组、计算机、域管理员(如
2. Antak-WebShell
用途:PowerShell 版 WebShell 相关模块,针对 Web 服务器渗透。
- 典型场景:
- 在 IIS 等 Web 服务中部署 PowerShell WebShell,通过 HTTP 交互执行命令;
- 绕过 Web 应用防火墙(WAF),利用 Web 层进入内网(如结合文件上传漏洞)。
3. Backdoors
用途:持久化控制 模块,确保攻击方长期维持对目标的访问权。
- 典型场景:
- 通过注册表(
Add-RegistryBackdoor
)、计划任务(Add-ScheduledTaskBackdoor
)植入后门; - 隐藏式连接(如反向 Shell 配合随机启动项),规避运维人员检测。
- 通过注册表(
4. Bypass
用途:绕过防御机制(杀毒软件、EDR、PowerShell 执行策略等)。
- 典型场景:
- 脚本混淆(如替换关键字、添加垃圾代码),躲避 AV 特征检测;
- 绕过 PowerShell 执行策略(
Bypass-ExecutionPolicy
),在受限环境运行脚本; - 对抗 EDR 监控(如内存加载、无文件执行)。
5. Client
用途:针对 Windows 客户端软件(浏览器、邮件客户端等)的攻击模块。
- 典型场景:
- 窃取浏览器保存的密码(如
Get-ChromePassword
、Get-FirefoxPassword
); - 劫持邮件客户端会话、提取配置信息(如 Outlook 邮箱凭证)。
- 窃取浏览器保存的密码(如
6. Escalation
用途:本地权限提升,从普通用户突破到管理员(或 SYSTEM 权限)。
- 典型场景:
- 利用系统漏洞(如 MS16-032、永恒之蓝衍生模块);
- 滥用服务权限配置(如修改系统服务二进制路径);
- 绕过 UAC(用户账户控制),提升权限执行高权限操作。
7. Execution
用途:命令 / 脚本执行 模块,聚焦 “如何在目标系统运行代码”。
- 典型场景:
- 无文件执行(如
Invoke-Expression
加载远程脚本); - 通过 WMI、COM 对象远程执行命令(
Invoke-WMICommand
); - 绕过应用白名单(利用系统签名二进制加载脚本)。
- 无文件执行(如
8. Gather
用途:信息收集,全面探测目标系统的资产、配置、敏感数据。
- 典型场景:
- 系统信息(
Get-Information
:用户名、补丁、进程); - 网络信息(
Get-NetworkProfile
:IP、端口、域信息); - 凭证窃取(
Invoke-Mimikatz
:抓取密码哈希、明文凭证)。
- 系统信息(
9. Misc
用途:杂项工具,涵盖无法归类的辅助功能(如编码、测试脚本)。
- 典型场景:
- Base64 编码 / 解码(辅助脚本混淆);
- 时间戳伪造(干扰日志分析);
- 简易漏洞测试(如 SMB 签名检测)。
10. MITM
用途:中间人攻击(Man-in-the-Middle),拦截或篡改网络通信。
- 典型场景:
- ARP 欺骗(劫持局域网流量);
- 代理劫持(截获 HTTP/HTTPS 通信,窃取认证信息);
- 伪造 DNS 响应(定向流量到攻击机)。
11. Pivot
用途:横向移动,从已控主机向内网其他节点扩散。
- 典型场景:
- 端口转发(
Invoke-PortForward
),突破网络隔离; - 利用 SMB/RDP 协议,结合窃取的凭证登录其他主机;
- 跳板攻击(通过已控主机扫描内网、部署代理)。
- 端口转发(
12. powerpreter
用途:整合 Powerpreter(另一款 PowerShell 渗透工具集)的模块,扩展功能。
- 典型场景:
- 更复杂的信息收集、漏洞利用(Powerpreter 原有模块的复用);
- 补充 Nishang 未覆盖的攻击链(如特定应用漏洞利用)。
13. Prasadhak
用途:自动化攻击脚本(推测,名称源自 Sanskrit,意为 “执行者”),批量执行渗透任务。
- 典型场景:
- 批量部署后门、窃取凭证(针对内网多台主机);
- 自动化漏洞扫描与利用(简化重复操作)。
14. Scan
用途:网络 / 系统扫描,探测目标脆弱性。
- 典型场景:
- 端口扫描(
Invoke-PortScan
),发现开放服务; - 漏洞检测(如永恒之蓝、MS17-010 检测脚本);
- 弱密码探测(针对 SMB、RDP 等服务)。
- 端口扫描(
15. Shells
用途:反向 Shell / 交互式连接,建立与目标的控制通道。
- 典型场景:
- TCP 反向 Shell(
Invoke-PowerShellTcp
),绕过防火墙出站限制; - HTTP 隧道(
Invoke-PowerShellHttp
),利用 Web 代理通信; - 交互式命令执行(获取目标系统的 CMD/PowerShell 交互环境)。
- TCP 反向 Shell(
16. Utility
用途:辅助工具,为其他模块提供支撑功能。
- 典型场景:
- 日志清理(
Clear-EventLog
,删除 PowerShell 执行痕迹); - 编码转换(
ConvertTo-EncodedCommand
,辅助脚本混淆); - 系统配置修改(如关闭防火墙、修改安全策略)。
- 日志清理(
你可以把各个文件夹当成一个个模块,每个模块对应的功能不同,但是使用都是大差不差的
比如,下面我介绍一下关于信息收集的模块,就是Gather模块
信息收集(以 Get-Information
为例)
该模块用于收集目标系统的基本信息(用户名、进程、网络配置等):
# 导入模块
Import-Module .\Gather\Get-Information.ps1
Import-Module:这是 PowerShell 的内置 cmdlet(命令),用于导入 PowerShell 模块(.ps1 或 .psm1 格式的脚本文件)。模块中通常包含预定义的函数、变量或工具,导入后可以直接调用其中的功能,扩展 PowerShell 的能力。
.\Gather\Get-Information.ps1:这是模块文件的 相对路径,指向 Nishang 框架中的具体脚本:
.\ 表示 “当前工作目录”(即执行命令时 PowerShell 的当前路径,需先通过 cd 命令进入 Nishang 框架的根目录,否则路径会无效);
Gather 是 Nishang 中的子目录,专门存放 信息收集类模块;
Get-Information.ps1 是具体的模块文件,是 Nishang 中用于收集系统基础信息的核心脚本之一。
执行该命令后,PowerShell 会加载 Get-Information.ps1 脚本中定义的功能,最核心的是导入了 Get-Information 函数。# 执行信息收集并输出结果
Get-Information
这是收集的一些信息
所以说,使用的话就是通过导入相应的模块,然后再通过脚本文件名称来使用,再例如
凭证窃取(以 Invoke-Mimikatz
为例)
抓取系统中的密码哈希和明文凭证(需管理员权限):
# 导入模块
Import-Module .\Gather\Invoke-Mimikatz.ps1# 执行凭证抓取
Invoke-Mimikatz
这里面的模块就是通过相应命令调用之后,会自动完成所有的命令,不用额外的使用其它命令 ,
相当于使用相应的命令调用脚本文件之后,一键使用。
这里还有个比较有意思的文件,这里有提供一个大马,嗯,挺强大的
这个主要在windows中使用,因为需要以下条件,主要是放在IIS目录下
.NET Framework | 提供运行时(CLR 公共语言运行时)、类库,负责编译、执行 ASP.NET 代码 | 需与项目开发版本匹配(如 .NET Framework 4.8),传统 ASP.NET 仅支持 Windows |
Web 服务器 | 接收 HTTP 请求,转发给 ASP.NET 处理,返回动态生成的 HTML | 主流为 IIS(Internet Information Services)(微软官方,深度集成 Windows);也可通过模块扩展 Apache/Nginx,但复杂度高 |
操作系统 | 承载上述组件 | 传统 ASP.NET 依赖 Windows(如 Win Server、Win 10/11); ASP.NET Core(跨平台版)可运行在 Linux、macOS,但.aspx 需迁移适配 |
这个大马的最终效果图