ELFant in the Room – キャパ v3

code news

capa の最初の公開リリース以来、インシデント レスポンダーとリバース エンジニアはこのツールを使用して、Windows 実行可能ファイルの機能を自動的に識別してきました。最新のコードとルールセットの更新により、capa v3 は、Linux やその他の Unix ライクなオペレーティング システムで使用されるものなど、実行可能およびリンク可能な形式 (ELF) ファイルの機能も識別します。このブログ投稿では、拡張された分析とその他の改善について説明します。プロジェクトのリリース ページから capa v3 スタンドアロン バイナリをダウンロードし、 GitHubでソース コードをチェックアウトできます。

ELF ファイル形式のサポート

capa は、実行可能ファイル形式を解析し、コードを逆アセンブルし、関数内の機能を認識することによって、プログラム内の機能を見つけます。バージョン v1 および v2 では、capa は PE ファイル形式のみを認識したため、その分析は Windows プログラムに限定されていました。 Intezerの同僚のおかげで、capa は ELF ファイルを認識するようになりました!これは、このツールを使用して、Linux コンピューターを標的とするマルウェアの動作を特定できることを意味します。図 1 は、Linux で現在のユーザーをフェッチする手法を説明するルールを示しています。

code
図 1: Linux での capa ルール識別機能

Intezer が capa を活用し、改善点をコミュニティと共有していることに興奮しています。コードの更新に加えて、Intezer は 36 のキャパ ルールを提案し、偵察、永続化、ホスト インタラクション技術など、ELF ファイルのさまざまな機能を特定しました。詳細については、 Intezer のブログ投稿をお読みください。

新機能 capa Can Recognize

capa に ELF ファイルを認識するように教えたので、ルールの作成者には、さまざまなオペレーティング システム (OS)、CPU アーキテクチャ、およびファイル形式に固有の動作を見つけるようにルールを調整してもらいたいと考えました。たとえば、Windows で公開されている API は、Linux システムで見られる API とは大きく異なります。したがって、規則では、Windows と Linux でどちらのパターンを使用するかを明確に指定する必要があります。

ユーザーと貢献者から収集された議論とフィードバックに基づいて、capa のルール形式を拡張し、OS、CPU アーキテクチャ、およびファイル形式を記述できるようにしました。図 2 に示されている規則では、os 機能を使用して、Windows と Linux でネットワーク インターフェイス情報を取得するために使用される手法を区別しています。このルールは、各 OS でどの API が検出されるかについて明示されているため、人間とマシンの両方が一致するロジックを簡単に解釈できることに注意してください。

コード
図 2: os 機能を使用して OS 固有の機能を区別する capa ルール

また、CPU アーキテクチャとファイル形式を区別するために、arch (32 ビット Intel コード用の arch: i386 など) および format (ELF ファイル用の format: elf など) 機能も追加しました。これらと capa のルール構文の詳細については、GitHub のルール形式のドキュメントを参照してください。

残念ながら、これらの新機能を備えたルールは、古いバージョンの capa と後方互換性がありません。したがって、キャパのインストールをアップグレードして、強化されたルールを利用することをお勧めします。

部分文字列の特徴

多くのルールを読みやすくするために、substring という名前の便利な機能を追加しました。この機能は、暗黙の先頭および末尾のワイルドカードを使用したリテラル文字列の一致のように機能します。これにより、/.ssh/id_rsa などのファイル パス コンポーネントの照合が容易になります。以前は、ユーザーは部分文字列をスラッシュで囲み、特殊文字をバックスラッシュでエスケープする必要があり、文字シーケンスがほとんど理解できませんでした。現在、部分文字列機能は、より長い文字列の一部として見つかったリテラル文字列を明確に記述しています。図 3 は、部分文字列の特徴を読み取るのがいかに簡単かを示しています。

コード
図 3: 部分文字列を記述する古いスタイルと新しいスタイルの方法

図 4 は、部分文字列機能を使用して Linux 上の永続化場所を記述する capa ルールを示しています。

コード
図 4: 部分文字列機能を使用して Linux システムでの永続性を識別する capa ルール

結論

最新の改善により、ELF ファイル分析サポートが capa に追加され、そのルールがさらに表現力豊かになります。コミュニティ、特に Intezer の継続的なサポートに感謝します。私たちはこのコラボレーションを気に入っており、将来の機会に期待しています。 v3 capa リリースには、バグ修正、IDAPython プラグインcapa explorerの改善、および 50 を超える新しいルールも含まれています。すべての更新の詳細については、キャパ変更ログを参照してください。

新しい capa リリースは、リリース ページPyPIで入手できます。 capa のコードルールは GitHub で入手できます。質問やフィードバックがある場合は、それぞれのリポジトリで問題またはディスカッションを開いてください。

参考: https ://www.mandiant.com/resources/blog/elfant-in-the-room-capa-v3

Comments

Copied title and URL