bytedance/appshark
GitHub: bytedance/appshark
字节跳动开源的 Android 应用静态污点分析平台,用于扫描和检测 APK 中的安全漏洞。
Stars: 1729 | Forks: 177
## 文档索引
- [1.概述](doc/zh/overview.md)
- [2.启动](doc/zh/startup.md)
- [3.如何编写规则](doc/zh/how_to_write_rules.md)
- [4.如何使用 appshark 发现合规问题](doc/zh/how_to_find_compliance_problem_use_appshark.md)
- [5.路径穿越游戏](doc/zh/path_traversal_game.md)
- [6.参数](doc/zh/argument.md)
- [7.引擎配置](doc/zh/EngineConfig.md)
- [8.结果](doc/zh/result.md)
- [9.常见问题](doc/zh/faq.md)
# AppShark
Appshark 是一个用于扫描 Android 应用漏洞的静态污点分析平台。
## 前置条件
Appshark 需要特定版本的 JDK
-- [JDK 11](https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html)。经测试,由于依赖兼容性问题,它无法在其他 LTS 版本(JDK 8 和 JDK 16)上运行。
## 构建/编译 AppShark
我们假设您正在项目仓库的根目录下工作。您可以使用
[gradle](https://gradle.org/) 工具构建整个项目。
```
$ ./gradlew build -x test
```
执行上述命令后,您将在 `build/libs` 目录中看到一个名为 `AppShark-0.1.2-all.jar` 的构件文件。
## 运行 AppShark
与上一步类似,我们假设您仍在项目的根文件夹中。您可以使用以下命令运行该工具
```
$ java -jar build/libs/AppShark-0.1.2-all.jar config/config.json5
```
`config.json5` 包含以下配置内容。
```
{
"apkPath": "/Users/apks/app1.apk"
}
```
每个 JSON 都有这些基本字段。
- apkPath: 要分析的 apk 文件的路径
- out: 输出目录的路径
- rules: 指定规则,用 `,` 分隔。默认为 $rulePath 目录下的所有 *.json 文件
- rulePath: 指定规则的父目录,默认为 ./config/rules
- maxPointerAnalyzeTime: 为从入口点开始的分析设置的超时时间(秒)
- debugRule: 指定启用日志记录以进行调试的规则名称
有关更多配置字段,请访问 `net.bytedance.security.app.ArgumentConfig`
如果您提供的配置 JSON 文件将输出路径设置为项目根目录下的 `out`,运行分析后您将
在该路径下找到结果文件 `out/results.json`。
## 解读结果
以下是 `results.json` 的一个示例。
```
{
"AppInfo": {
"AppName": "test",
"PackageName": "net.bytedance.security.app",
"min_sdk": 17,
"target_sdk": 28,
"versionCode": 1000,
"versionName": "1.0.0"
},
"SecurityInfo": {
"FileRisk": {
"unZipSlip": {
"category": "FileRisk",
"detail": "",
"model": "2",
"name": "unZipSlip",
"possibility": "4",
"vulners": [
{
"details": {
"position": "",
"Sink": "->$r31",
"entryMethod": "",
"Source": "->$r3",
"url": "/Volumes/dev/zijie/appshark-opensource/out/vuln/1-unZipSlip.html",
"target": [
"->$r3",
"pf{obj{:35=>java.lang.StringBuilder}(unknown)->@data}",
"->$r11",
"->$r31"
]
},
"hash": "ec57a2a3190677ffe78a0c8aaf58ba5aee4d2247",
"possibility": "4"
},
{
"details": {
"position": "",
"Sink": "->$r34",
"entryMethod": "",
"Source": "->$r3",
"url": "/Volumes/dev/zijie/appshark-opensource/out/vuln/2-unZipSlip.html",
"target": [
"->$r3",
"pf{obj{:33=>java.lang.StringBuilder}(unknown)->@data}",
"->$r14",
"->$r34"
]
},
"hash": "26c6d6ee704c59949cfef78350a1d9aef04c29ad",
"possibility": "4"
}
],
"wiki": "",
"deobfApk": "/Volumes/dev/zijie/appshark-opensource/app.apk"
}
}
},
"DeepLinkInfo": {
},
"HTTP_API": [
],
"JsBridgeInfo": [
],
"BasicInfo": {
"ComponentsInfo": {
},
"JSNativeInterface": [
]
},
"UsePermissions": [
],
"DefinePermissions": {
},
"Profile": "/Volumes/dev/zijie/appshark-opensource/out/vuln/3-profiler.json"
}
```
# 许可证
AppShark 根据 [APACHE LICENSE, VERSION 2.0](http://www.apache.org/licenses/LICENSE-2.0) 获得许可
# 安全须知
UI/Server 是一个辅助测试工具,不应在生产环境中使用,只能部署用于本地测试。
# 联系我们
Lark 
标签:Android 安全, APK 分析, JS文件枚举, Redis利用, 云安全监控, 合规检测, 后台面板检测, 目录枚举, 移动安全, 路径遍历, 静态分析