** 本記事は、Conti ransomware: Evasive by nature の翻訳です。最新の情報は英語記事をご覧ください。**
編集部注: 本記事は、Conti ランサムウェアファミリに焦点を当てたシリーズ記事の 1 つです。このシリーズには、Conti 攻撃を分析した「タイムラインで見る Conti ランサムウェア攻撃」と、IT 管理者向けのガイドとなる「Conti ランサムウェア攻撃への心構えと対策」があります。
SophosLabs と Sophos Rapid Response チームは数か月前から、2020 年に初めて確認され、その後急速に進化しているランサムウェアの検出と動作分析を共同で行っています。「Conti」と名乗るこのランサムウェアは、反射型 DLL インジェクション手法を使用してマルウェアをメモリに直接挿入する Cobalt Strike/Meterpreter ペイロードの最後で配信されます。
反射型ローダーはランサムウェアペイロードをメモリに挿入しますが、感染したコンピュータのファイルシステムにランサムウェアのバイナリを書き込むことはしません。そのため、他のランサムウェアファミリのような弱点が存在しません。つまり、ランサムウェアのアーティファクトが残らないため、マルウェアアナリストが丹念に調査しても発見することができません。
だからといって、調査すべきアーティファクトやコンポーネントがないわけではありません。Conti を使用する攻撃者は、マルウェアが配信されたタイミングでマルウェアそのものを難読化するだけでなく、攻撃中のダウンロード元となっているインターネット上の場所を隠蔽して、リサーチャーがマルウェアのコピーを入手できないようにする複雑なカスタムツールを構築しています。
2 段階式のロードプロセス
Conti ランサムウェア攻撃の第 1 段階では、Meterpreter シェルコードの復号化とシステムメモリへのロードに必要なメモリ領域を割り当てる約 200 KB のサイズの Cobalt Strike DLL が使用されます。
DLL で XOR されたこのシェルコードは、予約されたメモリ領域に展開された後、C2 (C&C) サーバーと通信して攻撃の次の段階を取得します。
この C2 通信が特徴的なのには、いくつかの理由があります。まず、このマルウェアでは、Github アーカイブで公開されている trevor.profile という名前の Cobalt Strike 構成スクリプトのサンプルが使用されているようです。このプロファイルは、セキュリティカンファレンスに参加していたリサーチャーが、会場の外にあるレストランでミルクシェイクの中に虫が入っているのを発見したという事件への一種のオマージュになっています。
しかし、Conti の攻撃者がこのサンプルスクリプトを大幅に変更したようには見えないことから、この C2 通信は次の 2 つの点で注目に値します。このスクリプトでは、攻撃のこの段階で用いられる特性が指定されています。その 1 つである User-Agent 文字列 (“Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)“) は、Windows 7 が実行されてるコンピュータを模倣していますが、特定のブラウザーを識別することはできません。もう 1 つは、静的な URI パス (“/us/ky/louisville/312-s-fourth-st.html“) で、これには前述のリサーチャーが虫を発見したレストランの住所が含まれています。
C2 サーバーへの最初の接続は、サーバー上の Menus.aspx というページに対して行われます。このページから次のペイロードが配信されます。最初のペイロードはメモリにロードされますが、これは反射型 DLL ローダーの命令を含んだ別の Cobalt Strike シェルコードローダーです。
これが成功すると、次にマルウェアは同じ C2 サーバー上の「312-s-fourth-st.html」ページに連絡します。攻撃者は、アクティブな攻撃の最中に限ってこのような一連のイベントをトリガーし、ランサムウェアのバイナリを C2 サーバー上に配置することによって、攻撃が進行している間だけこのプロセスが取得できるようにし、その後すぐに削除します。
検出を逃れるランサムウェアペイロード
ランサムウェアのペイロードが配置されている場所は一時的であるため、アナリストが調査用サンプルを入手するのは容易ではありませんでした。しかし、マルウェアの実行が続いていた感染コンピュータから、インメモリコードの一部を回収することに成功しました。
このランサムウェアのプロセスは取り立てて特殊なものではありませんが、リサーチャーによる分析を妨害しようとするランサムウェア作成者の意図がうかがえます。
Conti ランサムウェア自体は、ハッシュ値を使用して特定の API 関数を呼び出す「API-by-hash」と呼ばれる比較的よく見られる分析対策技術を使用しています。Conti には、リサーチャーによるリバースエンジニアを妨害するための暗号化レイヤーが、これらのハッシュの上に追加されています。これらの機能を実行するためには、Conti 自身が復号化を 2 回実行する必要があります。
インシデント対応担当者がこのランサムウェアの動作を確認したところ、ファイルの暗号化プロセスを即座に開始すると同時に、SMB ポートを使用して近くのマシンに拡散する目的で、同じネットワークサブネット上の他のコンピュータへの接続を順番に試みていました。
Conti の開発者は、暗号化の実行に使用する RSA 公開鍵をハードコードしています (ファイルは AES-256 アルゴリズムを使用して暗号化されています)。つまり、マルウェアが C2 と通信できなかったとしても、ファイルの暗号化を開始できるということを意味します。
残念ながら、このランサムウェアによってもたらされる脅威はこれだけではありません。Conti ランサムウェアは、他のランサムウェア攻撃グループと同様に「リーク (情報流出)」サイトも使用しています。攻撃者は標的ネットワークで一定の時間を過ごし、機密情報を盗み出してクラウドに移動させます (最近の攻撃では、クラウドストレージプロバイダーの MEGA が使用されています)。
YOU SHOULD BE AWARE! (「ご注意ください!」) と書かれたヘッダーの下には、「無視しようとしているのなら、念のため言っておきます。内部データはすでにダウンロードしてあり、返事がなければ、ニュースサイトで公開する準備ができています。できるだけ早く連絡してくれた方が双方のためです。」
検出について
Conti ランサムウェアは、単独では Sophos Intercept X の CryptoGuard 機能を迂回することができません。ソフォスのエンドポイント製品は、以下の定義のいずれかに該当する Conti のコンポーネントを検出する可能性があります。HPmal/Conti-B、Mem/Conti-B、Troj/Swrort-EZ、Troj/Ransom-GEM、Mem/Meter-D。Sophos XG Firewall をはじめとするネットワーク保護製品を使用すれば、悪意のある C2 アドレスをブロックして、マルウェアによるペイロードの取得と感染プロセスの実行を防止することができます。
本調査の対象となったマルウェアサンプルの IoC (侵害の痕跡) は、SophosLabs Github に投稿されています。