Google Cloudとコンテナの継続的なセキュリティ
本文の内容は、2021年1月27日にKaizhe Huangが投稿したブログ(https://sysdig.com/blog/rinbot-discord-bot-crypto-miner/)を元に日本語に翻訳・再構成した内容となっております。
Sysdigセキュリティリサーチチームは、人気のあるRinBot Discordボットをホスティングしているサーバーから発生しているクリプトマイニング活動を確認しました。
Discordは、テキスト、音声、ビデオを介してリアルタイムでチャットを行うことができるモバイルおよびコンピュータ用の無料アプリです。2020年のアクティブユーザー数は1億人を超え、Discordは若者やゲーマーの間で非常に人気があり、COVID-19の発生はこの成功に拍車をかけました。攻撃者がこのアプリのエコシステムを標的にするのは時間の問題でした。
Discordコミュニティの管理者は、サードパーティの統合(ボットと呼ばれる)をインストールすることで、アプリの体験を向上させています。これらの統合機能は、Discordのインフラストラクチャーの外にあるDECIALSによってホストされています。
これらの統合システムの一つであるRinBotのサーバが侵害され、dk86マルウェアのコマンド&コントロールサーバとして機能し、xmra64クリプトマイナーをデプロイしているのではないかと私たちは疑っています。
この攻撃は、私たちが長い間見てきたことを裏付けるものです。クリプトマイナ ー攻撃は増加傾向にあり、さまざまな形で発生しています。暗号通貨の価格が高騰しているという事実は、事態を悪化させているだけです。
私たちはしばらくの間、ランダムなAWSリージョンでのクリプトマイニング攻撃を取材してきました。今回の事件の特徴は、コマンド&コントロール(C&C)サーバがランダムなマシンではなく、Discordボットをホストするパブリックサーバであったことです。
この記事では、Discordとは何か、なぜ人気があるのか、この特定の攻撃の詳細、そしてそれに対してインフラストラクチャーを保護する方法を学びましょう。
あなたがシステム管理者であったり、Discordボットをホストしている場合は、この攻撃の「Indicators Of Compromise」を熟知し、開いているポートや不審なプロセスを検出できるランタイムセキュリティツールを使用することをお勧めします。繰り返しになりますが、最近はクリプトマイニングを可能にするためのC&C攻撃が増えています。
Discordコミュニティの管理者であれば、影響を受けたボットをインストールしたかどうかを確認し、削除する必要があります。ユーザーのデータが流出したという証拠はありませんが、Botのサーバーが危険な状態になっているのは事実です。
あなたがDiscordのユーザーであれば、何も流出を指摘していないので大丈夫でしょう。しかし、もしあなたが危険なボットを使用しているサーバーに参加している場合は、管理者に削除を依頼してください。また、ボットはあなたの個人情報を安全な方法で保存する必要がないことを覚えておいてください。ボットの前でどのような情報を共有するのか、本当に注意してください。
DiscordはゲーマーのためのSlackとしてイメージすることができます。長年にわたり、Discordはあらゆるタイプのコミュニティのためのソーシャルネットワークへと進化してきました。
各Discordサーバーは、Slackと同様に、いくつかのテーマ別のチャンネルを持つコミュニティとなっています。最大の違いは、音声チャンネルと動画チャンネルです。ワンクリックするだけで、すでに友達と会話しています。通話を開始したり、招待リンクを共有したり、接続の問題をトラブルシューティングしたりする必要はありません。
この使い勝手の良さと、COVID-19でのリモートコミュニケーションの必要性が合わさって、Discordは人気を博しました。2019年の5600万人のアクティブユーザーから2020年には1億人にまで成長したため、Discordのエコシステムがクリプトマイニング攻撃の標的にされるのは時間の問題でした。
最も人気のあるチャットアプリとして、Discordはボットと呼ばれるサードパーティのサービスで拡張することができます。彼らは特別なチャットユーザーとして表示され、管理者がTwitchでライブ配信中であることを通知するような簡単なタスクから、完全な会話ベースのゲームのような複雑なタスクまでを実行することができます。
これらのボットの背後にあるロジックは、Discordサーバーの外で実行されています。
インターネットに接続されていれば、誰でもボットを作成し、自宅のコンピュータから実行することができます。もちろん、クラウド・プロバイダーの適切なサーバーからボットを実行することになるでしょう。この「自宅のコンピュータ」の例では、2つのことを強調したいと思いました。
RinBotはこれらの統合の一つで、そのウェブサーバーに関連したクリプトマイニング活動を確認しました。
RinBotと呼ばれるDiscordボットがいくつか存在することに注意してください。これが一般的な名前なのか、それともフィッシングの手口なのか、推測するしかありません。この特定のボットとリンクしているウェブサイトは以下の通りです。
発覚した攻撃は以下のようなものでした。
下図は攻撃の流れをまとめたものです:
攻撃の流れ、xk86 は子プロセスを生成します。そのプロセスがマイニング機能をインストールし、マイニング情報を c2 サーバーに送り返します。
このプロセスがどのように動作するのか、実行される正確なコマンド、サーバ間の通信を詳細に発見するために読み続けてください。
最後に、オープンソースのFalcoを使ってこの攻撃を検出する方法を紹介します。
dk86 マルウェアが Sysdig Secure のハニーポットに到達した直後、そのサーバーを監視する Sysdig Secure DevOps Platform によって検出され、すぐに私たちの注意を引きました。
このバイナリは2021年1月16日に初めて報告されたもので、34の情報源がこれが確かにマルウェアであることを確認しています。
これが通常の本番サーバであれば、直ちにバイナリを削除し、ソースを調査し、セキュリティを強化していたでしょう。これがハニーポットであることから、私たちはマルウェアを追跡して最終的な目的を発見しました。
dk86マルウェアの役割は、サーバーをさらに危険にさらすために使用できるバックドアを開くことです。
dk86マルウェアはポートを開き、コマンドを待ち受けにします。
システムコールを可視化するオープンソースツールであるSysdig Inspectを使用して、dk86が何をしているかを追跡しています:
これを見ると、リッスンしているポートは 59000 であることがわかります。通常のサービスは 80, 443, 8080, 3306 のような低い番号のポートをリッスンするので、これは奇妙に見えます。
マルウェアが削除された後も被害者の環境で増殖し続ける典型的な方法は、永続化のためのcronjobを作成することです。
ここでは、dk86がサーバのcrontabを編集しているのがわかります:
dk86マルウェアはシステムのcrontabを編集し、削除されると再インストールされるようにしています。
kinsing攻撃でも同じ手法が出てきました。
その後、この dk86 マルウェアは 0kuh3auhftebvtd という新しいプロセスを生成しました。この新しいプロセスは、45.132.242.40 IP アドレスへの接続を確立します。
これは、コマンドアンドコントロール(C&C)サーバからの指示を待つプロセスの指標です。その接続を介して送信された実際のコマンドを調べる前に、この怪しいサーバーを調査してみましょう。
ウェブブラウザからこのIPにアクセスすると、Discordボットをプロモートしているhttps://rinbot.onlineにたどり着きます。これは、~5,000台のDiscordサーバーにインストールされているので、何らかの形で人気があるように見えます。DiscordサーバはDiscordコミュニティであり、必ずしも実際のサーバ(物理的またはプロセス)ではないことに注意してください。
で、この特定のDiscordボットであるRinBotは何をしているのでしょうか?
Discordのボットをインターフェースとして使ったカードゲームのようです。
本当に悪意のあるボットなのか?
もしそうだとしたら、ありふれた場所に隠すのはおかしいですね。Discordボット検索エンジンで「RinBot」を検索してみましょう。
別の同名のボットを発見しましたが、より人気がありそうで、約16.8kのサーバーにインストールされていました。
謎が深まっています
これはフィッシング攻撃なのか?RinBotは単に人気のある名前なのでしょうか?実際のボットが悪質であることを示すものは何もありません。
私たちが今のところ考えている最善の仮説は、ボットサイトがハッキングされ、それに気づかずにマルウェアのC&Cとして機能しているということです。
結論を出すにはもっと情報が必要なので、RinBotの謎は今のところ保留にしておきます。
では、実際に分かっている事を続けてみましょう。サーバーがハニーポットに送ったコマンドは?
これはプロセス 0kuh3auhftebvtd と RinBot ウェブサーバ間の初期通信です。
これは他のマルウェアやC&Cプロトコルに似ており、ターゲットに関する情報を取得し、更新された攻撃ペイロードで通信します。
マルウェアが次に取った行動は、クリプトマイニングです。
まず、0kuh3auhftebvtdプロセスはシェルを起動させました。そこで、wgetコマンドを実行して、クリプトマイニングのバイナリxmra64をダウンロードしました。
ダウンロードされると、0kuh3auhftebvtdは実行のためのバイナリを準備しました。実行ビットを設定するためにchmodを使用したことがわかります。
xmra64は既知のクリプトマイナーです:
xmra64 はマルウェアであるという報告が 35 件あります。
クリプトマイナーバイナリーの起動時に2つのクリプトマイナープールが指定されました。
しかし、xmra64は185.165.171.78のみにアクセスし、syscallアクティビティをキャプチャしました。kinsing攻撃と同様に、JSON-RPCプロトコルが使用されました。
マイナーサーバープールにログインするためのペイロードはもちろん、マイニングの仕組みをネゴシエートするためのものでした。
data={"id":1,"jsonrpc":"2.0","method":"login","params":{"login":"x","pass":"x","agent":"XMRig/3.2.0 (Linux x86_64) libuv/1.37.0 gcc/9.3.0","algo":["cn/1","cn/2","cn/r","cn/wow","cn/fast","cn/half","cn/xao","cn/rto","cn/rwz","cn/zls","cn/double","rx/0","rx/wow","rx/loki"]}}
マイニングを実行するジョブのペイロードは以下のようになっていました。
data={"jsonrpc":"2.0","method":"job","params":{"blob":"0e0ee8f8ac8006718f0d677e4f85155330770e0f706692f08289a3aaec765734c3581b1206544a000000d092acba4472d8e596c7350855bd7ec044de7d8d63338a29553b69a96b719474362c","job_id":"770586838907405","target":"d4140000","algo":"rx/0","height":2280299,"seed_hash":"0514f72f2a974747530032b853d52f3220a6a575da98d9bcbeab63fba18668b9"}}
ハートビートのステータス更新は定期的に送信されます:
data={"id":4,"jsonrpc":"2.0","method":"keepalived","params":{"id":"12e1cee6f72569b2"}}
そして、xmra64は結果を次のように返信します:
data={"id":3,"jsonrpc":"2.0","method":"submit","params":{"id":"12e1cee6f72569b2","job_id":"231516882834987","nonce":"281d00d0","result":"f58edffae1406a45e1867cd7f758f9e71d23ddb7b29e85be45bcf4239a0b0000","algo":"rx/0"}}
また、0kuh3auhftebvtdがマイニング情報をRinBotウェブサーバに送り返す様子も見られました。
上のスクリーンショットでは、少なくともマイナープールのIPとマイニングアルゴリズムがRinBotウェブサーバー(45.132.242.40)に送り返されていることがわかります。しかし、45.132.242.40(または https://www.rinbot.online/)が悪質なC&Cサーバであると結論づけるには、まだ十分な情報がありません。
RinBot サーバーがハッキングされた可能性が高く、その管理者はこの悪意のある活動に気付いていないのです。
他の類似の攻撃と比較して、1つだけ目立つことがあります。それは、マルウェアからマイニング情報を受信しているサーバーが非常に怪しいということです。
言及する価値のあるいくつかの疑わしい活動。
Falcoは、コンテナとKubernetesのランタイム脅威検出のためのCNCFオープンソースプロジェクトです。
Falcoの利点の1つは、その強力で柔軟なルール言語を活用することにあります。その結果、Falcoは、カスタマイズ可能なルールのセットによって定義された異常な動作を発見した場合、セキュリティイベントを生成します。一方、Falcoには、一握りの既成概念にとらわれない検知ルールが付属しています。
# Note: falco will send DNS request to resolve miner pool domain which may trigger alerts in your environment. - rule: Detect outbound connections to common miner pool ports desc: Miners typically connect to miner pools on common ports. condition: net_miner_pool and not trusted_images_query_miner_domain_dns exceptions: - name: proc_sport_sipname fields: [proc.name, fd.sport, fd.sip.name] enabled: false output: Outbound connection to IP/Port flagged by cryptoioc.ch (command=%proc.cmdline port=%fd.rport ip=%fd.rip container=%container.info image=%container.image.repository) priority: CRITICAL tags: [network, mitre_execution] - rule: Container Drift Detected (chmod) desc: New executable created in a container due to chmod condition: > chmod and consider_all_chmods and container and not runc_writing_var_lib_docker and not user_known_container_drift_activities and evt.rawres>=0 and ((evt.arg.mode contains "S_IXUSR") or (evt.arg.mode contains "S_IXGRP") or (evt.arg.mode contains "S_IXOTH")) exceptions: - name: proc_name_image_suffix fields: [proc.name, container.image.repository] comps: [in, endswith] - name: cmdline_file fields: [proc.cmdline, fd.name] comps: [in, in] values: - [["runc:[1:CHILD] init"], [/exec.fifo]] output: Drift detected (chmod), new executable created in a container (user=%user.name user_loginuid=%user.loginuid command=%proc.cmdline filename=%evt.arg.filename name=%evt.arg.name mode=%evt.arg.mode event=%evt.type) priority: ERROR - rule: Outbound Connection to C2 Servers desc: Detect outbound connection to command & control servers condition: outbound and fd.sip in (c2_server_ip_list) exceptions: - name: proc_proto_sport fields: [proc.name, fd.l4proto, fd.sport] output: Outbound connection to C2 server (command=%proc.cmdline connection=%fd.name user=%user.name user_loginuid=%user.loginuid container_id=%container.id image=%container.image.repository) priority: WARNING
tags: [network]
ルールの完全な説明はGitHubで確認できます。
Sysdig Secure DevOps PlatformはFalcoの上に構築されており、この特定の攻撃を検出するために使用されました。
Sysdig Secure イメージプロファイリングの助けを借りて、DevOps は以下のことができます:
Sysdig Monitorを使用することで、チームはリソースの使用状況を綿密に監視し、CPU使用量の急増が検出された場合にアラートを作成して通知を受けることができます。
ハニーポットリソースを監視するSysdigモニターのダッシュボード。この攻撃に関連したCPUの増加が目立ちます。
当社のハニーポットでは、わずか10分でCPU使用率が68%から約100%に急増しました。また、コンテナ f3d71e24c0fa にもピンポイントで攻撃の原因を特定することができました。
このインシデントは、クリプトマイニング攻撃が増加傾向にあることを確認しており、時間が経つにつれて、彼らはより創造的になってきています。
Discordユーザー、またはチャットプラットフォームのユーザーとして、あなたは間接的に影響を受けます。あなたのデバイスやアカウントは安全ですが、ボットを実行しているサーバーは脆弱です。ボットは個人データ(ユーザープロファイルや公開メッセージなど)にアクセスできるため、サーバーが危険にさらされると、あなたの情報も危険にさらされる可能性があります。今まで以上に、チャットプラットフォームは、ボットが利用可能な情報を警戒し、ゲートする必要があります。
システム管理者として、これらの攻撃を検出するために適切なツールを使用する必要があります。クラウドネイティブ環境からのプロセス活動、ファイル活動、ネットワーク活動への深い洞察と、スマートな検出エンジンの助けがなければ、このような攻撃を検出するのは難しいでしょう。それを発見することはさらに困難になるでしょう。
また、セキュリティと監視を統一したソリューションを利用することで、調査のスピードが上がることにも注意が必要です。1つの不審なイベントを特定したら、リソースの使用状況やネットワーク接続、機密ファイルの読み取りなど、さまざまな角度からイベントを追跡するのに役立ちます。
Sysdig Secure DevOps Platformは、コンテナ、Kubernetes、クラウドサービスを自信を持って実行するためのセキュリティを提供します。Sysdigを使用すると、ビルドパイプラインの安全性を確保し、実行時の脅威を検出して対応し、コンプライアンスを継続的に検証し、クラウドインフラストラクチャーやサービスを監視してトラブルシューティングを行うことができます。今すぐお試しください。