マーケットをGoogle PlayストアからONE Storeに変更したMalBus マルウェア

マカフィーのモバイルリサーチチームは、韓国のある開発者によって開発された教育アプリケーションにMalBusマルウェアの亜種を発見しました。以前Malbusマルウェアでは、マルウェア作者はGoogle Playストアを通じてマルウェアを配布していましたが、新しい変種はほぼ同じ方法でONE Storeを介して配布されました。ONE Storeは韓国の3つの主要な通信会社による合弁事業であり、韓国で販売されているほとんどのAndroidスマートフォンにプリインストールされているアプリです。ユーザー数は3,500万人(韓国の人口の70%近く)で、2018年末からすでにAppleのアプリストアの売上を上回っています。

問題のアプリケーションは、Google PlayとONE Storeを介して同時に配布されています。悪意のあるアプリケーションは、暗号化されたペイロードをダウンロードして実行します。

McAfee Mobile Securityはこの脅威をAndroid/Malbusとして検出し、モバイルユーザーに警告をするとともにデータ損失から保護します。

図1. ONE Storeのアプリケーション

脅威活動

攻撃者が正規開発者のアカウントを悪用して、ONE Storeを通じて配布されていたアプリケーションのバージョン27と28に悪意のあるコードが挿入されていることを発見しました。ONE Storeから配布されているバージョン26~29のアプリ署名証明書は同じもので、同アプリ開発者が開発した他のアプリケーションは発見されていません。ONE Storeでは現在、悪意のあるコードを含まないバージョン29が配布されています。Google Playストアではまだバージョン26が配布提供されています。

図2.アプリケーションの感染履歴

悪意のある機能に焦点を当てた、このアプリケーションの全体的な流れを以下に示します。

図3.悪意のある動作の概要

マルウェアがインストールされた後、悪意のあるコードは動的解析によって発見されないように10時間潜伏します。

図4. LastUpdateTimeを使用して潜伏期間を確認する

潜伏期間の後、2つのスレッドが開始されます。1つ目はネイティブライブラリ「libmovie.so」をロードし、エクスポートされた関数の1つである「playMovie」を電話番号を引数として呼び出します。2つ目は別のネイティブライブラリと通信するためのJavaサーバーソケットを作成します。

図5. APKに埋め込まれた悪意のあるネイティブライブラリ

最初にロードされたライブラリlibmovie.soには、データ内にXORエンコードされたcurlバイナリとURLが含まれています。XOR値は0x8Eであり、この値はこのライブラリ全体で使用されています。デコードされたすべてのURLは正規サイトがハッキングされたもののようであり、接続先のURLからRC4により暗号化されたELFファイルをドロップします。

表1. libmovie.soの内容

簡潔に言うと、libmovie.soはダウンローダーと実行プログラムです。curlバイナリを使用して、ハッキングされたWebサーバーから次のペイロードをダウンロードし、復号してライブラリをロードします。ライブラリが読み込まれると、ウイルス対策ソフトに検出されないようにダウンロードされたファイルは削除されます。ダウンロードされたコードは、エクスポートされた関数名「Libfunc」を実行します。

図6. libmovie.soのメインフロー

RC4暗号化ライブラリに関しては、暗号化は重要なものを隠したり保護したりするための最も一般的な方法です。したがって、このファイルには重要なものがあると想定できます。

表2.ダウンロードしたファイルの追加情報

表2に示すように、szServer_XX_1とszServer_XX_2のファイルサイズとデータは同じものです。szServer_XX_3には、追加、削除、または変更された関数がいくつかありました。

「doMainProc」は「Libfunc」によって呼び出されるコア関数です。「doMainProc」の最初の処理は、C2サーバーを選択することです。

表3. C2サーバーのリスト

C2サーバーが選択された後、ランダムに作成されたTUIDがサーバーに送信されます。TUIDはその使用方法から推測して、感染した端末を管理するためのターゲットデバイスIDである可能性があります。これで、アプリケーションはスパイエージェントとして機能し、選択したサーバーからのアクションを待機して、コマンドを実行する準備ができました。下記は使用可能なコマンドのリストです。

 

表4.コマンドリスト

悪意のあるコマンドの中で、目を引く機能はSMSとMMSメッセージのキャプチャ機能です。SMSとMMSは、/data/data/<package name>/files/ ディレクトリに、それぞれファイル名「sms.txt」と「mms.txt」として保存されます。

図7. SMSとMMSはテキストファイルに出力される

本機能は、Androidのレシーバーを登録することによって有効化されます。

図8. registerReceiver関数

この悪意のあるアプリは、TCPの1111番ポートをローカルで開いて、読み込まれたネイティブライブラリと通信します。下記コードはJava言語として解釈したものになります。

public void run()
{
CommunicationThread commThread;
Socket socket = null;
serverSocket = new ServerSocket(sock_port); // sock_port = 1111
if (serverSocket) {
while ((!Thread.currentThread().isInterrupted())) {
commThread = new CommunicationThread(this, serverSocket.accept());
new Thread(commThread).start();
}
}
}

図9. com.joojang.CharacterClassic.MainService関数

SMSやMMSメッセージのキャプチャ機能は、ローカルTCP の1111番ポートで「SET」文字列を受信すると有効になり「FREE」を受信すると無効化されます。

図10. SETとFREEコマンド

「SD_SetSMSCapture」関数が「SET」コマンドを送受信することで、ロードされたネイティブライブラリと接続します。

図11. SD_SetSmsCapture関数

以下はC言語として解釈したコードとなります。

client = socket(AF_INET, SOCK_STREAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(1111);
addr.sin_addr.s_addr= inet_addr(“127.0.0.1”);

今回から新しく追加された関数の中に「SD_LoadSoFile」関数があります。これにより、新しいネイティブライブラリがロードされ、その中で特定の関数が実行されます。この関数は、現在のバイナリに問題がある場合、実行中のネイティブライブラリを新しいライブラリに変更するか、新しい機能を追加するために使用されるようです。

図12. SD_LoadSoFile関数

Malbusマルウェアとの比較

今回新しく発見された悪意のあるコードは、以前発見されたMalbusマルウェアと比較して多くの類似点があります。たとえば「SD_」で始まる関数名、ファイル名、文字列を難読化するXOR文字列、ライブラリ内に埋め込まれたファイル、コマンドID、コンパイラのバージョンなどが挙げられます。一方、次のような違いがあります。プラグインAPKをインストールする代わりに、悪意のあるライブラリを直接ダウンロードすることや「北朝鮮」や「国防」などの機密性の高いキーワードリストは存在しません。

図13.悪意のあるライブラリに含まれている関数名
図14.コンパイラのバージョン文字列


結論

マルウェアは、Google Playなどの公式アプリストアだけでなく、あらゆる種類のサードパーティアプリストアを通じて配布されています。このマルウェアは注意深く準備されています。マルウェアの最終的なペイロードは、脆弱なサーバーをハッキングして、アップロードされています。このマルウェアの作成者は、引き続き信頼できる開発者アカウントを違法に購入またはハッキングして悪意のある機能を追加し、公式アプリストアに潜入すると考えています。以前のケースと同様に、ユーザーは、公式ストアからダウンロードした場合において、インストールするアプリケーションを確認する必要があります。なお、マカフィーは韓国の法執行機関と協力して攻撃活動の中止を支援しています。


ハッシュ情報(SHA-256

最初のダウンローダー型マルウェア(APKファイル)

  • 5e57bc8d83a372bf4d046c272cd43db9000036c9b32d8eecead1af75f4958c57
  • 1613b35c73c6497730490d7712ac015c2b42931446aed149e1292e2ba77d0ff4

暗号化されたトロイの木馬(追加のペイロード)

  • d328373cd67c467485b9c96349a0ee08fc3b58fe2c11fb19f4dcb9ea6c7a0dae
  • c5bff68022ead6302f710f1ce1c3d5682a8cd3610b1f8ed2563098d7ac4e1909
  • c410cacbb0be8f649f082148c91f4cef27f101b8db3ce64a02882506c9b51a63
  • 178dddf38ec232d540bd88320521d8134644da1e7af19e7ae295b2d614e3ab56

復号後のトロイの木馬(追加のペイロード)

  • 9fc914545fbb99b7e0d4a5207f5a2b32a8a127a36caa9159d4feeac445c509f7
  • df651ac1bfd60cd29cea85cc410002b933552260c2439fe86a4f32486abd0828
  • 63d10c9cd105c7b17effef18d31d571fe4c9c999966cc09bdb40df07c1b6baa8
  • f99212b70729942923fe26b996791cdd8eb561f8ae017e1d71202fbb97f7d245

※本ページの内容は2020年4月9日(US時間)更新の以下のMcAfee Blogの内容です。
原文:MalBus Actor Changed Market from Google Play to ONE Store
著者: and