Email 我如何编写规则来检测具有随机名称、为.xls且具有特定文件大小的电子邮件附件?

Email 我如何编写规则来检测具有随机名称、为.xls且具有特定文件大小的电子邮件附件?,email,email-attachments,pcre,filesize,snort,Email,Email Attachments,Pcre,Filesize,Snort,正在尝试编写一个规则来检测进入网络的电子邮件流量,即: 发送到特定域(例如,gmail.com) 是一个.xls文件 具有名称长度最多可达75字节的文件名 是电子邮件附件,此附件是已知的特定大小且从不更改(例如,附件大小为100000字节) 请注意,我是snort的初学者。顺便说一句,到目前为止,我只做到了这一点: content:"|05|gmail|03|com|00|"; nocase; pcre:"/([a-zA-Z0-9] {1,75}\.xls)"; 不确定如何在其中获取文件大小附

正在尝试编写一个规则来检测进入网络的电子邮件流量,即:

  • 发送到特定域(例如,gmail.com)

  • 是一个.xls文件

  • 具有名称长度最多可达75字节的文件名

  • 是电子邮件附件,此附件是已知的特定大小且从不更改(例如,附件大小为100000字节)

  • 请注意,我是snort的初学者。顺便说一句,到目前为止,我只做到了这一点:

    content:"|05|gmail|03|com|00|"; nocase; pcre:"/([a-zA-Z0-9] {1,75}\.xls)";
    

    不确定如何在其中获取文件大小附件检测,甚至不确定用于检测文件名和类型的pcre位是否正确。非常感谢您的帮助。

    我从未使用过snort,但从我在文档中收集的信息来看,您的模式似乎可以这样写:

    • 如果文件名中只允许字母和数字:

    • 否则(允许文件名使用任何类型的字符):


    请注意,根据文档中的示例,模式需要包含在分隔符(此处为斜线)之间。因此,模式中的所有文本斜杠都必须转义。

    我很确定规则3可以缩短为“具有最大长度为75的文件名”,或者必须完全重写。标题似乎表明您希望检测随机文件名。如果你想办法做到这一点,我敢肯定你已经准备好了。澄清一下:卡西米尔发现的主要问题是pcre中的空间。你写的是一个字母数字字符,后跟空格(从1到75),然后是
    .xls
    。字符串,例如:
    h.xls
    。(顺便说一句,我不知道你正在使用的系统,所以我不知道如果字符串与正则表达式不匹配,它是否会返回true,但它的子字符串会匹配。)啊,谢谢你指出了关于空格的问题。我从来没有确定过分隔符的用法。我知道“/”是分隔符,但是“\”有什么用呢?看来1-3的标准已经达到了,但是有人找到了做第4项的方法吗?我当前的规则如下:警报tcp$内部1024:->$INTERNAL 25(msg:“恶意电子邮件附件”;流:已建立,到服务器;内容:“
    /
    是分隔符,为了避免歧义,所有的
    /
    文本必须用反斜杠转义
    /
    (否则解析器会认为(文字)斜杠是结束分隔符)@casimirithippolyte感谢您的解释。如果根本没有斜杠,pcre的工作原理会一样吗?@markdario12:snort似乎需要分隔符(在许多语言中,regex模式需要分隔符,默认情况下是斜杠),但是我不知道是否可以选择其他分隔符字符而不是斜杠。但是,如果您的问题是我可以不使用文字斜杠编写模式,那么第二种模式的答案是否定的,但是您可以尝试使用“/[^\/]{1,75}\.xls$/”取而代之。对于第一种模式,如果不获得错误结果,则无法删除开头的文本斜杠。
    pcre:"/\/[a-zA-Z0-9]{1,75}\.xls$/"
    
    pcre:"/\/[^\/]{1,75}\.xls$/"