文章总结: 渗透测试发现伪装聊天APK实为间谍木马,窃取短信、通讯录等隐私数据。通过爆破管理后台弱口令进入,确认12XXX台受害设备及290万条短信泄露。文档指出AI辅助开发提升黑产产能,技术防御因弱口令失效。测试仅在线取证,数据7日后清空,建议加强权限审计和口令策略。
综合评分: 76
文章分类: 渗透测试,恶意软件,漏洞分析,威胁情报,安全运营
对某裸聊APK的渗透测试(水)
原创
佚名
佚名
星宇Sec
2026年9月19日 14:44
山东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
好基友的朋友被诈骗了,于是发过来样本让我帮忙看看
来源
测试对象就是这份样本,文件名f7HM6Nt7FE.apk,大小24.4MB。
测试说明:对受害者数据只做在线读取、统计和取证,不做下载、修改和删除;文中涉及的目标IP、账号密码等均经过脱敏。如果有执法机关等需要原始数据等请私信联系,取证信息本地只保留7日,受害者地区统计见文末。
二、测试环境与工具
测试环境为mac,主要用到的工具如下:
| 工具 | 用途 |
| — | — |
| unzip、apktool | APK解包,解析AndroidManifest.xml |
| jadx | Java层反编译,分析加固壳结构 |
| strings | 提取二进制文件中的字符串,定位后端地址和密钥 |
| blutter | Flutter/Dart反编译器,还原APP核心逻辑 |
| curl | HTTP接口测试 |
| python3 | 实现加密方案、编写爆破脚本和统计脚本 |
三、测试过程
第一步:APK静态分析
先用unzip解包APK,再用apktool解析清单文件,得到三个关键信息。
一是包名com.zyaapqyprg.upmj和应用名Xchat,看着是随机生成,没有任何品牌信息,正规应用也不会这么命名。
二是应用套了360加固壳(com.frezrik.jiagu.StubApp),Java层代码被加密,说明团队有基本的反分析意识。
三是权限列表,这是最关键的发现。应用申请了READ_SMS、RECEIVE_SMS、读写通讯录、读写通话记录、READ_PHONE_STATE、精确定位、读写存储。一个聊天应用没有任何理由申请这些权限,这个权限组合是典型的木马软件画像。
核心逻辑在Flutter的AOT快照libapp.so里。用strings提取字符串,直接命中三样东西:
http://163.XX.XX.XXX
/s/XXXXXX/l1jrxodp/htxzXXXX
XXXXXXXXXXX
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
第一行是后端服务器地址,第二行是API路径(这种三段式混淆路径共有9个),后面两个可疑字符串当时只是记下来,事后确认就是加密方案的IV和密钥。
第二步:后端侦察
用浏览器访问http://163.XX.XX.XXX,首页直接就是一个Vue写的管理后台。
image
把后台前端JS全部下载下来,代码没有混淆,所有API端点一眼看完:/manage/auth/login是登录接口,/manage/admin/是管理员管理,/manage/device/是设备管理,/manage/ip-blacklist/是IP黑名单,/manage/config/是配置管理。从接口命名就能判断,device模块管理的就是受害者的设备。
这里有个值得注意的细节。这套前端代码没有混淆,但结构异常规范:接口命名统一、错误码格式统一、字段注释齐全,整体风格远高于传统黑产手工作坊的水准。这个观感在后面分析APP代码时会再次得到印证,先按下不表。
服务器结构也很快摸清。80端口上nginx挂着三套东西:根路径是管理后台前端,/manage/转发给PHP(ThinkPHP 8.1.4),/s/转发给Go服务。端口扫描还发现8081到8091连续11个端口全部开放,每个都是独立数据库的Go实例。这是典型的多租户SaaS架构,一个实例对应一个诈骗APP。
第三步:APP接口测试
先测APP侧的注册接口。注册请求不带加密直接发送也能被接受,服务器返回的字段校验错误里还泄露了结构体字段名,据此确认了参数格式是phone和invite_code。邀请码只校验4到6位字母数字的格式,不校验真实性,随便编一个就能过。
注册成功返回JWT(HS256),payload里的user_id已经排到12XXX,说明当时平台已有约1.2万注册用户。
第四步:Dart逆向还原加密方案
APP的大部分接口请求体不是明文。用blutter反编译libapp.so,一上来就段错误。排查发现这个APK用的是Dart 3.13的单一快照格式,工具主分支还不支持。从blutter的PR列表里找到对应补丁,重新构建之后反编译成功。
从反汇编还原出完整的请求加密方案:AES-256-CBC,密钥a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6,IV是p6o5n4m3l2k1j0i9,密文base64编码后再gzip压缩,请求头打X-Enc:1。密钥和IV全部硬编码在客户端里。
用python3实现这套方案,加密一个注册请求发过去,注册成功,方案验证正确。至此9个混淆接口的用途全部还原:上传短信、上传通讯录、上传通话记录、上传GPS定位、上传设备信息(IMEI、SIM卡号、机型)、上传相册照片、上传错误日志。样本性质确认,这就是一个窃取受害者全部隐私数据的间谍木马。
反汇编的代码观感值得一提。网络层、加密层、数据采集模块分层清晰,函数命名规范,注释写得标准,整个工程的质量比很多正规小公司的产品还高。结合前面后台前端的印象,这个平台的APP和后台都透着一股浓重的AI味,很多模块像是AI直接生成或者重度辅助开发的产物。传统的黑产作坊写不出这种代码,这说明境外黑产团队已经开始成规模地把AI用进了诈骗工具的开发里。
第五步:调试模式的信息泄露
用APP侧注册得到的token去访问后台接口/manage/device/list,服务器返回500错误页。后台是ThinkPHP 8.1.4,调试模式开着,错误页直接泄露了服务器绝对路径和JWT认证中间件的完整源码。
从源码确认:后台JWT使用HS256,校验payload里的admin_id字段,再查admins表。更关键的是,APP侧Go服务签发的token在PHP侧居然解码成功,说明两端共用同一把JWT密钥。
顺着这条线尝试伪造管理员token:拿APP侧的token做样本爆破密钥,常见弱密钥、APP里提取的全部字符串都试了一遍,没有命中,密钥是随机生成的,这条路走不通。
第六步:后台登录爆破
回到最直接的登录接口。先做SQL注入测试,单引号、双引号、SLEEP延时全部无反应,参数是绑定查询,没有注入。
但登录接口没有验证码,没有频率限制,错误提示恒定,完全具备爆破条件。用常见用户名乘弱口令的字典并发爆破,命中:adminXXX / XXXX0,角色是超级管理员。
回过头看,走到这一步之前手里其实已经攒了好几张牌:调试模式泄露的中间件源码、双端共用的JWT密钥、可以伪造的X-Forwarded-For,每一项单独展开都还能继续往下走。相比之下,登录接口的爆破条件更直接,字典一跑几分钟就出结果,所以就选了最快的一条路。进入后台之后目标达成,其余薄弱点就没有再逐一深入。
第七步:进入后台
后台统计接口显示:12XXX台受害设备,290万条短信,102万条通讯录,385万张照片。设备列表里每台机器的手机号、IMEI、SIM卡号、IP、GPS坐标全部在列。
image
后台前端还有一个”启动木马”控制台,功能列表包括:短信实时同步、支付密码获取、通话录音、导出微信聊天记录、导出QQ聊天记录。另有一个”上传各大网站”功能,用途是把视频上传到色情网站,属于敲诈勒索的配套环节。
后台的文案也透着一股模板味。木马控制台的提示语写得四平八稳,像”已发送命令至服务器,准备开始绑定扫描过的群组,预计15分钟之内完成”这种措辞,不是野路子程序员的手笔。加上代码层面的观感,基本可以判断这个团伙从APP到后台都在成规模地使用AI辅助开发,黑产的产能已经被AI抬上了一个台阶。
进入后台后,本次测试的预定目标已经全部达成,未对服务器做进一步的深入测试。
四、受害者数据统计
统计口径为后台设备列表里的IP归属地,大陆部分按市聚合,境外按国家/地区聚合。境外设备占比较高,推测与部分受害者使用违规代理软件(俗称翻墙工具)有关,导致IP归属地显示在境外,并不代表真实所在地。
大陆设备共2848台,城市分布如下:
| 城市 | 设备数 | 城市 | 设备数 | 城市 | 设备数 |
| — | — | — | — | — | — |
| 广州 | 384 | 北京 | 162 | 南京 | 153 |
| 上海 | 137 | 郑州 | 135 | 济南 | 129 |
| 深圳 | 122 | 石家庄 | 116 | 长沙 | 112 |
| 杭州 | 102 | 成都 | 99 | 武汉 | 89 |
| 西安 | 62 | 沈阳 | 61 | 哈尔滨 | 61 |
| 合肥 | 53 | 南昌 | 45 | 重庆 | 39 |
| 太原 | 37 | 昆明 | 34 | 天津 | 33 |
| 长春 | 28 | 南宁 | 28 | 青岛 | 25 |
| 宁波 | 24 | 柳州 | 23 | 洛阳 | 22 |
| 兰州 | 21 | 大连 | 20 | 承德 | 19 |
| 无锡 | 19 | 佛山 | 18 | 东莞 | 18 |
| 海口 | 17 | 贵阳 | 17 | 绍兴 | 15 |
| 苏州 | 14 | 赣州 | 14 | 惠州 | 13 |
| 山南 | 13 | 吉林 | 13 | 温州 | 12 |
| 乌鲁木齐 | 11 | 德阳 | 11 | 呼和浩特 | 11 |
| 德州 | 10 | 莆田 | 10 | 南通 | 8 |
| 徐州 | 8 | 漳州 | 8 | 益阳 | 8 |
| 临沂 | 7 | 怀化 | 6 | 马鞍山 | 6 |
| 珠海 | 6 | 银川 | 6 | 烟台 | 5 |
| 常州 | 5 | 台州 | 5 | 娄底 | 5 |
| 平顶山 | 5 | 其他 | 149 | | |
境外设备共8950台,按国家/地区分布如下:
| 国家/地区 | 设备数 | 国家/地区 | 设备数 | 国家/地区 | 设备数 |
| — | — | — | — | — | — |
| 香港(中国) | 2200 | 美国 | 1905 | 日本 | 1629 |
| 台湾(中国) | 886 | 新加坡 | 695 | 韩国 | 290 |
| 英国 | 170 | 德国 | 168 | 马来西亚 | 147 |
| 荷兰 | 132 | 加拿大 | 87 | 法国 | 83 |
| 越南 | 81 | 泰国 | 63 | 印度尼西亚 | 54 |
| 澳大利亚 | 30 | 墨西哥 | 23 | 瑞典 | 22 |
| 菲律宾 | 21 | 澳门(中国) | 20 | 其他 | 244 |
五、总结
这个平台从APP到后端是一条完整的黑色产业链:APP伪装成聊天软件诱导安装,窃取受害者的短信、通讯录、通话记录、相册、定位;后端按租户隔离,一套代码同时服务多个诈骗APP品牌;管理后台提供木马控制台,支持实时同步短信、获取支付密码、录音和导出社交软件聊天记录,配套的色情网站上传功能则服务于敲诈勒索环节。
单看技术防御,这个团伙做得不算差:加固壳、请求加密、参数化查询、JWT随机密钥、上传白名单都做了。但一个弱口令,让前面所有防御全部失效,这也是整条链路里最讽刺的一环。更值得警惕的是AI的介入,从代码质量来看,这个平台已经不是传统黑产作坊的产物,AI把诈骗工具的开发门槛和产能都拉高了。
本次测试仅对相关数据进行了脱敏取证,如果相关单位有需要可以私信联系我,7日后会清空本地相关数据。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:星宇Sec 佚名
佚名《对某裸聊APK的渗透测试(水)》