• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Android手機(jī)軟件進(jìn)程代碼注入攻擊與防御研究

    2018-09-18 10:01:56周凡
    科教導(dǎo)刊·電子版 2018年19期
    關(guān)鍵詞:手機(jī)軟件文件夾進(jìn)程

    周凡

    摘 要 在Android手機(jī)廣泛普及的今天,其被惡意程序攻擊、病毒感染、信息復(fù)制等事件頻頻發(fā)生。Android應(yīng)用安全問題自然也引起人們的更多關(guān)注。結(jié)合Android體系架構(gòu)的特點(diǎn),本文主要是通過ptrace注入的方式對(duì)Android手機(jī)軟件進(jìn)程代碼注入攻擊與防御進(jìn)行研究,從而提高Android應(yīng)用的安全性。

    關(guān)鍵詞 Android系統(tǒng) ptrace注入

    現(xiàn)在Android手機(jī)應(yīng)用已有案例遭到代碼注入攻擊:由于應(yīng)用是通常運(yùn)行在Dalvik虛擬機(jī)上的,其底層依然是C和C++環(huán)境。攻擊者進(jìn)程通常偽裝成gdb調(diào)試器對(duì)指定進(jìn)程進(jìn)行調(diào)試,然后遠(yuǎn)程調(diào)用dlopen使指定進(jìn)程加載預(yù)先寫好的惡意SO代碼,從而竊取相關(guān)關(guān)鍵信息。

    1 ptrace原理

    程序員的任務(wù)就是寫程序,寫完程序就是調(diào)程序,估計(jì)沒人敢說自己寫程序不用調(diào)試的,尤其是程序規(guī)模龐大了之后更是如此,第一個(gè)實(shí)現(xiàn)調(diào)試器的是一個(gè)偉大的人,個(gè)人見解:ptrace就是為gdb而生的,ptrace應(yīng)該算是gdb的核心了。

    2 Android下的ptrace注入

    ptrace讓調(diào)試變得方便,也讓程序變得不安全。

    對(duì)于每一個(gè)Android應(yīng)用,都對(duì)應(yīng)一個(gè)Dalvik虛擬機(jī),其上層是JAVA實(shí)現(xiàn),下層又有支持C、C++的JNI環(huán)境 ,按照上述ptrace原理,可以在JNI環(huán)境下使用ptrace通過注入的方式使一個(gè)Android應(yīng)用執(zhí)行我們自己寫的JAR包。由于是執(zhí)行在指定Android應(yīng)用的進(jìn)程空間中,我們的JAR包可以很方便的修改、獲取該應(yīng)用中的數(shù)據(jù)。

    2.1時(shí)序圖原理

    時(shí)序圖的基本流程如下:

    (1)通過Shell指令執(zhí)行Inject,Aseck在執(zhí)行時(shí)必須擁有root權(quán)限。

    (2)可執(zhí)行文件Inject的流程非常通用,arm平臺(tái)上無需更改。

    (3)加載的libJavaLoader.so文件流程也是通用的,無需更改。

    (4)加載的Jar包中必須保證有一個(gè)無參構(gòu)造函數(shù)和一個(gè)execInject函數(shù),至于execInject函數(shù)的邏輯可以按需隨意更改。

    2.2進(jìn)程注入過程的主要依賴關(guān)系介紹

    (1)在ndk環(huán)境下使用ndk-build命令編譯jni文件夾中的內(nèi)容。

    (2)Invader是一個(gè)lib項(xiàng)目,也就是將要注入的jar包,首先生成temp.jar,然后執(zhí)行dx-dex-output=invader.jar temp.jar生成dex包,將生成的invader.jar放在assets/dexjar文件夾下。

    2.3基于ptrace的執(zhí)行詳細(xì)流程

    (1)首先啟動(dòng)Aseck程序,在adb中PS出想要注入的進(jìn)程pid,輸入之,Aseck會(huì)根據(jù)pid找到對(duì)應(yīng)的processName,然后將inject和libJavaLoader.so拷貝至本地進(jìn)程所屬文件夾,將invader.jar拷貝到pid進(jìn)程所屬文件夾。

    (2)Aseck獲取root權(quán)限,使用shell執(zhí)行inject程序。

    (3)執(zhí)行Inject詳細(xì)流程:

    ①ptrace attach掛起指定pid進(jìn)程。

    ②保存進(jìn)程2程序執(zhí)行上下文。

    ③計(jì)算進(jìn)程2中dlopen、dlsym、mmap等函數(shù)首地址。

    ④使用ptrace_call在進(jìn)程2中調(diào)用mmap函數(shù)開內(nèi)存用于存放待注入的匯編指令。

    3手機(jī)軟件進(jìn)程代碼注入防御

    經(jīng)過測(cè)試,現(xiàn)階段Arm平臺(tái)上的手機(jī)軟件,絕大部分應(yīng)用都可以注入成功(危險(xiǎn)),當(dāng)前有以下五種防御方案:

    第一種是TraceMe,此方案的缺點(diǎn)是,一旦開啟此狀態(tài)就不能關(guān)閉,但現(xiàn)階段是最優(yōu)化的解決方案。

    第二種是比較父進(jìn)程ID,實(shí)測(cè)在內(nèi)核版本較高的系統(tǒng)上,此方法已不在有效;

    第三種是查看/proc/pid/status文件,當(dāng)進(jìn)程被注入時(shí),此文件中會(huì)有一項(xiàng)TracerPID標(biāo)識(shí)出注入進(jìn)程ID;但如果檢查的不夠頻繁可能由于外部進(jìn)程注入時(shí)間過短而錯(cuò)過。

    第四種是查看/proc/pid/fdinfo下的所有fd信息,當(dāng)進(jìn)程被注入時(shí),需要打開so文件,因而增加了新的fd,此方式的局限性在于文件描述符的控制上,假如當(dāng)前應(yīng)用正要打開某個(gè)文件,那也勢(shì)必會(huì)增加新的fd。

    第五種方案,修改ld動(dòng)態(tài)庫的符號(hào)庫,不過實(shí)現(xiàn)可能會(huì)對(duì)其他代碼產(chǎn)生影響。

    4外部進(jìn)程函數(shù)地址計(jì)算

    linux的每個(gè)執(zhí)行中的進(jìn)程在內(nèi)存中都映射了一個(gè)文件/proc/self/maps,內(nèi)容大致如下:

    左邊是某進(jìn)程中的邏輯地址,右邊是對(duì)應(yīng)加載動(dòng)態(tài)庫名,以dlopen函數(shù)為例,如果知道本進(jìn)程內(nèi)的函數(shù)地址,知道本進(jìn)程內(nèi)其所屬庫/system/bin/linker(/lib/ld-2.8.so) 的起始加載地址,再知道該庫在指定pid進(jìn)程內(nèi)的起始加載地址,就可以推算出dlopen在指定pid進(jìn)程內(nèi)的函數(shù)地址。

    5結(jié)束語

    Android手機(jī)平臺(tái)由于其開源性和免費(fèi)所帶來的安全缺陷導(dǎo)致其應(yīng)用在架構(gòu)層次上存在一些根本性的安全問題。結(jié)合Android自身的特點(diǎn),通過ptrace注入的方式對(duì)Android手機(jī)軟件進(jìn)程代碼注入攻擊與防御進(jìn)行研究,能夠大大地提高Android手機(jī)應(yīng)用的安全性,這種方法具有很好的推廣性,值得進(jìn)一步深入研究。

    參考文獻(xiàn)

    [1] 姚華.4大隱患威脅手機(jī)支付安全[N].城市快報(bào),2015.

    [2] 李光.360攜合作伙伴解決發(fā)起手機(jī)支付安全+行動(dòng)[N].光明網(wǎng)IT頻道,2015.

    [3] 史成浩.Android平臺(tái)應(yīng)用軟件保護(hù)技術(shù)研究與實(shí)現(xiàn)[D].2012.

    猜你喜歡
    手機(jī)軟件文件夾進(jìn)程
    磁力文件夾
    告訴你貓開不開心的手機(jī)軟件
    債券市場(chǎng)對(duì)外開放的進(jìn)程與展望
    心血管病患者服藥提醒手機(jī)軟件的設(shè)計(jì)與應(yīng)用
    調(diào)動(dòng)右鍵 解決文件夾管理三大難題
    簡(jiǎn)述手機(jī)軟件的安裝與使用
    TC一鍵直達(dá)常用文件夾
    電腦迷(2015年1期)2015-04-29 21:24:13
    社會(huì)進(jìn)程中的新聞學(xué)探尋
    我國(guó)高等教育改革進(jìn)程與反思
    Linux僵死進(jìn)程的產(chǎn)生與避免
    慈利县| 托克逊县| 长子县| 大冶市| 江都市| 津市市| 彝良县| 通道| 巫山县| 米脂县| 永兴县| 抚顺市| 汝州市| 凤山市| 康马县| 多伦县| 潍坊市| 临桂县| 枣阳市| 中阳县| 油尖旺区| 昭通市| 房产| 木兰县| 保定市| 保靖县| 聂荣县| 滨州市| 昭通市| 绥滨县| 兴义市| 滕州市| 开鲁县| 雅江县| 屯昌县| 温泉县| 烟台市| 桃园市| 年辖:市辖区| 恭城| 黄大仙区|