Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 2064|回复: 0

[默认分类] Suricata默认规则集相关

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-3-30 09:39:57 | 显示全部楼层 |阅读模式
    Suricata规则集
    Suricata 基于规则检测和控制数据流量,所有规则的配置文件保存在rules目录内




      
    1. 1、这些是已知和确认的活动僵尸网络和其C&C(command and control)服务器。由一些组织生成,每日更新
    2. botcc.portgrouped.rules
    3. botcc.rules
    4. 2、封锁被ciArmy.com标记出来的Top Attackers
    5. ciarmy.rules
    6. 3、这是一个已知的受影响的主机列表,每天更新
    7. compromised.rules
    8. 4、每天更新的Spamhaus DROP(Don"t Route or Peer)列表。列出了著名的、专业的垃圾邮件发送者
    9. drop.rules
    10. 5、每天更新的DShield top attackers。十分可靠
    11. dshield.rules
    12. 6、主要用来检测与ActiveX控件有关的攻击
    13. emerging-activex.rules
    14. 7、这些规则是为了捕获成功攻击的结果,诸如“id=root”之类的东西,或者表示可能发生妥协的错误消息(即虽然产生了错误消息,但是攻击已经成功)
    15. emerging-attack_response.rules
    16. 8、主要检测聊天软件、即时通讯软件的攻击,大部分是国外的一些软件,比如facebook,雅虎,msn
    17. emerging-chat.rules
    18. 9、这些规则是不打算在规则集中长期保存的,或者是在被包含之前进行测试
    19. emerging-current_events.rules
    20. 10、里面都是被注释掉的规则,可能删除后的规则放在这里
    21. emerging-deleted.rules
    22. 11、检测dns协议相关的攻击
    23. emerging-dns.rules
    24. 12、目的是捕获入站的DOS(拒绝服务)活动和出站指示
    25. emerging-dos.rules
    26. 13、检测ftp协议相关的攻击
    27. emerging-ftp.rules
    28. 14、魔兽世界、星际争霸和其他流行的在线游戏都在这里。我们不打算把这些东西贴上邪恶的标签,只是它们不适合所有的攻击环境,所以将它们放在了这里。
    29. emerging-games.rules
    30. 15、检测与icmp协议相关的攻击
    31. emerging-icmp_info.rules
    32. emerging-icmp.rules
    33. 16、直接检测exploits(漏洞)的规则
    34. emerging-exploit.rules
    35. 17、检测与imap相关的攻击
    36. emerging-imap.rules
    37. 18、色情、儿童色情,你不应该在工作中访问的网站等等。
    38. emerging-inappropriate.rules
    39. 19、似乎是检测与信息泄露、信息盗取等事件的规则
    40. emerging-info.rules
    41. 20、检测恶意软件
    42. emerging-malware.rules
    43. 21、检测混杂的攻击,这种攻击一般没有确切的分类,或者使用了多种技术
    44. emerging-misc.rules
    45. 22、检测移动设备上的恶意软件
    46. emerging-mobile_malware.rules
    47. 23、检测与netbios有关的攻击
    48. emerging-netbios.rules
    49. 24、P2P(Peer to Peer)之类的。我们并不想将它定义为有害的,只是不适合出现在IPS/IDS的网络环境中
    50. emerging-p2p.rules
    51. 25、对于经常被公司或组织政策禁止的事务的规则。Myspace、Ebay之类的东西
    52. emerging-policy.rules
    53. 26、检测与pop3协议有关的攻击
    54. emerging-pop3.rules
    55. 27、检测与rpc(远程过程调用协议)有关的攻击
    56. emerging-rpc.rules
    57. 28、检测与SCADA(数据采集与监控系统)相关的攻击
    58. emerging-scada.rules
    59. 29、检测探测行为。Nessus,Nikto,端口扫描等这样的活动。这是攻击前准备时期的警告
    60. emerging-scan.rules
    61. 30、检测shellcode,shellcode是一段用于利用软件漏洞而执行的代码,以其经常让攻击者获得shell而得名
    62. emerging-shellcode.rules
    63. 31、检测与smtp协议相关的攻击
    64. emerging-smtp.rules
    65. 32、检测与snmp协议相关的攻击
    66. emerging-snmp.rules
    67. 33、这是一个巨大的规则集,用于捕获在特殊应用程序上的特殊攻击。这里面有一些普遍的SQL注入攻击规则,效果很好,可以捕获大多数攻击
    68. emerging-sql.rules
    69. 34、检测与telnet协议相关的攻击
    70. emerging-telnet.rules
    71. 35、检测与tftp协议相关的攻击
    72. emerging-tftp.rules
    73. 36、检测trojan木马
    74. emerging-trojan.rules
    75. 37、检测异常的user-agents
    76. emerging-user_agents.rules
    77. 38、检测voip相关的异常,它是一个新兴的规则集,目前还很小,但是我们预计它很快就会增长。
    78. emerging-voip.rules
    79. 39、检测web客户端的攻击
    80. emerging-web_client.rules
    81. 40、检测web服务端的攻击
    82. emerging-web_server.rules
    83. 41、检测特殊的web应用程序的异常
    84. emerging-web_specific_apps.rules
    85. 42、检测蠕虫
    86. emerging-worm.rules
    87. 43、检测modbus事件
    88. modbus-events.rules
    89. 44、检测smtp事件
    90. smtp-events.rulse
    91. 45、检测stream事件
    92. stream-events.rules
    93. 46、检测tls事件
    94. tls-events.rules
    95. 47、检测使用tor进行匿名通信的流量
    96. tor.rules
    复制代码

      
    各规则文件的作用

    规则形式
    由于Suricata完全兼容snort规则,所以Suricata规则和snort相同

    规则头部分
    动作
    当规则与包比对并符合条件是,会采取什么类型的动作

    1. alert(使用选择的报警方法生成一个警报,然后记录这个包)
    2. Log(记录包)
    3. Pass(丢弃包)
    4. Activate(告警并激活另一条dynamic规则)
    5. Dynamic(保持空闲直到被一条activeta规则激活。)
    6. Drop(阻止并记录数据包)
    7. Reject(阻止并记录数据包,tcp协议包发送tcp reset,udp发送icmp端口不可带信息到主机)(只阻止不记录)
    复制代码


    协议
    TCP、UDP、ICMP和IP协议、HTTP,FTP,TLS(这包括SSL),SMB和DNS应用层协议
    地址
    一个表示数据包的访问的源地址,另外一个表示目的地址,关键字"any"可以被用来定义任何地址,Snort没有提供根据ip地址查询域名的 机制。地址就是由直接的数字型ip地址和一个CIDR块组成的,/24表示c类网络, /16表示b类网络,/32表示一个特定的机器的地址。详情请参照:CIDR
    例如,192.168.1.0/24代表从192.168.1.1到192.168.1.255的 地址块。在这个地址范围的任何地址都匹配使用这个192.168.1.0/24标志的规则
    有一个操作符可以应用在ip地址上,它是否定运算符(negation operator)。这个操作符告诉snort匹配除了列出的ip地址以外的所有ip地址。否定操作符用"!"表示,下面这条规则对任何来自本地网络以外的流都进行报警

    1. alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 (content: "|00 01 86 a5|"; msg: "external mountd access";)
    复制代码


    端口号
    端口号可以用几种方法表示,包括"any"端口、静态端口定义、范围、以及通过否定操作符。"any"端口是一个通配符,表示任何端口。静态端口定 义表示一个单个端口号,例如111表示portmapper,23表示telnet,80表示http等等。端口范围用范围操作符":"表示。范围操作符 可以有数种使用方法,如下所示:

    1. log udp any any -> 192.168.1.0/24 1:1024
    2. 记录来自任何端口的,目标端口范围在1到1024的udp流
    3. log tcp any any -> 192.168.1.0/24 :6000
    4. 记录来自任何端口,目标端口小于等于6000的tcp流
    5. log tcp any :1024 -> 192.168.1.0/24 500:
    6. 记录来自任何小于等于1024的特权端口,目标端口大于等于500的tcp流
    7. log tcp any any -> 192.168.1.0/24 !6000:6010
    8. 端口否定操作符用"!"表示。它可以用于任何规则类型
    复制代码


    方向操作符
    方向操作符"->"表示规则所施加的流的方向。方向操作符左边的ip地址和端口号被认为是流来自的源主机,方向操作符右边的ip地址和端口信 息是目标主机,还有一个双向操作符"<>"。它告诉snort把地址/端口号对既作为源,又作为目标来考虑。这对于记录/分析双向对话很方 便,例如telnet或者pop3会话

    1. log !192.168.1.0/24 any <> 192.168.1.0/24 23
    复制代码


    规则选项
    规则选项部分包含报警消息内容和要检查的包的具体部分规则选项包含在规则头后的‘( )’内,各规则选项以‘;’分割,规则选项和参数间用‘:’分开



      
    1. snort规则关键字:
    2. msg - 在报警和包日志中打印一个消息。
    3. logto - 把包记录到用户指定的文件中而不是记录到标准输出。
    4. ttl - 检查ip头的ttl的值。
    5. tos 检查IP头中TOS字段的值。
    6. id - 检查ip头的分片id值。
    7. ipoption 查看IP选项字段的特定编码。
    8. fragbits 检查IP头的分段位。
    9. dsize - 检查包的有效净荷大小的值 。净荷:指用户原始数据。
    10. flags -检查tcp flags的值。
    11. seq - 检查tcp顺序号的值。
    12. ack - 检查tcp应答(acknowledgement)的值。
    13. window -测试TCP窗口域的特殊值。
    14. itype - 检查icmp type的值。
    15. icode - 检查icmp code的值。
    16. icmp_id - 检查ICMP ECHO ID的值。
    17. icmp_seq - 检查ICMP ECHO 顺序号的值。
    18. content - 在包的净荷中搜索指定的样式。
    19. content-list 在数据包载荷中搜索一个模式集合。
    20. offset - content选项的修饰符,设定开始搜索的位置 。
    21. depth - content选项的修饰符,设定搜索的最大深度。
    22. nocase - 指定对content字符串大小写不敏感。
    23. session - 记录指定会话的应用层信息的内容。
    24. rpc - 监视特定应用/进程调用的RPC服务。
    25. resp - 主动反应(切断连接等)。
    26. react - 响应动作(阻塞web站点)。
    27. reference - 外部攻击参考ids。
    28. sid - snort规则id。
    29. rev - 规则版本号。
    30. classtype - 规则类别标识。
    31. priority - 规则优先级标识号。
    32. uricontent - 在数据包的URI部分搜索一个内容。
    33. tag - 规则的高级记录行为。
    34. ip_proto - IP头的协议字段值。
    35. sameip - 判定源IP和目的IP是否相等。
    36. stateless - 忽略状态的有效性。
    37. regex - 通配符模式匹配。
    38. distance - 强迫关系模式匹配所跳过的距离。
    39. within - 强迫关系模式匹配所在的范围。
    40. byte_test - 数字模式匹配。
    41. byte_jump - 数字模式测试和偏移量调整。
    42. flow:这个选项要和TCP流重建联合使用。它允许规则只应用到流量流的某个方向上。这将允许规则只应用到客户端或者服务器
    复制代码

      
    规则关键字




      
    1. 常见关键字:
    2. 1、msg
    3. 在报警和包日志中打印消息。格式:(msg :”str”)
    4. 2、gid
    5. 用于表示当某一触发规则的事件发生时,标识是snort的哪一部分生成。格式:(gid:10000)
    6. 3、sid
    7. 用来做规则的唯一标识。格式:(sid:10000)
    8. 4、rev
    9. 往往和sid字段一起使用,用于标注针对这条规则的版本,每修改一次rev数值加1,格式:(sid:1000; rev:1;)
    10. 5、classtype
    11. 用于对攻击检测的规则和产生的日志进行分类,这个定义一般是在classification.conf文件中指定
    12. 6、reference
    13. 表明这条规则相关信息所在url,一条规则可以使用多次reference,定义引用的地方则是在reference.config配置文件中,格式:(reference:cve,can-2000-15;)
    14. 7、priority
    15. 表示此条规则或class的匹配优先级,即使在classification.config文件中指定了每个class的priority,还是可以在规则中重新制定priority字段进行覆盖该字段的值范围从1-255,
    16. 在suricata中数字越小表示优先级越高,也就是说如果两条规则都能匹配,则优先匹配priority字段小的规则
    17. 8、metadata
    18. 表明此条规则生成的时间以及最后更新的时间
    19. 9、Payload
    20. 所谓的有效字段关键字在英文中就是payload,因为不想翻译成难懂的载荷所以姑且暂时这个么说。说白了就是对流量数据包中的实际需要传输的内容进行检测,
    21. 比如你打开网页,数据包中的payload便是网页中看到的内容的代码
    22. 10、content
    23. content关键字在suricata规则中非常重要,大部分规则都要使用这个关键字来匹配数据包中的内容
    24. content中的内容是按字节匹配的,能匹配ASCII码从0-255的字节,可打印字符比如a-z可以直接写,而某些特殊符号或是不可打印的字符则需要使用十六进制来表示。如下:
    25. |0a|和|0A| 表示空格,十六进制表示时不区分大小写
    26. |61| 表示字母a
    27. |21| 表示!
    28. b 表示字母b
    29. B 表示字母B(直接写a-z的字符则区分大小写)
    30. |61|b 表示字母ab,十六进制描述可以和字符混着写
    31. 如果没有在content后面指定其他相关的关键字,那么suricata便会在整个payload字段中搜索content的内容。比如content:"abC";会在整个payload中搜索abC字符,
    32. 而如果是像下面这么写,则表示payload字段中前三个字符为abC,前第四个字符并不是abCD,也就是第四个字符不为D:content:"abC"; content:!"abCD";
    33. 11、nocase
    34. nocase关键字是用来修饰content字段的,在content字段后加上nocase表示content中的内容不区分大小写
    35. 12、depth
    36. depth也是修饰content的关键字,表示从payload开始多少个字节与content中的内容进行匹配
    37. 13、offset
    38. 与depth不同的是offset是从payload开头先偏移指定字节再对content进行匹配
    39. 14、distance
    40. distance表示从上一个content匹配的末尾偏移指定数量字符再进行本次的content匹配
    41. 15、within
    42. within也是一个修饰content的关键字,他表示从上一个content匹配位置之后的指定字节内对当前的content进行匹配,within的值不能为0
    43. 16、isdataat
    44. isdataat关键字是用来判断指定偏移处的字符是否是数据
    45. 17、dsize
    46. dsize是用来检测数据包中的payload长度是否在符合要求的范围内,这样可以有效的组织一些缓冲区溢出的攻击
    47. 18、replace
    48. replace关键字是用来替换匹配到的content中的字符
    49. 19、pcre
    50. pcre关键字使用PCRE来匹配payload中的内容,用法一般是首先使用content匹配到指定字符串,然后根据pcre对相应的payload进行正则匹配,
    51. 20、fast_pattern
    52. suricata对只有一个content关键字的规则使用多模匹配,而对于多个content的规则就对最长对复杂的一个进行多模匹配,而fast_pattern则可以改变这个状况,
    53. 如果在较短较简单的content字段后加上fast_pattern关键字则会优先匹配这个content,有时这种方法可以有效提升效率
    复制代码

      
    常用关键字

    规则示例  


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-21 08:57 , Processed in 0.389270 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表