第1章:IMS测试环境搭建
做IMS渗透测试,第一步就是搭环境。这活儿我干过不下二十次了,每次都有新坑。说白了,测试环境就是你的实验室,搭不好,后面所有测试都是空中楼阁。
这一章,我带你从零开始,把开源IMS核心、流量工具、抓包分析、网络拓扑全部搞定。嗯,咱们一步步来。
1.1 开源IMS核心选型:Kamailio vs OpenIMSCore
先说说选哪个。目前主流就两个:Kamailio 和 OpenIMSCore。我个人习惯两个都装,但如果你刚入门,我建议先玩 OpenIMSCore。
| 对比项 | Kamailio | OpenIMSCore |
|---|---|---|
| 配置复杂度 | 高(需要手写路由脚本) | 中(XML配置为主) |
| 协议支持 | SIP、IMS、VoLTE | IMS全协议栈 |
| 社区活跃度 | 非常活跃 | 一般 |
| 渗透测试友好度 | 高(可定制性强) | 中(开箱即用) |
1.2 OpenIMSCore 部署实战
我记得第一次部署 OpenIMSCore 时,卡在数据库连接上整整半天。后来发现是 MySQL 字符集没设对。你想想看,一个字符集问题就能让整个IMS核心起不来,多坑。
下面是我整理的最小化部署步骤,照着做基本不会翻车:
- 安装依赖:Ubuntu 20.04 上执行
apt install mysql-server libmysqlclient-dev build-essential - 下载源码:从 SourceForge 拉取 OpenIMSCore 最新版
- 编译安装:进入每个模块目录,执行
make && make install - 配置数据库:运行
mysql -u root -p < create_db.sql - 启动服务:依次启动 CSCF、HSS、PCRF
# 快速启动脚本(我常用的)
cd /opt/OpenIMSCore
./ser -f ser.cfg &
./fifoserver &
echo "IMS核心已启动,检查端口:netstat -anp | grep 5060"
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 或特殊字符
1.4 Wireshark SIP 协议分析
抓包分析是渗透测试的眼睛。Wireshark 对 SIP 的支持相当好,但很多人只会用默认过滤。我教你几个高级技巧:
- 过滤特定呼叫:
sip.Call-ID == "12345@192.168.1.100" - 跟踪 SIP 会话:右键 → Follow → SIP Stream
- 检测异常包:
sip.Status-Code >= 400过滤所有错误响应 - 分析注册过程:
sip.Method == REGISTER
嗯,这里要注意。Wireshark 默认不解析 SIP 消息体里的 XML 内容。你需要安装 lua 插件才能看到 IMS 特有的 P-Asserted-Identity 头。我写过一个小脚本,专门解析这些扩展头。
1.5 测试拓扑设计
拓扑设计是很多人忽略的环节。你想想看,如果测试环境跟办公网络混在一起,一个 SIP 洪泛测试就能让全公司电话瘫痪。我吃过这个亏,真的。
下面是我推荐的隔离网络拓扑:
这个拓扑的核心思想就两点:
- 物理隔离:攻击者网络和IMS核心网络用不同网段,中间加防火墙
- 流量可控:防火墙只开放 SIP 5060 和 Diameter 3868 端口
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扩展头
- 拓扑必须隔离,防火墙只开必要端口
- 环境搭好后先验证,再开始渗透测试