<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tools/5599

            0x00 AppUse - 概述


            From:https://appsec-labs.com/wp-content/uploads/2014/10/appuse_userguide_v2-2.pdf

            AppUse (Android Pentest Platform Unified Standalone Environment)被設計用來作為安卓應用滲透測試平臺。是安卓應用滲透測試人員的操作系統,包含一個自定義的安卓ROM,通過鉤子加載,以便在運行時觀察、操縱應用。

            AppUse的核心是一個自定義的"hostile"安卓ROM,為應用程序的安全性測試特別打造的包含一個基于定制模擬器的運行時環境。使用rootkit-like技術,許多鉤子注入到其執行引擎的核心之中,以便能夠方便地操縱應用,通過"ReFrameworker"來觀察。

            enter image description here

            AppUse包含滲透測試者為了運行和測試應用需要的任何工具:安卓模擬器、開發工具、SDK、反編譯器、反匯編器等 AppUse環境設計很直觀,盡可能為所有普通安卓滲透測試人員和安全研究人員設計。它自帶AppUse dashboard-方便用戶通過UI控制整個環境。通過安裝APK到設備或者拉出、反編譯、調試、操控二進制文件來配置模擬器代理,任何事都可以通過點擊幾個按鈕來完成,方便于關注所有必要的步驟,聚焦在最重要的問題上。

            enter image description here

            此外,AppUse預裝了許多"hack me"應用,包括他們的服務端。對于滲透測試者而言,在測試幾個新工具或者技術以及一些目的時,有這些應用是非常必要的。

            綜上所述,AppUse是如下的一個集合:

            ? Android Emulator ? Hacking & reversing tools for Android ? Development tools for Android ? Custom "hostile" Android ROM loaded with hooks ? ReFrameworker Android runtime manipulator ? Vulnerable applications ? The AppUse dashboard

            0x01 AppUse-操作系統


            AppUse基于linux Ubuntu系統,已經裝備了常見的攻擊工具,可以節省時間,提高效率。

            證書


            盡管AppUse自動登錄到root,但是你發現找到這些數據非常有用,在于系統交互時。

            enter image description here

            終端和命令行工具


            已經為安卓安全測試人員配置了這些工具的環境變量。在研究中使用的工具,例如ADB,已經預裝并且配置完畢。此外,所有的研究和攻擊工具已經嵌入到PATH環境變量,所以可以在終端的任何位置訪問,并且可以自動補全。

            enter image description here

            別名 ?新特性 在AppUse >1.8版本中已經添加了許多別名到終端中,為了幫助滲透測試人員工作得更快。

            Signapk <apk name>

            APK需要簽名以便在設備上運行。由于修改APK將使得原來的APK簽名不再有效,研究人員需要簽名APK。可以通過位于?/AppUse/Pentest/SignAPK/sign.sh的SignAPK做到,該腳本需要參數:[existing_apk],因此該腳本將會在當前目錄創建一個名為_signed.apk的簽名APK,并刪除舊的未簽名APK

            別名:signapk?<apk?path>是執行/AppUse/Pentest/SignApk/sign.sh的更短的方式,以便簽名被修改的apk文件。

            enter image description here

            圖4:SignApk

            Search <string>

            search別名是一個python腳本,使用bash在文件中搜索字符串,在滲透測試人員在文件中搜索一個方法名獲取其他字符串時非常有用。

            enter image description here

            Rootdevice Rootdevice是執行/AppUse/Emulator/rooting/root.sh root設備的快速方式。

            Jdgui <jar file>? Jdgui是執行JD-GUI的快速方式。

            開發工具


            AppUse環境包含了安卓開發以及調試工具,可以方便執行應用程序的滲透測試。這個環境預裝 了ECLIPSE和ADT,用于編寫應用程序或者exp。此外,這個環境預裝了IPYTHON,方便開發python腳本,幫助在一些特殊場景中進行測試。

            enter image description here

            AppUse目錄結構


            AppUse位于/AppUse目錄,這個目錄包含了許多目錄:

            .Android --包含兩個目錄,一個目錄包含SDK,另一個是ReFrameworker,包含整個ReFrameworker 平臺
            .Emulator --包含模擬器目錄,例如sdcard,wallpaper,rooting等
            Logs -- 包含AppUse dashboard日志文件
            Pentest -- 包含測試工具的多個目錄,例如Burp, apktool, jdgui,mercury, dex2jar等
            Targets -- 最重要的目錄,包含目標在接下來的段落中描述的APK/應用程序數據目錄
            

            Targets 目錄


            AppUse的主要目標是組織滲透測試者的所有工作,為了實現這個目標,在AppUse中應用的所有工作都將保存在同一個目錄--Targets目錄。Targets目錄包括所有目標應用目錄,包含了在dashboard中所有工具的輸出。

            在反轉部分或者應用數據部分使用的特征之一,目標apk/app的數據將會輸出在Targets目錄中目標app的目錄下。例如,如果你反編譯AppSec.DropBoxPoc-1.apk,那么輸出將會保存在/AppUse/Targets/?AppSec.DropBoxPoc-1/disassembled/?

            enter image description here

            Pentest目錄


            AppUse是一個不斷發展的項目。一個主要的目的就是總是趕上最新的工具,使研究者能夠對一個給定的應用實現完全覆蓋的攻擊。 AppUse目錄結構包含了/Pentest目錄,包含了所有工具。該文件夾的簡要視圖如下:

            enter image description here

            你可能注意到,并不是所有的工具都呈現在DashBorad中。Dashboard有如此多的功能以至于在標準的研究中可以覆蓋所有研究者的需求,有些則仍在開發之中,尚未嵌入到Dashboard中。AppUse不會阻止你使用這些,因為我們知道,對于有些研究者,他們需要這些。這些都可以在/Pentest目錄下可以找到。

            例如,如下展示了運行中的APK Analyzer:

            enter image description here

            0x02 AppUse - Dashboard


            概述

            Dashboard 是AppUse測試環境的心臟。Dashboard是一個組織了測試工具和運行時環境的GUI視圖,Dashboard會把各種不同工具鏈接的所有數據放在一起,并在其特殊的功能中節省寶貴時間,將幾個動作鏈接在一起,并且在文檔中進一步論證。

            雙擊桌面上的鏈接來運行Dashboard,其將會立即運行:

            enter image description here

            Structure:

            Dashboard分布了7個選項,每一個都有特殊目的。

            General:

            Dashboard中,以APK為主。AppUse Dashboard意味著允許研究者通過單擊動作開始工作。為了實現這個目的,Dashboards被設計用來在APK上操作,來調用它的其他動作。

            Load APK

            Load APK是最基本的操作,Load APK將從文件系統加載一個APK到Dashboard中,以使得Dashboard執行其動作。當開始一個應用程序的研究,這是第一個必要的動作。加載的APK將會被復制到/AppUse/Targets/<apk_name>/目錄。

            enter image description here

            Install APK

            在用戶從文件系統加載了APK后,Install APK按鈕將會出現。這個按鈕允許滲透測試者安裝一個APK到一個正在運行的模擬器中。為防止應用已經安裝過,Dashboard會詢問是否重裝或者卸載并再次安裝該應用。

            enter image description here

            目前設備狀態

            設備狀態圖片展示了目前連接的設備狀態。在設備連接上AppUse VM時會變綠,標簽為ON,在沒有設備連接時會變紅,便簽為OFF。它幫助你在設備連接上了時,避免使用Check Device按鈕來獲取快速指示。

            enter image description here

            Help

            幫助圖片允許你得到當前選擇部分的信息。通過點擊它,AppUse 當前部分的用戶指南將會在瀏覽器中打開,這將幫助你明白Dashboard中每個按鈕的目的。

            enter image description here

            Android Device 實現Android部分是為了執行模擬器上的動作,通過單擊可以實現如下動作:

            Launch Emulator? Launch Emulator 按鈕是為了打開AppUse模擬器

            Restart ADB Restart ADB是為了重啟ADB服務,以便讓AppUse能夠識別設備,萬一ADB服務器起不來。在AppUse1.8中實現了一個自動機制來檢查服務是否為down并且重啟ADB。

            Install Burp Certificate 新功能

            Install Burp Certificate按鈕允許AppUse在模擬器中安裝Burp證書,在下一個版本中,它將在任何設備連接AppUse VM時安裝burp證書。

            Root Device 模擬器上的Root權限在滲透測試中會派上用場,但是通常會消耗很多時間。AppUse Dashboard有一個內建的選項來自動root模擬器,通過點擊按鈕。

            enter image description here

            Take Screenshot?

            Take Screenshot 用來實現對模擬器截圖,截圖保存在/AppUse/Emulator/Screenshots/ 目錄

            enter image description here

            Open ADB shell?

            Open ADB shell 按鈕用來使滲透測試者更簡單打開ADB shll 終端

            enter image description here

            Proxy Settings ?新特性

            Proxy Settings面板用來是滲透測試者更容易root設備,以及在設備上打開代理。AppUse預裝了應用與Dashboard通信,允許滲透測試者在模擬器中通過單擊ON/OFF打開關閉代理。設置代理需要IP和PORT,另外一個重要特性是允許決定重定向端口。萬一目標應用使用二進制協議,它可能需要設置特定端口或者監聽所有端口,并且中斷二進制協議流量。如果設備沒有root,AppUse將會自動root。

            enter image description here

            TOOLS 工具部分是用來給滲透測試者在測試中快速訪問這些有用的工具。通過單擊可能執行如下動作:

            Launch Burp 運行Burp代理

            Launch Firefox 運行火狐瀏覽器

            Launch Wireshark? AppUse預裝了Wireshark ,在Dashboard中運行。

            Launch Eclipse 運行Eclipse IDE

            Launch NetBeans 運行NetBeans 8.0,可以調試應用

            Launch IDA 運行IDA,可以反匯編二進制文件

            Launch Mercury client 運行Mercury Console客戶端。在設備中通過Mercury Agent打開服務后,接下來執行端口轉發,然后打開Mercury Console。所有操作可以通過單擊Launch Mercury?Client完成

            enter image description here

            Launch SQLLite Browser Launch SQLLite Browser運行 SQLLite Browser,查看數據庫文件

            Launch JD-GUI? Launch JD-GUI 運行JD-GUI ,查看JAR文件源代碼

            Open Terminal? Open Terminal 打開shell,在系統中執行操作

            Download APK from Google Play? 從Google Play下載應用,因為在模擬器中沒有google

            Open AppUse Directory 打開AppUse目錄,查看文件和操作

            Reversing AppUse包括解碼和逆向APK的最先進的工具。一旦APK被加載到Dashboard中,所有工具已經配置好,可以直接使用,可以實現完全覆蓋。 逆向部分用來執行像從設備拉出APK,反編譯,拆解,組裝,轉換到APK模式等。這部分將使得工作更快,通過單擊執行如下動作:

            Reverse APK Content 用來實現三個動作:反編譯,拆解,unzip

            Decompile (JD-GUI)? JD-GUI是一個拆解jar文件的框架。一旦.dex文件必須被轉換為.jar文件,JD-GUI將準備好來拆解這些代碼。通過使用JD-GUI,能夠審計應用源碼,發現隱藏秘密和邏輯。 Decompile按鈕用來幫助滲透測試者反編譯目標APK,通過dex2Jar轉換成JAR文件,然后使用JD-GUI查看源代碼。所有這些都通過單擊按鈕執行。AppUse將拉住APK,反編譯它,通過JD-GUI打開目標apk的jar文件。

            enter image description here

            Decompile (Luyten) 和上面的按鈕一樣實現相同操作,但是這個通過Luyten?decompiler打開jar文件

            ?Save Java Sources 用來保存目標APK的java源代碼到目標apk目錄的decompiled目錄

            Dissemble (Baksmali)? Baksmali是一個反編譯apk Dalvik字節碼的工具,研究者能夠來查看應用程序的Dalvik編碼,并且通過人類可讀的格式來修改它。 這個按鈕用來幫助滲透測試人員通過多個命令反編譯APK,所有操作通過單擊實現: 一旦在APK上使用了baksmali,/AppUse/Targets/<Targeted APK>/Dissasembled/目錄會包含所有的Dalvik編譯代碼,然后滲透測試者能夠修改并提供額外的指令

            enter image description here

            Reassemble(smali)? Baksmali讓研究者能夠得到人類可讀的dalvik編譯代碼,并且有機會以任意編輯器去編輯它。Smali是完成打包代碼的工具。 通過Smali,研究者能夠改變應用的編譯代碼,并且重新打包為新的.dex文件。一旦行的.dex文件應用到APK文件上,這些更新會作為補丁打上,一旦APK被安裝,這些更新會實時應用。使用這個特性可以提升安全研究到一個新的水平。

            這個按鈕是通過Baksmali Dissasemble編譯反編譯的目錄。在修改了Smali代碼后,希望轉換為APK文件, 并且安裝它。所有這些可以通過單擊這個按鈕實現。AppUse將會編譯這個反編譯目錄,并且創建一個簽名APK。

            View Manifest 新特性 這個按鈕將打開APK的manifest文件。它將提取apk的menifest并在firefox中打開。

            Debug Mode 新特性 這個按鈕通過自動進入調試模式,來調試APK。通過單擊,這個應用將會反編譯APK,修改menifest,再編譯,并且簽名。

            Open Target Directory 這個按鈕用來打開目標應用的目錄,用來查看文件并執行動作。

            Application Data? 應用數據部分是用來訪問目標應用的文件。Load APK用來加載應用的數據目錄到列表中,用戶可以過濾目錄名。滲透測試者將從列表中選擇目標應用的目錄,然后單擊Load?Folder,在目標目錄上執行動作。通過單擊實現如下動作:

            View File 用來查看目標應用內的文件。加載目錄到一個樹形時候后,選擇一個文件,點擊cat文件,查看其內容。

            Edit File 用來修改目標應用內的文件。通過單擊AppUse,將會拉住文件,并在編輯器中打開。在修改并保存后,將會自動推送到設備中。

            Pull File/Folder 用來從目標應用中拉住文件或目錄。樹形視圖允許更快地查看和選擇文件和目錄。

            Extract Databases 用來查看數據庫文件。與拉住DB文件,并在SQLLITE 瀏覽器中打開每一個不同,單擊AppUse將會拉住DB文件,通過Doxygen解析數據庫數據為HTML,允許其查看每一個文件中的每一張表。

            Open App Data Directory 用來打開目標應用目錄,查看文件,執行動作。

            ReFrameworker?

            Launch ReFrameworker? 運行ReFrameworker平臺,將在文檔后面闡述。

            Enable/Disable ReFrameworker? 用來在模擬器中替換JAR文件,并重啟。允許ReFramewoker在模擬器中加載鉤子。

            Add Internet Permissions 為了給Reframeworker的 dashboard發送消息,它創建了一個web請求從應用到dashboard。如果在Reframeworker的 dashboard發送send或者proxy,并且應用沒有web請求的權限,它將不會工作。這個按鈕給予應用臨時Internet權限。

            Vulnerable Apps? 訓練部分用來打開服務端的訓練應用,可能會打開HackMePal HTTP/S servers、GoatDroid、 ExploitMe。

            AppUse - Runtime Modifications and Inspection via AppSec ReFrameworker? AppUse中的模擬器已修改來滿足滲透測試者的需求。它配置了一個預制的ROM,預裝了工具與系統交互。

            AppUse的核心是一個自定義的hostile安卓ROM,專門為應用安全測試而建立,包含了一個修改的實時環境,運行定制模擬器。使用rootkit-like技術,許多鉤子會注入到它執行引擎的核心中,因此,應用程序可以很容易被操控,并通過叫做ReFrameworker的命令&控制器來觀察它。

            How it works – an overview? 安卓運行時在代碼關鍵部分配置了許多鉤子,這些構造尋找一個叫做Reframeworker.xml的文件,該文件位于/data/system。在每個應用運行時,每當一個被勾住的運行時方法被調用,都會與包含的規則("items")一起加載ReFrameworker的配置文件,并作出相應的反應。 與它的規則一起管理配置文件已經通過ReFrameworker dashboard做到,使用面板,你可以定義一系列Android運行時會遵從的規則。米那般將會生成一個配置文件,運行時環境將隨后解析并執行。 例如,它隨著加載一個可以是本地、也可以是直連安卓設備上的配置文件一起啟動。在點擊load config按鈕后,面板將會標記所有加載的規則,并允許用戶enable/disable或者配置它們、

            enter image description here

            在文件被加載后,面板將會用粗體標記所有定義的規則,并且標記哪些使用了的規則為綠色。

            然后用戶可以選擇運行時的行為。例如,能夠對重要消息打開嗅探、繞過某些邏輯,執行字符串替換,給ReFrameworker dashboard發送數據等。

            接下來用戶可以保存行的配置。如果用戶選擇保存到設備中,設備立即能夠遵循這些規則來執行。

            enter image description here

            通過點擊規則的目標可以配置每個規則的行為,可以從子菜單中選擇配置,

            enter image description here

            然后出現一個新的窗口,包含規則的值。每一個規則都有如下性能:

            ? Name – the name of the rule 
            ? Enabled – is it enabled? 
            ? Calling method – the name of the runtime method upon which this rule should apply 
            ? Mode – can have 3 possible values – Send, Proxy, or Modify  
            o???? Send – send the hooked content to the ReFrameworker dashboard 
            o???? Proxy -  let the user control the value of the hooked content by using a proxy-like UI 
            o???? Modify – replace a particular content with another content 
            
            ? Value – specify the condition for the hooked content. An asterisk (*) means “always.” 
            ? toValue -  specify the action for the hooked content. An asterisk (*) means “always.” 
            

            如下是配置規則的例子:

            enter image description here

            如下像是生成了新的規則后的配置文件。如下是Reframeworker.xml配置的例子:

            enter image description here

            這里的思路是把這個文件煩躁運行時的特殊地點,我們的鉤子能夠找到它。文件路徑為:/data/system/Reframeworker.xml--以便預注入的鉤子將動態解析、加載、執行,使得我們可以在Android設備外部提交他們。

            既然設備可以與dashboard通信,dashboard包含了一個監聽器,監聽從設備建立進來的通信連接。因此,dashboard有一個listener按鈕:

            enter image description here

            在打開監聽器后,dashboard就準備接受任何進來的消息。 AppUse也有一些高級特性,讓用戶中斷一些從內部安卓對象過來的內部消息。我們可以通過在安卓應用和運行時環境之間建立代理來實現。與實現HTTP 代理是非常類似的方式,但是只有在安卓運行時內處于一個非常低水平時才這么做。

            The hooks? 在一些關鍵地方,AppUse環境與許多鉤子編譯在一起。作為研究的一部分,在找到我們希望控制的有意思的地方后,例如,文件處理、通信、加密等,我們把它們放置在ReFrameworker?controller中。?controller會檢查是否有規則是為這個特殊位置定義的,是否與其配置運行一致。

            例如,作為研究的一部分,找到有意思的地方并插入鉤子,我們決定在SQLiteDatabase的executeSql插入鉤子,所有請求都會經過executeSql。在這個類中插入鉤子使得我們終端所有從應用發送到本地DB的sql請求。我們的鉤子將會中斷所有值,并執行配置文件中所有指示。

            鉤子通常放在重要的值中,因此如果一個規則是為一個特殊的鉤子定義的,controller就能夠通過它做任何事情。controller可以什么也不做,也可以發送數據到遠程地方,也可以允許用戶實時終端和修改值,或者可以自動替換為另外的值。

            例如,這是一個預加載的鉤子,勾住excuteSql方法的sql參數。實際的查詢將會通過運行時環境,作為更高層應用的指示執行。

            enter image description here

            假設相關的配置規則已經被定義為proxy。現在設備每一次調用這個方法都會發送數據給代理,并將用收到的修改了的值替換原始值。

            在dashboard端需要做的就是操作proxy:

            enter image description here

            當收到消息后,proxy將會wake up,讓用戶觀察并修改消息。在操作時,安卓app會一直等待相應。

            enter image description here

            Configuration examples?

            Example #1--發送所有執行了的命令的值到Dashboard

            enter image description here

            解釋--在希望發送數據時設置為send,值是,意味著我們希望發送所有命令。toValue在這個情景中沒有使用,但是也設置為。calling method設置為被勾住的方法。

            Example #2 ?-- 發送所有執行SQL請求的值到Dashboard

            enter image description here

            解釋:calling method設置為與sql 查詢相關的特殊方法,其他值保持一致。

            Example #3 --proxy (break and modify) 所有執行的SQL請求值到dashboard

            enter image description here

            解釋:既然我們希望實時修改數據,將method設置為proxy,其他值保持一致。

            Example #4 -- 信任所有證書

            enter image description here

            解釋:既然我們希望替換所有hooked的值(尤其是無論證書是否信任的布爾值)。既然我們希望替換所有的值,那么value設置為*。既然希望總是相信證書,那么toValue設置為true。method設置近似hooked方法。

            Example #5 --禁用hostname 識別

            enter image description here

            解釋:與前面例子相當相似。唯一不同的是calling method的值為hostname verification

            Example #6 -- 替換手機IMEI為另外一個值

            enter image description here

            解釋:既然我們希望替換數據,那么mode設置為modify,value設置為*,用來替換所有值,toValue設置為我們在這個例子中希望設置的值11111111,callingmethod與hooked方法類似。

            Example #7 --???the proxy (break and modify) is the value phone IMEI number

            enter image description here

            解釋:既然我們希望實時修改數據,那么mode設置為proxy,其他值保持一致。

            當然,這只是很剪短地介紹了ReFrameworker,還有AppUse可以管理的規則,每一個都有許多不同的設置。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线