☠️

4-1. スパイアプリ解析( Metasploit編)

に公開

それでは、Metasploitで作成したスパイウェアを解析していきます。
そもそも、このMetasploitのスパイウェアはどのような機能があるでしょうか。
分かりやすいサイトとして、「MetasploitでAndroidをハッキングしてみた」を参考にしますと、位置情報やSMSを読み取る機能があるようです。

そこで、まずはManifestファイルを確認すると、確かに、位置情報やSMSにアクセスするためのPermissionが記載されています。

このスパイウェアは、スマホ内に保存された位置情報やSMSのデータにアクセスする気マンマンという予測がつきます。

続いて位置情報やSMSにアクセスするためのjavaのソースコードがどうなっているかを見ていきましょう。
ディクレトリの構造をみると、以下のようになっています。

確認すべきファイルが多いので、mobSFの検索機能を活用します。
上記のPermissionでも位置情報で”ACCESS_FINE_LOCATION”と記載されていたので”LOCATION”又は”location”と検索してみます。

残念ながらヒットしませんでした。

続いて、SMSだから”sms”で検索します。

こちらも残念ながらヒットしませんでした。

第2回でも書いたように、デコンパイルでは、ソースコードを復元できるわけではなくあくまで”Java風”のソースコードを復元できるに留まります。元のソースコード→コンパイル→APKファイル→デコンパイルの過程で文字が変換してしまった可能性があります。

もう一つの可能性として、このスパイウェアはローダ(Loader)である可能性が考えられます。ローダとは、インストールされた後に悪意のあるコードをダウンロード(Load)する機能を持ちます。本稿でも分かるとおり、ソースコード自体にスパイ機能が記載されていると解析されちゃいます。人間が解析して発見できるということは、セキュリティソフトも当然発見できため簡単に駆除されちゃいます。アプリの場合は、そもそもアプリストアの審査で拒否される可能性もあります。
そこで、セキュリティを掻い潜るための手法としてローダがあります。ローダ自体には、悪意のあるコードは含まれておらず、外部から本丸であるコードを受け取る機能だけが搭載されています。なので、セキュリティソフトやアプリストアでも掻い潜る目的で利用されます。
ローダでよく使われる機能として「DexClassLoader」があります。 これは、Androidの標準機能で、外部から受信したコードを実行可能にします。これ自体は標準機能なので、セキュリティソフトやアプリ審査で引っ掛かることもなく、そのためローダでよく使われます。
そこで、検索してみると、、、ヒットしました。

どうやらPayload.javaというファイルに記載されているようです。
Payload.javaを確認すると、以下の通り「DexClassLoader」が見つかりました。

悪用防止の観点からコードの大半と詳細は非表示としますが、”a”という関数の中にDexClassLoaderが含まれています。ちなみに、関数名”a”は元のソースコードでは別の名称("malware"等)が付いていたはずですが、コンパイルとデコンパイルの過程を経る上で消えてしまっています。これが”java風のコード”と言われる一例です。
DexClassLoader は、外部から受信した(攻撃者が送信した)コードをメモリにロードします。そして、その後に、非表示としている部分で実行しています。

攻撃者側としては、このスパイアプリをターゲットにインストールさせ、パーミッションを押させれば、あとは手元で用意した「位置情報を盗め」、「SMS情報を盗め」を当該アプリに送信するだけで、アプリ側で処理されてこれらの情報を入手することができます。

ユーザーの自衛としては、公式アプリストア以外からアプリをDLしない、アプリに対して不必要にパーミッションを与えない、という点が考えられます。

Discussion