2. .enc文件调用链
为了找到是谁打开了这个.enc,在native层我hook了:
open
open64
openat
openat64
read
close
在java层hook了:
org.telegram.messenger.secretmedia.EncryptedFileInputStream
中的
read(byte[], int, int)
skip(long)
decryptBytesWithKeyFile(byte[], int, int, java.io.File)
decryptBytesWithKeyFile(byte[], int, int, org.telegram.messenger.SecureDocumentKey)
还有
org.telegram.messenger.secretmedia.EncryptedFileDataSource
中的
open(com.google.android.exoplayer2.upstream.DataSpec)
read(byte[], int, int)
最终确定了调用链:
/data/user/0/org.telegram.messenger.web/cache/-6070991742858629543_121.jpg.enc.key
-> 读取 32 bytes key
-> 读取 16 bytes iv
/storage/emulated/0/Android/data/org.telegram.messenger.web/cache/-6070991742858629543_121.jpg.enc
-> EncryptedFileInputStream.read(...)
-> Utilities.aesCtrDecryptionByteArray(...)
总结就是:
.enc图片的实际路径是:cache/-6070991742858629543\_121.jpg.enc
对应的key是:
/data/user/0/org.telegram.messenger.web/cache/-6070991742858629543_121.jpg.enc.key
其中.key文件的结构是前32字节的aes key, 后16字节的iv。
调用的解密函数是:
org.telegram.messenger.Utilities.aesCtrDecryptionByteArray([B, [B, [B, int, long, int)
caller是:
org.telegram.messenger.secretmedia.EncryptedFileInputStream.read([B, int, int)
使用的模式是mode=0, 对应的是ctr模式。
完整的链路如下:
ImageLoader / CacheOutTask
-> EncryptedFileInputStream
-> 读取 .jpg.enc.key: key(32) + iv(16)
-> read .jpg.enc chunk
-> Utilities.aesCtrDecryptionByteArray(buffer, key, iv, offset, length, fileOffset)
-> 得到解密后的图片字节流
三、图片重建
第二点里已经讲到了加密文件的存储路径以及对应的解密函数了,这里简单讲一下解密之后怎么去重建一个图片。
1. Hook aes解密的函数
hook这个可以打印一些信息,但是hook这个最主要的方法是,确定app真的调用了这个函数解密。
2. hook EncryptedFileInputStream.read(byte[], int, int)
这个是核心,同时这个也是解密函数的caller。hook这个可以直接拿到明文。
3. 重建图片
接下来就比较简单,把拿到的明文拼接一下,判断一下数据的开头和结尾,命中了之后直接保存就完事,扩展名是.jpg,然后直接保存完事。
4. 关于ai
以上的分析深度的结合了ai,现在的ai能够干大量人不好干的工作,比如看汇编, smali代码, frida脚本跑出来的大量的未经处理的日志等等这种对人来说晦涩难懂的东西。ai看这些东西看的又快又准,还能帮着写hook脚本,又快又好。但是整体过程中还是有很多地方需要人去把控,纯让ai做容易跑偏。
还有就是一个ai的正义感问题,涉及到隐私功能的分析ai直接不干了,还得让人去拆解成一个个的小目标然后一点点的摸索。
总的来说ai在数据分析方面优势很明显,可以信任但是不能100%信任,每个流程还需要自己把控一下。
如果还需要学习技术,一定要在ai做完了之后多复盘,把技术细节和有疑问的地方搞清楚。
看雪ID:mb\_hfjfruhl
https://bbs.kanxue.com/user-home-964485.htm
\*本文为看雪论坛优秀文章,由 mb\_hfjfruhl 原创,转载请注明来自看雪社区
第十届安全开发者峰会【议题征集】-欢迎投稿
# 往期推荐
AI静态分析,内核模块隐藏 Frida 特征,绕过linker私有结构遍历崩溃链
球分享
球点赞
球在看
戳“阅读原文”一起来充电吧!
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论