宅配業者を装ったSmishingキャンペーン総括

はじめに

こんにちは、morimolymolyです。
今回は宅配業者を装ったSmishingキャンペーンについてマルウェアに関して解析を行ったので紹介いたします。
前回の記事は以下となっております(技術的でハンズオン的な内容ですので技術者でないと読みづらいかもしれません)

morimolymoly.hateblo.jp

前回の流れ

まずマルウェアに感染したとある端末から僕あてに不審なSMSが届きました。
マルウェアを解析したところ、現在猛威を奮っている凶悪なSmishingキャンペーンを動かすものでした。
これらの司令塔となるC2(コマンドアンドコントロールサーバ)を特定し、配信文面を隠蔽している場所も特定いたしました。

特定した場所に格納されている配信文面はTwitterなどでも話題になっているのと全く同一のものでした。
今回はそれにアクセスし、どのようなマルウェアが潜んでいるのか、またそのキャンペーンについて解析しました。

検体の確保と解析

Android端末から配信文面に記載されているURLに飛ぶと、不正なapkがダウンロードされます。
不正なapkをApktoolで解凍し、class.dex(マルウェア本体)を解析します。

表層解析で文字列検索してみるとURLやwebsocket(C2)のアドレスが手に入ります。
この時点で今回のマルウェアはパッキングされているものではないと推測できます。

実際に検体をGhidraに食わせてみるとやたらとサイズの大きなもので解析に時間がかかりました。
AndroidManifest.xmlのしめすエントリポイントはcom.hz.keep.MyApplicationでした。

MyApplicationクラスのonCreate()メソッドでKeeyAlive.init()という関数を呼び出していることがわかります。

f:id:morimolymoly:20210207144854p:plain

このマルウェアの主要な機能はこのKeepAliveクラスにあります。

f:id:morimolymoly:20210207145010p:plain

ご覧の通り、SMS送信機能などが難読化などなしにしっかりと実装されていました。

getDataBeiyongメソッドはC2のアドレスを取得するためにKeepAlive$3クラスを新しいスレッドとして走らせます。
このクラスのrunメソッドをみてみると実際にC2アドレスの格納されたwebページに訪問し、それから得られたC2のアドレスを共有設定に保存していることがわかります。

f:id:morimolymoly:20210207145416p:plain

C2を得たマルウェアは司令を受信するためのスレッドを立ち上げます。

f:id:morimolymoly:20210207145548p:plain

keepAlive.mHandlerというメンバに司令を受け取るためのハンドラが入っています。

これはKeepAlive$4というクラスが担当していて、C2へpingしたり、SMSを送信したりします。

f:id:morimolymoly:20210207145918p:plain

f:id:morimolymoly:20210207145937p:plain
SMS送信

マルウェアについて

マルウェアは全体的に中国語のコメントばかりでした。
また丁寧にログも吐いていて、それも中国語でした。
使っているSDKはUmengという中国特有?(少なくとも日本語情報はGoogleでは引っかかりませんでした)を使っていて、アクターは中国語圏にいることが推測できます。

www.umeng.com

キャンペーンについて

おそらく最初に解析したXLoaderがインフラとなり、この謎のマルウェアを配布しているものだと考えられます。
まだわからないことが多いので注視する必要があるでしょう。

IOC