一、简述
该恶意应用运行后,私自读取用户的联系人和历史短信记录,后台静默上传到C2服务器,造成用户的隐私信息泄露。
二、样本信息
包名:fujinyueai.yes
应用名:附近约爱
文件SHA1:6c96510ba1b27d939dae7bef824312ae08291c2e
版本:8.68
文件大小:460.5 KB
三、恶意行为分析
3.1 运行界面
应用启动后会弹出一个窗口,要求用户填写“邀请码”。通过rg_n20()方法检查验证码是否正确。
3.2 窃取联系人和历史短信
校验用户输入的验证码是否为空,为空则通过Toast提示用户继续输入。不为空时会将邀请码、联系人、历史短信上传到到C2服务器,然后返回一个字符串。上传链接:http:// app.okctv.xyz/app/public/index.php/index/index/js
用fiddler抓包,可以看到窃取的联系人和短信
3.3 邀请码绕过
经过分析,当C2服务器返回的响应信息包含“OJBK”时校验通过校验。
由于样本来源于网络,我们手上并没有邀请码。可以去Hook rg_wbxl类的rg_n3391()方法,直接返回一个包含“OJBK”的字符串,便可以绕过检测逻辑。
package hook;import android.util.Log;import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;/*** @author yaorc* @date 2021-04-29 17:19*/
public class HookApp implements IXposedHookLoadPackage {private static final String TAG = "HookApp";@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {String packageName = lpparam.packageName;String hookPackageName = "fujinyueai.yes";String hookClassName = "hsh.Java.jb.rg_wbxl";String hookMethodName = "rg_n3391";if (hookPackageName.equals(packageName)) {Log.d(TAG, "handleLoadPackage: 准备Hook应用:" + hookPackageName);XposedBridge.log(" 准备Hook应用:" + hookPackageName);// Hook处理XposedHelpers.findAndHookMethod(hookClassName, lpparam.classLoader, hookMethodName,byte[].class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {super.afterHookedMethod(param);param.setResult("OJBK");}});}}
}
激活Hook插件并重启手机,再次打开应用,随便输入邀请码后会弹出带有进度条且不可取消的提示框,后续就没有操作了,所以这个样本的主要目的就是窃取用户的联系人和短信数据,实施下一步诈骗操作。
反编译apk,通过资源反向搜索,可以得知主界面只是加载了一张图片,令用户误以为app是直播交友类软件,实质上并没有相关功能。
四、小结
-
该恶意应用主要目的是窃取用户的联系人、短信记录,猜测“邀请码”是用于标识用户和统计推广人员的绩效。
-
结合以往的网络诈骗案例来看,诈骗人员可能会在QQ、论坛等地方散播“交友”信息,引诱用户进行视频裸聊,期间会录制用户的不雅视频。诱导或威胁用户安装需要“邀请码”的APP,窃取用户的联系人后进一步勒索用户,完成整个诈骗流程。