はじめに
このドキュメントでは、WindowsでClamAV sigtool.exeを使用してカスタム検出 – 高度を作成する方法について説明します。
高度なカスタム検出について
高度なカスタム検出は、従来のウイルス対策シグニチャと同様ですが、ユーザが作成します。マルウェアやその他のファイルベースの脅威を検出するために、ClamAVはシグニチャを使用して、クリーンなファイルと悪意のあるファイルまたは不要なファイルを区別します。ClamAVシグニチャは主にテキストベースで、特定の検出方法に関連付けられたClamAV固有のシグニチャフォーマットのいずれかに準拠します。これらのシグニチャは、ファイルのさまざまな側面を検査でき、異なるシグニチャフォーマットを持ちます。使用可能なシグニチャ形式の一部を次に示します。
・ MD5シグニチャ
・ MD5、PEセクションベースのシグニチャ
・ファイル・ボディ・ベースのシグネチャ
・拡張シグネチャ形式(オフセット、ワイルドカード、正規表現)
・論理シグニチャ
・アイコンシグニチャ
ClamAVプロジェクトは、CVD(ClamAV Virus Database)ファイルの形式でシグニチャのコレクションを配布します。CVDファイル形式は、署名をカプセル化し、悪意のあるサードパーティによって署名が変更されないようにする、デジタル署名されたコンテナを提供します。このシグニチャセットはCisco Talosによってアクティブに維持され、ClamAVに付属するfreshclamアプリケーションを使用してダウンロードできます
ClamAVが選ばれる理由
次の例のように、SHA256ハッシュでは検出できない複雑な検出/ファイル属性を照合するために、ACDを使用します。
本文ベースの署名コンテンツ形式
ClamAVは、ClamAV YARAルールのサポートを除き、すべての本文ベース(コンテンツベース)のシグニチャを16進形式で保存します。 16進数シグニチャとは、マルウェアの本体のフラグメントを16進数の文字列に変換し、さまざまなワイルドカードを使用して追加拡張できることを意味します。
論理シグニチャでは、論理演算子を使用して拡張形式で複数のシグニチャを組み合わせることができます。より詳細で柔軟なパターンマッチングを提供できます。
拡張シグニチャフォーマットは、元の.dbデータベース形式が廃止されたため、本文ベースのシグニチャの最も基本的なタイプであるClamAVです。
拡張信号により、ファイルの「ターゲット・タイプ」、ウイルス・オフセット、エンジン機能レベル(FLEVEL)などの16進数の内容以外にも追加情報を指定できるため、検出の信頼性が向上します
フィッシングシグニチャ
ClamAVは、表示テキストが実際のURLとは異なるドメインのURLである場合に不審に見えるHTMLリンクを検出できます。残念ながら、会社がWebサービスを契約し、HTMLリンク表示テキストを使用して会社のWebサイトへのリンクのように見せることは、非常に一般的です。この方法は一般的であるため、ClamAVは一般的にフィッシングキャンペーンの対象になっている特定のWebサイトのフィッシングチェックのみを行います
バイトコードシグニチャ
バイトコードシグニチャは、ファイル抽出のさまざまな段階でサンプルコンテンツを解析するCコードを記述することによって、より複雑な照合を実行できる手段です。
コンテナメタデータに基づくシグニチャ
ClamAV 0.96では、特定の条件を満たす異なるコンテナタイプ内に格納されたファイルに一致する汎用シグニチャを作成できます。シグニチャの形式は次のとおりです。
VirusName:ContainerType:ContainerSize:FileNameREGEX:
FileSizeInContainer:FileSizeReal:IsEncrypted:FilePos:
Res1:Res2[:MinFL[:MaxFL]]
対応するフィールドは次のとおりです。
VirusName:シグニチャが一致したときに表示されるウイルス名。
ContainerType:ターゲットファイルを含むファイルの種類。例:
CL_TYPE_ZIP、
CL_TYPE_RAR、
CL_TYPE_ARJ、
CL_TYPE_MSCAB、
CL_TYPE_7Z、
CL_TYPE_MAIL、
CL_TYPE_POSIX_TAR,
CL_TYPE_OLD_TAR、
CL_TYPE_CPIO_OLD,
CL_TYPE_CPIO_ODC、
CL_TYPE_CPIO_NEWC、
CL_TYPE_CPIO_CRC
等。
このドキュメントでは、ハッシュシグニチャを中心に説明します。
注:ClamAVのシグニチャを作成する最も簡単な方法は、ファイルハッシュチェックサムを使用することですが、この方法は静的マルウェアに対してのみ使用できます。
注意:このドキュメントの情報は、ClamAVの新しいリリースで変更される可能性があることに注意してください。ClamAVの公式ガイドと常に関連付けて確認してください。
シグニチャ形式の詳細については、ClamAV Webサイトを参照してください。
これらのシグニチャは、エンドポイントにダウンロードされるファイルにコンパイルされます。高度なカスタム検出を作成するには、Outbreak Control > Advancedの順に選択します。Create Signature Setをクリックして新しいAdvanced Custom Detectionセットを作成し、それに名前を付けて、Createをクリックします。
高度なカスタム検出セットを作成したら、Editをクリックして、Add Signatureリンクを表示します。署名の名前を入力し、[作成]をクリックします。
すべてのシグニチャがリストされたら、Build a Database from Signature Setを選択します。不要な署名を誤って追加した場合は、[削除]をクリックして削除できます。
警告:シグニチャを追加または削除する場合は、「シグニチャセットからデータベースを構築」をクリックする必要があります
注:ファイルの高度なカスタム検出を作成する場合、1時間のキャッシュが必要になります。ファイルが高度なカスタム検出セットに追加されると、検出が有効になるまでにキャッシュ時間が経過する必要があります。たとえば、不明なファイルがキャッシュされてから5分後に高度なカスタム検出を追加すると、その検出は55分間有効になりません。
警告:高度なカスタム検出は、性質が不明なファイルに対してのみ機能します。
カスタム検出の作成方法 – sigtool.exeによる高度な検出
ステップ1:まず、ClamAV Webサイトのダウンロードに移動してsigtoolを取得する必要があります
私の場合、ZIPパッケージclamav-1.1.0.win.x64.zipをダウンロードします。
ステップ2:ファイルを目的の場所に解凍します。私の場合、C:/ClamAVを使用しました
強調表示されたフォルダとファイルに注意してください。
clamscan.exe:ファイルやディレクトリのウイルスのスキャンに使用するコマンドラインツールです。clamdscanとは異なり、clamscanは動作するためにclamdインスタンスを実行する必要はありません。その代わり、clamscanは新しいエンジンを作成し、実行のたびにウイルスデータベースにロードします。コマンドラインで指定されたファイルやディレクトリをスキャンし、スキャンレポートを作成して終了します。
sigtool.exe:シグニチャを作成およびフォーマットし、*.hdbファイルに書き込むツール。hdb拡張モジュールはハッシュベースの署名を参照します。 sigtoolはlibclamavを取り込み、clamscanが舞台裏で行うタスクを行うためのショートカットを提供します。これらは、シグニチャを書く場合や、FPまたはパフォーマンスの問題を引き起こす可能性があるシグニチャに関する情報を取得する場合に非常に便利です。
VirusVault:これは、カスタムシグニチャを作成するファイルをドロップするために作成した独自のフォルダです。
VirusRV.hdb:このファイルにはフォーマットされたシグニチャが含まれています。このファイルにVirusRVという名前を付けましたが、任意の意味のある名前を使用できます。
ステップ3a:CMD行を起動し、ClamAVを解凍した場所に移動します。
ステップ3bこの行を実行します。
C:\ClamAV>sigtool —md5 location-of-the-custom-file > name-of-the-output-file.hdb
名前を変更し(デフォルトではsigtoolはファイル名を使用します)、*.hdbファイル内に配置することができます。単一のデータベースファイルには、任意の数のシグニチャを含めることができます。clamscan/clamdが起動するたびに自動的にロードされるようにするには、データベースファイルをローカルウイルスデータベースディレクトリ(例: /usr/local/share/clamav)にコピーします。
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\TestVirusRV.exe > VirusRV.hdb
これにより、この場合はTestVirusRV.exeという名前のファイルのシグニチャが作成され、VirusRV.hdbという名前のファイルにシグニチャが書き込まれます
注:SHA値に基づいてシグニチャを作成する場合、対応するファイルは*.hsbとして保存されます
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\TestVirusRV.exe > VirusRVsha256.hsb
注意:ハッシュベースのシグニチャは、テキストファイル、HTML、およびパターンマッチングの前に内部的に前処理される他のデータには使用しないでください。このような場合に本当にハッシュ署名を使いたいなら、—debugと – leave-tempsを指定してclamscanを実行し、/tmpに残された前処理されたファイルに対して署名を作成します。ターゲットファイル内の1バイトが変更されると、ハッシュ署名の照合が直ちに停止されることに注意してください。その他の情報については、ここを参照してください
次のsigtoolフラグは、シグニチャの記述に特に便利です。
—md5 / —sha1 / —sha256:MD5/SHA1/SHA256ハッシュを生成し、ファイルサイズを計算し、両方を適切な形式の.hdb/.hsbシグニチャとして出力する
シグニチャ名
ClamAVシグニチャは、英数字、ダッシュ(-)、ドット(.)、アンダースコア(_)のみを使用して単語を区切る必要があります。スペース、アポストロフィ、コロン、セミコロン、引用符は使用しないでください。
正式なシグニチャデータベースにあるClamAVシグニチャ名は、一般に次の形式を使用します。
{platform}.{category}.{name}-{signature id}-{revision}
サードパーティデータベースの命名規則はさまざまです。公式データベースのシグニチャの命名に関するCisco-Talosのガイドラインは、こちらから入手できます。
ヒント:私の場合はVirusVaultという名前で作成したディレクトリ内のファイルに複数のシグニチャを作成する場合は、ワイルドカードを使用してコマンドを実行できます。この場合、私は次のように自分のアカウントを実行しました。
C:\ClamAV>sigtool —md5 C:\ClamAV\VirusVault\wildcard\ > VirusRV.hdb
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\*\ > VirusRV.hdb
ディレクトリVirusVaultにある各ファイルに対してシグニチャを作成しました。
ステップ4:次のコマンドを実行して、シグニチャを確認します。
C:\ClamAV>clamscan -d VirusRV.hdb C:\ClamAV\VirusVault\TestVirusRV.exe
すべてのシグニチャを確認するために、ワイルドカードマスクを再度使用できます。
C:\ClamAV>clamscan -d VirusRV.hdb C:\ClamAV\VirusVault\*\
ステップ5:新しく作成した*.hdbファイルを開き、作成したシグニチャをコピーしてから、Outbreak Control > Advancedの下のセキュアエンドポイントコンソールに移動します。Editをクリックすると、Add Signatureリンクが表示されます。
ステップ6:Build a Database from Signature Setをクリックしてから、新しいカスタム検出をポリシーに適用します。
ステップ7:エンドポイントでポリシーを同期し、手動スキャンで新しいシグニチャをテストします。次のような結果が表示されます。
手動スキャン
セキュアエンドポイントコンソールでの検出
拡張されたイベント
Secure Endpoint Consoleにシグニチャを保存するための要件
MD5ハッシュしかなく、ファイルのサイズがわからない場合でもシグニチャセットを作成できますが、次のルールを使用する必要があります。
A: MD5にはすべて大文字を含めることはできません
正しいMD5ハッシュ:
5b852928a129d63dc5c895bd62cf2ab7
不正なMD5ハッシュ:
5B852928A129D63DC5C895BD62CF2AB7
セキュアエンドポイントコンソールでエラーが発生しました。すべて大文字です。
B:名前には大文字を使用する必要があります。名前には自分の名前を使用できます。
正しい名前:
Dmランチャ.msi
名前が正しくありません:
dm-launcher.msi
C:サイズにはワイルドカードを使用できますが、最小FLEVELには:73を使用する必要があります
正しいワイルドカード:
5b852928a129d63dc5c895bd62cf2ab7:*:dm-launcher.msi:73
不正なワイルドカード:
5b852928a129d63dc5c895bd62cf2ab7:*:dm-launcher.msi
セキュアエンドポイントコンソールで、小文字の名前はすべてエラーです。FLEVELが指定されていません。
注:サイズが不明なハッシュシグニチャ:ClamAV 0.98では、サイズが不明だがハッシュが不明なハッシュシグニチャのサポートも追加されています。特定のサイズのシグニチャを使用する方がはるかにパフォーマンス効率が高いため、この機能を使用する際には注意が必要です。このような場合は、サイズフィールドに「*」文字を使用できます。旧バージョンのClamAVとの下位互換性を適切に保つには、これらのシグニチャの最小機能レベルが73以上である必要があります。このレベルが設定されていないワイルドカードサイズを使用するシグニチャは、不正として拒否されます。