*本文作者:2benben,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
关键词: 内网穿透, 端口映射, SSH协议, 花生壳, Kali NetHunter
本文针对普通家庭内网用户,有条件架设ngrok的大拿可以忽略。
在我国,由于网民众多,运营商无法保证为每一个宽带用户提供全球唯一的公网IPv4地址,每个宽带用户其实都处于一个“大的局域网”内,使用着运营商指定的IP。 没有公网IP,自然不能架设网站,使用SSH等服务。快这好比国外地广人稀,家家是独立门牌(公网IP)的别墅,快递员上门就可以找到你。我们人多地少,xx大街多少号这样的地址给了小区,每家人用公寓的门牌号(运营商指定IP),快递由小区的物业代收,再转发给你。这个转发过程,即端口映射(NAT),实现包裹从商家发到你手里的过程,就是内网穿透。
SSH是基于应用层的加密传输协议,由于其加密传输的特性,适合于不安全的网络环境中远程访问设备,常用的朋友都知道,但是如果在公网上使用,作为接收方必须有一个公网地址。好比商家让快递直接密送岛国动作片碟给你,他们只知道你的xx街多少号,直接找到你的独栋别墅容易,如果你住公寓,快递员就懵了。
那么怎样通过SSH连上让没有公网地址的家庭设备,实现远程访问呢?最简单的方法是通过端口映射实现内网穿透,一款叫做花生壳软件可以解决这个问题。原理可理解为:你没事儿就打电话告诉花生壳你家住哪,然后告诉快递员送碟找花生壳,花生壳核对了主人名字,带着快递员进你家。在Win/Mac/Linux和树莓派上都有终端,唯独不支持安卓。手机可是最方便简易的设备啊! 有没有想过,在自己手机上架一个网站,发布到外网?或者远在天边的你拿一Pad,通过SSH访问位于任意内网的手机,在用手机远程辅导孩子功课,打开电脑关掉电视节目?或者在不那么友好的滲透测试环境里,靠放一台手机优雅的完成任务,避免笨重的PC和一看就不是好人的树莓派的尴尬。 如何实现呢? 最简单的思路就是在手机上用虚拟机跑个Linux,再装个Linux的花生壳客户端就可以了。
经过多次实测,我选择安装了Kali NetHunter Linux, 主要的原因是自带了大量网络测试工具,对于各位少侠来说轻车熟路;现成的安装包,安装调试最简单。
实现的必要条件是:
1.一台Kali NetHunter支持的安卓手机(作者使用的是Nexus 6)
2.一个可运行SSH的终端(所作者使用的是iphone 5,随便装个Terminal软件)
实现步骤是:
1. 安装Kali NetHunter到安卓移动设备, 让Linux以Chroot方式在安卓移动设备上运行
2. 在Kali NeHunter Linux的Shell下安装和配置花生壳客户端
3. 在花生壳账户上配置端口映射
4. 将安卓移动设备接入目标内网,从任意外网设备通过SSH远程访问
如果这些您都熟悉,那么看到这可以结束了,如果有疑问,请跟着下面步骤一步步来:
1. 安装Kali Net Hunter到安卓移动设备
1.1 支持设备
首先需要一台 NetHunter 支持的移动设备, https://www.offensive-security.com/kali-linux-nethunter-download/ 所列的都可以。
1.2 刷原厂Rom和Kali NetHunter固件
先刷原厂rom,再刷NetHunter,具体的刷机方式请参考此链接: https://github.com/offensive-security/kali-nethunter/wiki%EF%BC%8C 安卓下建议使用Team Winning Recovery Project从SD卡刷机,WIndows推荐Nexus Root Kit, Linux下使用NetHunter Linux Root Kit
1.3 当然你也可以通过虚拟机装Ubuntu、 Debian,稍微折腾点,篇幅限制请自行搜索。
1.4 成功后你的移动设备里会出现 名为 NetHunter 的 APP 和 NetHunter Terminal 的 Shell
2. 在Kali NetHunter下安装和配置花生壳
2.1 打开Kali Net Hunter APP - >> 左上角的三道杠 ->> Kali Service,在界面中选择打开SSH
2.2 下载花生壳客户端
浏览器览器打开 https://hsk.oray.com/download/ 选择树莓派的版本后复制下载地址。因为Andriod手机也是ARM架构,我抱着试一试的心态下载了树莓派版本而不是Linux版本,成功!
打开Nethunter Terminal APP (嫌手机打命令太麻烦,我这里用的Mac的Console通过SSH连上了移动设备)在Shell提示符下输入 wget https://hsk.oray.com/download/download?id=25 (这是我复制的地址,不一样请用你的)
2.3 dpkg命令安装客户端
Shell提示符下输入 ls 命令,记住下载的文件名,接着输入 dpkg -i 刚才看到的文件名 ,用dpkg命令安装软件包。
2.4 客户端启动和状态
安装结束后,Shell提示符下输入 phddns start, 启动花生壳客户端
Shell提示符下输入 phddns status, 复制下图高亮所示区部位的SN,后面访问花生壳网页配置时会用到。
2.5 更改Root密码
现在Kali Net Hunter默认的root密码是空的,这样可不安全,请在Shell提示符下输入 passwd 命令, 设置Kali NetHunter的初始root密码
3.在花生壳账户上配置端口映射
偷懒部分借鉴别人的文章, 源文件地址: https://blog.csdn.net/charles_neil/article/details/77017910
3.1 注册,购买
浏览器访问www.oray.com注册好花生壳帐号,这个帐号是没有内网穿透功能的,需要花6¥购买激活。
3.2 添加设备
现在要让花生壳知道这个SN码所在的电脑是你帐号下面的,这样买的内网穿透功能才能使用。到花生壳官网 登录,进入 "管理中心" ,点击 "添加设备" ,输入刚才复制的SN码
3.3 登录管理页面
打开b.oray.com 这个管理页面,用SN码登录,默认密码是admin。
由于是第一次登录,需要手机验证,照做就好。用SN码登录是没有内网穿透的,这个登录操作相当于是激活了这个SN所在的设备,现在换用之前注册的帐号登录。此时如果连接成功,你注册的账号和设备账号前的图标是绿色的
3.4 添加映射
用自己的帐号登录。打开管理中心的"内网穿透" ,点击"添加映射"
映射类型: 自定义端口
域名: 注册的时候会送壳域名,随便选一个
应用名称: 随便填,就写ssh吧
内网主机: 填写需要映射的主机的内网ip如192.168.1.100,可以用ifconfig查到
内网端口: 22(SSH端口是22)
外网端口: 选临时端口,系统会随即给你指定一个。
如果成功会有提示。
3.5 通过SSH远程登陆内网手机
上一步成功后,“内网穿透”界面会有外网访问地址一项,显示您的“外网地址(主机名):端口号“。
4. 将安卓移动设备接入目标内网,从任意外网设备通过SSH远程访问
恭喜,用所给的地址和端口号就可以外网远程登陆SSH了。
在远程设备的Linux控制台输入 ssh 用户名@外网地址(主机名):端口号, 由于Kali NetHunter默认root, 用户名这里写root就好,密码用刚才自己改的。
ssh root@xxx.xxxxx.cc:22
或者在客户端软件上自行配置以上信息。
在连接到其他内网后后,记得在Kali 的 shell下运行 ifconfig看下本机地址,对应在花生壳的网站上更改本地ip设置。
这是成功外网客户端(iphone 5)的运行效果,好了少年们,你也可以远程连接到我的安卓设备了,给你开一账号了解下? 怎么用发挥你们的想象力吧!
*本文作者:2benben,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。