全てのPhishERルールは、メッセージを処理するときにYARA(Yet Another Recursive/Ridiculous Acronym)ルールの論理に従う必要があります。YARAルールを使用すると、添付ファイルの有無やCEO詐欺の可能性などに基づいてメッセージを処理できます。この記事では、YARAルールの一般的な使用例について紹介します。これらのYARAルールを作成し、PhishERプラットフォームで使用することができます。YARAルールの記述方法については、「YARAルールの記述方法」の記事または「YARAルール」の動画を参照してください。
添付ファイルルール
メールに何らかのタイプの添付ファイルが含まれているかどうかを検出するYARAルールを作成する場合は、以下のスクリーンショットとコードブロックにあるルールの例を使用できます。
rule Attachments
{
strings:
$Attachment = "X-Attachment-Id"
condition:
$Attachment
}
このルールでは、特定の添付ファイルのタイプを検出できません。特定の添付ファイルのタイプを検出するルールを作成する場合は、以下のスクリーンショットとコードブロックのルールの例を参照して使用できます。
rule Attachments {
strings:
$doc = ".doc"
$htm = ".htm"
$exe = ".exe"
$pdf = ".pdf"
$excel = ".xlsx"
$ics = ".ics"
$png = ".png"
$jpg = ".jpg"
$gif = ".gif"
condition:
any of them
}
ソフトウェアの自動送信メールルール
ソフトウェアの自動送信メールを検出するYARAルールを作成する場合は、以下のスクリーンショットとコードブロックにあるルールの例を使用できます。
rule Automated_SoftwareEmails
{
strings:
$ = /(\n|\r)From:.{0,200}[Salesforce].{0,200}</ nocase
$ = /(\n|\r)Subject:.{0,200}[Salesforce]/ nocase
$ = /(\n|\r)From:.{0,200}[HubSpot].{0,200}</ nocase
$ = /(\n|\r)Subject:.{0,200}[HubSpot]/ nocase
condition:
any of them
}
このルールを有効にするには、括弧内のテキストをソフトウェアの名前に置換する必要があります。自社で使用している、またはメールを受け取る可能性が高いソフトウェアの名前を使用することをお勧めします。
CEO詐欺ルール
CEO詐欺の可能性を特定するYARAルールを作成する場合、以下のスクリーンショットとコードブロックにあるルールの例を使用できます。
rule CEO_Fraud
{
strings:
$FromEmail = /From:.{0,20}\<[yourCEO@example.com]\>/ nocase
$FromName = /From:.{0,20}[yourCEO].{0,20}<.{5,100}>/ nocase
$FromNameEmail = /From:.{0,20}[yourCEO].{0,20}\<[yourCEO@example.com]\>/ nocase
$Reply = /Reply-To:.{0,20}/ nocase
$ReplyEmail = /Reply-To:.{0,20}\<[yourCEO@example.com]\>/ nocase
$ReplyName = /Reply-To:.{0,20}[yourCEO].{0,20}\</ nocase
$ReplyNameEmail = /Reply-To:.{0,20}[yourCEO].{0,20}\<[yourCEO@example.com]\>/ nocase
condition:
($Reply and $FromNameEmail and not $ReplyNameEmail)
or ($Reply and not $FromNameEmail and $ReplyNameEmail)
or ($Reply and $FromEmail and not $ReplyEmail)
or ($Reply and not $FromEmail and $ReplyEmail)
or ($FromName and not $FromEmail)
or ($ReplyName and not $ReplyNameEmail)
}
このルールを使用する場合、[yourCEO@example.com]プレースホルダの各インスタンスをCEOのメールアドレスに置換する必要があります。また、[yourCEO]プレースホルダーの各インスタンスを、CEOの名前に置換する必要があります。
社内送信者ルール
なりすましメールではないドメインからのメールを識別するYARAルールを作成する場合、以下のスクリーンショットとコードブロックにあるルールの例を使用できます。
rule InternalSender
{
strings:
$a = /from:.{0,60}@domain.com/ nocase
$b = /Return-Path:.{0,60}@domain.com/ nocase
$c = "header.from=domain.com"
$d = /Authentication-Results:.{0,20}spf=pass/ nocase
condition:
all of them
}
KnowBe4トレーニングメールルール
KSATコンソールからの全てのトレーニング通知メールを検出するYARAルールを作成する場合、以下のスクリーンショットとコードブロックにあるルールの例を使用できます。
rule KnowBe4_TrainingEmails
{
strings:
$ = /Return-Path:.{0,50}psm.knowbe4.com>/ nocase
$ = /Received:.{0,50}(147.160.167.\d{1,3})/ nocase
$ = /Received:.{0,50}(23.21.109.197)/ nocase
$ = /Received:.{0,50}(23.21.109.212)/ nocase
$ = /Received:.{0,50}psm.knowbe4.com/ nocase
condition:
any of them
}
値が存在しない場合のルール
選択したPhishERターゲットに値が存在しないかどうかを検出するYARAルールを作成できます。このルールを作成するには、以下のスクリーンショットとコードブロックにあるルールの例を使用します。
rule notPresent
{
strings:
$a = "KnowBe4" nocase
condition:
(not $a) and (filesize > 0)
}
このルールを使用するには、ルールの条件に特別な変数であるfilesizeを含める必要があります。filesize変数は、選択したターゲットが空かどうかをチェックします。テキストの本文とHTMLの本文を持つメールを受信した場合、一方の本文は空でも、もう一方の本文には文字列が含まれている可能性があるため、この処理を活用することができます。filesize変数がないと、notPresentルールに誤って一致する可能性があります。
最も一般的な正規表現の表
正規表現(regex)とは、テキスト文字列のパターンを識別するために使用される文字の並びです。PhishERのYARAルールでよく使われる正規表現については、以下の表を参照してください。正規表現の詳細については、YARAの「YARAルールの記述」のドキュメントを参照してください。
| 演算子および修飾子 | 詳細 |
|---|---|
| \n |
この正規表現は、改行を見つけるエスケープシーケンスです。 |
| . | この正規表現は、任意の文字や記号と一致するメタ文字です。 |
| {n, m} |
この正規表現は、nとmで示される文字数と一致する範囲を見つける数量詞です。この正規表現は、文字列の一致するセグメントを識別するために使用されます。
注:任意の文字に続けて{n,m}の正規表現を使用できます。以下の例を参照してください。
|
| | | この正規表現は、OR演算子のような選択演算子を示すメタ文字です。この正規表現は、適用できる複数の正規表現の中から一致するものを探します。 |
| * | この正規表現は、ゼロ回以上の一致を探す数量詞です。 |
| ? | この正規表現は、ゼロまたは1回の一致を探す数量詞です。 |
const name = "Chris Coyier"; console.log(name);






