本文仅供合法授权的安全研究与学习使用,请勿用于非法用途。读者应确保行为符合当地法律法规。
前言
在红队信息收集阶段,手机号码是一个关键的信息枢纽。通过手机号可以关联出归属地、运营商、社交账号注册状态等多维度信息,为后续的社会工程学攻击提供精准的目标画像。
本文基于真实的Python项目源码,解析手机号归属地查询的本地数据方案和在线API方案,并扩展探讨社工接口查询(QQ号信息查询)、社交媒体注册检测、IP/用户名追踪等社工辅助工具的实现原理。这些工具共同构成了一个完整的社会工程学信息收集工具链。
技术背景
手机号段与归属地映射
中国大陆手机号码为11位,前3位为运营商号段,中间4位为HLR(归属位置寄存器)标识,后4位为用户号码。不同的号段前缀对应不同的运营商:
- 移动:134-139、147-148、150-152、157-159、172、178、182-184、187-188、195、198
- 联通:130-132、145-146、155-156、166-167、171、175-176、185-186
- 电信:133、149、153、173-174、177、180-181、189、191、199
通过号段前缀和本地数据库(如SQL格式的归属地数据),可以快速查询手机号归属地,无需依赖在线API。
社工接口的获取与利用
社工接口通常来源于:
- 第三方数据查询平台:提供QQ号、手机号等信息查询服务
- APP抓包:通过抓包分析移动应用的网络请求,获取内部API
- 网站接口复用:将正常网站的注册校验、密码找回等接口用于信息探测
phonenumbers库
Google开源的 phonenumbers 库提供了专业的电话号码解析功能,支持全球号码的格式化、归属地查询、运营商识别和有效性验证。
实现思路
整体工具链包含四个核心模块:
1 | 模块1:本地归属地查询(phone_location_Demo.py) |
核心代码解析
1. 本地手机号归属地查询
以下代码通过本地SQL数据文件,基于号段前缀统计归属地信息:
1 | import subprocess |
设计思路解析:
- 数据源:
phone_location.sql是一份包含号段-归属地映射的SQL数据文件,每行记录包含多个字段,第8个字段为归属地名称 - 统计策略:同一号段前缀可能对应多个归属地(因号码分配历史),使用
Counter.most_common(1)取出现频率最高的归属地作为结果 - 全号段遍历:遍历所有运营商号段,生成完整的号段-归属地映射表
- 模拟Shell管道:代码用Python列表推导式模拟了
grep | awk的Shell管道操作,便于跨平台运行
2. 社工接口查询:QQ号信息探测
通过第三方平台API查询QQ号关联的手机号、归属地等信息:
1 | import requests |
关键技术点:
- 接口签名:
sign字段是平台用于验证请求合法性的签名,通常通过抓包获取 - Session维持:通过
PHPSESSIDCookie维持会话状态 - HTML清理:返回数据中包含
<br>标签和HTML实体,需要用unescape()和replace()清理 - 结果解析:返回格式为”键:值”的文本行,通过中文冒号分割为字典
3. 社交媒体注册检测
检测手机号在各社交平台的注册状态:
1 | import requests |
实现要点:不同平台的注册检测逻辑各不相同,需要针对每个平台进行逆向分析,模拟其注册/登录流程中的手机号校验请求。
4. 综合信息追踪工具(GhostTrack)
GhostTrack是一个综合性的信息追踪工具,集成了IP追踪、电话号码解析和用户名跨平台搜索功能:
1 | import json |
功能矩阵:
| 功能 | 技术方案 | 数据来源 |
|---|---|---|
| IP追踪 | HTTP API请求 | ipwho.is |
| 电话追踪 | phonenumbers库 | 本地解析 |
| 用户名搜索 | 多平台HTTP探测 | 23个社交平台 |
| 自身IP | HTTP API请求 | api.ipify.org |
5. 短信轰炸接口分析(解密.py中的扩展)
项目中还包含对短信验证码接口的逆向分析代码:
1 | import requests |
分析要点:APP的API请求通常包含大量设备指纹参数(机型、系统版本、设备ID等),需要通过抓包完整获取。这些接口如果缺乏频率限制,可能被滥用于短信轰炸攻击。
使用方法与运行效果
本地归属地查询
确保 phone_location.sql 文件存在,运行脚本即可生成全号段归属地映射:
1 | python phone_location_Demo.py |
输出示例:
1 | 351 广东省广州市 |
QQ号信息查询
1 | qq_number = "172683008" |
综合追踪
1 | python GhostTR.py |
防御对策
- API频率限制:所有涉及用户信息查询的接口必须实施严格的频率限制(如每IP每小时最多10次查询),并配合验证码机制防止自动化枚举
- 接口签名保护:内部API应使用动态签名(时间戳+nonce+HMAC),避免静态签名被逆向复用
- 设备指纹验证:APP接口应验证设备指纹的完整性和一致性,检测模拟器、Hook框架等异常环境
- 短信发送限制:验证码短信接口必须限制同一手机号的发送频率(如每分钟1次、每天5次),并对同一IP的发送总量设限
- 信息脱敏:第三方数据查询平台返回的信息应做脱敏处理(如手机号中间四位打码),避免完整信息泄露
- 跨平台账号关联防护:社交平台的注册检测接口应增加行为验证(如滑块验证码),防止批量手机号注册状态探测
- 日志审计与告警:监控异常的API调用模式,如短时间内大量查询不同QQ号、手机号等行为应自动告警
总结
本文从手机号归属地查询出发,延伸到社工接口利用、社交媒体检测、综合信息追踪等社工辅助工具,呈现了一个完整的社会工程学信息收集工具链。
核心技术要点包括:基于本地SQL数据的号段归属地统计、通过抓包获取第三方平台API进行信息查询、利用phonenumbers库进行专业电话号码解析、以及跨平台用户名搜索。这些工具的组合使用,可以从一个手机号或QQ号出发,逐步构建出目标的完整信息画像。
从防御角度看,信息收集阶段的防护核心在于接口防护——频率限制、验证码、签名校验、设备指纹验证等多层防护措施缺一不可。同时,用户层面的安全意识教育(如减少在各平台公开个人信息、使用不同的用户名等)同样重要。
红队社工工具的开发和使用,最终目的是帮助组织发现自身在信息泄露和接口防护方面的薄弱环节,从而有针对性地加强安全建设。