🪰

8-2-2. スマホ用ランサムウェア(screenLocker)

に公開

では、いつもの通りMobSFにランサムウェアアプリをアップロードして解析していきます。
MobSFのダッシュボードには以下のように表示されます。

マニフェストファイルの解析

このうちAndroidManifest.xmlファイルを開いてPermissionを見ていきます。Manifestファイルには、ユーザーのプライバシーに関わる重要な機能の利用する場合、明示的に宣言(Manifest)されています。

このうちスクリーンロックに関わりそうなものを赤枠で囲みました。

正直、Androidアプリ開発では使ったことのない機能が列挙されているため、調べながらの記載となることをご容赦下さい

SYSTEM_ALERT_WINDOW

まず一番上の「 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />」について。
これは、”WINDODW”という文字列からも分かる通り画面表示に関わるものです。画面表示の中でも、”ALERT”と付いているので警告を表示するものです。警告は非常に重要な表示ですので、その表示は他のアプリの上にも表示されます。馴染み深い例として、以下のようなバッテリーの警告は他のアプリの利用中であっても表示されます。これをオーバーレイ(覆い被せる)と言います。オーバーレイは、重要な通知をユーザーに優先的に知らせたり、ユーザーに便利な機能を優先的に表示させるための機能です。

ランサムウェアアプリは、SYSTEM_ALERT_WINDOWを使って、脅迫画面を他のアプリやホーム画面にオーバレイさせて、ユーザーによる操作をできなくさせているようです。

サイバー攻撃の中にはLiving off the land(LOTL)攻撃というものがあります。LOTL攻撃は、ウイルスや不正プログラムを新たに持ち込まず、すでにOSやPCに標準で入っている機能を悪用して行う攻撃です。OSの標準機能を使うのでアンチウイルスソフトの検知を回避できます。
今回のscreenlockerも、本来はユーザーへの注意喚起や利便性のためにAndroid OSが用意している正規の”SYSTEM_ALERT_WINDOW”機能が悪用されており、LOTL攻撃の一種と言えそうです。。

WAKE_LOCK

続いて「<uses-permission android:name="android.permission.WAKE_LOCK" />」について。
これはスマホをスリープモードにさせないための機能です。例えば、Instagramアプリを利用している最中にしばらく放置しているとスマホが自動的にスリープモードに入ります。他方で、Youtubeアプリを放置して長時間再生していてもスリープモードに入らないように設定することが可能です。WAKE(スリープではなく起きている状態)をLOCK(固定・維持)するのが、WAKE_LOCK機能です。
ランサムウェアアプリは、この機能を使って、脅迫画面が表示されてもスリープモードに入ることを阻止して、あたかもスクリーンを永続的にロックしている状態を作っています。

RECEIVE_BOOT_COMPLETED

最後に「<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />」について。
これは、事前に登録しておくことで、スマホの起動時に併せて特定のアプリを自動的に起動させるよう設定する機能です。例えば、ToDoアプリのリマインダー通知をこの機能に登録することで、一旦スマホの電源を落としてから再起動しても当該ToDoアプリのリマインダー通知の登録は削除されることなく残っており、ToDoの時間になればリマインダー通知が届きます。
ランサムウェアアプリはこの機能を悪用して、ユーザーがスマホの電源を落として再起動させたとしても、脅迫画面を自動で再表示させます。再起動しても脅迫画面から解放されないというのはユーザーにとってかなり恐怖ですね。。。

このアプリは、いずれも正規の標準機能を上手く組み合わせることで、スマホを使用困難にするというランサムウェアの特徴を実現しようとしていることが分かりました。

次回は、マニフェストファイル以外のソースコードを見ながら、ランサムウェアアプリの機能の詳細を分析していきます。

Discussion