如何搭建并使用便携式 4G/LTE 伪基站研究移动安全

此文章PDF文档下载地址:点击下载

0x00 前言

在移动互联网深入普及和物联网开始规模应用的今天,网络安全公司怎能不研究移动安全,要研究移动安全,怎能没有4G/LTE伪基站研究测试环境?

本文介绍如何利用开源项目和SDR,合法的搭建并使用便携式4G/LTE伪基站,用于实验室的安全研究,或者用于用户授权的物理渗透测试。

0x01 合法开展研究活动

根据国家无线电管理法规,我们需要先取得频率、设备和人员许可才能合法的在通信业务频段进行收发。而已经分配给运营商的频段,需要该运营商同意才能使用。因此,我们做通信实验时,通常的做法不是申请许可,而是构造一个封闭的电磁空间,即法拉第笼,在这个空间里进行无线信号的发射和接收不会影响到外部世界。

法拉第笼是由金属或金属网包围形成的一个空间,大可以到一个大房子,小可能就是一个小箱子。测试时,如果法拉第笼比较小,我们就只把发射和接收无线电信号的天线放在法拉第笼里面,其它部分仍可放在外面,内外通过馈线连接。

0x02 硬件准备

SBC:UP Board, Intel Atom x5-Z8350 四核CPU,4GB RAM,64GB eMMC

SDR:USRP B200mini + USB电缆

天线+馈线+双工器

充电宝:5V 3A(非常重要)

0x04 软件准备

1.Ubuntu 16.04 LTS

安装之后更新

sudo apt-get update

sudo apt-get upgrade

2.必备软件:Git

sudo apt-get install git

国内专享:Shadowsocks、Privoxy

sudo apt-get install privoxy python-gevent python-pip

sudo pip install shadowsocks

科学上网配置略。

0x05 安装步骤

1.eNodeB: OpenAirInterface

git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git

cd openairinterface5g

git checkout develop

source oaienv

cd cmake_targets

./build_oai -I --eNB -x --install-system-files -w USRP

2.EPC: OpenAir-CN

git clone https://gitlab.eurecom.fr/oai/openair-cn.git

cd openair-cn

git checkout develop

cd scripts

./build_hss -i

./build_mme -i

./build_spgw -i

./build_hss

./build_mme

./build_spgw

0x06 配置

1.eNodeB: 

找到 ~/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band3.tm1.usrpb210.conf 进行如下修改,并另存为enb.band3.tm1.usrpb200.conf。

tracking_area_code  =  "13";

    mobile_country_code =  "460";

    mobile_network_code =  "01";

    Nid_cell                          = 0;

    ////////// MME parameters:
    mme_ip_address      = ( { ipv4       = "127.0.1.10";
                              ipv6       = "192:168:30::17";
                              active     = "yes";
                              preference = "ipv4";
                            }
                          );
    NETWORK_INTERFACES :
    {
        ENB_INTERFACE_NAME_FOR_S1_MME         = "lo";
        ENB_IPV4_ADDRESS_FOR_S1_MME           = "127.0.1.2/8";

        ENB_INTERFACE_NAME_FOR_S1U            = "lo";
        ENB_IPV4_ADDRESS_FOR_S1U              = "127.0.6.2/8";
        ENB_PORT_FOR_S1U                      = 2152; # Spec 2152
    };

2.EPC:

修改hosts文件和hostname,然后重新启动。

sudo gedit /etc/hosts

127.0.0.1   localhost
127.0.1.1   mini.openair4G.eur mini
127.0.33.1  hss.openair4G.eur hss
sudo gedit /etc/hostname

mini

复制EPC配置文件:

sudo mkdir -p /usr/local/etc/oai/freeDiameter
sudo cp ~/openair-cn/etc/mme.conf /usr/local/etc/oai
sudo cp ~/openair-cn/etc/hss.conf /usr/local/etc/oai
sudo cp ~/openair-cn/etc/spgw.conf /usr/local/etc/oai
sudo cp ~/openair-cn/etc/acl.conf /usr/local/etc/oai/freeDiameter
sudo cp ~/openair-cn/etc/mme_fd.conf /usr/local/etc/oai/freeDiameter
sudo cp ~/openair-cn/etc/hss_fd.conf /usr/local/etc/oai/freeDiameter

编辑hss.conf

## MySQL mandatory options
MYSQL_server = "127.0.0.1";
MYSQL_user   = "root";
MYSQL_pass   = "linux";
MYSQL_db     = "oai_db";

编辑mme.conf

REALM = "openair4G.eur";

    S6A :
    {
        S6A_CONF                   = "/usr/local/etc/oai/freeDiameter/mme_fd.conf"; # YOUR MME freeDiameter config file path
        HSS_HOSTNAME               = "hss";                                         # THE HSS HOSTNAME
    };

GUMMEI_LIST = (
        {MCC="460" ; MNC="01"; MME_GID="4" ; MME_CODE="13"; }                   # YOUR GUMMEI CONFIG HERE
     );

TAI_LIST = (
{MCC="460" ; MNC="01";  TAC = "13"; }                              # YOUR PLMN CONFIG HERE
);

   NETWORK_INTERFACES :
    {
        # MME binded interface for S1-C or S1-MME  communication (S1AP), can be ethernet interface, virtual ethernet interface, we don‘t advise wireless interfaces
        MME_INTERFACE_NAME_FOR_S1_MME         = "lo";                        # YOUR NETWORK CONFIG HERE
        MME_IPV4_ADDRESS_FOR_S1_MME           = "127.0.1.10/8";            # YOUR NETWORK CONFIG HERE

        # MME binded interface for S11 communication (GTPV2-C)
        MME_INTERFACE_NAME_FOR_S11_MME        = "lo";                          # YOUR NETWORK CONFIG HERE
        MME_IPV4_ADDRESS_FOR_S11_MME          = "127.0.8.11/8";                # YOUR NETWORK CONFIG HERE
        MME_PORT_FOR_S11_MME                  = 2123;                          # YOUR NETWORK CONFIG HERE
    };

S-GW :
{
    # S-GW binded interface for S11 communication (GTPV2-C), if none selected the ITTI message interface is used
    SGW_IPV4_ADDRESS_FOR_S11                = "127.0.8.1/8";            # YOUR NETWORK CONFIG HERE

};

编辑spgw.conf

S-GW :
{

    NETWORK_INTERFACES :
    {
        # S-GW binded interface for S11 communication (GTPV2-C), if none selected the ITTI message interface is used
        SGW_INTERFACE_NAME_FOR_S11              = "lo";                    # YOUR NETWORK CONFIG HERE
        SGW_IPV4_ADDRESS_FOR_S11                = "127.0.8.1/8";            # YOUR NETWORK CONFIG HERE

        # S-GW binded interface for S1-U communication (GTPV1-U) can be ethernet interface, virtual ethernet interface, we don‘t advise wireless interfaces
        SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP    = "lo";                       # YOUR NETWORK CONFIG HERE, USE "lo" if S-GW run on eNB host
        SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP      = "127.0.6.1/8";           # YOUR NETWORK CONFIG HERE
        SGW_IPV4_PORT_FOR_S1U_S12_S4_UP         = 2152;                         # PREFER NOT CHANGE UNLESS YOU KNOW WHAT YOU ARE DOING

        # S-GW binded interface for S5 or S8 communication, not implemented, so leave it to none
        SGW_INTERFACE_NAME_FOR_S5_S8_UP         = "none";                       # DO NOT CHANGE (NOT IMPLEMENTED YET)
        SGW_IPV4_ADDRESS_FOR_S5_S8_UP           = "0.0.0.0/24";                 # DO NOT CHANGE (NOT IMPLEMENTED YET)
    };

...
}

P-GW =
{
    NETWORK_INTERFACES :
    {
        # P-GW binded interface for S5 or S8 communication, not implemented, so leave it to none
        PGW_INTERFACE_NAME_FOR_S5_S8          = "none";                         # DO NOT CHANGE (NOT IMPLEMENTED YET)
        PGW_IPV4_ADDRESS_FOR_S5_S8            = "0.0.0.0/24";                   # DO NOT CHANGE (NOT IMPLEMENTED YET)

        # P-GW binded interface for SGI (egress/ingress internet traffic)
        PGW_INTERFACE_NAME_FOR_SGI            = "eth0";                         # YOUR NETWORK CONFIG HERE
        PGW_IPV4_ADDRESS_FOR_SGI              = "192.168.12.82/24";             # YOUR NETWORK CONFIG HERE
        PGW_MASQUERADE_SGI                    = "yes";                          # YOUR NETWORK CONFIG HERE
    };
...
   # DNS address communicated to UEs
    DEFAULT_DNS_IPV4_ADDRESS     = "192.168.106.12";                            # YOUR NETWORK CONFIG HERE
    DEFAULT_DNS_SEC_IPV4_ADDRESS = "192.168.12.100";                            # YOUR NETWORK CONFIG HERE

...
}

编辑HSS freediameter配置文件 (/usr/local/etc/oai/freeDiameter/hss_fd.conf):

Identity = "hss.openair4G.eur";
Realm = "openair4G.eur";

编辑MME freediameter配置文件 (/usr/local/etc/oai/freeDiameter/mme_fd.conf):

Identity = "mini.openair4G.eur";
Realm = "openair4G.eur";
ConnectPeer= "hss.openair4G.eur" { ConnectTo = "127.0.33.1"; No_SCTP ; No_IPv6; Prefer_TCP; No_TLS; port = 3868;  realm = "openair4G.eur";};

0x07 运行

安装证书:

cd ~/openair-cn/scripts
./check_hss_s6a_certificate /usr/local/etc/oai/freeDiameter/ hss.openair4G.eur
./check_mme_s6a_certificate /usr/local/etc/oai/freeDiameter/ mini.openair4G.eur

首次运行HSS:

cd ~/openair-cn/scripts
./run_hss -i ~/openair-cn/src/oai_hss/db/oai_db.sql

之后每次运行HSS:

cd ~/openair-cn/scripts
./run_hss

运行MME:

cd ~/openair-cn/scripts
./run_mme

安全测试通常不需要运行SP-GW。

运行eNB:

cd ~/openairinterface5g
source oaienv
cd cmake_targets/lte_build_oai/build
sudo -E ./lte-softmodem -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band3.tm1.usrpb200.conf

0x08 高级玩法

1.对TD-LTE的支持

  OAI本身支持TD-LTE。但是因为TD系统全网收发同步的要求,伪基站要正常工作,就必须与运营商现网同步。OAI已含有部分通过空中接口信号实现TD同步的代码,需要进一步修改才能完成与现网同步。

2.精简代码

  如果我们只做网络安全研究,不做通信研究,就不需要完整的EPC。大部分公司只是研究空口的DoS攻击和RRC重定向攻击,每次只有少量固定格式的网络报文从MME返回,因此可以修改代码,直接返回我们想要的报文,或者执行我们想要的逻辑,就可以精简掉EPC,只运行lte-softmodem一个进程就好了。

3.连接运营商核心网

  如果能从运营商核心网获得安全认证四元组:Kasme、AUTN、RAND、XRES,就能通过双向鉴权,让LTE手机相信我们的基站是真基站。这需要修改MME的代码和freeDiameter的配置来实现。

4.同一硬件集成LTE+GSM伪基站

5.架设自己的测试网

如果你对某一种高级玩法感兴趣,并且知道大体怎么实现,欢迎找我组队,可以一起做点有意思的(开源)通信安全项目,Seeker老师的微信:70772177。

0x09 结束语

在万物互联时代,了解LTE可用性和安全性的边界,事关我们每个人的人身安全和数据安全。

不管你是在开发无人驾驶汽车、医疗设备、智能电表,还是普通的移动应用,过于相信运营商网络的可用性和安全性都会带来安全威胁。不只是网络安全公司需要研究无线通信的安全,产品开发者同样需要。

时间: 2024-10-03 21:06:38

如何搭建并使用便携式 4G/LTE 伪基站研究移动安全的相关文章

使用GnuRadio+OpenLTE+SDR搭建4G LTE基站(上)

0×00 前言 在移动互联网大规模发展的背景下,智能手机的普及和各种互联网应用的流行,致使对无线网络的需求呈几何级增长,导致移动运营商之间的竞争愈发激烈.但由于资费下调等各种因素影响,运营商从用户获得的收益在慢慢减少,同时用于减少韵味和无线网络的升级投资不断增加,但收入却增长缓慢.为保证长期盈利增长,运营商必须节流. SDR Software Define Radio 软件定义无线电可将基站信号处理功能尽量通过软件来实现,使用通用硬件平台可快速地实现信号的调制解调,编码运算,SDR为现有通信系统

深入浅出谈4G ─ 4G LTE网速到底有多快?

? 常说4G网速能达100MHz,实际感受远远没有这么快.今天和大家一起算算帐,算算4G LTE网速到底有多快. ? 基本概念1:资源粒子 1个资源粒子就是用1个子载波传送1个OFDM符号.记作: ? 1个子载波的带宽是15kHz. 1个OFDM符号可以容纳2/4/6个数据位. ? 结论1:1个资源粒子最多传送6个数据位. ? 基本概念2:资源块 1个资源块就是同时用12个子载波传送1个时隙(0.5ms). 1组(12个)子载波共占用180kHz的带宽. 1个时隙(0.5ms)内,1个子载波可以

4G LTE 网只能提供数据服务,不能承载语音通话,该怎么理解?

转:http://www.qbiao.com/16776.html 这个问题要从移动核心网的角度来理解.我们平时说的WCDMA.TD-SCDMA.TD-LTE其实通常指空口技术,即从手机到基站的通信技术.而移动通信的核心控制部分,则由核心网完成--如何在两个基站间建立起语音连接?何时给拨号方返回嘟嘟的线音?何时给接收方发出振铃?如何判断一个用户是否开通了呼叫转移业务,如何实现?如何建立从手机到因特网服务器的数据连接?如何判断用户是3G用户还是LTE用户? 这些都是由移动核心网完成的. 下面来说移

关于诺思FABR 4G LTE滤波器 取代avago(安华高科),triquint,EPCOS(TDK)等型号

RSFP2501B 是针对Band 41 上运用,采用FBAR工艺 :插入损耗低于2.5dB:抑制WIFI band(CH1-CH10)高于35dB.:封装是CSP :规格是2.0mm*1.6mm*0.85mm: RSFP2301F 是针对Band 40上运用,采用FBAR工艺 :插入损耗低于1.8dB:抑制PCS和WIFI band高于35dB.:封装是CSP :规格是3.0mm*3.0mm*0.85mm: RSFP2402D 是WIFI兼容上运用,采用FBAR工艺 :插入损耗低于2.5dB:

人不在囧途 便携式3G上网设备+套餐推介

来源: http://network.pconline.com.cn/317/3174920_all.html [PConline资讯]过年回家,本该是再高兴不过的事,可一想到要在路上颠簸数十个小时,心情也会大打折扣.大家都喜欢<人在囧途>的情节,可那毕竟是电影,奇葩的确到处都是,但这一路还是少碰见的好,顺利到家已经圆满. 奇葩.艳遇yy了过后,恐怕很多人会选择对着手机.平板.笔记本发呆.这里推荐几款便携式的3G上网设备,介绍一套3G资费,希望能在大家踏上旅途之前派上用场.当然,如果你真想成就

LTE时代的定位技术:OTDOA,LPP,SUPL2.0

移动定位技术的发展历程 如今智能手机已经在整个社会普及,数量众多的手机应用成为了人们生活当中不可或缺的一部分.越来越多的手机应用都用到了手机定位技术,无论是本地搜索类应用,还是各种商业信息发布类应用,更不用说众多的交通导航类应用.可以说定位服务(LBS)的应用已经是当下最为流行的移动应用之一. 移动定位技术的发展经历了多个阶段.最初的基于服务蜂窝小区的定位技术(如CELL-ID)可以快速定位,但是不够精确.之后的基于卫星信号的GNSS(全球卫星导航系统)定位技术可以精确地定位,然而由于需要搜星使

伪基站,卒于5G——本质上是基于网络和UE辅助的伪基站检测,就是将相邻基站的CI、信号强度等信息通过测量报告上报给网络,网络结合网络拓扑、配置信息等相关数据,对所有数据进行综合分析,确认在某个区域中是否存在伪基站

伪基站,卒于5G from:https://www.huxiu.com/article/251252.html?h_s=h8 2018-07-05 21:58收藏27评论6社交通讯 本文来自微信公众号:网优雇佣军(hr_opt),虎嗅获授权发表,题图来自:pixabay.com. 伪基站是2G时代的产物,通过伪装运营商的基站,向用户手机发送广告推销.诈骗.钓鱼网站等信息,侵犯公民隐私,危害人身财产安全,扰乱社会秩序. 2G时代,由于GSM只有单向鉴权加密,手机无法确认网络的合法性,导致伪基站有机

LTE:上行调度请求(Scheduling Request,SR) LTE:下行资源分配类型

http://blog.sina.com.cn/s/blog_927cff010101a7yh.html 上行调度请求(Scheduling Request,SR) 如果UE没有上行数据要传输,eNodeB并不需要为该UE分配上行资源,否则会造成资源的浪费.因此, UE需要告诉eNodeB自己是否有上行数据需要传输,以便eNodeB决定是否给UE分配上行资源.为此LTE提供了一个上行调度请求(Scheduling Request,SR)的机制. UE通过SR告诉eNodeB是否需要上行资源以便用

LTE资源调度(7)-DRX不连续接收(1)

1.为什么要使用DRX 在讲解DRX的概念前,我们需要先了解下什么是"空闲态",什么是"连接态". 我们经常会听到"空闲态"."连接态"这样的术语,这个概念是从RRC层角度来说的.简单来说,当UE在某个小区完成了驻留之后,我们就可以称该UE进入了"空闲态"或"IDLE态".如果该UE后续又完成了随机接入过程,那么我们就可以称该UE进入了"连接态"或"CONN