所有 PhishER 规则必须遵循“另一个递归或荒谬首字母缩写 (YARA)”规则逻辑来处置消息。您可使用 YARA 规则,根据所含附件、潜在 CEO 欺诈等处置消息。本指南提供了 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 欺诈规则
若想创建 YARA 规则来识别潜在的 CEO 欺诈意图,请使用以下截图和代码块中的示例规则:
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 培训电子邮件规则
若想创建 YARA 规则来检测 KSAT 控制台所发送的全部培训通知电子邮件,请使用以下截图和代码块中的示例规则:
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
}
不存在规则
您可创建 YARA 规则,检测已选定 PhishER 目标是否不存在某个值。要创建此规则,可使用以下截图和代码块中的示例规则:
rule notPresent
{
strings:
$a = "KnowBe4" nocase
condition:
(not $a) and (filesize > 0)
}
要使用此规则,您需要在规则的条件中添加特殊变量 filesize。filesize 变量会检查已选定目标是否为空。如果您收到含纯文本正文和 HTML 正文的电子邮件,这个流程会十分有用,因为纯文本正文可以为空,而 HTML 正文则可包含您的字符串。如果没有 filesize 变量,电子邮件可能会将“不存在”规则匹配错误。
最常见正则表达式表格
正则表达式,简称 regex,是一种字符序列,用于识别文本字符串中的模式。如需了解 PhishER 的 YARA 规则中常用的正则表达式,请参见下表。有关正则表达式的更多信息,请参阅 YARA 的编写 YARA 规则文档。
| 操作符和修改符 | 说明 |
|---|---|
| \n |
此正则表达式为转义序列,用于换行。 |
| . | 此正则表达式为元字符,用于匹配任何字符或符号。 |
| {n, m} |
此正则表达式为量词,用于查找由 n 和 m 表示的多个字符之间的匹配项范围。此正则表达式可用于识别字符串的匹配段。
注意:您可在任何字符后面使用 {n,m} 正则表达式。请见以下示例:
|
| | | 此正则表达式为元字符,表示交替操作符,类似于 OR 操作符。此正则表达式会在多个可用正则表达式中查找一个匹配项。 |
| * | 此正则表达式为量词,用于查找零个或多个匹配项。 |
| ? | 此正则表达式为量词,用于查找零个或一个匹配项。 |
const name = "Chris Coyier"; console.log(name);






