2019Androidランサムウェアは過去2年間減少傾向にありましたが、新しい系統のランサムウェアが出現しています。Filecoder.Cとして検出されます。これは、さまざまなオンラインフォーラムを介して拡散しており、攻撃を受けたユーザーの連絡先リストに、悪意のあるリンクを設定したSMSを配信してさらに拡散しようとします。現時点ではこの攻撃対象は限られており、攻撃の実行と暗号化の実装方法の両方に欠陥があるため、この新しいランサムウェアの影響は限定的ではあります。Filecoder.Cランサムウェアは深刻な脅威になる恐れがあります。少なくとも2019年7月12日から活動を開始しています。Developers」への悪意のある投稿から拡散していました。DevelopersおよびRedditに報告しました。Developersフォーラムの投稿は速やかに削除されましたが、悪意のあるRedditプロファイルはこの記事を公開した時点ではまだ公開されていました。Filecoder.Cは、攻撃を受けたユーザーの連絡先リストに悪質なリンクを設定したSMSを配信し、さらに拡散しようとします。ランサムウェアは、悪意のあるSMSを大量に送信した後に、デバイスにあるほぼすべてのユーザーファイルを暗号化して身代金を要求します。暗号化に欠陥があるため、攻撃者のサポートを受けなくとも、暗号化されたファイルは復号化できます。Securityを使用しているユーザーには、悪意のあるリンクに関する警告が表示されます。Securityによってブロックされます。配信方法ESETが検出した攻撃では、攻撃者が管理している2つのドメインが使用されており(下記のIoCのセクションを参照)、ダウンロード用の悪意のあるAndroidファイルがこのドメインに含まれています。Developers(図2)に投稿またはコメントすることにより、これらのドメインにユーザーを誘導します。投稿の内容は、主にポルノに関するものですが、技術的な内容も疑似餌として使用される場合もありました。攻撃者によるすべてのコメントまたは投稿には、悪意のあるアプリにアクセスするためのリンクまたはQRコードが含まれていました。Developersフォーラムでの攻撃者の悪意のある投稿の例Redditで共有されていたリンクでは、短縮URLのbit.lyが使用されていました。URLは2019年6月11日に作成され、図3に示した統計情報によると、この記事を執筆した時点では、さまざまなソースおよび国から59回クリックされていました。Filecoder.Cランサムウェアは、攻撃を受けたユーザーのデバイスに登録されているすべて連絡先へ、SMSメッセージを介してランサムウェアへのリンクを送信し、拡散します。これらのメッセージには、ランサムウェアへのリンクが含まれています。メッセージを受信したユーザーが思わずクリックしてしまうように、“あなたの写真がこのアプリで使用されている”というメッセージとともにリンクが追加されています(図4を参照)。図5に示すように、このランサムウェアのメッセージテンプレートは42か国語に対応しています。できるだけ多くの攻撃対象に拡散するため、メッセージを送信する前にユーザーのデバイスの言語設定に合わせてテンプレートバージョンを選択します。これらのメッセージを受信者に合わせてカスタマイズするために、連絡先の名前をメッセージに追加します。図4:ランサムウェアへのリンクを含むSMS。攻撃を受けた送信側のデバイスの言語設定が英語の場合、英語版のメッセージテンプレートが使用されてSMSが送信される図5:ランサムウェアにハードコードされている42か国語のテンプレート機能ランサムウェアを実行するには、悪意のあるアプリケーションへのリンクが設定されたSMSメッセージを受信したユーザーに手動でインストールさせる必要があります。アプリが起動されると、アプリを配信するために使用された投稿で約束されていたものが表示されます。ほとんどの場合はアダルト向けのオンラインゲームですが、実際の目的はC&Cと通信し、悪意のあるメッセージを拡散し、暗号化/復号化の仕組みを実装することです。C&Cとの通信に関しては、マルウェアのソースコードにハードコードされたC&CおよびBitcoinのアドレスが含まれていますが、これらのアドレスを動的に取得することもできます。攻撃者は無料のPastebinサービスを使用しており、いつでもアドレスを変更できます。図6:ランサムウェアが取得するC&Cのアドレスの例ランサムウェアは、ユーザーの連絡先リストにアクセスして、テキストメッセージを送信できます。ファイルを暗号化する前に、前述の「拡散方法」セクションで説明した方法で、このユーザーの連絡先にメッセージを送信します。次に、ランサムウェアはアクセス可能なストレージにあるファイル(システムファイルが存在する場所を除くすべてのデバイスのストレージ)をチェックして、ほぼすべてのファイルを暗号化します(下記の「ファイル暗号化の仕組み」セクションを参照)。攻撃者はファイルを暗号化すると、図7に示すように、身代金のメモを(英語で)表示します。Filecoder.Cによって表示される身代金メモ攻撃を受けたユーザーがアプリを削除すると、身代金のメモに記載されているように、ファイルを復号化できなくなります。暗号化の実装に問題があるため、実際にはファイルを復元できます(詳細は、次のセクションを参照)。ESETがランサムウェアのコードを分析したところ、72時間後に暗号化されたデータが失われるという攻撃者の主張を裏付ける根拠は見つかっていません。図8に示すように、要求される身代金の一部は動的に変更されます。要求されるビットコインの金額の最初の部分はハードコードされており、その値は0.01になっています。残りの6桁はマルウェアによって生成されるユーザーIDです。このような独自の手法が採用されているのは、入金を特定する目的です(Androidランサムウェアは、通常、暗号化したデバイスごとに個別のBitcoinウォレットを生成して入金を特定します)。Bitcoinのレートは約9,400ドルですので、現在要求されている身代金は94〜188ドルの範囲になります(一意のIDはランダムに生成されると仮定)。Filecoder.Cは画面をロックして、デバイスを使用できないようにはしません。図9に示すように、この記事の執筆時点では、前述のBitcoinアドレスでは取引は記録されていません(このアドレスは動的に変更できますが、これまで見てきたすべての攻撃で同じアドレスが使用されています)。図9:攻撃者が使用したBitcoinアドレスファイル暗号化の仕組みランサムウェアは、非対称暗号化と対称暗号化を使用します。公開鍵と秘密鍵の対が生成されます。この秘密鍵は、コードに格納されているハードコードされた値と一緒にRSAアルゴリズムを使用して暗号化され、攻撃者のサーバーに送信されます。攻撃者はその秘密鍵を復号化し、ユーザーが身代金を支払った後、その秘密鍵をユーザーに送信しファイルを復号化できるようにします。ファイルを暗号化するとき、ランサムウェアは暗号化されるファイルごとに新しいAES鍵を生成します。このAES鍵は公開鍵を使用して暗号化され、暗号化された各ファイルの先頭に追加されます。いうファイル名のパターンになります。このファイル構造を図10に示します。図10:暗号化されたファイル構造の概要このランサムウェアは、アクセス可能なストレージディレクトリをチェックし、次のタイプのファイルを暗号化します。“.doc”、”.docx”、”.xls”、”.xlsx”、”.ppt”、”.pptx”、”.pst”、”.ost”、”.msg”、”.eml”、”.vsd”、”.vsdx”、”.txt”、”.csv”、”.rtf”、”.123”、”.wks”、”.wk1”、”.pdf”、”.dwg”、”.onetoc2”、”.snt”、”.jpeg”、”.jpg”、”.docb”、”.docm”、”.dot”、”.dotm”、”.dotx”、”.xlsm”、”.xlsb”、”.xlw”、”.xlt”、”.xlm”、”.xlc”、”.xltx”、”.xltm”、”.pptm”、”.pot”、”.pps”、”.ppsm”、”.ppsx”、”.ppam”、”.potx”、”.potm”、”.edb”、”.hwp”、”.602”、”.sxi”、”.sti”、”.sldx”、”.sldm”、”.sldm”、”.vdi”、”.vmdk”、”.vmx”、”.gpg”、”.aes”、”.ARC”、”.PAQ”、”.bz2”、”.tbk”、”.bak”、”.tar”、”.tgz”、”.gz”、”.7z”、”.rar”、”.zip”、”.backup”、”.iso”、”.vcd”、”.bmp”、”.png”、”.gif”、”.raw”、”.cgm”、”.tif”、”.tiff”、”.nef”、”.psd”、”.ai”、”.svg”、”.djvu”、”.m4u”、”.m3u”、”.mid”、”.wma”、”.flv”、”.3g2”、”.mkv”、”.3gp”、”.mp4”、”.mov”、”.avi”、”.asf”、”.mpeg”、”.vob”、”.mpg”、”.wmv”、”.fla”、”.swf”、”.wav”、”.mp3”、”.sh”、”.class”、”.jar”、”.java”、”.rb”、”.asp”、”.php”、”.jsp”、”.brd”、”.sch”、”.dch”、”.dip”、”.pl”、”.vb”、”.vbs”、”.ps1”、”.bat”、”.cmd”、”.js”、”.asm”、”.h”、”.pas”、”.cpp”、”.c”、”.cs”、”.suo”、”.sln”、”.ldf”、”.mdf”、”.ibd”、”.myi”、”.myd”、”.frm”、”.odb”、”.dbf”、”.db”、”.mdb”、”.accdb”、”.sql”、”.sqlitedb”、”.sqlite3”、”.asc”、”.lay6”、”.lay”、”.mml”、”.sxm”、”.otg”、”.odg”、”.uop”、”.std”、”.sxd”、”.otp”、”.odp”、”.wb2”、”.slk”、”.dif”、”.stc”、”.sxc”、”.ots”、”.ods”、”.3dm”、”.max”、”.3ds”、”.uot”、”.stw”、”.sxw”、”.ott”、”.odt”、”.pem”、”.p12”、”.csr”、”.crt”、”.key”、”.pfx”、”.der"しかし、「.cache」、「tmp」、または「temp」という文字列を含むディレクトリにあるファイルは暗号化されません。KB未満の場合にも暗号化しません。ファイルタイプのリストには、Androidには関係がない項目が含まれており、.apk、.dex、.soなどの一般的なAndroidの拡張子は含まれていません。このリストは悪名高いWannaCryランサムウェアからコピーされた可能性があります。ファイルが暗号化されると、図11に示すように、拡張子「.seven」が元のファイル名に追加されます。図11:「.seven」という拡張子が付けられた暗号化ファイル復号化の仕組みこのランサムウェアには暗号化したファイルを復号化するコードが存在します。ユーザーが身代金を支払った場合、ランサムウェアの運用者は図12に示すWebサイトで入金を確認し、ファイルを復号するための秘密鍵を送信します。図12:身代金の支払いを確認するWebページしかし、秘密鍵の暗号化にはハードコードされた鍵の値が使用されているため、暗号化アルゴリズムを復号化アルゴリズムに変更することで身代金を支払うことなくファイルを復号化できます。復号化に必要なのは、ランサムウェアから提供されるUserID(図13参照)とランサムウェアのAPKファイルです。Filecoder.Cランサムウェアのすべての検体で同じ値が使用されています。図13:身代金メモに記載されるユーザーID安全な環境を維持するために最も大切なことは、デバイスは常に最新の状態を維持することです。自動的にパッチを適用してアップデートするように設定すると理想的です。Playなどの信頼できるアプリストアを使用してください。これらのアプリストアであっても、悪意のあるアプリが存在する場合はありますが、悪意のあるアプリを回避できる可能性は高くなります。アプリをインストールする前に、評価やレビューを確認してください。良いフィードバックは攻撃者が捏造している場合があります。悪いフィードバックは正規のユーザーが記載している場合が多いため、これらのフィードバックを中心に確認しましょう。アプリから要求される権限に注意してください。アプリの機能に対して要求される権限が適切でないと思われる場合は、アプリをダウンロードしないでください。お使いのデバイスを保護するために信頼できるモバイルセキュリティソリューションを使用しましょう。