内网穿透工具
Last updated
Was this helpful?
Last updated
Was this helpful?
iodine 这个名字起的很有意思,iodine 翻译过来就是碘,碘的原子序数为 53,53 也就是 DNS 服务对应的端口号。
iodine 和 dnscat2 一样,适合于其他请求方式被限制以至于只能发送 DNS 请求的环境中,iodine 同样也是分成了直接转发和中继两种模式。
iodine 与 dnscat2 不同的在于 Iodine 服务端和客户端都是用 C 语言开发,同时 iodine 的原理也有些不同,iodine 通过 TAP 在服务端和客户端分别建立一个局域网和虚拟网卡,再通过 DNS 隧道进行连接,然后使其处在同一个局域网中。
首先需要有一个域名,并设置 NS 和 A 记录,A 记录指向自己的公网 VPS 地址,NS 记录指向 A 记录的子域名。
Kali 下自带 iodine ,Debian Linux 可以使用 apt 进行安装
这里服务端使用的是 Linux,服务端命令如下:
打开下载好的 tap 网卡驱动程序,一直下一步下一步安装就行。
然后就可以启动客户端程序了,注意下载下来的 dll 文件要和 exe 在一个目录下,不能只复制一个 exe 到目标主机上,而且要以管理员权限运行下面的命令。
如果出现 Connection setup complete, transmitting data.
就表示 DNS 隧道就已经建立了。
这时如果去 ping 服务端自定义的虚拟 IP 也是可以 ping 通的。
假如这里内网机器分配到了 192.168.77.2 这个 IP ,因为处在一个局域网中,所以 VPS 直接访问 192.168.77.2 的 3389、80 等端口就可以直接访问到内网机器的相关端口了,同样的内网主机也可以访问 VPS 的 22 端口等等,至此便绕过了策略限制。
原文链接:
Socks 代理可以理解成升级版的 lcx,关于 lcx 的用法可以看我之前的文章:
但是 lcx 毕竟年代久远,现在的杀软基本也都能识别到了,因此在实战中不太推荐使用 lcx ,更推荐使用这些 socks 代理工具。
常见的 socks 代理工具有 ew、termite、frp、nps、sSocks、reGeorg、Neo-reGeorg、SocksCap、Proxifier、ProxyChains 等等,不同的工具适合使用的场景和方法都有所不同。
因为在这其中有些工具笔者较经常使用,所以这里主要记录下 ew、frp、nps 的使用方法,本篇文章主要记录 ew 的使用,后续文章将更新 frp、nps 的使用。
开始之前,先理解下正向代理和反向代理的区别。
正向代理:主动通过代理访问目标主机,即攻击主机 --》目标主机
反向代理:目标机器通过代理进行主动连接,即目标主机 --》攻击主机
ew 全称 EarthWorm
,直译过来就是蚯蚓
,引用作者的原话是:
该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。
这个描述也是很形象了。
作者已经不提供 ew 的下载了,但是搜了一下 github 还是有其他人上传的,不过病毒需自查。
从这工具上传的时间是 5 年前就可以看出这个工具很有年代感了。
该工具共有 6 种命令格式 ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran,正向连接的命令是 ssocked,反向连接的命令是 rcsocks 和 rssocks,其他命令用于一些比较复杂的网络环境中。
a、正向连接
正向连接需要目标主机有一个公网 IP,或者说攻击主机能够直接访问到目标主机。
命令也很简单
然后使用 SocksCap、Proxifier、ProxyChains 等工具配置上目标主机的 IP 和监听端口即可,socks 要选择 socks5
b、反向连接
反向连接适合于目标没有公网 IP 的情况,这时就需要一台公网 vps 了,这里就直接以内网地址作为演示了。
在公网 VPS 上执行以下命令:
这条命令表示将 1080 端口接收到的数据转发到 4444 端口上。
在目标主机上执行以下命令:
这条命令表示在本地开启 socks 5 服务,并反弹到 vps 的 4444 端口,如果代理建立成功,在 VPS 端就会看到 rssocks cmd_socket OK!
的提示。
最后,代理 vps 的 1080 端口就可以访问到目标主机的内网了。
c、二级网络环境(一)
有这样的一个网络环境,目标主机A有两个网卡,一个内网地址一个公网地址,但这个主机只能访问内网主机B不能访问其他内网资源,而内网主机B不能访问外网但是能访问内网资源。
在拿到这两台主机权限后,就可以使用 ew 进行二级跳板访问到内网资源。
在内网主机B上,开启正向连接代理
在内网主机A上
这条命令表示将 1080 端口收到的代理请求转发到内网主机 B 192.168.7.110 的 4444 端口,此时就可以通过访问内网主机 A 的外网 IP 的 1080 端口访问到内网主机 B 上架设的 socks5 代理了。
d、二级网络环境(二)
在上面的环境中,内网主机 A 有公网 IP,如果没有公网 IP 的情况下,又该怎么办呢?这时候就需要结合反向连接了,因此需要一台公网的 VPS 主机。
在公网 VPS 上
表示将 1080 收到的 代理请求转发到 4444 端口上
在内网主机 B 上
表示开启 5555 端口的正向代理
在内网主机 A 上
表示在内网主机 A 上使用 lcx_slave 的方式,将 VPS 的 4444 端口和内网主机 B 的 5555 端口连接起来。
现在就可以通过 VPS 的 1080 端口访问到内网主机 A 再访问到内网主机 B ,最后访问到内网资源了。
e、三级网络环境
目前有这样的一个环境,内网主机 A 没有公网 IP 不能访问内网资源,但是可以访问外网和内网主机 B,内网主机 B 不能访问外网和内网资源,但是可以和 A、C 相互访问,内网主机 C 能访问内网资源,但是只能和内网主机 B 相互访问,因此如果想访问到内网资源就需要做三层跳板。
在公网 VPS 上,将 1080 端口收到的代理请求转发到 4444 端口
在内网主机 A 上,将 VPS 的 4444 端口和内网主机 B 的 5555 端口连接起来
在内网主机 B 上,将 5555 端口收到的代理请求转发到 6666 端口上
在内网主机 C 上,启动 socks5 服务,并反弹到 B 主机的 6666 端口上
至此,socks5 代理 VPS 的 1080 端口就会访问到内网资源了。
另外还有个 ew 的升级版工具叫 termite,不过比较遗憾的是 termite 在两年前也已经暂停更新了,这里也就不再大费周章的记录它了。
原文链接:
相较于前一篇文章介绍的 ew 的年代久远,frp 就好的多了,基本上隔几天就会发布新的版本,最新的一版更新还就在几天前。
至于下载安装直接在项目的 releases 里下载自己对应的系统版本就行。
frp 分成服务端和客户端,分别叫 frps 和 frpc,配置文件分别对应 frps.ini 和 frpc.ini
以下环境均为本地环境,VPS IP 为 172.16.214.52,目标主机 IP 为 192.168.7.110
场景:内网主机可出网,想从公网访问内网主机的 3389 端口
在 VPS 上开启服务端,这里以 kali 为例,首先修改配置文件 frps.ini
然后启动服务端
配置客户端配置文件
此时,在 vps 上访问本地的 3389 端口就会访问到内网主机的 3389 端口了。
场景:内网主机可出网,想把内网主机作为跳板机使用
上面的场景只是利用 frp 访问了内网指定机器的指定端口,我们还可以利用 frp 将内网主机作为跳板机使用。
这次我们用上 frp 的 web 控制面板以及访问密码等功能,让我们建立的连接更加安全、方便。
在 VPS 上开启服务端,服务端配置文件如下:
实战中,为了更好的隐藏自己,最好还是要设置通过域名访问
配置好文件后,启动服务端
配置客户端文件
开启客户端
测试 VPS IP 的 1080 的 socks5 代理,发现已经连通了。
打开 frps 仪表盘,登录后,可以看到当前连接数据的相关信息
frp 的参数远不止文章中提到的这些,更多功能可以参考下面的参考文章。
参考文章:
也是一款还在更新的内网穿透工具,相较于 frp,nps 的 web 管理就要强大很多了。
nps 和 frp 一样功能都很多,这里就主要记录下平时经常用到的 SOCKS5 代理模式。
nps 不同于 frp 的开箱即用,nps 的服务端需要安装才能使用,这里以 kali 下的安装为例。
在 nps 项目的 releases 中下载好自己对应系统的版本后,解压安装
启动服务端,默认 Web 管理界面端口 8080
启动 nps 后,直接访问服务端的 8080 端口,输入默认密码 admin/123 进行登录,不难看出,这 web 界面确实比 frp 的丰富很多。
nps 的使用也很简单,界面语言也可选择中文。
首先新增一个客户端,点击 “客户端” --》“新增”,打开新增客户端页面,填写相关信息后,点击新增即可
新增之后,刷新一下可以看到刚刚添加的记录,点击刚刚新增记录里的“加号”还能直接看到在客户端上要运行的命令,这个可谓是很贴心了。
复制命令到客户端上运行,服务端这边就能看到目标已经上线了,连接状态也由离线变成了在线。
如果想创建一个 SOCKS5 代理也很简单,直接点击 “SOCKS 代理”--》“新增”,输入客户端的 ID 和代理的端口,然后新增即可。
之后直接设置 SOCKS5 代理 IP 为 nps 服务端 IP ,端口这里设置的是 1080,这样就建立了一个 SOCKS 代理,如果新增设置客户端的时候,设置了认证账号密码,那么在连接 SOCKS 代理的时候,也要添加上对应的账号和密码。
在这整个过程中都没有修改配置文件等等操作,真的是很方便了。
参考文章:
作者:TeamsSix 链接:https://www.jianshu.com/p/2fc44dd2b1e8 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Windows 可以直接到官网下载,下载地址:,服务端名称是 iodined.exe,客户端是 iodine.exe
这里客户端使用的是 Windows,Windows 客户端上除了要有 iodine 相关文件外,还需要安装 tap 网卡驱动程序,这里我百度找了一个下载地址
参考文章:
ew 的项目主页:
下载地址:
在实战中,大家较多使用的也是 frp,frp 项目地址:
官方使用文档:
原文链接:
nps 项目地址:
官方使用文档:
原文链接: