Nozomi Networks  Labs が発見した新たな BotenaGo 変種

Nozomi Networks Labs が発見した新たな BotenaGo 変種

AT&T Alien Labsによると、BotenaGoマルウェアは30以上のエクスプロイト機能を搭載して展開されており、何百万台ものIoT 、潜在的なサイバー攻撃の危険にさらされている。BotenaGoは、グーグルのオープンソースプログラミング言語である「Go」で書かれている。オープンソースのプログラミング言語を使用することには利点がありますが、攻撃者も同様に、悪意のあるマルウェアをコーディングするためにGoを使用して、その利点を利用しています。

Nozomi Networks Labsは、LilinセキュリティカメラDVRデバイスを特に標的とするBotenaGoマルウェアの新しい亜種を発見しました。このサンプルは、開発者がソースコードで使用した名前から「Lillin scanner」と命名しました:/root/lillin.go。このサンプルの機能を深く掘り下げて、この種のスキャナーがどのように動作するかを順を追って説明しましょう。

BotenaGoソースコード
図1.BotenaGoのソースコード。

2021年10月にマルウェア「BotenaGo」(図1)のソースコードが流出し、オリジナルをベースにした新たな亜種が作成されました。私たちは、BotenaGoのソースコードの一部を利用して生成された可能性のあるサンプルを監視することにしました。その結果、BotenaGoのある種の類似性を含むサンプルを発見しました。

この調査の時点では、このサンプルはVirusTotalのどのマルウェア検出エンジンによっても検出されていませんでした(図2)。このサンプルは非常に大きい(2.8 MB)ものの、Goで記述されているため、実際の悪意のあるコードの部分は非常に小さく、単一のタスクに集中しています。作者は、BotenaGoのオリジナルのソースコードに存在する30以上のエクスプロイトのほとんどすべてを削除し、2年以上前の別の脆弱性を悪用するためにいくつかの部分を再利用しました。これが、このサンプルが今まで検出されなかった理由かもしれない。

ファイルは脅威として検出されません。
図2.このファイルは脅威として検出されません。

リリン・スキャナーの機能

スキャナ/エクスプロイターを実行するには、コマンドラインにパラメータを渡す必要がある。それは、プログラムがターゲットとする各IPアドレスに接続するために使用されるポートになる。LillinスキャナーはBotenaGoと異なり、指定されたIPのバナーをチェックしない。このツールは、Shodanや他の大量スキャンツールのようなサービスを使用してLilinデバイスのリストを構築する別のプログラムと連鎖している可能性がある。

次に、サンプルは標準入力から受け取ったIPアドレスを繰り返し処理します。この部分は、オリジナルのBotenaGoソースコードから簡単に見つけることができます。これらの命令は、IPアドレス1つにつき1つのGoroutine(Goで使われるスレッドの一種)を作成し、infectFunctionLilinDvr関数を実行します。

STDINからの入力を使ってゴルーチンを作成するループ
図3.STDINからの入力を使ってゴルーチンを生成するループ。

関数名の文字列が存在し、保護機能がない(多くのマルウェア・ファミリーは少なくともUPXの修正バージョンを使用している)ことから、実際にはセキュリティ製品やリバース・エンジニアから身を守ろうとしていないことがわかる。これは、この実行ファイルは主に攻撃者が手動モードで使用することを意図しているのではないかという説を補強するものだ。

デバイスへのアクセスと脆弱性の悪用

infectFunctionLilinDvr関数はスキャンするIPアドレスを受け取ると、まずそのIPの背後にあるデバイスにアクセスできるかどうかをチェックする。Lillinスキャナーのコードには、11組のユーザー・パスワード認証情報が含まれている。これは、root/icatch99とreport/8Jg0SR8K50の認証情報のみを悪用していたとされる以前のマルウェア・サンプルとは異なる。これらの認証情報はBase64エンコードされており、リモート・コード実行(RCE)を可能にする脆弱性を悪用するために必要な基本認証で使用される。

DVRへのブルートフォースアクセスに使用される認証情報。
図4.DVRへのブルートフォースアクセスに使用された認証情報。
基本認証の試み
図5.基本認証の試み。

Lillin スキャナは 11 個のエンコードされた認証情報をループし、Authorization フィールドの Base64 文字列を変更しながら、ルートディレクトリへのアクセスを順次試みる。サーバーのレスポンスにHTTP/1.1 200またはHTTP/1.0 200という文字列が含まれている場合、認証が成功したとみなし、ネットワークタイムプロトコル(NTP)設定の脆弱性の悪用を試みます。

この脆弱性は、リリンDVRに影響を与える一連のセキュリティ脆弱性の一部であり、2020年に発見され、ベンダーによってCVSS v3.1スコア10.0(クリティカル)が割り当てられた

このスキャナーは、特に細工した HTTP POST リクエストを URL パス /dvr/cmd および /cn/cmd に送信し、ウェブインターフェースのコマンドインジェクションの脆弱性を悪用します。

まず、スキャナはURLパス/dvr/cmdにPOSTリクエストを送信してコードの注入を試みます。成功すると、このリクエストはカメラのNTP設定を変更する。変更された設定には、脆弱性のため、IPアドレス136.144.41[.]169からwget.shという名前のファイルをダウンロードし、その内容を直ちに実行しようとするコマンドが含まれています。dvr/cmdへのコマンド・インジェクションが成功しなかった場合、スキャナはエンドポイント/cn/cmdに同じ攻撃を試みます。

攻撃が完了すると、同じエンドポイントへの別のリクエストが元のNTPコンフィグレーションを復元する。

注入されたwgetコマンドによるPOSTリクエスト
図6.注入されたwgetコマンドによるPOSTリクエスト。

wget.shファイルは、136.144.41[.]169から複数のアーキテクチャの複数の実行ファイルを再帰的にダウンロードする。対象となるアーキテクチャは、ARM、Motorola 68000、MIPS、PowerPC、SPARC、SuperH、x86である。

wget.shファイルの内容
図7.wget.shファイルの内容。

マルウェア「Mirai」ファミリー

この攻撃の第3段階では、各アーキテクチャに対応した複数の悪意のあるサンプルがカメラ上で実行を試みます。これらのサンプルは、IoT デバイスに対する脅威として広く知られている Mirai マルウェア ファミリーに属しています。これらのサンプルはすべて、最近(2022年3月初旬)VirusTotalに提出されたものです。たとえば、MIPSアーキテクチャの場合、2つのサンプルがMiraiファミリーに接続された第3段階として特定されています:

  • ae0185189e463c6abddf8865972dac72630b6e515e79d3f7566f0983a0eae295
  • 28f50f24c930b595f88257748f62d985436ecce1330ff52f09cdd13642591450
TVirusトータルグラフ
図8.2つのELFサンプルとwget.shファイルに含まれるwgetリクエストの接続を示すTVirusTotalグラフ。

x86アーキテクチャの場合、ファイル62ef086111b6816d332e298d00ac946c11fac0ed8708fa2668ad3c91ceb96dbfがダウンロードされ、実行されます。このサンプルを分析すると、Miraiマルウェアの典型的な動作がいくつか明らかになります。たとえば、新しいデバイスをスキャンする際、Miraiは通常、ハードコードされた認証情報のリストを使用して認証をブルートフォースします。図9では、ブルートフォースに使用される認証情報の非網羅的なリストが示されています。このリストはMiraiのソースコードから来ています。

ハードコードされた認証情報の非網羅的リスト
図9.ソースコードからMiraiマルウェアが使用するハードコードされた認証情報の非網羅的リスト。

ダウンロードしたサンプルの静的解析から、スキャン・モジュールで使用されている認証情報のリストを取得したが、その多くはMiraiのソースコードにハードコードされているものと同じであった。

サンプルのコードの一部
図10.サンプル62ef086111b6816d332e298d00ac946c11fac0ed8708fa2668ad3c91ceb96dbfのコードの一部で、ソースコードにハードコードされているのと同じ認証情報を使用しています。

Miraiボットネットに関連するもう1つの動作は、米国国防総省(DoD)、米国郵政公社(USPS)、ゼネラル・エレクトリック(GE)、ヒューレット・パッカード(HP)などの内部ネットワークに属するIPレンジを除外することである。Miraiのソースコードから引用した図11には、その一部が示されている。

IPレンジの一部
図11.スキャン中に除外されるソース・コードに記載されたIP範囲の一部。

私たちが分析しているサンプルでは、同じIP範囲がスキャン手順から除外されている。さらに、ランダムに生成されたIPの検証は、Miraiのソースコードに実装されているものと同じアルゴリズムに従っていることがわかります。

スキャンするIPを生成する際に、一部のIP範囲を除外したサンプルコードの一部
図12.スキャンするIPを生成する際に、一部のIP範囲を除外したサンプルコードの一部。

このツールは、BotenaGoマルウェアのコードベースを使って素早く構築されたようだ。このツールの主な目的は、入力として提供されたIPアドレスのリストを用いて被害者をMirai実行ファイルに感染させることであるため、ワームと混同してはならない。

結論

完全に新しいプロジェクトに取り組む以外にも、攻撃者は新しいマルウェアを構築するために、すでに利用可能なコードを再利用することも一般的です。このようなプロジェクトの進化を監視することで、より強固で汎用的な検出機能を作成し、より長期間にわたってプロアクティブな状態を維持することができます。