一、序幕
Apk,走流程
(1) zip解压
(2) apktool转jar,未成功,无关紧要
lib目录结构,想来应该使用了NDK的JNI,选个简单熟悉的架构,x86拖进IDA
├─arm64-v8a
│ libgogogo.so
│
├─armeabi-v7a
│ libgogogo.so
│
├─x86
│ libgogogo.so
│
└─x86_64
libgogogo.so
与此同时,也把zip解压出来的classes.dex直接拖进另一个IDA
二、成功之母
在classes.dex的响应函数中,我们看到了对JNI的check_key调用,并根据结果判断是否正确,成功入套。
按上面的逻辑,一眼望过去,应该不合逻辑,
因为可以个字节要么是0x00(False),要么是0x01(True),
我们得到key的十六进制编码如下,显然不合逻辑,这一步是做完后补充测试的结果,
因为题目要求特定新版本以上,我们有理由怀疑不同版本的srand和rand实现不同,会有影响,但实际可能是多想了。
可能就是新版的WebView一类的功能控件。
一、偶遇后门
在随机浏览lib库函数中,我们不经意留意到下面竟然开启侦听
神经过敏的感觉是:作者竟然在样例中安插后门!怀着应该不存的好奇心理看下这“后门”干啥
(1) 手机A(扮演路由)提供热点HotPoint
(2) PC的wifi连接上HotPoint
(3) 安装该apk样例的手机B也连接上HotPoint
(为啥不直接在手机A上安装apk?这个随意)
我们curl一下(其它工具也行,随意,只是顺手拿起curl)看下apk后门返回啥,如图,
怪怪的,莫非是攻击载荷?当然,WebAssembly关键字高速我们,应该内有乾坤
四、疑车无据
正常的套路,我们应该按apk的启动顺序,逐个看下相关的函数
如从下面的MainActivity.OnCreate里我们看到,实际上作者在设计时在layout上弄了一套EditText,View,Button的界面输入三件套
但实际其是使用的陷阱,作为伪装,或者是最初的设计原型;
实际主要通过WebView的loadUrl加载 mainActivity_u的URL内容工作,mainActivity_u由JNI 的sayHello返回 http://127.0.0.1:8000
即,前面的后门是为自己开的,除非别人也知道,且还能POC进去。
这个是攻击完成后补充分析,先上的船,后面补的票。当然,正常套路,应该是先买票,按部就班,再上船。
在攻击时,并不知道android有WebView这东西,也不晓得WebAssembly是啥,毕竟不搞android和web开发
当然,职业直接告诉我们WebAssembly应该是种汇编语言。
实际上完成攻击并不是主要目标,这后门和WebAssembly成了好奇点,好奇害死猫。
这apk的后门没啥新奇,就开启侦听,返回页面内容,我们看下返回的内容完整是啥。
四、Html
我们可以看到,其返回的Hi_Ptr2HtmlContent_off_2F94内容,并不像我们在前面通过【curl 192.168.43.27:8000】敲门拿到的内容,
应该是加密了。再多看一眼后门的代码,显然,都是通过xor 0x67进行异或加密和解密。
直接上,在IDAPython里执行【for i in range(34290): PatchByte(0x3004+i,GetOriginalByte(0x3004+i)^0x67)】
我们解密得到需要的内容
我们保存为index.html,如下(其中省略了WebAssembly的字节内容,全文参考附件index.html)
我们用浏览器打开,效果如图,有意思,竟然和apk交互一样。
五、WebAssembly 之路
三个参考页面内容
其中第一个页面内容告诉我们,Chrome竟然可以调试WebAssembly,当然,Script层是可以调试的。WebAssembly层怎么进去,未曾深究模仿。
【需要声明,此图片内容归原页面作者所有】
很不幸,Chrome用F12后我们的内容跟上图的有些出入,我们没有WebAssembly文件。
所以我们要处理一下,我们把WebAssembly的字节转换为二进制wasm文件,
我们将WebAssembly中的内容复制出来,
如下图,其中省略部分内容(参考附件d.py文件)保存为python文件,通过执行【python d.py】同目录下,我们得到WebAssembly的编译二级制文件wasmkc.wasm
我们参考上述第二个页面的内容,将index.html修改为引用外部WebAssembly文件的方式,如下图;
(这个可能需要将index_wasm.html和wasmkc.wasm放自己的服务器才能正常执行)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-6-27 09:00
被HHHso编辑
,原因: