appshark
v0.1.2
AppShark是在Android应用中扫描漏洞的静态污点分析平台。
AppShark需要JDK -JDK 11的特定版本。在测试后,由于依赖关系兼容性问题,它在其他LTS版本(JDK 8和JDK 16)上不起作用。
我们假设您正在项目存储库的根目录中工作。您可以使用Gradle工具构建整个项目。
$ ./gradlew build -x test 执行上述命令后,您将在目录build/libs中看到一个伪影文件AppShark-0.1.2-all.jar 。
像上一步一样,我们假设您仍在项目的根文件夹中。您可以使用
$ java -jar build/libs/AppShark-0.1.2-all.jar config/config.json5 config.json5具有以下配置内容。
{
"apkPath" : " /Users/apks/app1.apk "
} 每个JSON都有这些基本字段。
,默认为$ rulepath目录中的所有 *.json文件有关更多配置字段,请访问net.bytedance.security.app.ArgumentConfig
如果您提供了一个配置JSON文件,该文件在项目root目录中设置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" : " <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)> " ,
"Sink" : " <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r31 " ,
"entryMethod" : " <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void f()> " ,
"Source" : " <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r3 " ,
"url" : " /Volumes/dev/zijie/appshark-opensource/out/vuln/1-unZipSlip.html " ,
"target" : [
" <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r3 " ,
" pf{obj{<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>:35=>java.lang.StringBuilder}(unknown)->@data} " ,
" <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r11 " ,
" <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r31 "
]
},
"hash" : " ec57a2a3190677ffe78a0c8aaf58ba5aee4d2247 " ,
"possibility" : " 4 "
},
{
"details" : {
"position" : " <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)> " ,
"Sink" : " <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r34 " ,
"entryMethod" : " <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void f()> " ,
"Source" : " <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r3 " ,
"url" : " /Volumes/dev/zijie/appshark-opensource/out/vuln/2-unZipSlip.html " ,
"target" : [
" <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r3 " ,
" pf{obj{<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>:33=>java.lang.StringBuilder}(unknown)->@data} " ,
" <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r14 " ,
" <net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$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许可证的许可,版本2.0
云雀