Heim > Artikel > Betrieb und Instandhaltung > So führen Sie eine umgekehrte Analyse von SpyNote5.0 Client_APK durch
1. Was ist SpyNote5.0?
SpyNote ist ein Tool zum Erstellen von Android-Schadprogrammen. Seine Funktionen sind sehr auffällig, darunter unter anderem das Lesen von Kontakten, das Aufzeichnen, das Ausführen von Befehlen, das Verwalten von Anwendungen, das Aufzeichnen von Tastaturen, das Durchführen einer GPS-Positionierung usw. Diese Funktionen spielen bei der Erforschung von Android-Malware eine Schlüsselrolle. Wir können uns anhand der Artikelserie „SpyNote V5.0 grafisches Tool zur Fernverwaltung von Android-Telefonen“ und „Seien Sie vorsichtig, das Android-Trojaner-Tool SpyNote ist kostenlos!“ ein erstes Verständnis seiner Verwendung verschaffen. „Fernüberwachung ist so einfach“, „Vorsicht, Android-Fernbedienung (Spynote) wurde aktualisiert …“ und so weiter.
2. Bereiten Sie Tools vor
Nur wenige Leute interessieren sich für die umgekehrte Analyse von SpyNote5.0 Client_APK. Im Folgenden werde ich kurz die Verwendung von Tools vorstellen und dann mit der umgekehrten Analyse beginnen Verfahren.
1、SpyNote5.0
Download-Adresse: https://github.com/soDLL/SpyNote ODER https://github.com/miladzero/SpyNote#🎜🎜 #
2, jadx-guiDownload-Adresse: https://github.com/skylot/jadx/releases3. AndroidkillerDownload-Adresse: https://www.guguzhu.com/soft/270509.html
# 🎜🎜#
3. Reverse-Analyse starten
Wir ziehen normalerweise gerne das vom Client generierte APK-Programm in Androidkiller. Sobald das Programm in AndroidKiller gezogen wird, wird es automatisch zerlegt und Analyseergebnisse des Programms generiert.
Klassifizieren Sie Aktivitäts-, Empfänger-, Dienst- und Anwendungsberechtigungen (Uses-Permisson) entsprechend der Vererbungsbeziehung auf der linken Seite. Sie können die Anwendungsberechtigungen sehen vom Kunden viel gefordert. Auf der rechten Seite befindet sich das kleine Montagefenster und die Werkbank. Dieses Tool kann Berechtigungen und verschiedene Vererbungsbeziehungen klar anzeigen, aufgrund der niedrigeren Version des Tools ist die Codewiederherstellung jedoch nicht vollständig genug. Ich habe das Tool geändert und jadx-gui verwendet, dann mit dem Reverse Engineering begonnen und Client_APK importiert.
Wir können drei Pakete sehen, nämlich android.support, con.eset.ems2.gp, yps.eton.application. Darunter ist android.support das Android-Supportpaket, das niedrige Versionen enthält, und v7 ist das Konfigurationspaket, das Host, Clientname und andere Informationen enthält analysieren müssen.
Öffnen Sie yps.eton.application. Wir können 14 Klassen sehen. Da es viele Codes gibt, die analysiert werden müssen, werden einige Schlüsselcodes gezielt analysiert.
Aus der vorherigen Androidkiller-Analysestruktur ist ersichtlich, dass die Schreibklassen A, F, G und k Service erben und Service das Backend darstellt im Android-System Weiterlaufen. Lassen Sie uns raten: Was ist möglicherweise erforderlich, um in Client_APK weiterhin ausgeführt zu werden? Möglicherweise werden Schlüsselobjekte kontinuierlich ausgeführt, gesteuert, überwacht, mit mehreren Threads versehen usw. Unsere Analyse konzentriert sich auf einige seiner Funktionen und die Identifizierung des Datenverkehrs.
3.1 Startanalyse der Befehlsausführung
Wir beginnen mit Methode A, starten zuerst den Dienst, durchlaufen dann das R-Objekt und erhalten das dritte Element, wenn es gleich 1 ist. Führen Sie die Funktion j () aus. Andernfalls starten Sie den Dienst, nachdem Sie festgestellt haben, ob a() instanziiert wurde. Anschließend wird weiterhin ermittelt, ob j() über Root-Berechtigungen verfügt.
Nachdem Sie den Befehl su in j() ausgeführt haben, schreiben Sie „Habe ich Root?“ in die Datei /system/. sd/temporary.txt, es wird beurteilt, ob es Root-Berechtigungen hat.
Schauen Sie sich dann h() an, das Multithreading verwendet, um die im R-Objekt gespeicherten Konfigurationsparameter abzurufen, und Schleifen und Sockets für die Rückgabe verwendet Information .
Teilfunktionsanalyse der 3.2 Base64-Codierungsanwendung
Beim Betrachten der Importliste von Objekt A wurde festgestellt, dass dies der Fall ist enthält android.util .Base64, was darauf hinweist, dass während des Betriebs die Base64-Codierung verwendet wird. Suchen Sie dann nach dem Schlüsselwort Base64. Sie können sehen, dass Base64 in ((BitmapDrawable) applicationIcon).getBitmap() eingeschlossen ist, bei dem es sich tatsächlich um das darin enthaltene Anwendungssymbol handelt. Der Client übergibt einige Informationen durch die c0c1c3a2c0c1c-Segmentierung, die mit 9xf89fff9xf89 endet, und verwendet fxf0x4x4x0fxf für Ausnahmeinformationen und Optionen.
<br>
<br>
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(application Info.packageName).equals("")) { try { Date Datum = neuer Datum (PackageManager.GetPackageInfo (ApplicationInfo.Packagename, 4096) .Firstinstalltime); 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 + c3a2c0c1c“ + 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 信息获取部分功能分析
Objekt A enthält eine sehr lange Methode b, die zu viele Switch-Case-Anweisungszweige verwendet, was zu Ausnahmen bei der Disassemblierung führt. Aus den Kommentaren ist nicht schwer zu erkennen, dass der Großteil der Logik zur Informationsbeschaffung darin umgesetzt ist. Zum Beispiel: Geräteinformationen, Systeminformationen, SIM-Informationen, WIFI-Informationen usw., einschließlich der vom Tool unterstützten Funktionen.
Beim Umschreiben von Methode b, die zum Erhalten des Speicherpfads verwendet wird, sind einige Dinge zu beachten. Das Trennzeichen der Übertragungspfadinformationen verwendet e1x1114x61114e. Das Trennzeichen für Dateinameninformationen verwendet -1c0c1c3a2c0c1c-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c. Diese Informationen können verwendet werden, um den Betrieb des Kunden während der Lieferung genauer zu bestimmen.
4. Zusammenfassung
Die Implementierung jeder Funktion kann während des Analyseprozesses gesehen werden. Wenn der Client eine unverschlüsselte und basiscodierte Übertragung verwendet, ist das auffälligste Merkmal das Erscheinen von Trennzeichen. Das Übertragungsverhalten des Clients kann durch das Programm effektiv beurteilt werden. Das Paket wird also während des Übertragungsvorgangs erfasst.
Die Trennzeichen und Base64-Kodierungsinhalte sind im Bild deutlich zu erkennen. Für diesen Punkt können wir Regeln zur Identifizierung in Snort schreiben:
alert tcp any any -> Kunde ;)
Das obige ist der detaillierte Inhalt vonSo führen Sie eine umgekehrte Analyse von SpyNote5.0 Client_APK durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!