1. SpyNote5.0 是什麼?
SpyNote是用來建立Android惡意程式的工具。它的功能十分引人注目,包括但不限於讀取聯絡人、錄音、執行命令、管理應用程式、記錄鍵盤、進行GPS定位等。這些功能在研究安卓惡意軟體時起到了關鍵的作用。咱們能夠透過一系列文章對於它的使用初步了解,《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
#2、jadx-gui
下載網址: https://github.com/skylot/jadx/releases
3.androidkiller
下載網址: https://www.guguzhu.com/soft/270509.html
3. 開始反向分析
咱們開始對於Client_APK進行分析,通常喜歡將客戶端產生的APK程式拖入androidkiller。一旦程式被拖入androidkiller,它將自動進行反彙編,並產生程式的分析結果。
在左側依照繼承關係分類Activity、Receiver、Service和應用程式權限(Uses-Permisson),能夠看到客戶端需要的應用權限很多。右側則是smail彙編視窗和工作台。這個工具可以清楚顯示權限和各種繼承關係,但由於工具版本較低,程式碼還原不夠完整。我更換了工具並使用jadx-gui,隨後開始進行逆向分析,將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個類別,由於需要分析的程式碼比較多,所以有針對性的對於部分關鍵程式碼進行分析。
透過先前androidkiller分析架構能夠看到,A、F、G、k 這個寫入類別繼承了Service,Service 在安卓系統中代表後台持續運作。咱們不妨猜下,Client_APK中需要持續運作的可能會有什麼?也許是關鍵物件會持續運作、受控、監聽、多執行緒等等。咱們本次分析的重點在於它部分功能以及如何辨識流量。
3.1指令執行啟動分析
我們從A方法開始,先啟動服務,然後遍歷R物件並取得第三個元素,如果它等於1,則執行j()函數。否則在判斷a()是否已經被實例化後啟動服務。之後會繼續判斷j()是否具備root權限。
繼續看j(),j()中使用執行su指令後,將Do I have root?寫入檔案/system/sd/temporary.txt,對於是否為root權限進行了判斷。
接著看h(),之中使用了多線程,取得R物件中的儲存的設定參數,採用循環和socket回傳訊息。
3.2 Base64編碼應用部分功能分析
在查看A物件的導入清單時候發現之中包含android.util.Base64,說明在運行之中使用了base64編碼。緊接著搜尋關鍵字Base64,能夠看到Base64包裹著((BitmapDrawable) applicationIcon).getBitmap(),其實內部就是應用圖示。客戶端將一些訊息透過c0c1c3a2c0c1c分割以9xf89fff9xf89結尾傳遞,對於異常訊息和選項採用fxf0x4x4x0fxf分割傳遞。
<br>
<br>
public void k() { new Thread(new Runnable() { public void run() { StringBuffer stringBuffer = new StringBuffer(); Packageget packageManager = A.this. ); ageName) != null && !packageManager.getLaunchIntentForPackage(applicationInfo.packageName).equals ("")) { 日期日期= new Date(packageManager.getPackageInfo(applicationInfo.packageName, 4096).firstInstallTime); unch (applicationInfo.flags & 1) == 1 ? "系統" : "用戶" : ""; Drawable applicationIcon = packageManager.getApplicationIcon(applicationInfo.packageName);字串 str3 = new String(); if (applicationIcon != null) { 位元圖上使用中對位圖來說(BitmapDrawable); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.JPEG, 50, byteArrayOutputStream); str = Base64.encodeToString(byteArrayOutputStream.toByteArray(), 2); } else { str = str3; } 0c1c" str2 "c0c1c3a2c0c1c" date.toString( ) "c0c1c3a2c0c1c" A.this.getPackageName() "9xf89fff9xf89"); } catch (NameNotFoundException e) { A.this.h("applicationsfxf0x4x4x0fxfString, 0fxfage"); } } } } stringBuffer.toString()); } catch (Exception e2) { A.this.h("applicationsfxf0x4x4x0fxf[My/Exception]" e2.getMessage().toString()); } } })。開始(); }
3.3 資訊取得部分功能分析
A对象中包含了一个非常冗长的方法b,其中使用了过多的switch case语句分支,导致反汇编出现异常。观察注释不难看出,里面实现了大多数的获取信息的逻辑。例如:Device info、System info、Sim info、WIFI info等等,包含了工具所宣传的功能。
在b方法的重写里面有些地方值得注意,这里用于获取存储路径。传输路径信息的分隔符使用e1x1114x61114e。文件名信息分隔符使用-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c。通过这些信息能够较为准确的判断客户端传递时的操作。
4. 总结
在分析过程中能够看到各个功能的实现。在客户端使用未加密和Base编码传输时,最显著的特征是分隔符号的出现。通过程序能够有效地判断,Client的传输行为。于是对于传输过程进行抓包。
图中明显看到分隔符号和base64编码内容。对于这点咱们可以在Snort中编写规则进行识别,识别示例:
alert tcp any any -> any any (content:"fxf0x4x4x0fxf"; sid:1; msg:SpyNote5.0 Client;)
以上是怎麼進行SpyNote5.0 Client_APK逆向分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具