几维加固
- 动应用加固系统是一款针对APK文件的自动化安全加固产品,可以提高应用程序的代码安全性、数据安全性和自主防御能力,并且符合《GBT25070-2019信息安全技术网络安全等级保护安全设计技术要求》【简称:等保 2.0】中的移动互联安全计算环境设计技术要求。可以帮助金融、手游、电商、社交等行业解决移动应用的诸多安全问题,包括核心代码被反编译、应用被仿冒、API 接口暴露、密钥被窃取、请求协议被伪造,APK 包被植入恶意代码等,提供全面的标准化安全保护功能。
用户只需要提供APK包即可快速集成防静态工具分析、Dex 文件保护、So 文件保护、内存保护、反调试、防二次打包、本地数据加密、资源文件加密等多项安全功能。
app分析
- 使用市面上的查壳工具出不出什么壳子。
- 使用工具查壳信息https://github.com/horsicq/XAPKDetector 也查不出什么壳子。这个工具可以看详情啥的。最后利用MT工具查出的壳子是几维安全的壳子。由于刚搞app这个壳子完全没有听过。
- 打开app正要抓包的时候弹出一个提示说设备以及root。
- 这时候的想法是我们拿出我们的神器frida 在拿出我们的hookroot的脚本搞他。或者是用objection 搞说干就干 frida报错了 Failed to attach: unexpected error while attaching to process with pid 19517 这明显是防止attach的错误。我们在测试spwn 也报错 Bad access due to invalid address
0x776d5708dc /apex/com.android.runtime/lib64/libart.so
0x76fe65d308 /data/data/com.netease.nim.avic/files/kadp_arm64-v8a
0x76fe65d308 /data/data/com.netease.nim.avic/files/kadp_arm64-v8a
0x76fe65d308 /data/data/com.netease.nim.avic/files/kadp_arm64-v8a
0x76fe65d308 /data/data/com.netease.nim.avic/files/kadp_arm64-v8a
Process crashed: Bad access due to invalid address
***
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/sailfish/sailfish:10/QP1A.191005.007.A3/5972272:user/release-keys'
Revision: '0'
ABI: 'arm64'
Timestamp: 2023-04-17 16:01:22+0800
pid: 24218, tid: 24218, name: etease.nim.avic >>> com.netease.nim.avic <<<
uid: 10202
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x76fa500000
x0 00000076fa500000 x1 0000000000000000 x2 0000000000021000 x3 00000076fa500000
x4 00000076fa521000 x5 0000000000000001 x6 0000000000000000 x7 000000000000d000
x8 00000077f3bb2ed0 x9 0000000000021000 x10 884a5413cd36b29d x11 5851f42d4c957f2d
x12 14057b7ef767814f x13 000000000000c000 x14 00000077f14f7000 x15 ff51afd7ed558ccd
x16 00000077f15c68d8 x17 00000077f15537c0 x18 00000077f389c000 x19 0000000000021000
x20 00000076fa500000 x21 0000007fed9cf504 x22 0000007fed9cf49c x23 000000776dc025f8
x24 00000077f2615430 x25 0000000000000040 x26 000000776dc2ddc0 x27 000000776dc2d0c0
x28 000000776dc00980 x29 0000007fed9cf420
sp 0000007fed9cf190 lr 00000077f153cbdc pc 00000077f155384c
backtrace:
#00 pc 000000000007e84c /apex/com.android.runtime/lib64/bionic/libc.so (memset+140) (BuildId: 5812256023147338b8a9538321d4c456)
#01 pc 0000000000067bd8 /apex/com.android.runtime/lib64/bionic/libc.so (extent_recycle+3672) (BuildId: 5812256023147338b8a9538321d4c456)
#02 pc 0000000000066d70 /apex/com.android.runtime/lib64/bionic/libc.so (je_extents_alloc+44) (BuildId: 5812256023147338b8a9538321d4c456)
#03 pc 000000000004e8c0 /apex/com.android.runtime/lib64/bionic/libc.so (je_arena_extent_alloc_large+152) (BuildId: 5812256023147338b8a9538321d4c456)
#04 pc 000000000006c49c /apex/com.android.runtime/lib64/bionic/libc.so (je_large_palloc+512) (BuildId: 5812256023147338b8a9538321d4c456)
#05 pc 0000000000046b00 /apex/com.android.runtime/lib64/bionic/libc.so (je_calloc+2508) (BuildId: 5812256023147338b8a9538321d4c456)
#06 pc 0000000000040264 /apex/com.android.runtime/lib64/bionic/libc.so (calloc+44) (BuildId: 5812256023147338b8a9538321d4c456)
#07 pc 00000000000a5a20 /data/app/com.netease.nim.avic-l9CVU6oTzmoWP9co9LC-iA==/lib/arm64/libKwProtectSDK.so (BuildId: ece12da60a11f31e9398bb91bf127ba9dd122b75)
#08 pc 0000000000050cf8 /apex/com.android.runtime/bin/linker64 (__dl__ZL10call_arrayIPFviPPcS1_EEvPKcPT_mbS5_+276) (BuildId: 5415a75dd53505b7c5979e973b5d7394)
#09 pc 0000000000050f14 /apex/com.android.runtime/bin/linker64 (__dl__ZN6soinfo17call_constructorsEv+376) (BuildId: 5415a75dd53505b7c5979e973b5d7394)
#10 pc 000000000003c970 /apex/com.android.runtime/bin/linker64 (__dl__Z9do_dlopenPKciPK17android_dlextinfoPKv+2416) (BuildId: 5415a75dd53505b7c5979e973b5d7394)
#11 pc 00000000000380dc /apex/com.android.runtime/bin/linker64 (__loader_android_dlopen_ext+72) (BuildId: 5415a75dd53505b7c5979e973b5d7394)
#12 pc 00000000000011d0 <anonymous:7764f58000>
几维安全加固的特征脱壳演示
- 在lib目录里有有libKwProtectSDK.so 。在assets 目录里面有 kadp_arm64-v8a。此外这个版本是整体加固所以我们使用 葫芦娃大佬的frida-dexdump进行脱壳
- 脱壳演示
frida hook脚本定位检测点
- 定位root检测点
- 使用我们的脚本可能由于我们的脚本检测不全所以也弹出框。所以我们直接编写hook 检测函数的脚本直接上。
总结
- (1)遇到app奔溃的时候多测试几次或者换一个版本低点的进行测试
- (2)多自己写点常用检测定的脚本方便定位
- (3)在frida hook时候我们必须要熟练掌握常用hook api和javase基础才能够好的学习app