文章总结: 本文以一道IoT挑战题为切入点,系统介绍了蓝牙BLE流量分析的基础知识。文章详细解析了蓝牙通信流程、协议结构、HCI与空口抓包方法,并提供了Wireshark过滤技巧和实战分析要点。重点阐述了广播包与连接数据包的特征分析,以及ATT层操作码的解读方法,为物联网安全研究提供了可操作的蓝牙流量分析指南。 综合评分: 85 文章分类: IoT安全,渗透测试,移动安全,技术标准,实战经验
Polar IOT_小程序开锁
题目描述:
警方在一次代号为“雷霆”的行动中,突袭了网络犯罪团伙“暗影”的据点。在现场,技术侦查人员发现嫌疑人使用了一款名为 X-Lock Pro 的高端智能门锁保护核心机房。
嫌疑人已被控制,但他拒绝交出开锁密码。取证专家从他的手机中提取到了控制门锁的微信小程序安装包,并在现场通过无线电嗅探设备,成功录制了一段嫌疑人开锁时的蓝牙通信流量。
情报显示,这款门锁采用了“双因子动态验证”机制,核心算法被开发者刻意隐藏。
ecure_lock_v2.0.wxapkg (小程序包) ble_sniff_log.pcapng (蓝牙流量包) solve_unpacker.js(解包工具)
flag=MD5{门锁下发的随机挑战码+门锁密文核心+小程序加密逻辑文件名字全称}
打开流量包,我们只聚焦于ATT写入读取数据的包,这里应该和key等的传输有关
这里找0x52前文已经提及是一个Write Command的包
看这里向handle 0x2c00写入了数据,因此追踪此句柄,发现也就这一个地方运用到了这个句柄
这个包数据是0xdeadbeef什么的,因此也特别需要注意
接下来我们再来看通知,看看门锁发了什么消息
估计这个就是门锁下发的随机挑战码,那上面的就是开锁数据包无疑。所以数据包传输的应该就是开锁密码:deadbeefcafebabe
挑战码:aa553912849a83a1
接下来我们解包小程序
题目给的js算法也比较简单:
校验文件头:检查开头特定的“魔数”(0xBE 和 0xED),确认是目标格式。
解析索引表:读取文件总数,然后循环读取每个子文件的信息,最关键的是获取每个文件的**起始位置(偏移量 offset)**和**字节大小(size)**。
精准切割:根据索引表提供的 offset 和 size,从原始大文件中把每个小文件的数据块精准“切”下来,并按对应路径保存到硬盘。
然后进入小程序目录
查看主要js文件,有一行WXWebAssembly.instantiate("/workers/crypto_core.wasm")说明用了wasm里面的加密方式
ghidra发现里面没什么逻辑。那这个文件名就是flag要的核心无疑了。
查看官方WP才知道,我们开锁密码是大写!
最终需要提交flag的原始值:aa553912849aDEADBEEFCAFEBABEcrypto_core.wasm
md5即可。最终结果:flag{2f120fdff1a5c165a8d6500117f285e1}
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:胡楚昊 胡楚昊 胡楚昊《借Polar IOTS一道困难挑战题简单入门蓝牙流量分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论