KoSpy」と名付けられた新しいAndroidスパイウェアは、少なくとも5つの悪意のあるアプリを通じてGoogle PlayおよびサードパーティアプリストアAPKPureに侵入した北朝鮮の脅威行為者と関連している。
Lookoutの研究者によると、このスパイウェアは北朝鮮の脅威グループAPT37(別名「ScarCruft」)に起因しています。このキャンペーンは2022年3月以来活発で、脅威行為者は新しいサンプルに基づいてマルウェアを積極的に開発しています。
このスパイウェアキャンペーンは、ファイルマネージャ、セキュリティツール、ソフトウェアアップデータに偽装することで、主に韓国語および英語圏のユーザーを標的としています。
Lookoutが特定した5つのアプリは、휴대관리자 (Phone Manager)、File Manager (com.file.explorer)、스마트관리자 (Smart Manager)、카카오보안 (Kakao Security)、Software Update Utilityです。

Source:Lookout
悪意のあるアプリは、少なくとも約束された機能の一部を提供しますが、バックグラウンドでKoSpyスパイウェアをロードします。
唯一の例外はKakao Securityで、偽のシステムウィンドウを表示し、危険なパーミッションへのアクセスを要求するだけです。

Source:Lookout
このキャンペーンは、過去に北朝鮮の活動に関連したIPアドレス、Konniマルウェアの配布を促進したドメイン、およびもう1つの北朝鮮がスポンサーとなっている脅威グループであるAPT43と重複するインフラに基づいて、APT37に起因しています。
KoSpyの詳細
デバイス上でアクティブになると、KoSpyはFirebase Firestoreデータベースから暗号化された設定ファイルを取得し、検知を回避します。
次に、実際のコマンド&コントロール(C2)サーバーに接続し、エミュレーターで実行されていないことを確認するためのチェックを実行します。マルウェアは、C2から更新された設定を取得し、実行するペイロードを追加し、「オン/オフ」スイッチによって動的に起動/停止することができる。
KoSpyのデータ収集機能は以下の通りです:
- SMSおよび通話ログの傍受
- 被害者のGPS位置をリアルタイムで追跡
- ローカルストレージからファイルを読み取り、流出させます。
- デバイスのマイクを使用して音声を録音
- デバイスのカメラを使って写真やビデオを撮影
- デバイスのディスプレイのスクリーンショットをキャプチャ
- Android Accessibility Services経由でキー入力を記録
各アプリは、データ流出のために個別のFirebaseプロジェクトとC2サーバーを使用し、送信前にハードコードされたAESキーで暗号化される。
スパイウェアアプリは現在、Google PlayとAPKPureの両方から削除されているが、ユーザーは手動でアンインストールし、セキュリティツールでスキャンして、デバイスから感染の残骸を根絶する必要がある。致命的なケースでは、工場出荷時のリセットが推奨されます。
Google Playプロテクトは、既知の悪意のあるアプリをブロックすることもできるため、最新のAndroid端末でこれを有効にすれば、KoSpyから保護することができる。
Googleの広報担当者は、Lookoutによって特定されたすべてのKoSpyアプリがGoogle Playから削除され、対応するFirebaseプロジェクトも削除されたことを確認した。
“地域言語が使用されていることから、これは標的型マルウェアとして意図されたものであると考えられます。ユーザーにインストールされる前に、2024年3月に発見された最新のマルウェアサンプルがGoogle Playから削除されました。
「Google Play プロテクトは、Google Play サービスを利用している端末上で、このマルウェアの既知のバージョンから Android ユーザーを自動的に保護します。
.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:10px 20px; width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; text-align: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px; width: 100%; } .ia_button { width: 100%; } .
Comments