第1章:IMS测试环境搭建

做IMS渗透测试,第一步就是搭环境。这活儿我干过不下二十次了,每次都有新坑。说白了,测试环境就是你的实验室,搭不好,后面所有测试都是空中楼阁。

这一章,我带你从零开始,把开源IMS核心、流量工具、抓包分析、网络拓扑全部搞定。嗯,咱们一步步来。

1.1 开源IMS核心选型:Kamailio vs OpenIMSCore

先说说选哪个。目前主流就两个:Kamailio 和 OpenIMSCore。我个人习惯两个都装,但如果你刚入门,我建议先玩 OpenIMSCore。

对比项 Kamailio OpenIMSCore
配置复杂度 高(需要手写路由脚本) 中(XML配置为主)
协议支持 SIP、IMS、VoLTE IMS全协议栈
社区活跃度 非常活跃 一般
渗透测试友好度 高(可定制性强) 中(开箱即用)
我的建议: 如果你只是想快速验证SIP漏洞,OpenIMSCore 半小时就能跑起来。但要做深度渗透测试,比如篡改SIP头、伪造注册请求,Kamailio 的灵活性会让你爱不释手。

1.2 OpenIMSCore 部署实战

我记得第一次部署 OpenIMSCore 时,卡在数据库连接上整整半天。后来发现是 MySQL 字符集没设对。你想想看,一个字符集问题就能让整个IMS核心起不来,多坑。

下面是我整理的最小化部署步骤,照着做基本不会翻车:

  1. 安装依赖:Ubuntu 20.04 上执行 apt install mysql-server libmysqlclient-dev build-essential
  2. 下载源码:从 SourceForge 拉取 OpenIMSCore 最新版
  3. 编译安装:进入每个模块目录,执行 make && make install
  4. 配置数据库:运行 mysql -u root -p < create_db.sql
  5. 启动服务:依次启动 CSCF、HSS、PCRF
# 快速启动脚本(我常用的)
cd /opt/OpenIMSCore
./ser -f ser.cfg &
./fifoserver &
echo "IMS核心已启动,检查端口:netstat -anp | grep 5060"
注意: 我曾经在生产环境误用了测试配置,导致SIP注册风暴。所以测试环境一定要用隔离网络,别连公司内网!

1.3 SIPp 流量生成工具配置

SIPp 是渗透测试的瑞士军刀。说白了,它就是能模拟上千个SIP用户同时打电话的工具。我做过一次压力测试,用 SIPp 模拟了5000个并发注册,直接把 OpenIMSCore 干趴下了。

安装很简单:

apt install sipp
# 或者编译安装最新版
wget https://github.com/SIPp/sipp/releases/download/v3.6.1/sipp-3.6.1.tar.gz
tar -xzf sipp-3.6.1.tar.gz
cd sipp-3.6.1
./configure --with-pcap --with-sctp
make && make install

常用的测试场景:

  • 注册风暴sipp -sf register.xml -i 192.168.1.100 -p 5060 192.168.1.200:5060 -r 100 -rp 1000
  • 呼叫洪泛sipp -sf uac.xml -i 192.168.1.100 192.168.1.200:5060 -m 10000
  • 畸形包测试:修改 XML 场景文件,插入超长 SIP URI 或特殊字符
避坑指南: 我曾经用默认的 SIPp 场景文件做测试,结果发现它发的 SIP 消息缺少 Contact 头,导致 IMS 核心直接丢弃。所以一定要检查场景文件,确保符合 RFC 3261 规范。

1.4 Wireshark SIP 协议分析

抓包分析是渗透测试的眼睛。Wireshark 对 SIP 的支持相当好,但很多人只会用默认过滤。我教你几个高级技巧:

  1. 过滤特定呼叫sip.Call-ID == "12345@192.168.1.100"
  2. 跟踪 SIP 会话:右键 → Follow → SIP Stream
  3. 检测异常包sip.Status-Code >= 400 过滤所有错误响应
  4. 分析注册过程sip.Method == REGISTER

嗯,这里要注意。Wireshark 默认不解析 SIP 消息体里的 XML 内容。你需要安装 lua 插件才能看到 IMS 特有的 P-Asserted-Identity 头。我写过一个小脚本,专门解析这些扩展头。

1.5 测试拓扑设计

拓扑设计是很多人忽略的环节。你想想看,如果测试环境跟办公网络混在一起,一个 SIP 洪泛测试就能让全公司电话瘫痪。我吃过这个亏,真的。

下面是我推荐的隔离网络拓扑:

攻击者网络 192.168.1.0/24 Kali Linux SIPp + Wireshark 防火墙 5060开放 IMS核心网络 192.168.2.0/24 P-CSCF 5060/5061 S-CSCF 6060 HSS 3868 (Diameter) PCRF 3868 SIP流量 SIP Diameter

这个拓扑的核心思想就两点:

  • 物理隔离:攻击者网络和IMS核心网络用不同网段,中间加防火墙
  • 流量可控:防火墙只开放 SIP 5060 和 Diameter 3868 端口
重要提醒: 千万别把IMS核心暴露在公网上!我见过有人把测试环境配了公网IP,结果被境外IP扫描到,成了肉鸡。测试环境一定要用私有IP地址段。

1.6 环境验证清单

环境搭好后,别急着做渗透。先跑一遍验证,确保所有组件正常工作:

检查项 验证方法 预期结果
IMS核心启动 ps aux | grep ser 看到 ser 进程在运行
SIP端口监听 netstat -anp | grep 5060 显示 LISTEN 状态
用户注册 SIPp 发送 REGISTER 收到 200 OK
呼叫建立 SIPp 发送 INVITE 收到 180 Ringing
Wireshark抓包 过滤 sip 协议 看到完整SIP消息流

嗯,到这里,你的IMS测试环境就搭好了。这套环境我用了三年,从最初的 OpenIMSCore 到后来换成 Kamailio,踩过的坑都写在上面了。你照着做,至少能省下两天摸索时间。

核心要点:
  • 选对IMS核心:新手用OpenIMSCore,老手用Kamailio
  • SIPp场景文件一定要自己改,别用默认的
  • Wireshark要装lua插件才能解析IMS扩展头
  • 拓扑必须隔离,防火墙只开必要端口
  • 环境搭好后先验证,再开始渗透测试
专注资料整理