导语:本文的目标是帮你建立一个便携安全的移动网络,这样你就能利用移动手机的一些基本技术,在任何情况下搭建移动网络。

360截图16360808104119106.jpg

前言

本文的目标是帮你建立一个便携安全的移动网络,这样你就能利用移动手机的一些基本技术,在任何情况下搭建移动网络。大家都知道,在用户高峰时段,常用的移动网络很容易堵塞,不堪重负。所以,关键时刻能够建立安全可靠的通信,是非常重要的。

以我的手机为例,我手机用的移动通信系统是GSM协议(全球手机系统),GSM是当前应用最为广泛的移动手机标准。全球超过200个国家和地区超过10亿人正在使用GSM手机。为了能够将GSM协议广播出去,我将使用一个SDR平台——BladeRF。BladeRF是由树莓派使用YateBTS控制的,YateBTS是实现手机访问网络和GSM核心功能和协议的软件,允许手机通过语音、文本和数据进行通信。因为树莓派的体积小、功耗低,所以利用树莓派就是我实现便携式目标的一把神器。

搭建环境配置

要使用我的指令搭建移动网络,你需要进行以下配置:

1.树莓派,本文使用的是树莓派3;

2.Micro SD卡,本文使用的是32 GB的;

3.Nuand BladeRF,本文使用的是BladeRF x40;

4.在树莓派上启用SSH,为了便于使用,终端也可以正常运行;

5.一部兼容GSM和SIM卡的手机;

6.SIM卡(sysmoSIM-GR2);

7.一根网线。

树莓派的设置

点击这里查看详细的配置说明。

1.将网线、电源和键盘插入到树莓派中,然后将电源适配器通电。注意:在树莓派中默认的用户名为pi,默认的密码为raspberry;

2.运行。

sudo raspi-config

改变输入布局

1.找到“本地化选项”,按“Enter”键;

2.找到“更改键盘布局”,按“Enter”键;

3.找到“Other”,按“Enter”键;

4.找到“英语(美式)”,按“Enter”键;

5. 找最上面的“英语(美式)”,按“Enter”键;

6.点击“进入”,接受下面两个屏幕上的默认值,因为它们不适用。

7.完成最后两步后,返回到主菜单。

启用SSH

1.找到“接口选项”,按“Enter”键;

2.找到“SSH”,按“Enter”键;

3.找到“Yes”,按“Enter”;

4.在下一个屏幕上,按“Enter”键返回主菜单;

5.当你到达主菜单,选择“完成”,然后按“Enter”;

6.当返回终端时,运行下面的命令来启用配置设置。

sudo reboot now

网络搭建

为了轻松在你的树莓派上启用SSH,请使用以下命令记下Pi的IPv4地址:

ifconfig eth0

在另一台计算机上,利用终端应用程序运行:

ssh [email protected][INSERT PI IPV4 ADDRESS HERE]

一旦出现证书的提示,你要再次输入用户名pi和默认的密码raspberry。

现在我开始与Pi进行远程交互了,首先让我开始收集搭建所需的内容。

# Download the script from GitHubwget https://raw.githubusercontent.com/MBRO95/PortableCellNetwork/master/PortableCellNetwork.sh# Make the downloaded script executable chmod +x ./PortableCellNetwork.sh

不过脚本将检查你是否是以root身份运行的,因此请确保你不会遗漏下面的命令的“sudo”部分。

在不记录输出的情况下运行脚本:

sudo ./PortableCellNetwork.sh

在记录输出的情况下运行脚本:

sudo ./PortableCellNetwork.sh | tee install.log

1.该脚本将查询你的网络名称,你需要按“Enter”键接受“DuaneDunstonRF”的默认名称或提供一个能够确认的信息;

2.确认你的网络名称;

3.该脚本现在将启动安装和配置过程;

4.当脚本启动快完成时,它将查询“pi”用户的新用户密码。你需要重新输入密码,以加强安全性。

当脚本启动完成时,它将报告运行的时间并等待重新启动输入。

1.按任意键重新启动pi。这样你将被重新被引导到桌面环境中,此时,你只需在启动的弹出窗口中选择“默认配置”选项;

2.一个名为“StartYateBTS”的启动脚本将在 ‘/home/pi’ 等待你,并开始启动移动网络进程。不过要启用启动脚本,必须在出现脚本名称后通过传递“- i”标志以交互方式运行,“- i”标志如以下所示:

sudo ./StartYateBTS.sh -i

一旦开始启动,这个脚本将会出现以下两个运行:

1.打开一个终端窗口,报告Yate(移动网络)状态;

2.打开一个Firefox浏览器窗口,该窗口将被导航到YateBTS(基于web的移动网络配置)。此时,你就可以查看或修改网络配置的设置了,并管理或编写设备的SIM卡。

手机环境的搭建

要将兼容GSM和SIM卡的手机连接到移动网络,需要搭建SIM卡以配合正确的设置。YateBTS使用的是PySIM工具,它是一个用于编写SIM卡,用python语言编写的工具。在安装脚本时,我已经把PySIM设置为支持sysmosim-gr2卡的正确版本。不过前提是确保兼容的SIM卡编写器已经被插入到了树莓派中,并将SIM卡置于它的进程中。

如下所示,打开名为Manage SIMs的选项卡,确保生成的随机IMSI设置被选中,插入用户未选中。如果你不小心选中插入用户的选项,则移动网络的功能将被干扰。

9.png

接下来是检查在“高级”下拉栏中是否进行了正确的设置,要确保移动网络选择设置是正确的。否则,使用默认设置并点击保存。

10.png

下图显示了对SIM重新编程后成功的输出,要注意的是,在管理SIMs的列表中对SIM卡进行搭建。

11.png

在将SIM卡插入GSM手机后,YateBTS将会发送一个欢迎信息,并显示如下所示的手机号码。如果Android手机没有正确连接到手机网络,请打开拨号器应用程序并输入##4636## A,这样设置菜单将出现在手机信息选项卡中,将首选的网络类型选为GSM,然后重新启动手机。

360截图16190828426539.jpg

安全设置

我安装的脚本都是基于Internet安全中心(CIS)的安全模型,因为这会让移动通信的安全得到最佳保障,该脚本集成了为Debian 8操作系统设计的基准模型。Debian 8操作系统是与树莓派映像最接近的Linux发行版,因此我认为该模型可以提供最佳安全参考。其实一开始,我是以树莓派的安全功能为参考的,但它不支持可以实现安全控制的自定义分区,例如全磁盘加密和分区修饰符,这样,它可以拒绝任意的执行,并保护填充磁盘空间的攻击。但安全脚本的目标是实现尽可能多的控件,同时保持树莓派操作系统和Yate软件的功能。

CIS安全模型可以禁用任何不必要的系统功能,以减少潜在的攻击表面,该模型会定期进行更新和补丁来修复安全漏洞,对于一个移动设备的系统来说,这是一个挑战,因为有时候移动设备是无法连网的。

更新操作系统

这样做的原因是因为周期性的补丁包含安全增强、漏洞修复和优化的附加功能:

sudo apt-get -y dist-upgrade

启用目录的粘滞位(sticky bit)

这样做可以防止未经授权的用户修改或重命名属于不同用户的文件:

df --local -P | awk {'if (NR!=1) print $6'} | xargs -I '{}' find '{}' -xdev -type d -perm -0002 2>/dev/null | xargs chmod o-t

删除不必要的文件系统

这样做可以减少树莓派上的本地攻击面:

echo "install cramfs /bin/true" >> /etc/modprobe.d/CIS.confecho "install freevxfs /bin/true" >> /etc/modprobe.d/CIS.confecho "install jffs2 /bin/true" >> /etc/modprobe.d/CIS.confecho "install hfs /bin/true" >> /etc/modprobe.d/CIS.confecho "install hfsplus /bin/true" >> /etc/modprobe.d/CIS.confecho "install squashfs /bin/true" >> /etc/modprobe.d/CIS.confecho "install udf /bin/true" >> /etc/modprobe.d/CIS.conf

删除不必要的网络协议

由于linux内核能支持不常用的网络协议,而这些协议又与本次的目标无关,因此,它们应该被禁用。

echo "install dccp /bin/true" >> /etc/modprobe.d/CIS.confecho "install sctp /bin/true" >> /etc/modprobe.d/CIS.confecho "install rds /bin/true" >> /etc/modprobe.d/CIS.confecho "install tipc /bin/true" >> /etc/modprobe.d/CIS.conf

禁用核心转储,以防应用程序崩溃

核心转储是可执行程序的内存,它通常被用来确定程序中止的原因。它还可以用于从核心文件收集机密信息。

echo "* hard core 0" >> /etc/security/limits.confecho 'fs.suid_dumpable = 0' >> /etc/sysctl.conf
sysctl -pecho 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile

关闭不必要的服务

最保险的做法就是禁用不需要的服务,以防止这些服务被开启。

systemctl disable avahi-daemon
systemctl disable triggerhappy.service
systemctl disable bluetooth.service

更改树莓派的原始密码

众所周知,Pi为默认密码,所以在进行更改时一定要设置的难度高一些。

passwd pi

测试环境的搭建

我的办法是隔着一堵墙或一个走廊来测试。

有用的搭建目录

共享文件路径的目录 /usr/local/share/yate

到达conf文件路径的目录 /usr/local/etc/yate

到达用户文件路径的目录 /root/.yate

模块路径的目录 /usr/local/lib/yate

如何测试

1.Yate NIB设置中包括一个ELIZA聊天软件,你可以把SMS消息发送到35492与该软件进行测试通信;

2.利用Android手机的配置菜单,拨打##4636##测试通信。

源链接

Hacking more

...