トレンドマイクロの「telfhash」でLinux IoTマルウェアをクラスタリングする

「モノのインターネット(Internet of things, IoT)」は、急速に私たちの日常生活に欠かせない存在になっています。個人のモバイル端末をはじめ家庭やオフィス、車の中、工場や町のいたるところに存在するIoTデバイスは、人々の生活を効率的で便利にしています。そのため、IoTの導入が増え続けているのも不思議ではありません。2019年には、公表されているIoTプラットフォームの数は620に増加しました。これは、2015年のプラットフォームの数の2倍です。今年2020年には、世界中で310億のIoTデバイスが利用されることが予想されています。それに伴い、サイバー犯罪者はネット恐喝などの悪質な目的から、バックドアやボットネットなどのIoTマルウェアを開発しています。トレンドマイクロの2019年年間セキュリティラウンドアップでも報告されているように、2019年にIoTボットネットによって実行されたブルートフォースによるログインの数は、2018年の3倍に跳ね上がっています。

これまで攻撃の中心だったWindows環境のマルウェアと戦う効果的な手段として、サイバーセキュリティのリサーチャは、大量の不正ファイルを迅速かつ正確に識別するためのさまざまな有用なアルゴリズムを開発してきました。その一方で、現在急激に増加しているIoTデバイスで使用されているLinuxの脅威については、まだ開発途上の部分があることは否めません。この課題に対処するために、トレンドマイクロは、Linuxで実行されるIoTデバイスを標的とするマルウェア、つまり、「Linux IoTマルウェア」の効率的な識別のために、Linuxの実行ファイル形式であるExecutable and Linkable Format (ELF)ファイルを効果的にグループ化(クラスタリング)することのできる、オープンソースのクラスタリングアルゴリズム「トレンドマイクロELFハッシュ(telfhash)」を作成しました。 telfhashはすでにGithubで公開されており、Apache License 2.0の条件で使用可能です。

■クラスタリングのための既存のアルゴリズム

長年かけてマルウェアのリサーチャたちによって作成された大量の不正ファイルを効率的かつ正確にクラスタリングするためのアルゴリズムの一例として、トレンドマイクロ独自の「Trend Micro Locality Sensitive Hash(TLSH)」があります。これは、元のハッシュ値に近い値をとるファジーハッシュ(fuzzy hashing)の手法一つで、ファイルの類似性ではなく局所性に注目してホワイトリストの機械学習拡張機能に使用することが可能です。2018年には、TLSHを使用して200万個の署名されたファイルを解析し、Browsefoxと呼ばれるアドウェアプラグインによる大規模な証明書署名の悪用について明らかにしました。

もう一つの例は、インポートハッシュ(ImpHash)です。これは主に、同じマルウェアファミリに属するマルウェアのバイナリの識別に使用されます。インポートディレクトリからPE(Portable Executable)ファイルのインポートされた関数とその関連ライブラリ名を取得し、コンマで区切られたリストを作成することにより、類似のマルウェアファイルを解析します。その後、リストはMD5チェックサムアルゴリズムを使用してハッシュ化されます。図1に示す例では、感染端末から機密情報を窃取するマルウェアの亜種「Lokibot」の検体を使用し、ImpHashの仕組みを説明しています。

図1:インポートディレクトリに表示される、Lokibotの検体からインポートされた関数

この検体は、KERNEL32.DLLライブラリから、GetTempPathA()、GetFileSize()、GetModuleFileNameA、その他の関数をインポートします。インポートされたすべてのライブラリからインポートされた関数は、ImpHashの生成時に考慮されます。この方法では、新しいデータが追加されているかどうかに関係なく、マルウェア作成者が新しい関数を使用して機能を変更したり、以前に使用した関数を削除したりしない限りは、類似のファイルは同じImpHash値を持つことになります。

Windows PEファイルに使用できるアルゴリズムは多数ありますが、ELFファイルを使用して作成されることの多いLinux IoTマルウェアのためのクラスタリングアルゴリズムは存在していないという課題がありました。このような背景から、telfhashは作成されました。telfhash はELF実行ファイルの解析にImpHash技術を使用しているため、「IoTマルウェアのためのImpHash」と見ることもできます。

telfhashの仕組み

telfhashの目的は、ELFファイルのインポートされた関数を作成し、それらを使用して類似ファイルをクラスタリングするための類似ダイジェストアルゴリズムを提供することでした。以下は、telfhashがどのように使用されるかを示す動画です。

ImpHashの技術に基づいてはいますが、telfhashはハッシュにMD5ではなくTLSHを使用します。これは、関数リストをアルゴリズムの入力として使用するという構造的アプローチを失うことなく、TLSHの局所性に敏感な性質を利用するためです。したがって、マルウェアの作成者が新しいライブラリ機能を追加またはインポートして、マルウェアに新しい機能を追加した場合でも、telfhash関数は元の状態に近い状態を維持し、マルウェア検体が同じファミリに属しているかどうかを推測します。

telfhashが実際のマルウェアで動作するかどうかを確認するために、トレンドマイクロでは、LinuxのIoTデバイスに感染し、分散型サービス拒否(DDoS)攻撃を実行するためにデバイスを侵害したボットネット「Momentum」の検体を収集し、それらに対してtelfhashを実行しました(図2)。

図2:さまざまなアーキテクチャ用にコンパイルされたボットネットMomentumの検体

telfhashとTLSH距離測定(しきい値50に設定)を使用することにより、ボットネットMomentumの検体を、3つの類似グループにクラスタリングすることができました(図3)。

図3: 3つのグループにクラスタリングされたMomentumの検体(telfhash値は編集済み)

2020年4月20日現在、telfhashは、IoTマルウェア検体の大部分をカバーするアーキテクチャであるx86、x86-64、ARM、MIPSをサポートしています。

telfhashはすでにGithubで公開されています。ELFファイルの類似ダイジェストを生成するためPythonスクリプトに簡単に統合できるように、Pythonライブラリとして提供しています。サイバーセキュリティコミュニティのサポートを得ることによってelfhashの新しい機能が討議され、改善が加えられ、バグが修正されていくであろうことを期待しています。Linux IoTマルウェアとの戦いにおいてtelfhashが不可欠なツールであることが証明されることを願っています。

telfhashの開発経緯および機能詳細については、「Telfhash: An Algorithm That Finds Similar Malicious ELF Files Used in Linux IoT Malware」(英語情報)もご参照ください。

参考記事:

翻訳: 室賀 美和(Core Technology Marketing, Trend Micro™ Research)