【逆向實戰】反編譯解析metasploit安卓載荷android/meterpreter/reverse_tcp

/轉載請註明原作者:Kali_MG1937 QQ3496925334/
metasploit大家都知道,
其中的一個payload:
android/meterpreter/reverse_tcp
就是安卓載荷了,msf可通過發送tcp包來控制安裝了此病毒的手機
●上電腦課的時候閒着無聊,就想看看這個安卓載荷的構造,順便看看有沒有能自由控制的參數
■反編譯工具:apktool,eclipse,dex2jar,jd-gui
用apktool反編譯載荷
第一步就是查看清單文件

在這裏插入圖片描述
在這裏插入圖片描述
類加載的主入口就是.MainActivity
permission之類的權限聲明就不用看了
用dex2jar把classes.dex轉成jar
在這裏插入圖片描述
接着jd-gui就派上用場了
先看看MainActivity.java
oncreate()方法下調用MainService這個服務類之後就立馬調用finish()方法把當前的類殺掉
在這裏插入圖片描述
查看MainService
這個類一開頭就用forName和getMethod方法調用了線程之類的東西,先不管,往下看,在onstartCommand方法調用了Payload的start方法,二話不說果斷跟上去。
在這裏插入圖片描述
查找Payload類中的start方法
先不看start方法,一進去一個賦值爲a的byte類就把我吸引了,這個byte中封裝着一個極其長的字節,大概是混淆lport和lhost參數的,先註釋一下,以後回來看看能不能解密
在這裏插入圖片描述

接下來看start方法,調用了startInpath方法,其中一些花裏胡哨的內容先不看,startInpath方法調用了d類的start方法!
在這裏插入圖片描述
查看d類
d類是一個繼承Thread的子類,看看run方法裏封裝了什麼
調用Payload的main方法,賦值null。。。
在這裏插入圖片描述

。。。。。
我說你們metasploit員工寫代碼這麼都這麼喜歡繞來繞去的啊?這樣寫代碼是會被同事按在牆角暴打的哦?
回到Payload的main方法

main方法中有些有趣的事情
它調用了之前說到的byte a!
它把a傳進了b類的a中,並return了一個string
在這裏插入圖片描述

先不管,繼續看
有參數調用了f類的公共string參數a
把a賦值給str1(string)
並對str1給了一個判斷,大致如下:
如果str1開頭是tcp
就用":“把str1分割爲3部分
把被”:“分割的str1的第2部分取出來
用”/“分割爲3部分,並繼續將其第3部分打包爲一個字符串
把被”:“分割的str1的第3部分取出來,轉化爲int
分別將取出的部分放進系統的socket類中處理。。。
接下來不用我說也懂了吧!
str1參數的格式一定是"tcp://ip:port”!!!

在這裏插入圖片描述
ip和port被放進socket中處理了!
那麼有沒有辦法自由控制ip和port參數呢?
嘗試控制參數
解密之前的byte a的數據嗎?不可能,太耗時間。
仔細想想,str1是f類中的公共參數a的值,也就是說我只要控制了f類就好了!
我查看f類,a值是空的,那麼一定是之前的byte a參數被解密後傳入a了!
解密byte a參數的就是b類了!
查看b類
查找f類的線索!
在b類的a方法中我發現f類的a值被賦予了一個奇怪的參數,
查看a方法,發現要傳入一個byte值!

一定是用來解密byte a的!
我果斷找到控制f類的a參數的smali代碼,刪掉它!
(我這裏由於已經放學了,所以回家用的手機的編譯軟件執行的操作)

我這裏用的是手機的集成環境
果斷回到f類
控制a參數!
寫入相應的smali代碼使公共參數a指向string參數"tcp://192.168.2.200:7777"
在這裏插入圖片描述
完成修改!回編譯!簽名!
打開msf監聽7777端口!
打開編譯好的病毒!
成功上線!監聽的端口回彈鏈接!並且安裝了病毒的手機可以正常被我控制!!

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章