🍋

5-4. スパイアプリ解析( L3MON編)

に公開

では、最後にSMSの閲覧及び送信に関する機能について、Java風コードを見ていきましょう。

まず、SMSで検索すると、SMSManager.javaが見つかります。
そこで、このファイルを確認すると、getsmsメソッド(14行目)とsendSMSメソッド(83行目)が記載されています(なぜか前者はsmsが小文字で、後者はSMSが大文字です。統一感がないですね。。。)。

前者はSMSのメッセージを集める機能、後者は(勝手に)SMSを発信する機能のようです。

次に、ConnectionManager.javaファイルを見ると、以下のようにSMメソッドの中でgetsmsメソッドとgetSMSメソッドが呼び出されています。

攻撃者のC2サーバーから、req(攻撃者の指示)、phoneNo(電話番号)、msg(送信用メッセージ)の3つを引数として受け取ります(189行目)。
そこからif文で条件分岐し、req(攻撃者の指示)が0の場合は(190行目)、上述のSMSmanagerクラスのgetsmsメソッドを呼び出してSMSのメッセージを集めて、emitでC2サーバーに外部送信しています(191行目)。
同様に、req(攻撃者の指示)が1の場合は(192行目)、同じく上述のSMSmanagerクラスのsendSMSメソッドを呼び出して、引数として受け取ったphoneNo(電話番号)に対して同じく引数として受け取ったmsg(メッセージ)を送信し(193行目)、送信が成功したか否かの結果をemitでC2サーバーに外部送信しています(194行目)。

詳細を割愛しているメソッドの中身は長くて複雑ですが、こうしてポイントだけ見ると、なんだか恐ろしく感じてしまうSMSの閲覧や送信機能であっても、非常にシンプルで基礎的な構成であることが分かります。

振り返ると、ユーザーとしての自衛手段として、Permissionって非常に重要なセキュリティ機能であることが分かりますね。
Permission(許可)は、アプリを操作するときにポップアップが表示されて正直かなり鬱陶しいですし、あまり深く考えずにポンポンと同意ボタンを押してしまっていますが、不覚にもインストールしてしまったスパイアプリを自由にさせないための重要なセキュリティ機能です。

Discussion