設備風控攻防新挑戰:定製ROM改機

一、背景

改機是黑產團伙大規模作惡所依賴的重要技術手段。通過改機,黑產可以批量僞造新設備,進而繞過甲方的業務風控。因此圍繞改機展開的攻與防,是我們跟黑灰產對抗的重點研究工作之一。過去幾年,黑產改機主要有以下幾種手段:

1、安卓模擬器

大多數安卓模擬器都支持修改IMEI,機型等設備參數,因此可以僞造出多臺設備。不過只要能檢測出模擬器環境,這種改機便不攻自破;

2、改機工具

這類工具運行在真實設備上,基於Xposed、Substrate等框架,注入指定應用,並Hook getDeviceID、getMacAddress等函數,返回僞造的設備信息。針對這種改機,檢測Hook框架,多種方式獲取並比對設備信息等,都是識別改機的可行方案;

3、應用多開/分身

通過VirtualApp等技術在真實設備上模擬出多個沙盒環境,然後在沙盒環境中運行應用。由於每個沙盒環境的設備參數都是可控的,所以也可以達到改機的效果。不過由於沙盒環境和真實環境始終存在差異,因此可以檢測沙盒環境來識別此類改機。

通過Karma業務情報監測平臺,我們發現黑產團伙從去年開始使用一種新的手段,即定製ROM的方式來實現改機,這種改機技術更加底層,更加難以檢測,目前技術也愈發成熟。經過一段時間的深入研究,我們在前段時間升級了設備風險SDK,全面支持檢測定製ROM改機。

二、定製ROM改機的技術原理

我們以修改機型信息爲例,獲取機型信息大多會調用_system_property_get這個函數,位於/system/lib/libc.so這個系統庫中。在定製rom該機的設備上,該函數代碼如下:

在這裏插入圖片描述
可以看到定製rom的開發者對函數做了修改,添加了自己的代碼邏輯。如果在改機工具中自定義了某個屬性,則該屬性值的獲取不走系統默認的讀取函數,轉而執行工具定製的讀取函數。同時,我們發現開發者對init進程做了深度定製,最終是在init中修改了機型信息。

修改IMEI

獲取IMEI信息通常會調用getDeviceID函數。這是一個phone服務的IPC調用,響應代碼位於:packages/services/Telephony/src/com/android/phone/PhoneInterfaceManager.java中,如下所示:

在這裏插入圖片描述
可以看到返回IMEI值,調用的是phone.getDeviceId函數,進一步跟進其代碼,如下所示:

在這裏插入圖片描述
可以看到,根據IPC調用發起方的UID(可以看作一個用的唯一標識),來判斷是否需要修改IMEI。如果是,則調用getHookValue返回僞造的IMEI。爲了方便使用,作者提供了設置接口,可以在使用前設置哪些應用需要修改IMEI。

三、定製ROM改機的使用

由於定製ROM改機直接修改Andorid源代碼,改機的對象是真實設備,對應用本身也沒有任何侵入行爲,所以難以被檢測,而且改機效果非常穩定。此外,定製ROM改機的使用也非常方便:

1)可鏡像備份機型數據環境至雲服務器,方便賬號對應的設備環境管理;
2)打通系統調試接口,方便自動化腳本編寫、降低開發成本;
3)傻瓜式一鍵式操作,完成設備信息修改、設備數據恢復。

定製ROM改機運行流程如下圖所示:
在這裏插入圖片描述
基於Karma業務情報監測平臺的情報數據,引流是當前定製ROM主要的使用場景之一。黑產從業人員通過定製ROM改機,輕鬆實現了設備的重複利用,再結合定製腳本進行批量化自動化的引流操作。

在這裏插入圖片描述

四、定製ROM改機的檢測

檢測其他改機技術的攻防平面,很難應用到定製ROM改機。因此需要在深入分析定製ROM改機工具的基礎上,結合工具的實際運行原理和運行過程,尋找到新的攻防平面。目前我們對於幾款活躍的定製ROM改機工具,都找到了工具難以反制的攻防平面,並在之上定義了針對每款工具的檢測邏輯。我們的設備風險SDK,也第一時間進行了升級。

當然,與黑產的攻防,始終是一個持續對抗的過程。如果僅僅依賴一成不變的防禦機制,最終也會有被破解的一天。尤其在大多時刻,防守方相比於攻擊方會更加被動,因此需要建立發現問題到快速解決問題的閉環,從而儘量降低業務遭受的損失。