1.手机漏洞扫描器
分析两款手机漏洞扫描器的实现原理
2.检测方式分析
-
检测原理:
跑不会崩溃的poc,或者check补丁是否完善。 -
代码实现:
通过线程或者是AsyncTask来执行我们的任务 -
vts主要检测的类型为:
framework
kernel
system
3,如何添加我们需要检测的漏洞
找到对应的类型,集成特定的类方法在list里add即可。
public interface VulnerabilityTest {
String getName();
boolean isVulnerable(Context context) throws Exception;
}
这里以janus漏洞为例,来添加需要检测的漏洞。
漏洞类型:janus属于zip类型的漏洞,我们定位到system
检测原理:反射调用系统的parsePackage函数,check一个含有漏洞的APK。查看返回结果
@Override
public String getCVEorID() {
return "janus";
}
@Override
public boolean isVulnerable(Context context) throws Exception {
/* String apkPath = FileUtil.getAssetFile(this, "hacked_v1sign.apk", null, false);
Log.i("JanusActivity", "isApk: " + new ZipChecker().check(apkPath));
Object packageParser = PackageUtil.getPackageParser(apkPath);
File sourceFile = new File(apkPath);
DisplayMetrics metrics = new DisplayMetrics();
metrics.setToDefaults();
if (PackageUtil.parsePackage(packageParser, sourceFile, apkPath, metrics, 256) == null) {
return true;
//status = "Without Janus bug!";
} else {
return false;
//status = "With Janus bug!";
}*/
return false;
}
参考:
AsyncTask使用教程:
https://blog.youkuaiyun.com/iispring/article/details/50639090