概要
ロシアのウクライナ侵攻が始まって以来、ウクライナの人々は大量のサイバー攻撃にほぼ絶え間なくさらされてきました。Cisco Talos はウクライナの組織と協力して、かなり特殊なマルウェアがウクライナを標的にしていることを発見しました。この攻撃では大手ソフトウェア開発会社が標的になっています。同社のソフトウェアはウクライナのさまざまな政府機関で使用されています。この攻撃は、ロシア政府の支援を受けた攻撃者かその協力者が行っている可能性があると Talos では考えています。標的となったのがソフトウェア開発会社であるため、サプライチェーン型の攻撃を展開するための足掛かりを築こうとしている可能性を無視できませんが、現時点ではサプライチェーン攻撃が成功したという証拠は得られていません。Cisco Talos は、このマルウェアが「GoMet」というオープンソースバックドアを若干改変したものであることを確認しました。このマルウェアが最初に確認されたのは 2022 年 3 月 28 日です。
GoMet バックドア
このバックドアはやや特殊な背景を持っています。高度な攻撃者がこのバックドアを使用した事例が 2 件記録されています。2020 年に行われた最初の攻撃では、CVE-2020-5902 がエクスプロイトされた後にこのマルウェアが展開されています。これは F5 社の BIG-IP で発見された重大な脆弱性です。米国サイバー軍もツイートを投稿して、このアプリケーションにパッチを適用するようすべてのユーザーに呼び掛けています。2 件目は最近のもので、CVE-2022-1040 がエクスプロイトされています。これは Sophos Firewall で発見されたリモートコード実行の脆弱性です。
どちらのケースもよく似ており、まずアプライアンスの公開済みの脆弱性がエクスプロイトされてから、GoMet がバックドアとしてドロップされています。この記事の公開時点で、ウクライナでこのバックドアが使用されたことと、この 2 件の事例との間に関連性があると考える理由はありません。
オリジナルの GoMet の開発者は 2019 年 3 月 31 日にコードを GitHub に投稿しており、2019 年 4 月 2 日までコミットを実行しています。コミットでは機能は何も追加されておらず、コーディング規則が若干修正され、体裁が整えられています。バックドア自体は、Go プログラミング言語で開発された比較的シンプルなソフトウェアです。攻撃者がリモート制御エージェントに通常求める機能はほとんど搭載されています。このエージェントはさまざまなオペレーティングシステム(OS)やアーキテクチャ(amd64、arm など)に展開できます。GoMet ではジョブスケジューリング(OS に応じて Cron かタスクスケジューラを使用)、単一コマンドの実行、ファイルのダウンロードとアップロード、シェルを開く機能がサポートされています。GoMet のもう 1 つの注目すべき機能として、デイジーチェーン機能があります。この機能を使用すると、特定のネットワークやマシンにアクセスし、同じ情報を使用して複数のネットワークやコンピュータにアクセスすることができます。こうして、感染したホストから別のホストへと接続を確立していきます。この機能によって、完全に「隔離されていた」はずのホストからインターネットに情報を送信できるようになります。
攻撃者はこのオリジナルバージョンを改変しています。オリジナルのコードでは cronjob が毎正時に 1 回実行されるように構成されていますが、Talos が入手したサンプルでは cronjob が 2 秒ごとに実行されるように構成されています。改変の結果、2 秒ごとに実行されて若干慌しくなっていますが、接続に失敗した場合に 1 時間もスリープすることが避けられ、より積極的に C2 に再接続することができます。
マルウェアの主要部分で定義されている cron ジョブは、C2 に接続されているかどうかを確認することを目的としています。接続されていない場合は、エージェントコンポーネントを再度起動して C2 に接続します。下の図は、C2 セットアップルーチンである Agent.Start の実行フローを示しています。
このフローを見ると、GitHub バージョンとの相違点がもう 1 つあることが分かります。C2 に到達できない場合、このサンプルは 5 ~ 10 分のランダムな時間スリープします。GO のスリープ実装ではナノ秒が使用されています。擬似コードは次のようになります。time_Sleep(1000000000 * (rnd_val + 300))
逆アセンブリのスクリーンショットにある「WaitGroup_Add」呼び出しも分かりにくいかもしれません。これは、Go コンパイラがソースコード WaitGroup.Done() を WaitGroup.Add(-1) に変更しているのです。
Agent.start ルーチンが完了すると、次の cron ジョブが serve() ルーチンの実行をトリガーし、Agent の別のインスタンスを開始しようとしました。
GitHub バージョンのソースコードを簡略化したものは次のようになります。
確認されたサンプルの擬似コードを簡略化したものは次のようになります。
Talos では、このバージョンのバックドアのサンプルを 2 つ見つけました。
f24158c5132943fbdeee4de4cedd063541916175434f82047b6576f86897b1cb (FctSec.exe)
950ba2cc9b1dfaadf6919e05c854c2eaabbacb769b2ff684de11c3094a03ee88 (SQLocalM86.exe)
これらのサンプルにはわずかな違いがありますが、構成が若干異なるだけで、同じソースコードから作成されている可能性があります。
関数のソースコードを比較すると、完全に同じではありませんが、変更されているのは主に文字列と、被害者やコンパイラに関連する同様のデータであることが分かります。研究者のコメントも追加されています。例として Main.Main 関数を下に示します。
Talos が検出した悪意のあるアクティビティには、GoMet ドロッパーによる偽の Windows Update スケジュールタスクの作成が含まれていました。さらに、永続化を確立するためにやや斬新なアプローチが使用されています。autorun の値を列挙した後、新しい autorun を作成する代わりに、既存の正常な autorun 実行ファイルの 1 つをマルウェアに置き換えていました。これによって検出が回避されたり、フォレンジック分析が妨害されたりする可能性があります。
あるケースでは、schtask クエリが実行される約 60 秒前に空の CMD プロセスが開かれ、その後、systeminfo クエリと schtask クエリが実行されました。svchost や services など、別のプロセスでこれらのクエリが連鎖的に開かれるわけではありません。この実行は次のようになります。
C:\WINDOWS\system32\cmd.exe 7)
systeminfo
schtasks /query /tn microsoft\windows\windowsupdate\scheduled
schtasks /query /tn microsoft\windows\windowsupdate\scheduled /v
インフラストラクチャ
どちらのサンプルにも、111.90.139[.]122 というコマンドアンドコントロール(C2)IP アドレスがハードコーディングされています。通信は HTTPS を通じてデフォルトポートで行われます。
このサーバーの証明書は 2021 年 4 月 4 日に自己署名証明書として発行されています。SHA-1 フィンガープリントは 9b5e112e683a3605c9481d8f565cfb3b7e2feab7 です。これは、2021 年 4 月にこの攻撃の準備が始まったことを示しています。現時点では、この IP アドレスに既知のドメインは関連付けられていません。最後にドメインが関連付けられていたのは 2021 年 1 月 23 日で、確認されている攻撃とは時期が一致しません。
まとめ
ウクライナでの戦争は解決の糸口がほとんどつかめないまま激化しており、攻撃者はウクライナ陣営に対する攻撃力を高めようとあらゆる手段を試みています。Cisco Talos では、ウクライナの政府機関や関係者を標的としたサイバー兵器が今後も広範に開発されるものと予想しています。Talos は今後も警戒を続け、ウクライナがそのようなサイバー攻撃からネットワークを防御するのを支援し、同地域の戦略的な提携先と緊密に連携して実用的な脅威インテリジェンスを収集および提供していきます。
今回の攻撃ではソフトウェア開発会社が標的になっており、永続アクセスを強化するように設計されたバックドアが展開されています。また、攻撃者はツールの検出を避けるための対策を積極的に講じており、サンプルを難読化したり、新しい永続化手法を利用したりしています。この攻撃で確立されたアクセスはさまざまな方法で悪用される可能性があります。たとえば、アクセスのさらなる拡大や追加攻撃が行われたり、ソフトウェア サプライチェーンが侵害されたりする可能性があります。ウクライナに対するサイバー活動は多くの人が予想したレベルまで達していないかもしれませんが、ウクライナは依然として断固とした意志を持つ資金豊富な敵に直面しており、さまざまな形で損害を被る可能性があることが分かります。今回の攻撃はその最新の事例にすぎません。
これらの活動は、ロシア政府の支援を受けた攻撃者かその協力者が行っている可能性がある(信頼性は中~高程度)と Talos では考えています。
カバレッジ
お客様がこの脅威を検出してブロックするための方法を以下に記載します。
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、
Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Network/Cloud Analytics(Stealthwatch/Stealthwatch Cloud)は、ネットワークトラフィックを自動的に分析し、接続されているすべてのデバイスで、望ましくない可能性があるアクティビティをユーザーに警告します。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトをテストします。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。
侵害の兆候
SHA-256 ハッシュ
f24158c5132943fbdeee4de4cedd063541916175434f82047b6576f86897b1cb
950ba2cc9b1dfaadf6919e05c854c2eaabbacb769b2ff684de11c3094a03ee88
IP
111.90.139[.]122
本稿は 2022 年 07 月 21 日に Talos Group のブログに投稿された「Attackers target Ukraine using GoMet backdoor」の抄訳です。