首页
社区
课程
招聘
[原创]Android SDK静态扫描器Coeus-隐私政策/安全/基础信息-开源工具
发表于: 2019-12-24 12:43 10832

[原创]Android SDK静态扫描器Coeus-隐私政策/安全/基础信息-开源工具

2019-12-24 12:43
10832

sdk (软件开发工具包)软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的**,它可以为某个程序设计语言提供应用程序功能接口。

Andorid SDK,即为在Android系统中,为辅助移动应用软件(APP)的相关文档、工具的**。对于移动APP开发者来说,为了提高开发效率,或者引用其他三方功能如支付、扫码、注册等,往往会集成不同的第三方SDK工具包。现如今,APP开发者使用第三方SDK已经成为普遍现象,实际上,SDK作为服务提供商提供的手段,也已经成为目前主流的集成方式。例如百度地图SDK、微博登录SDK、个推SDK、腾讯Bugly、友盟SDK等,均为市面上广泛使用的SDK。

曾有相关专业IT人员对15个类别、1000多款主流App使用第三方SDK的统计分析结果显示,App使用最为广泛的第三方SDK类型为第三方登录分享类、推送类、数据统计类SDK,以及一些基础库(例如:GSON、OkHttp、EventBus等),且所有APP均使用过第三方服务提供的SDK。

图源自:https://www.luoxudong.com/225.html

尽管第三方SDK被广泛使用,可对于SDK使用者即APP开发者来说,第三方SDK是为黑盒存在,APP开发者是无法得知其中的详细代码流程及开发流程。这导致,在APP开发完毕之后,SDK成为APP开发者遗忘以及忽略的环节。

例如,今年上半年,中国某科技企业被曝光利用SDK隐瞒收集用户联系人信息、QQ登录信息、位置信息,该SDK存在于第三方商店提供的多达 12 个 Android 应用程序中,受感染的应用程序已下载至少 1.11 亿次

通过分析,不难查看出该SDK的部分内容:

以上图片资料均源自:https://research.checkpoint.com/2019/operation-sheep-pilfer-analytics-sdk-in-action/

不难看出,由于第三方的SDK侧重于功能性,导致App开发者在使用第三方SDK时,完全忽略其安全性,使其可以搜集隐私信息,或借助合法App执行恶意操作!如果存在工具能够在集成之前进行安全审计,便可以避免使用第三方危险的SDK,保证自身SDK安全。

github项目地址: https://github.com/wulio/Coeus

python 3.x / java

安装 :git clone https://github.com/wulio/Coeus.git

一键扫描:python coeus.py xxx.aar

相关政策代码及隐私代码检测策略,均在scrpit文件夹中,json格式便于添加与修改

相应的工具也存储在tool文件夹下

具体代码逻辑均可在项目组查看。

生成的扫描文件,输出在result文件夹下,分别有对应的log文件和输出的report.xml文件。

一键运行 python getui_2.13.3.0-gisdk_3.1.9.1-gssdk_2.3.0.0.aar


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-12-30 10:55 被deff编辑 ,原因: 修改详细的文档和说明
收藏
免费 5
支持
分享
最新回复 (21)
雪    币: 348
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
工信部一般是如何审查加固后的apk的? 直接问厂商拿没有加固的版本?还有现在不少应用都是flutter写的,直接就能编译成二进制文件,无需加固,不能反编译,对于这种应用,工信部如何排查的?
最后于 2019-12-24 14:41 被Wika编辑 ,原因: fix
2019-12-24 14:26
0
雪    币: 2968
活跃值: (319)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
Wika 工信部一般是如何审查加固后的apk的? 直接问厂商拿没有加固的版本?还有现在不少应用都是flutter写的,直接编译成二进制文件,无需加固,不能反编译,对于这种应用,工信部如何排查的?
如果我做的话,弄个rom,就9.0的android系统,把对应隐私信息打上tag,网络发送打上tag。运行apk,之后一目了然。就是人工看。结合部分静态分析即可,没必要审查所有apk信息==也不需要考虑加固、三方架构等信息
2019-12-24 14:30
0
雪    币: 25
活跃值: (1111)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
我做的就是动态层面的 效果要好很多 误报也少
2019-12-24 15:29
0
雪    币: 29
活跃值: (295)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
繁华皆成空 我做的就是动态层面的 效果要好很多 误报也少
繁华师傅怎么做的,自定义rom?还是用xposed插件?还是frida?
2019-12-24 15:33
0
雪    币: 25
活跃值: (1111)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
先用的xposed,后面会换成定制的hook框架来代替,要比定制rom方便不少
2019-12-24 15:34
0
雪    币: 25
活跃值: (1111)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
endlif 繁华师傅怎么做的,自定义rom?还是用xposed插件?还是frida?
先用的xposed,后面会换成定制的hook框架来代替,要比定制rom方便不少
最后于 2019-12-24 15:34 被繁华皆成空编辑 ,原因:
2019-12-24 15:34
0
雪    币: 29
活跃值: (295)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
deff 如果我做的话,弄个rom,就9.0的android系统,把对应隐私信息打上tag,网络发送打上tag。运行apk,之后一目了然。就是人工看。结合部分静态分析即可,没必要审查所有apk信息==也不需要考 ...
检测网络数据发送那里不好弄。
2019-12-24 15:35
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
如果是我,我就直接改Android系统源代码,在api层修改调用,这样这些app随便搞,不知道算我输!
2019-12-24 16:20
0
雪    币: 1887
活跃值: (360)
能力值: ( LV8,RANK:121 )
在线值:
发帖
回帖
粉丝
10
感谢分享
2019-12-24 16:44
0
雪    币: 168
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主你说的百度定位SDK是个什么问题
2019-12-24 21:39
0
雪    币: 62
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
https://github.com/espduino/Hegui2.0
2019-12-25 10:31
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13

帮忙看看啥问题
最后于 2019-12-25 15:56 被wx_Mr.聂编辑 ,原因:
2019-12-25 15:54
0
雪    币: 2968
活跃值: (319)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
wx_Mr.聂 帮忙看看啥问题
打开temp看下有没有文件夹,目前看是没有生成当前aar的temp目录 

对应函数 :config.temp_path = os.path.join(config.TEMP_PATH, self.result_dir_name)
检查下即可,可能是没有权限创建文件或其他,可以试试更改当前文件夹权限~
2019-12-25 16:16
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
上面的那个问题我解决了.
手动在当前目录创建了一个 temp文件夹 即可

但是出现新的问题:

root        : INFO     start sdk scan..
root        : INFO     start decompile java.
root        : INFO     totalfiles:187
root        : INFO     decompile java success.
root        : INFO     start decompile smali.
root        : INFO     decompile smali success.
Traceback (most recent call last):
  File "coeus.py", line 17, in <module>
    m.start()
  File "/Users/nielifeng/Downloads/Coeus-master/utils/manager.py", line 79, in start
    self.scan(is_aar)
  File "/Users/nielifeng/Downloads/Coeus-master/utils/manager.py", line 82, in scan
    scanners = [StaticScanner(is_aar), DynamicScanner()]
  File "/Users/nielifeng/Downloads/Coeus-master/scanner/static.py", line 13, in __init__
    super().__init__()
TypeError: super() takes at least 1 argument (0 given)
2019-12-25 16:53
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16

result文件中的相关内容:

2019-12-25 16:58:17 manager.py[line:32] INFO start sdk scan..
2019-12-25 16:58:17 manager.py[line:66] INFO start decompile java.
2019-12-25 16:58:17 manager.py[line:100] INFO totalfiles:187
2019-12-25 16:58:23 manager.py[line:69] INFO decompile java success.
2019-12-25 16:58:23 manager.py[line:73] INFO start decompile smali.
2019-12-25 16:58:27 manager.py[line:75] INFO decompile smali success.
2019-12-25 17:03
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
尝试过aar 或者jar 都这样 
2019-12-25 17:04
0
雪    币: 2968
活跃值: (319)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
18
wx_Mr.聂 尝试过aar 或者jar 都这样
多谢提醒,我去git上添加备注……依赖环境 python 3.x ,并且路径配置java环境
你用的2.7,2.7在2020年将停运了,所以我这边用的3.8.0版本
另外也不需要版聊了~ 自己先尝试解决下~ 都不是什么功能大问题,目前看起来都是小问题,我这边下载测试过了,基础运行没有什么异常~若出现功能上异常,如乱码等其他的,可以在issues反馈,我有在跟进的~
最后于 2019-12-25 18:19 被deff编辑 ,原因: 添加其他说明
2019-12-25 18:14
0
雪    币: 171
活跃值: (549)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
正打算自己写一个,这已经开源了,太效率了
2019-12-26 10:47
0
雪    币: 2968
活跃值: (319)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
更新下文档,补充一些说明信息
2019-12-30 10:56
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
在app里面sdk的载体如果是.so,这个工具是否无法适用?
2020-1-20 15:12
0
雪    币: 2484
活跃值: (3152)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
能不能直接扫apk?
2020-1-31 18:02
0
游客
登录 | 注册 方可回帖
返回
//