Sysdig Secureによるファイルレスマルウェアの検知

By 清水 孝郎 - JULY 25, 2023

SHARE:

本文の内容は、2023年7月25日にNIGEL DOUGLAS が投稿したブログ(https://sysdig.com/blog/fileless-malware-detection-sysdig-secure/)を元に日本語に翻訳・再構成した内容となっております。

今日のデジタル環境においてサイバー脅威は驚くべきスピードで進化を続けており、クラッカーは常にシステムに侵入し、機密データを侵害する新しい方法を見つけています。そのような洗練された脅威の1つにファイルレスマルウェアがあります。ファイルレスマルウェアは、ハードドライブに痕跡を残すことなく、コンピュータのメモリ内で完全に動作するステルス型の悪意のあるソフトウェアです。実行ファイルに依存する従来のマルウェアとは異なり、ファイルレスマルウェアは既存の正規プロセスを悪用するため、検出や駆除が非常に困難です。

ファイルベースのインジケータがないため、従来のアンチウイルス・ソリューションは効果を発揮できず、サイバーセキュリティの専門家にとって大きな課題となります。しかし、希望の光が見えてきました。最先端のセキュリティ・プラットフォームであるSysdig Secureは最近、ファイルレスマルウェアを検出して対処する高度な機能を導入し、この陰湿な脅威に対する強固な防御を提供しています。このブログ記事では、ファイルレスマルウェアの世界をより深く掘り下げ、その意味を理解し、Sysdig Secureがこの憂慮すべき脅威との戦いにどのような革命をもたらしているのかを探ります。

memfdから始めよう

memfd(メモリ・ファイル・ディスクリプタの略)は Linux カーネルの機能で、ディスク上に物理ファイルを必要とせずにメモリ内ファイル・オブジェクトを作成することができます。プロセスがデータやリソースを直接メモリに格納することで、共有するためのユニークな方法を提供します。この機能は、ステルス実行の可能性があるため、ファイルレスマルウェア攻撃の文脈で大きな注目を集めています。

memfdファイルはメモリ上にのみ存在し、ファイルシステムからは見えないため、攻撃者がファイルレステクニックを活用するための理想的な手段となります。memfdを利用することで、マルウェアは悪意のあるコードをメモリ内で直接実行することができ、従来のファイルベースの検出手法を回避し、痕跡を残さないようにすることができます。このためmemfdは、セキュリティ防御を回避し、ステルスかつ持続的な攻撃を実行しようとするサイバー犯罪者にとって魅力的な選択肢となっています。memfdの台頭は、ファイルレスのマルウェアの脅威を効果的に検知し、対抗できる高度なセキュリティ対策の必要性を浮き彫りにしています。

Falcoを使ってファイルレス攻撃を検知してみよう

ファイルレス攻撃は、memfd_create または memfd_secret システムコールの機能を活用することで実行できます。一旦fdが利用可能になれば、メモリ上に直接ELFファイルを書き込み、execveまたはexecveatシステムコールのいずれかを使用してバイナリを実行することができます。これらのシステムコールは、入力として提供されたポインタを使用してELFのバイトを参照し、それを実行します。その結果、fdと同じ名前のプロセス(つまり、基本的にファイル記述子の番号になります)が生成され、実行パスは空でもかまいませんが、プロセスの引数には常にEXE_FROM_MEMFDフラグが表示されます。

以下のルールは基本的に、名前がmemfdで始まるこの2種類の実行を探します:

Fileless malware with Sysdig Secure


上記のルールを有効にするには?

Sysdig SecureのManaged ‘Sysdig Runtime Threat Detection’ Policyには、新しい検知ルール ‘Fileless Malware Detected (memfd)‘ がデフォルトで含まれており、深刻度は高くなります。Sysdig Agentのバージョンを 12.15+ にアップグレードすると、このポリシーは自動的に有効になり、追加の設定ステップなしでファイルレスマルウェアを検出できるようになります。

検出をトリガーする方法

この検出ルールをトリガーするには、スクリプトが必要です。基本的には、実行可能ファイルをメモリにロードし、メモリから直接実行します。検出出力の場合、このツールを使用してPythonスクリプトを実行し、アクティビティを生成しました。このツールは、提供されたELFをメモリ上にファイルとして作成し、(tmpfsなしで)実行するインタプリタ型コードを生成します。これにより、ディスク上に痕跡を残さずにバイナリを実行することができます。

import ctypes, os, base64, zlib
l = ctypes.CDLL(None)
s = l.syscall
c = base64.b64decode(<bytes of the elf>)
e = zlib.decompress(c)
f = s(319, '', 1)
os.write(f, e)
p = '/proc/self/fd/%d' % f
os.execle(p, 'dummy', {})Code language: PHP (php)


アクティビティ監査でコンテキストを理解する

監査ログは、重要なプロセスの置き換えイベントとともに、ダウンロードが行われた証拠を提示します。共有コンテキストの場合、ファイルレス攻撃は一般的に悪意のあるバイナリをダウンロードし、そのバイナリはメモリバックされたファイル記述子に格納されます。この記述子は、ダウンロードされたバイナリを実行する手段として機能します。これらの攻撃のユニークな側面は、記述子がメモリ上にのみ存在し、ファイルシステム内に対応する存在を持たないという事実にあり、従来の防御メカニズムの多くが効果を発揮しません。このようなインシデントの正確な識別を強化するため、Sysdig Secureチームは、proc.ise_exe_from_memfdと呼ばれる新しいインジケーターを導入しました。 このフラグは、ファイルの基礎となるバッキングストレージを参照するためにメモリファイル記述子が使用されるたびに True に設定され、ファイルレスマルウェアの活動をより正確に検出できるようになります。

Fileless malware with Sysdig Secure


まとめ

ファイルレスマルウェア攻撃を効果的に検知・防御するためには、リアルタイムのシステムコール・アーキテクチャーに基づくエンドポイント保護エージェントの仕組みを構築することが重要です。ファイルベースの検知手法だけに頼っていては、このような脅威の特定は不十分です。リアルタイム・システムコール・アーキテクチャーを利用することで、エンドポイント保護エージェントは、プロセスとオペレーティング・システム間の動的な動作と相互作用を監視および分析することができます。

ファイルレスマルウェアのミティゲーションに関する詳細は、Sysdigブログをご覧ください:
https://sysdig.jp/blog/containers-read-only-fileless-malware/

Subscribe and get the latest updates