BPFdoor: Stealthy Linux malware bypasses firewalls for remote access
2022/05/12 BleepingComputer — 最近になって発見された BPFdoor (Berkeley Packet Filter) というバックドア・マルウェアは、5年以上も気づかれることなく、こっそりと Linux や Solaris システムを標的にしてきた。BPFdoor は、Linux/Unix のバックドアであり、脅威アクターは Linux シェルにリモートで接続し、侵害したデバイスに対する完全なアクセスを得るようになる。このマルウェアは、ポートを開く必要がなく、ファイアウォールで止めることもできず、Web 上のあらゆる IP アドレスからのコマンドに応答できるため、企業スパイなどの継続的な攻撃にとって最適なツールとなっている。
Magic パケットの解析
BPFdoor は、受動的なバックドアであり、1つ以上のホストからの着信パケットを、1つ以上のポートでリッスンする。それを利用する攻撃者は、侵入先のネットワークに対して、リモートでコマンドを送信できる。このマルウェアは、Berkeley Packet Filter (BPF) のスニッファを使用しており、ネットワーク層のインターフェースで動作し、すべてのネットワーク・トラフィックを確認でき、任意の宛先にパケットを送信できる。このように、BPFdoor は低位のレイヤに位置するため、いかなるファイアウォール・ルールにも従わない。
BPFdoor には、Linux と Solaris SPARC のバージョンがあるが、BSD にも移植可能であることを、Sandfly Security の創立者 Craig Rowland から、BleepingComputer は聞いている。BPFdoor に関するブログ記事を発表した、セキュリティ研究者である Kevin Beaumont は、マルウェア・オペレーターが Magic パスワードを使って、インプラントの動作を制御していることを明らかにした。
BPFdoor は、ICMP/UDP/TCP パケットのみを解析し、特定のデータ値の有無をチェックし、さらに UDP/TCP に関しては、パスワードもチェックする。BPFDoor が際立っているのは、それらのポートが HTTP/FTP/SSH などの正当なサービスにより使用されていても、Magic パケット用の任意のポートを監視できることだ。
TCP/UDP パケットが、正しい Magic データと、正しいパスワードを持っている場合に、このバックドアはバインドやリバースシェルをセットアップするような、コマンドを実行するために行動を開始する。

Kevin Beaumont は、「ICMP パケットにはパスワードが必要ないため、Ping 機能を使って実行中の BPFdoor インプラントを、インターネット上でスキャンすることが可能である」と述べている。Ping 機能を使えば、返信してくる IP アドレスとポートを指定できる。研究者たちは、米国/韓国/香港/トルコ/インド/ベトナム/ミャンマーなどの、さまざまな地域における組織のネットワーク上で、BPFdoor の活動が発見される。
驚くべきことに、彼は 11台の Speedtest サーバが、BPFdoor に感染していることを発見した。それらのマシンは、クローズドソース・ソフトウェアで動作しているため、感染した状況などは不明であると述べている。
ローカル・ファイアウォールを回避する
Craig Rowland は、BPFdoor に関する包括的なテクニカル・レポートの中で、このマルウェアが、いくつかの巧妙な回避策を採用していることを指摘している。
- システム・メモリに常駐し、アンチ・フォレンジック・アクションを展開する (プロセス環境を空の状態になるため失敗するが、プロセス環境は消去される) 。
- Berkeley Packet Filter (BPF) スニッファをロードし、ローカルで実行されているファイアウォールの手前で動作させ、パケットを参照する。
- 関連するパケットを受信した際に iptables ルールを変更し、ローカル・ファイアウォールを介した攻撃者の通信を許可する。
- 一般的な Linux システムのデーモンに似た名前でバイナリを偽装する。
- dev/shm/kdmtmpflush という名前に変更し実行する。
- バイナリを削除する前に、バイナリの日付を 2008年10月30日に変更する (timestomping) 。
Rowland は、このアンチ・フォレンジック手法としての timestomping について、攻撃者が削除に失敗した場合に備えた、バイナリ保護の可能性があると考えている。つまり、偽の日付の目的は、システム上で新しいファイルを探す検索から、マルウェアを隠すことにあるようだと述べている。ファイアウォール・ルールを変更することが重要なのは、ファイアウォールが疑わしいと判断できないトラフィックを介して、攻撃者がバックドアと通信できるようにするためである。
Rowland は、「感染したホストが特殊な BPFdoor パケットを受信すると、このマルウェアは新しいインスタンスを生成し、ローカルの iptables ルールを変更し、要求元のホストからシェルポートへのリダイレクトを実行する」と説明している。
彼は、「たとえば、このインプラントは、TCP Port 443 (暗号化された Web) を使用する攻撃者からの、すべてのトラフィックをシェルにリダイレクトできる。外部からは TLS/SSL トラフィックのように見えるが、実際には、攻撃者はシステム上でリモートルートのシェルとやり取りしている」と指摘している。
さらに詳しく説明すると、ローカル・シェルの場合に、このマルウェアは iptables の設定を変更し、攻撃者から来る全てのトラフィックを。正規のポートを通じてマルウェアで定義されたポート範囲へとリダイレクトさせると、Rowland は述べている。そうすることで、ファイアウォールの内側のシェルにルーティングさせるために、攻撃者は任意のポートでの接続を選択できるようになる。

コマンドと検出
脅威インテリジェンスとインシデントの企業である ExaTrack の Tristan Pourcelot は、BPFdoor に関する別の技術的分析びおいて、このマルウェアには、関連パケット内のコマンド文字列に一致する、いくつかのハードコード名が付属していると指摘している。
- justtryit/justrobot/justforfun:Port 42391〜42491 でバインド・シェルを確立する。
- socket/sockettcp:パケットに存在する IP アドレスへのリバース・シェルをセットアップする。
BPFdoor における検出回避テクニックの一部は、以下の選択肢を使用して、彼らのバイナリを通常の Linux デーモンとして表示するようリネームすることだ。

Pourcelot によると、この脅威アクターは BPFdoor を定期的に更新し、リリースごとにコマンド/プロセス/ファイルの名前を変更しているとのことだ。たとえば、このインプラントの新しい亜種は、コマンド・キーワードの使用から MD5 ハッシュへの切り替えを行い、おそらく些細な検出を回避しようとしたのだろう。
現時点において、Virus Total スキャン・プラットフォームで検出されている BPFdoor のバージョンは少なくとも 21種類もあり、最も古いものは 2018年8月に検出されたものである。
このインプラントの検出率は、Beaumont/Rowland/Pourcelot が調査結果を発表した後に向上したが、このマルウェアは長期間において、その存在を隠し続けてきた。2019年の Solaris 向けの BPFdoor 亜種は、少なくとも 2022年5月7日まで検出されなかった。そして、今日になって、28種類のアンチウイルス・エンジンが、悪意のフラグを立てることになった。

いくつかのケースでは、この検出は総称的かつ不正確なものもあり、Linux バイナリではないものであっても、上記の Solaris 亜種に Linux マルウェアとしフラグが立てられている。
Tristan Pourcelot は、BPFdoor では斬新で複雑な技術を使用していないが、長期間にわたってステルス性を維持することができたと述べている。つまり、Linux 環境のマルウェア監視技術は、Windows ほど一般的ではないという事実が背景にあるのかもしれない。また、「ベンダーによる可視性は著しく低い」と、Beaumont は BleepingComputer に語っている。
Craig Rowland も、その問題の大きさには同意している。たとえ監視が行われていたとしても、Linux のマルウェアを見つけるために、探すべきものが不明確なケースや、間違った方法が採用されるケースがあるという。
マルウェアや悪意のあるファイルを探すために、暗号化ハッシュを使ってシステムをスキャンする管理者がいるようだ。しかし、ファイルのわずかな変更で、新しいハッシュが生成されるため、この方法はうまく機能しない。
Rowland は。「EDR (Endpoint Detection and Response) はエージェントをロードしたがり、それにより Linux は破壊されるので、良い選択とは言えません。そのため、人々は Linux を裸で使うことが多く、このようなことが起こり得る」と、特に古い Linux システムについて言及している。
少なくとも、分析した Linux バージョンでは、未設定の BPFdoor は単なる悪意のソフトウェアなので狩りは簡単であると、彼は述べている。

2018年の旧版 BPFdoorの ソースコードが、Nextron Systems の APT スキャナTHOR の開発者である Florian Roth により発見された。そのコードは Pastebin で、一般公開されている。
Made in China か?
BleepingComputer に対して、BPFdoor について解説してくれた研究者たちは、このマルウェアと脅威アクターの関係には言及していない。しかし、PricewaterhouseCoopers (PwC) の研究者たちは、サイバー脅威に関する年次報告書の中で、インシデント対応中に BPFdoor インプラントを発見したことを記している。
PwC は、この侵入は Red Menshen (以前のRed Dev 18) として追跡されている、中国に拠点を置く脅威アクターの仕業であり、中東とアジアの通信プロバイダ/政府/教育/物流などの分野で、BPFdoor が使用されたと考えている。
PwC の研究者たちは、Red Menshen による攻撃のポスト・エクスプロイトの段階において、Mangzamel バックドアのカスタム変種と、Gh0st リモートアクセスツール (RAT)、Mimikatz (認証情報の抽出)、Metasploit ペンテスト・スイートなどのオープンソース・ツールを用いて、Windows システム上で横移動していたことを突き止めた。
PwC は、「この脅威アクターは、有名なプロバイダにホストされている仮想プライベートサーバー (VPS) を介して、BPFDoor の犠牲者にコマンドを送信していた。それらの VPS は、脅威アクターが VPN トンネルとして使用する、台湾を拠点とする侵害済みのルーターを介して管理されていることを確認した」と述べている。
研究者たちは、Red Menshen の活動について、現地の就業時間と一致する、UTC 01:00〜10:00 の9時間で行われていることを指摘している。
文中で、「このマルウェアは、ポートを開く必要がなく、ファイアウォールで止めることもできず、Web 上のあらゆる IP アドレスからのコマンドに応答できる。BPFdoor は低位のレイヤに位置するため、いかなるファイアウォール・ルールにも従わない」と記されており、11台もの peedtest サーバが、BPFdoor に感染していることが発見されているようです。
BPF について Wikipedia を調べたところ、「Berkeley Packet Filter (BPF) は、特定のオペレーティング・システムで、特にネットワーク・トラフィックを分析する必要のある、プログラムに使用されるテクノロジである (eBPF は Linux カーネルの拡張 BPF JIT 仮想マシン)。 データリンク層への生のインターフェースを提供し、生のリンク層パケットの送受信を可能にする。BPFは、ほとんどの Unix ライクな OS で利用でき、Linux および Windows では eBPF が利用できる」と説明されていました。この BPFdoor ですが、かなり特殊で強力なマルウェアのようです。
You must be logged in to post a comment.