前言
下面的報(bào)告來(lái)自SophosLabs實(shí)驗(yàn)室的Android安全專(zhuān)家陳宇,還有來(lái)自Android組的成員William Lee, Jagadeesh Chandraiah and Ferenc László Nagy的幫助。
隨著Android惡意軟件的數(shù)量的持續(xù)增長(zhǎng),它緊隨Windows下的應(yīng)用采用的用于逃脫模擬器的技術(shù),用來(lái)防止被動(dòng)態(tài)分析。在這篇文章中,我們將展示一些用于模擬器檢測(cè)的技術(shù)。
模擬器是一種可以允許一臺(tái)電腦(主機(jī))模擬另外一臺(tái)電腦(客戶(hù)機(jī))的硬件或軟件。通常,它允許主機(jī)系統(tǒng)運(yùn)行軟件或者使用外部設(shè)備來(lái)模擬器客戶(hù)機(jī)系統(tǒng)。在安全方面,用它很容易檢測(cè)惡意軟件的行為,這也是為什么惡意軟件的作者很想避免運(yùn)行于模擬器。
模擬器檢測(cè)技術(shù)在許多不同的Android惡意軟件家族中均被發(fā)現(xiàn)了,最近的一款是在Google Play發(fā)現(xiàn)的Android加載廣告的惡意軟件。
于是,下面是SophosLabs實(shí)驗(yàn)室發(fā)現(xiàn)的6中常用的模擬器檢測(cè)技術(shù):
1. 檢測(cè)手機(jī)服務(wù)信息
所有模擬器檢測(cè)的關(guān)鍵是確定模擬器和真機(jī)設(shè)備的運(yùn)行環(huán)境之間的差異。首先,模擬器上面的設(shè)備ID、手機(jī)號(hào)、IMEI號(hào)和IMSI號(hào)都不同于真機(jī)設(shè)備。
android.telephony.TelephonyManager類(lèi)提供了用于獲取設(shè)備信息的方法。Android應(yīng)用程序可以通過(guò)該類(lèi)里面的方法用于檢測(cè)手機(jī)服務(wù)和狀態(tài),訪(fǎng)問(wèn)一些運(yùn)行商信息,注冊(cè)用于接收手機(jī)狀態(tài)變化通知的監(jiān)聽(tīng)器。例如,你能用getLine1Number方法來(lái)獲取卡1上的手機(jī)號(hào)信息。在模擬器上面,它將是“1555521”后面緊跟模擬器端口數(shù)字。例如如果模擬器端口是5554,它將返回15555215554。
Andr/RuSms-AT使用下面這種代碼用于檢測(cè)模擬器:
2. 檢測(cè)制造商信息
我們發(fā)現(xiàn)許多惡意軟件家族通過(guò)檢測(cè)制造商信息來(lái)判斷它是否運(yùn)行在模擬器中。例如,下面這款銀行類(lèi)的惡意軟件使用如下的模擬器檢測(cè)代碼:
其中的字符串被加密了,解密后的內(nèi)容如下:
上面的方法是被一個(gè)廣播接收器調(diào)用的。在這款A(yù)PP的manifest文件中,這個(gè)廣播接收器被定義為用于接收android.intent.action.BOOT_COMPLETED和 android.intent.action.SCREEN_ON事件。這意味著它將在手機(jī)啟動(dòng)時(shí)或者被喚醒時(shí)調(diào)用。這是惡意軟件常用來(lái)啟動(dòng)它們惡意行為的地方。但是,這款?lèi)阂廛浖谀M器檢測(cè)函數(shù)返回true時(shí)將什么都不做,如下所示:
3. 檢測(cè)系統(tǒng)屬性
另外一種方法是檢測(cè)系統(tǒng)屬性。模擬器上面的一些系統(tǒng)屬性和真機(jī)上面的不同。例如,設(shè)備廠商、硬件和model。下面這張表展示了模擬器上面一些系統(tǒng)屬性的值:
4. 檢測(cè)模擬器相關(guān)文件
這是另外一種在惡意軟件樣本中使用的技術(shù)。它們檢測(cè)QEMU (Quick Emulator)或者其他模擬器相關(guān)的文件是否存在。例如,下面的代碼片段在Andr/Pornclk變種中發(fā)現(xiàn)的。
5. 檢測(cè)調(diào)試器和安裝器
下面這種方法不是為了檢測(cè)模擬器,但是主要目的也是為了阻止動(dòng)態(tài)分析。像下面這款詐騙廣告軟件,它使用Debug.isDebuggerConnected()和Debug.waitingForDebugger()來(lái)檢測(cè)是否存在調(diào)試器。更有趣的是,它同時(shí)也通過(guò)getInstall
ERPackageName獲取安裝器來(lái)查看它是否是通過(guò)Google Play安裝的(com.android.vending)。因此,像大部分的逆向分析者一樣,如果你是通過(guò)adb安裝應(yīng)用程序到設(shè)備上的,這個(gè)應(yīng)用程序就不會(huì)運(yùn)行了。
6. 時(shí)間炸彈
下面是另外的一種方法,許多惡意軟件/廣告軟件利用這種方法在被動(dòng)態(tài)分析時(shí)隱藏它們自身。在安裝后,它們?cè)诘却付ǖ臅r(shí)間后才啟動(dòng)Activities。例如,某款?lèi)阂鈴V告軟件中發(fā)現(xiàn)了下面的配置文件:

firstAdDelay是第一條廣告被投遞到客戶(hù)端的毫秒時(shí)間,在上面的例子中是24小時(shí)。這也可以防止用戶(hù)懷疑。
我們相信,android惡意軟件和惡意廣告軟件的作者將會(huì)繼續(xù)編寫(xiě)模擬器檢測(cè)技術(shù)的代碼,同時(shí)他們也已經(jīng)獲得了一定程度的成功。安全公司必須使用較好的檢測(cè)方法匹配它們。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標(biāo)題:Android惡意軟件模擬器檢測(cè)技術(shù)
本文網(wǎng)址:http://www.oesoe.com/html/support/11121520617.html