AppShark เป็นแพลตฟอร์มการวิเคราะห์ที่มีความเสียหายแบบคงที่เพื่อสแกนช่องโหว่ในแอพ Android
AppShark ต้องการ JDK รุ่นเฉพาะ - JDK 11 หลังจากการทดสอบมันไม่ทำงานกับ LTS รุ่นอื่น ๆ JDK 8 และ JDK 16 เนื่องจากปัญหาความเข้ากันได้ของการพึ่งพา
เราคิดว่าคุณกำลังทำงานในไดเรกทอรีรากของโครงการ repo คุณสามารถสร้างโครงการทั้งหมดด้วยเครื่องมือ Gradle
$ ./gradlew build -x test หลังจากดำเนินการคำสั่งข้างต้นคุณจะเห็นไฟล์ Artifact AppShark-0.1.2-all.jar ในไดเรกทอรี build/libs
เช่นเดียวกับขั้นตอนก่อนหน้าเราคิดว่าคุณยังอยู่ในโฟลเดอร์รูทของโครงการ คุณสามารถเรียกใช้เครื่องมือด้วย
$ java -jar build/libs/AppShark-0.1.2-all.jar config/config.json5 config.json5 มีเนื้อหาการกำหนดค่าต่อไปนี้
{
"apkPath" : " /Users/apks/app1.apk "
} แต่ละ JSON มีฟิลด์พื้นฐานเหล่านี้
, . ค่าเริ่มต้นคือไฟล์ทั้งหมด *.json ในไดเรกทอรี $ Rulepath สำหรับฟิลด์การกำหนดค่าเพิ่มเติมกรุณาเยี่ยมชม net.bytedance.security.app.ArgumentConfig
หากคุณให้ไฟล์การกำหนดค่า JSON ซึ่งตั้งค่าเส้นทางเอาท์พุท out ในไดเรกทอรีรูทของโครงการคุณจะพบไฟล์ผลลัพธ์ out/results.json หลังจากเรียกใช้การวิเคราะห์
ด้านล่างเป็นตัวอย่างของ results.json 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
การฝึกซ้อม