999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android軟件靜態分析技術研究進展

2014-10-27 16:33:57郁峰
無線互聯科技 2014年9期

郁峰

摘 要:通過介紹基于Linux內核的Android操作系統所面臨的被惡意軟件威脅的現狀,引出靜態分析。本文首先介紹了靜態分析的對象、常用的靜態分析方法及分類,然后從靜態分析的一般流程和常見惡意行為的靜態分析以及分析中存在的問題方面介紹了靜態分析研究的現狀,最后根據靜態分析的現狀和特點提出了進一步研究的方向。

關鍵詞:Android應用;惡意行為;靜態分析

近幾年,Android的發展極為迅猛,這除了相關產品強大的功能與豐富的應用外,更是因為它優良的性能表現吸引著用戶。隨著Android的興起,基于Android平臺的應用需求也越來越復雜,形形色色的軟件壯大了Android市場,也豐富了我們的生活,給我們的生活帶來了極大的便利。事情有利有弊,惡意程序泄露用戶隱私信息、惡意扣費、破壞系統的事件屢見不鮮,Android系統的安全逐漸成為了研究的熱點。

如今Android平臺的逆向分析主要應用于惡意代碼檢測,從根本上來說這是對逆向技術的一種合理運用和發展。Android平臺的逆向分析技術,主要分為靜態分析和動態分析兩類。靜態分析和動態分析是相對的概念,動態分析需要觀察軟件實際運行的情況,而靜態分析只需要從一個正常工作的軟件出發,分析的對象是該軟件的源碼。

1 問題描述與定義

靜態分析是指不運行代碼的情況下,采用詞法分析、語法分析等各種技術手段對程序文件進行掃描從而生成程序的反匯編代碼,然后閱讀反匯編代碼來掌握程序功能的一種一種技術,在實際的分析過程中,完全不運行程序是不現實的,需要通過運行目標程序來尋找程序的突破口。靜態分析強調的是靜態,在整個分析過程中,閱讀反匯編代碼是主要的分析工作。

1.1 靜態分析對象

Android應用程序的后綴的.apk,APK文件其實是zip格式的文件,可以使用Winrar打開,得到它的目錄結構。如圖1所示,主要包括五個部分,一是META-INF目錄,用來存放簽名信息,保證apk包的完整性和系統安全;二是res目錄,用來存放資源文件,包括程序圖片等內容;三是AndroidManifest.xml文件,用來描述應用的名字、版本、權限和引用的庫文件等信息;四是class.dex文件,是java源編譯后生成的java字節碼文件;五是resources.arsc文件,是編譯后的二進制資源文件[1]。在這五個部分中,最重要的是AndroidManifest.xml和class.dex文件。我們可以通過對應用程序的AndroidManifest.xml反編譯后進行分析,得到該程序運行的權限設置等信息,分析該程序的惡意行為。同樣的可以通過反編譯class.dex文件得到程序源碼,對程序進行分析。

1.2 靜態分析方法

Android靜態分析主要在于惡意代碼的匹配及信息泄露等,Android源碼的量非常大,如何對問題代碼快速定位是分析Android源碼的基礎。主要的分析方法[2]:

⑴信息反饋法是指先運行目標程序,然后根據目標運行時給出的反饋信息作為突破口尋找關鍵代碼。通常情況下,程序中用到的字符串會存儲在String.xml文件或者硬編碼到程序代碼中,如果是前者,字符串在程序中會以id的形式訪問,只需在反匯編代碼中搜索字符串的id值即可找到代碼處;如果是后者的話,在反匯編代碼中直接搜索字符串即可。

⑵特征函數法,無論程序做出任何動作或者反饋,都需要調用Android SDk中提供的相關API函數來完成的。

⑶順序查看法是指從軟件的啟動代碼開始,逐行的向下分析,掌握軟件的執行流程。

1.3 靜態分析分類

靜態分析根據分析對象的不同,主要分為二進制程序分析和源代碼分析[3]。對二進制程序進行分析,通過比較二進制文件中是否包含惡意行為特征碼,判斷程序是否具有惡意行為。對二進制文件進行特征碼分析,只能針對已經出現的病毒、木馬進行查殺,不能檢測未知病毒,面對不斷出現的新病毒或病毒變種,必須不斷更新病毒庫。源代碼分析,是指分析軟件的源代碼,通過與預先定義的引起惡意行為的API調用進行比對,判斷程序中是否含有惡意行為。以“惡意扣費”為例,引起扣費行為的發生,往往是由于惡意應用以發送短消息的方式,注冊了相關的SP服務。分析Android應用反編譯后的源代碼,通過查詢源代碼中是否包含發送短消息相關的API調用,并判斷相應的API 參數,是否為某些特定SP服務注冊碼,從而檢測Android 應用中是否包含“惡意扣費”等行為。

分析Android應用反編譯后的源代碼,由于源代碼邏輯結構更為清晰,查找更精確。引起惡意行為發生是相關的API調用導致的,而無論惡意行為如何變種,在源代碼中都必須調用關鍵的底層系統API。對源代碼進行檢測,只需查找關鍵的系統API調用進行判斷,對于不斷更新的病毒、木馬變種,并不需要頻繁地更新相應的檢測規則。

2 靜態分析技術研究現狀

目前在對Android程序進行靜態分析時,主要采取以下兩種方法:一是閱讀反匯編生成的Dalvik字節碼,可以使用IDA Pro分析dex文件,或者使用文本編輯器閱讀baksmali反編譯生成的smali文件;二是閱讀反匯編生成的java源碼,可以使用dex2jar生成jar文件,然后使用jd-gui閱讀jar文件的代碼。

2.1 靜態分析的一般流程

2.1.1 Android軟件預處理

在靜態分析過程中獲得反匯編代碼是主要的分析工作,首先要選取一個強大的反匯編工具,本文選取的是開源的Dex2jar工具。Dex2jar采用d2j-dex2jar ***.apk命令獲得java字節碼,獲得java字節碼后就可以通過反編譯工具jd-gui直接以源碼的形式顯示jar文件中的內容。在反編譯得到的文件中包含AndroidManifest.xml文件和java源代碼,在xml文件中獲得源碼的元信息(包括Activity、Service等的注冊信息和入口)和權限申請信息。Android軟件預處理的流程如圖2所示。

一個Android程序由一個或多個Activity以及它的組件構成,不同的Activity實現不同的功能。每個程序有且只有一個主Activity,也是程序啟動和顯示的第一個Activity。在程序中使用到的Activity都需要在AndroidManifest.xml文件中手動聲明,聲明Activity使用的activity標簽。在反編譯出的AndroidManifest.xml中找到主Activity后,可以直接去查看其所在類的OnCreate()方法的反匯編代碼,對大多數軟件來說,這就是程序的代碼入口,所有的功能都從這里開始得到執行,然后可以追蹤軟件的執行流程。

2.1.2 控制流圖生成

抽象語法樹(AST)作為程序的中間表現形式,是基于JavaCC工具得到的,在經過對源碼預處理,然后經過詞法語法分析得到的。能夠直觀地表示出源程序信息,存儲效率高,但是無法表示復雜的控制流信息,如選擇、循環語句。可以基于抽象語法樹得到源碼的控制流圖和數據流以及函數調用圖,以便進行靜態分析。控制流圖是程序的中間表示形式,作為函數依賴分析、控制流分析和數據流分析的基礎,可以很好的反映語句以及模塊之間的調用和執行流程。控制流圖生成流程如圖3所示。

2.1.3 安全規則解析

解析安全規則[4],查找規則中定義的關鍵API調用,以及API調用和某個參數、返回值或某些資源的關系,從而判別安全問題的存在。安全分析規則,一般規定對程序中關鍵信息元素的約束,如關鍵類、關鍵方法等。如果類、方法的相應屬性符合規則定義的約束條件,則報告分析結果。規則的內容上主要涉及自動耗費、隱私竊取、系統破壞等常見惡意行為。

2.2 Android軟件常見惡意行為的靜態分析

基于java編寫的Android應用程序,有著移動終端普遍的安全問題。具體的惡意行為可分為以下幾類[5]:

2.2.1 耗費用戶錢財行為

這些行為包括沒有用戶提示自動連接網絡、自動發送短信息、自動撥號等。查找連網行為,可以通過查找網址URL字符串以及Android執行連網行為的關鍵API調用進行判斷。針對此類惡意行為,可以分析程序方法間依賴關系,通過定位在執行網絡連接前,是否彈出對話框等,提示用戶有網絡連接行為,判斷在程序在執行時是否有用戶提示。

2.2.2 竊取用戶隱私行為

涉及未經用戶許可讀取個人隱私數據,包括短信息、Email電子郵件、通訊錄、通話記錄、日程安排、多媒體資料和手機IMEI標識,以及監控、記錄、處理話音記錄,啟動GPS全球定位系統監控物理位置并將其發送到特定網站等。

進一步考慮下面獲取手機IMEI標識,并將其發送到特定網站的惡意代碼:

TelePhonyManager tm=(TelePhonyManager)getSystemService(”phone”);

String userld=tm.getDeviceld();

URL url=newURL(“http://www.myweb.com.cn:80?id=”+userld);

url.openConnection();

首先可以通過查找關鍵API調用定位到程序的第3、4行。程序首先定義了一個URL類的對象url,并調用url的openConnection方法企圖進行網絡連接。在URL類的構造函數中,以userId變量的內容作為“http://www.myweb.com.cn:80”URL的參數傳遞給網站,進一步分析,userId報訊的是通過調用telephonymanager對象的getDeviceId方法返回的結果,并且telephonymanager是利用TelephonyManager類調用其靜態方法getSystemService(“phone”)獲得的。由此得知,userId正是通過調用Android系統的API獲得手機設備的IMEI標識。上述程序把手IMEI標識通過URL參數上傳給指定網站。

此外,一些惡意代碼也會調用Location類的getLatitude和getLongitude方法獲取手機設備當前位置的緯度和經度,再作為URL參數發送給指定網站,這些可疑的惡意行為都可以根據上下文,查找關鍵API調用和參數變量的取值檢測出。

2.2.3 破壞用戶數據的行為

破壞用戶數據行為包括刪除用戶數據,終止其他進程或系統服務的運行等。刪除用戶數據,包括刪除以文件形式保存的系統文件、配置文件和數據文件,以及刪除保存在數據庫中的通訊錄、日程、短信息記錄等。對文件的刪除,可以通過查找關鍵API調用并定位所要刪除文件的絕對路徑,判斷是否屬于系統文件。對數據庫中記錄的刪除,通過查找程序中調用的SQL語句,并判斷所要操作的數據庫表是否是保存用戶數據的表等。另外,如果程序在運行過程中,終止其他進程或系統服務的運行,造成對系統的破壞,也屬于惡意行為。常見的系統服務,包括電話服務、通知服務、輸入法服務、網絡連接服務、聲音服務、賬戶服務等。具有惡意行為的程序,會在程序運行過程中,枚舉系統中當前正在運行的進程和系統服務,獲取到進程或服務所在Package的名字,并將其作為參數調用系統API,終止進程或服務的運行。

為了防止惡意行為的發生,需要進行用戶行為判別。對于自動連接網絡、自動發送短信、自動撥打電話等惡意行為,檢測系統應判斷出連網、發送短信、撥打電話等行為是用戶發起的,還是程序未經過用戶許可,直接發起的請求。如果程序中使用了SMS、MMS、WII、WEB/WAP等敏感API,那么就需要對追蹤信息進行分析,如果是用戶提交的請求,那么認為調用是安全的;如果所調用的API并不是用戶提交的,參數為敏感信息,那么就認為可能存在后門隱患。

2.3 靜態分析中存在的問題

靜態分析的目標就是在不運行待測程序的基礎上分析程序的源代碼或者Dalvik字節碼,檢測出程序中存在的惡意行為。靜態分析需要獲得源碼、安全規則和模式庫,并且分析效果的好壞往往取決于模式庫和安全規則。對于已知惡意行為的檢測能夠做到高效、準確,但是在對惡意行為關鍵特征的搜集、提取并制定相應規則方面還需要進一步完善,目前的安全規則還不全面,某些惡意行為的實現方式會有很多種情況,并不僅僅局限于一些關鍵API的調用。由于在分析時不能考慮實際運行情況,因此需要分析所有的路徑,誤報率較高,會產生大量的分析結果,增加了分析的難度。如何提高靜態分析的效率和準度是安全領域重要的研究方向。

3 進一步研究

隨著Android安全問題日益突出,靜態分析技術被運用得越來越廣泛,這項技術也會更加成熟,結合靜態分析技術的特點,今后的研究方向主要有:

⑴設計基于靜態分析的Android應用程序惡意行為通用檢測模型,集成各種靜態分析方法,以提高靜態分析的效率。

⑵不斷完善安全規則,隨著Android平臺的不斷發展,會出現更多的惡意行為,現有的安全規則還不完善,需要不斷更新,與時俱進,才能提高靜態分析的準確性,降低誤報率。

⑶將靜態分析與動態分析以及污點傳播分析技術結合,設計一個自動化惡意軟件檢測系統。自動提取終端上的應用程序進行自動化分析,實現對應用程序的離線安全檢查。

[參考文獻]

[1]王世江,余志龍,陳昱勛,等.Google Android SDK 開發范例大全[M].第二版.北京:人民郵電出版社,2010.

[2]唐宇敬.Android平臺下軟件安全漏洞挖掘方法研究[D].邯鄲:河北工程大學,2013.

[3]路程,張淼,徐愛國.基于源代碼靜態分析技術的Android應用惡意行為檢測模型[J].中國科技論文在線.201111-54.

[4]余建,韓雙霞,黃云龍.軟件安全性的靜態分析[J].計算機工程與設計,2006,27(8):1411-1414.

[5]路程.Android平臺惡意軟件檢測系統的設計與實現[D].北京:北京郵電大學,2012.

主站蜘蛛池模板: 久久久波多野结衣av一区二区| 久久久久无码精品国产免费| 欧美精品一二三区| 制服丝袜国产精品| 国产一区成人| 无码中文字幕精品推荐| 区国产精品搜索视频| 毛片国产精品完整版| 免费国产一级 片内射老| 自拍偷拍一区| 亚洲a免费| 韩日午夜在线资源一区二区| 在线观看91精品国产剧情免费| 日本福利视频网站| 就去色综合| 综合天天色| 国产精品极品美女自在线看免费一区二区 | 久久综合伊人77777| 国产成人h在线观看网站站| 日韩精品久久无码中文字幕色欲| 欧美第九页| 全午夜免费一级毛片| 久久公开视频| 在线另类稀缺国产呦| 国产精品无码作爱| 亚洲制服中文字幕一区二区| 亚洲欧美另类视频| 亚洲男人的天堂在线| 中文一级毛片| 国产麻豆精品在线观看| 国产精女同一区二区三区久| 国产又大又粗又猛又爽的视频| 无码日韩视频| 国产精品手机在线观看你懂的 | 在线播放国产99re| 自偷自拍三级全三级视频| 日日碰狠狠添天天爽| 成年人视频一区二区| 精品视频一区二区三区在线播| 一区二区三区在线不卡免费| 欧美日韩中文国产va另类| 午夜性刺激在线观看免费| 亚洲国产成人超福利久久精品| 亚洲国产成熟视频在线多多| 婷婷午夜天| 黑色丝袜高跟国产在线91| 毛片基地视频| 成人在线观看一区| 日韩大片免费观看视频播放| 日韩av手机在线| 亚洲Av激情网五月天| 四虎永久在线精品国产免费 | 亚洲一区二区在线无码| 日韩东京热无码人妻| 中文字幕无线码一区| 国产爽妇精品| 亚洲av综合网| 国产美女精品人人做人人爽| 国产在线视频欧美亚综合| 婷婷五月在线视频| 精品一区二区三区视频免费观看| 特级毛片8级毛片免费观看| 成人韩免费网站| 大陆国产精品视频| 日韩精品专区免费无码aⅴ| 亚洲精品欧美日本中文字幕 | 色综合成人| 毛片免费在线视频| 在线欧美日韩国产| 中文字幕波多野不卡一区| 无码一区二区波多野结衣播放搜索| 欧美激情视频一区| 欧美一区二区三区国产精品| 手机精品福利在线观看| 免费大黄网站在线观看| 999福利激情视频| 亚洲女同一区二区| 中文纯内无码H| 一级不卡毛片| 福利国产微拍广场一区视频在线| 亚洲欧美天堂网| 久久综合结合久久狠狠狠97色|