亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android移動(dòng)應(yīng)用風(fēng)險(xiǎn)控制系統(tǒng)的研究

        2022-03-27 23:00:47劉龍錦張志杰梁世民
        中國(guó)新通信 2022年1期

        劉龍錦 張志杰 梁世民

        【摘要】? ? 截止至2020年6月,Android系統(tǒng)占據(jù)了手機(jī)系統(tǒng)74.6%市場(chǎng)份額,剩余26.4%市場(chǎng)份額由其他系統(tǒng)瓜分,絕對(duì)優(yōu)勢(shì)的市場(chǎng)占有率造就了繁榮的Android生態(tài)及數(shù)量龐大的開發(fā)者。開發(fā)者水平的高低則給Android開發(fā)帶來了許多安全性問題。本文將從Android應(yīng)用抓包防護(hù),Java代碼防護(hù),So代碼防護(hù),簽名加密算法,服務(wù)端校驗(yàn)方面進(jìn)行研究,為應(yīng)用的風(fēng)險(xiǎn)控制方案設(shè)計(jì)提供理論依據(jù)。

        【關(guān)鍵詞】? ? Android? ? 抓包? ? 反編譯? ? 服務(wù)端

        引言:

        保護(hù)用戶數(shù)據(jù),保護(hù)信息安全是每一個(gè)開發(fā)者,每一家互聯(lián)網(wǎng)公司都應(yīng)該重點(diǎn)布防的區(qū)域。一套完整高效的風(fēng)險(xiǎn)控制方案,是開發(fā)者或公司開發(fā)實(shí)力的體現(xiàn),也是高效保護(hù)用戶數(shù)據(jù),信息安全,人人公平的重要手段。目前國(guó)內(nèi)外在應(yīng)用安全方面都比較著重,市場(chǎng)上也有阿里云、360、數(shù)美、數(shù)盟等安全服務(wù)廠商為Android應(yīng)用提供安全加密服務(wù)。僅僅只靠第三方廠商提供的安全防護(hù)是遠(yuǎn)遠(yuǎn)不足的,我們需要控制用戶操作的完整鏈路,才能設(shè)計(jì)出一套優(yōu)秀的風(fēng)險(xiǎn)控制系統(tǒng)。

        一、防護(hù)方式

        多數(shù)Android應(yīng)用的操作邏輯為:客戶端進(jìn)行操作,系統(tǒng)發(fā)送請(qǐng)求到服務(wù)器,服務(wù)端校驗(yàn)請(qǐng)求合法及參數(shù)并返回?cái)?shù)據(jù),客戶端根據(jù)服務(wù)端返回?cái)?shù)據(jù)進(jìn)行相應(yīng)界面展示。在這套操作邏輯中,客戶端的操作及數(shù)據(jù)發(fā)送部分存在風(fēng)險(xiǎn)。攻擊者通過反編譯Apk包,逆向出Android應(yīng)用與服務(wù)端的通信協(xié)議,偽造非法請(qǐng)求攻擊。針對(duì)上述的攻擊方式,開發(fā)者會(huì)在Android應(yīng)用的通信協(xié)議層進(jìn)行防護(hù),提高攻擊者抓包的難度,在請(qǐng)求中嵌入加密算法。收集設(shè)備信息,如設(shè)備型號(hào),網(wǎng)卡地址,系統(tǒng)版本,IP地址等,綜合判斷本次請(qǐng)求是否合法。

        二、抓包防護(hù)

        抓包是研究應(yīng)用程序的開始,通過抓包獲取數(shù)據(jù)進(jìn)行分析,確認(rèn)目標(biāo)請(qǐng)求的地址、參數(shù)、加密字段等。主流的Android應(yīng)用與服務(wù)端之間使用HTTPS/TLSv1.2協(xié)議通信,某些Android應(yīng)用使用QUIC/Http3并強(qiáng)制使用TLSv1.3協(xié)議。隨著Android系統(tǒng)的版本更新,系統(tǒng)層面強(qiáng)制要求開發(fā)者使用HTTPS協(xié)議進(jìn)行通信,開發(fā)者也重視數(shù)據(jù)傳輸過程中的安全,攻擊者對(duì)應(yīng)用的抓包越發(fā)困難。

        抓包通常采用中間人方式,常用抓包軟件有Fiddler、Charles等。中間人方式抓包需要解決兩個(gè)問題:如何偽裝Server、如何偽裝Client。以Fiddler軟件為例子,偽裝Server時(shí)需要安裝根證書到系統(tǒng)根目錄,偽裝Client則客戶端需要安裝Fiddler的自簽證書。Android系統(tǒng)將CA證書分為用戶CA與系統(tǒng)CA證書,系統(tǒng)CA證書擁有的權(quán)限較高但需要設(shè)備擁有root權(quán)限才可進(jìn)行添加和刪除操作。

        在擁有root權(quán)限的設(shè)備上,抓包非常容易實(shí)現(xiàn)。電腦端步驟:安裝Fiddler,安裝Fiddler根證書到系統(tǒng),配置解密通道。手機(jī)端步驟:設(shè)置代理到電腦,安裝Fiddler自簽證書,安裝Xposed框架,安裝JustTrustMe插件,配置完成,即可抓取大多數(shù)應(yīng)用數(shù)據(jù)包。對(duì)于抓包的防護(hù),防護(hù)辦法有以下幾種:應(yīng)用targetSdkVersion設(shè)置為大于24、雙向SSL認(rèn)證、使用SSL重協(xié)商、使用其他通信協(xié)議。無論使用那種方式都不可能避免不被抓包,對(duì)于Android系統(tǒng)的限制可降低Android版本,證書固定方式可以Hook移除相關(guān)代碼,雙向SSL認(rèn)證可逆向拿到私鑰進(jìn)行破解抓包。開發(fā)者盡可能的提高抓包難度,增大攻擊者抓包的成本即可。

        三、Java代碼防護(hù)

        Android應(yīng)用與服務(wù)端通信時(shí),在請(qǐng)求中嵌入Token或者加密的字段是常見的方式。高級(jí)的風(fēng)險(xiǎn)控制系統(tǒng)還會(huì)收集用戶的操作行為日記上傳到服務(wù)器,通過分析用戶的操作行為日記來判定本次請(qǐng)求是否有效。在請(qǐng)求中嵌入加密字段需要開發(fā)者在Java代碼層進(jìn)行代碼編寫,由于Android開源的特性,經(jīng)過開發(fā)工具編譯生成的Apk安裝包如若未經(jīng)過任何技術(shù)處理,使用Jadx工具進(jìn)行反編譯即可查看得到與源程序匹配度高達(dá)95%的代碼。對(duì)于攻擊者而言,能查看到程序的源碼能夠極大的加快破解的速度,為了延緩攻擊者得到Android應(yīng)用在Java層的算法,通常采用以下手段進(jìn)行防護(hù):

        (一)代碼混淆

        使用Proguard-rules工具進(jìn)行代碼混淆,加大攻擊者閱讀難度,延緩破解算法的速度。代碼混淆方法僅僅只能延緩算法被破解的速度,可以把一些水平較低的破解者攔在門外,對(duì)于編程功底較為深厚攻擊者,此方法終究會(huì)被破解。

        (二)Apk簽名校驗(yàn)

        進(jìn)行APK打包操作時(shí),開發(fā)人員要進(jìn)行簽名操作。簽名文件是開發(fā)者獨(dú)有的,攻擊者通常不可能有相同的文件,可以使用Android SDK中PackageManager類的getPackageInfo簽名校驗(yàn)方法保護(hù)Apk。

        (三)重打包對(duì)抗

        對(duì)Apk進(jìn)行重打包,修改代碼實(shí)現(xiàn)抓包也是常用的攻擊方式。重打包常用的工具是ApkTool,ApkTool對(duì)Png文件會(huì)按照Png格式處理,將一個(gè)非Png格式的文件修改為Png格式,ApkTool打包時(shí)會(huì)出錯(cuò),可以在Apk的資源文件放入一些非法文件干擾ApkTool工具。

        (四)調(diào)試器檢測(cè)

        防止Apk被動(dòng)態(tài)調(diào)試,可以檢測(cè)是否有調(diào)試器鏈接,使用Application類的isDebuggerConnected方法檢測(cè),有調(diào)試器鏈接則采取防護(hù)措施。

        (五)Dex文件校驗(yàn)

        重編譯Apk安裝包會(huì)重新編譯Dex文件,生成的Dex文件的Hash值就會(huì)發(fā)生改變,記錄軟件初始發(fā)布時(shí)Dex文件哈希值與客戶端運(yùn)行時(shí)Hash值進(jìn)行對(duì)比判斷應(yīng)用是否被修改過。

        (六)加殼保護(hù)

        第三方廠商提供的加殼程序?qū)pk進(jìn)行加殼也是一種有效的方式。但Apk加殼是在Java層代碼實(shí)現(xiàn)的,被反編譯的風(fēng)險(xiǎn)仍然很大。

        四、So代碼防護(hù)

        由于Android系統(tǒng)開源的特性,在Java層進(jìn)行的防護(hù)都會(huì)被破解。Google為開發(fā)者提供了So文件的支持。So文件是Unix操作系統(tǒng)的動(dòng)態(tài)鏈接庫(kù),相當(dāng)于Windows下的Dll文件,它由Native C/C++代碼編譯而來,在Android系統(tǒng)中充當(dāng)JNI與Java交互的角色,能被Android Runtime加載并能被Java層調(diào)用。對(duì)比Java語言,C/C++在效率方面,混淆后的閱讀方面及加殼破解難度方面都有較大的提升。加密算法以及網(wǎng)絡(luò)通信協(xié)議在寫在so層是目前主流的做法,但So層的代碼也不是不能被破解的,只是破解的難度相較Java層的代碼會(huì)有一個(gè)較大的提升。反編譯So文件的主流軟件是Ida Pro,使用Ida軟件反編譯可以得到So文件的內(nèi)容。為了加大攻擊者閱讀So文件的難度,需要對(duì)So文件進(jìn)行加固以及混淆。So文件是可以被單獨(dú)調(diào)試的,所以需要對(duì)So文件進(jìn)行反調(diào)試的保護(hù),對(duì)So層的保護(hù)主要有以下幾種方式:

        (一)代碼混淆

        基于LLVM的混淆,通過指令替換、控制流扁平化和虛假控制等方法混淆。增加了虛假控制流、指令替換和控制流平坦化的處理。基于LLVM的混淆比較靈活,根據(jù)不同的安全需求策略,混淆程度越高,則性能影響越大,文件膨脹越多。

        (二)調(diào)試檢測(cè)

        Ida軟件具有動(dòng)態(tài)調(diào)試So文件的功能,可以方便的還原出So層的算法。在So文件的JNI_Onload方法中加入調(diào)試檢測(cè)的代碼防止So文件被Ida軟件動(dòng)態(tài)調(diào)試,可以在一定程度上防止算法被還原。

        (三)防止調(diào)用

        So文件可以作為一個(gè)庫(kù)單獨(dú)運(yùn)行,確定了關(guān)鍵函數(shù)的地址后,直接調(diào)用即可得到返回值,為了防止被直接調(diào)用,應(yīng)該在So文件中置入代碼,通過檢測(cè)上下文環(huán)境參數(shù)確認(rèn)函數(shù)是被自身調(diào)用,防止直接調(diào)用攻擊。

        (五)加殼保護(hù)

        使用加殼程序?qū)o文件進(jìn)行加殼,由于So層的加殼程序使用C/C++編寫,執(zhí)行的效率相對(duì)比Java層更高,代碼復(fù)雜度也比Java語言復(fù)雜一些,對(duì)應(yīng)的脫殼難度也更高,可以更有效的提升應(yīng)用安全。

        五、簽名加密算法

        除了常規(guī)Token認(rèn)證之外,在每一個(gè)請(qǐng)求中都會(huì)對(duì)請(qǐng)求的參數(shù)進(jìn)行簽名加密。加密得到的字符串嵌入在請(qǐng)求中參數(shù)中,服務(wù)端接收到數(shù)據(jù)后根據(jù)雙方約定好的算法對(duì)參數(shù)計(jì)算得到加密字符串,再與客戶端傳輸?shù)淖址M(jìn)行對(duì)比,如果雙方計(jì)算結(jié)果相同則暫時(shí)認(rèn)為請(qǐng)求是合法的。

        加密算法寫在Java層代碼非常容易遭到破解,大部分應(yīng)用都會(huì)將加密算法寫在So層。常用的加密算法有MD5,AES,HMAC_MD5,RSA等,通常會(huì)使用多種加密算法結(jié)合計(jì)算以提升加密強(qiáng)度。加密算法無論是寫在Java層還是So層,都是可以被逆向出來的,寫在So層只是能延緩攻擊者破解的速度,對(duì)So文件進(jìn)行脫殼修復(fù),去LLVM混淆化,將So層的代碼邏輯進(jìn)行修復(fù)后可以得到對(duì)應(yīng)的加密算法。

        六、服務(wù)端檢驗(yàn)

        客戶端發(fā)出的請(qǐng)求最終都由服務(wù)端校驗(yàn)處理,Android應(yīng)用無法做到完全隱藏程序代碼,對(duì)于客戶端的請(qǐng)求,服務(wù)端應(yīng)該從多個(gè)方面進(jìn)行校驗(yàn),校驗(yàn)通過之后才能判定本次請(qǐng)求有效。服務(wù)端主要從以下方面進(jìn)行判斷:

        (一)簽名加密算法

        服務(wù)端與客戶端通過雙方約定好的算法分別對(duì)數(shù)據(jù)進(jìn)行加密后得到的字符串進(jìn)行對(duì)比,對(duì)比不通過則代表本次請(qǐng)求為惡意請(qǐng)求,直接返回錯(cuò)誤。

        (二)IP地址來源

        對(duì)從云服務(wù)器廠商發(fā)出的請(qǐng)求、同一個(gè)IP在某個(gè)時(shí)間段內(nèi)頻繁發(fā)出的請(qǐng)求、頻繁更換IP地址進(jìn)行訪問的請(qǐng)求進(jìn)行一定的限制。如果是需要登錄的應(yīng)用,可以在登錄時(shí)記錄對(duì)應(yīng)的IP地址,后續(xù)發(fā)出的請(qǐng)求如果超過登錄IP的范圍,在環(huán)境校驗(yàn)失敗之后應(yīng)該做一定的請(qǐng)求限制。

        (三)設(shè)備環(huán)境信息

        判斷設(shè)備的型號(hào)、品牌、系統(tǒng)版本等信息生成對(duì)應(yīng)權(quán)重的設(shè)備ID。對(duì)系統(tǒng)版本較低,設(shè)備已經(jīng)Root,安裝有Xposed框架的設(shè)備適當(dāng)降低權(quán)重或者將其直接風(fēng)控。

        (四)用戶操作行為

        上傳某個(gè)時(shí)間段內(nèi)用戶的操作信息,綜合判斷該操作是否有效。

        七、結(jié)束語

        Android應(yīng)用的風(fēng)險(xiǎn)控制系統(tǒng)的設(shè)計(jì)需要進(jìn)行多方面綜合考慮,它對(duì)開發(fā)者的專業(yè)技術(shù)提出了更高的要求,需要在與攻擊者的對(duì)抗中不斷進(jìn)行完善,不斷進(jìn)行優(yōu)化。

        作者單位:劉龍錦? ? 張志杰? ? 梁世民? ? 北海職業(yè)學(xué)院

        參? 考? 文? 獻(xiàn)

        [1]韓子諾,劉嘉勇.基于Android平臺(tái)的SO加固技術(shù)研究[j].現(xiàn)代計(jì)算機(jī)(專業(yè)版), 2015(24):49-53

        [2]李志明,劉壽春,等基于JNI機(jī)制與云平臺(tái)的細(xì)粒度Android應(yīng)用加固方法[j].小型微型計(jì)算機(jī)系統(tǒng), 2021(42):640-646

        [3]徐尤華,熊傳玉.Android應(yīng)用的反編譯[j].電腦與信息技術(shù), 2012(20):50-51

        日日碰狠狠添天天爽无码| 亚洲情精品中文字幕99在线| 亚洲精品98中文字幕| 99麻豆久久久国产精品免费| 搡老熟女老女人一区二区| 91精品91| 五月婷婷丁香视频在线观看| 天天做天天爱夜夜爽| 看国产黄大片在线观看| 亚洲中文字幕巨乳人妻| 精品久久中文字幕一区| 久久理论片午夜琪琪电影网| 欧美人与动人物牲交免费观看| 久久99久久99精品免观看不卡| 在线小黄片视频免费播放| 精品人妻一区二区三区四区在线| 亚洲成色www久久网站夜月| 毛片在线啊啊| 丝袜av乱码字幕三级人妻| 少妇中文字幕乱码亚洲影视| 欧洲熟妇乱xxxxx大屁股7| av网站入口在线免费观看| 富婆猛男一区二区三区| 国产熟妇按摩3p高潮大叫| 久久青青草原亚洲AV无码麻豆| 日韩亚洲国产中文字幕| 亚洲s色大片在线观看| 蜜臀aⅴ国产精品久久久国产老师| 亚洲av永久青草无码精品| 美丽小蜜桃1一3在线观看| 久久国产精品99精品国产| 九九精品无码专区免费| 国产三级视频在线观看国产| 乱老年女人伦免费视频| 日本大片免费观看完整视频| 日本人妻av在线观看| 免费人成视频网站网址| 免费无码又爽又刺激聊天app| 日韩亚洲欧美精品| 国产视频激情在线观看| 亚洲欧洲精品无码av|