开源安全运维平台OSSIM疑难解析:提高篇
上QQ阅读APP看书,第一时间看更新

Q004 Snort有几种工作模式,各有什么特点?

Snort有3种工作模式,分别为嗅探器模式、分组数据包记录模式与网络入侵检测模式。

·嗅探器模式。

Snort使用Libpcap包捕获库。在该模式下,Snort使用网络接口的混杂模式读取并解析数据包。该模式使用的命令如下所示。

localhost:~#snort -v
Running in packet dump mode
        --== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
Decoding Ethernet
        --== Initialization Complete ==--
   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.3.1 IPv6 GRE (Build 40)
   ''''  By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team
           Copyright (C) 1998-2012 Sourcefire, Inc., et al.
           Using libpcap version 1.1.1
           Using PCRE version: 8.02 2010-03-19
           Using ZLIB version: 1.2.3.4
Commencing packet processing (pid=5053)

注意,这里的参数是小写的字母v,大写字母V用来显示Snort版本。以上只显示了TCP/IP网络数据包头信息,如果想查看应用层数据信息,则需要输入以下命令。

#snort –vd

此命令不会将日志记录到/var/log/snort/目录中。

·分组数据包记录模式。

Snort还可以提取部分感兴趣的数据,例如输入如下命令只读取有关ICMP包的数据:

#snort –dvr snort.log.140493321 icmp

输入如下命令只读取有关TCP包的数据:

#snort –dvr snort.log.140493321 tcp

如果只记录某个网段的数据,操作命令如下(注意,当前有log目录):

alienvault:~# snort -vde -l ./log -h 10.32.14.0/24

该命令的部分输出如下:

Running in packet logging mode
        --== Initializing Snort ==--
Initializing Output Plugins!
Log directory = ./log    //日志存储路径
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".    //从eth0网卡获取网络流量
Decoding Ethernet
        --== Initialization Complete ==--
   ,,_     -*> Snort! &lt;*-
  o"  )~   Version 2.9.3.1 IPv6 GRE (Build 40)
   ''''  By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team
           Copyright (C) 1998-2012 Sourcefire, Inc., et al.
           Using libpcap version 1.1.1
           Using PCRE version: 8.02 2010-03-19
           Using ZLIB version: 1.2.3.4
Commencing packet processing (pid=4569)    //开始数据包处理进程
^C*** Caught Int-Signal
=======================================================================
Run time for packet processing was 5.193675 seconds    //分析数据包的时间开销
Snort processed 7 packets.
Snort ran for 0 days 0 hours 0 minutes 5 seconds
   Pkts/sec:                1        //接收数据包的平均速率(单位为包/秒)
=======================================================================
Packet I/O Totals:          //网络数据包输入/输出总计
   Received:                7    //已接收数量
   Analyzed:                7 (100.000%)  //已分析数量
    Dropped:                0 (  0.000%)
   Filtered:                0 (  0.000%)
Outstanding:                0 (  0.000%)
   Injected:                0
=======================================================================
Breakdown by protocol (includes rebuilt packets):    //按协议进行分类(包括重建的数据包)
        Eth:                7 (100.000%)
       VLAN:                0 (  0.000%)
        IP4:                4 ( 57.143%)
       Frag:                0 (  0.000%)
       ICMP:                0 (  0.000%)
        UDP:                0 (  0.000%)
        TCP:                4 ( 57.143%)
        IP6:                0 (  0.000%)
    IP6 Ext:                0 (  0.000%)
   IP6 Opts:                0 (  0.000%)
      Frag6:                0 (  0.000%)
      ICMP6:                0 (  0.000%)
       UDP6:                0 (  0.000%)
       TCP6:                0 (  0.000%)
     Teredo:                0 (  0.000%)
    ICMP-IP:                0 (  0.000%)
      EAPOL:                0 (  0.000%)
    IP4/IP4:                0 (  0.000%)
    IP4/IP6:                0 (  0.000%)
    IP6/IP4:                0 (  0.000%)
    IP6/IP6:                0 (  0.000%)
        GRE:                0 (  0.000%)
    GRE Eth:                0 (  0.000%)
   GRE VLAN:                0 (  0.000%)
    GRE IP4:                0 (  0.000%)
    GRE IP6:                0 (  0.000%)
GRE IP6 Ext:                0 (  0.000%)
   GRE PPTP:                0 (  0.000%)
    GRE ARP:                0 (  0.000%)
    GRE IPX:                0 (  0.000%)
   GRE Loop:                0 (  0.000%)
       MPLS:                0 (  0.000%)
        ARP:                3 ( 42.857%)
        IPX:                0 (  0.000%)
   Eth Loop:                0 (  0.000%)
   Eth Disc:                0 (  0.000%)
   IP4 Disc:                0 (  0.000%)
   IP6 Disc:                0 (  0.000%)
   TCP Disc:                0 (  0.000%)
   UDP Disc:                0 (  0.000%)
  ICMP Disc:                0 (  0.000%)
All Discard:                0 (  0.000%)
      Other:                0 (  0.000%)
Bad Chk Sum:                2 ( 28.571%)
    Bad TTL:                0 (  0.000%)
     S5 G 1:                0 (  0.000%)
     S5 G 2:                0 (  0.000%)
      Total:                7
========================================================================
Snort exiting

下面继续讲解更复杂的实验,实验环境为OSSIM 4。在命令行上启动Snort:

#snort –l /var/log/snort/  -c /etc/snort/snort.conf

按Ctrl+C组合键退出程序,收到的信息如下所示:

[ Port Based Pattern Matching Memory ]
+- [ Aho-Corasick Summary ] -------------------------------------
| Storage Format    : Full-Q
| Finite Automaton  : DFA
| Alphabet Size     : 256 Chars
| Sizeof State      : Variable (1,2,4 bytes)
| Instances         : 144
|     1 byte states : 132
|     2 byte states : 12
|     4 byte states : 0
| Characters        : 67366
| States            : 41455
| Transitions       : 1910758
| State Density     : 18.0%
| Patterns          : 4676
| Match States      : 4776
| Memory (MB)       : 21.56
|   Patterns        : 0.49
|   Match Lists     : 1.01
|   DFA
|     1 byte states : 0.96
|     2 byte states : 18.82
|     4 byte states : 0.00
+----------------------------------------------------------------
[ Number of patterns truncated to 20 bytes: 1332 ]
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
Reload thread starting...
Reload thread started, thread 0x7fd8f6273700 (5649)
Decoding Ethernet
        --== Initialization Complete ==--
   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.3.1 IPv6 GRE (Build 40)
   ''''  By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team
           Copyright (C) 1998-2012 Sourcefire, Inc., et al.
           Using libpcap version 1.1.1
           Using PCRE version: 8.02 2010-03-19
           Using ZLIB version: 1.2.3.4
           Rules Engine: SF_SNORT_DETECTION_ENGINE  Version 1.16  <Build 18>
           Preprocessor Object: SF_GTP (IPV6)  Version 1.1  <Build 1>
dcerpc2 Preprocessor Statistics
  Total sessions: 0
========================================================================
SIP Preprocessor Statistics
  Total sessions: 0
========================================================================
Snort exiting

警报数即为在日志中看到的记录数,两者一致,在另一个控制台查看日志详情,如下所示:

#tail –f /var/log/auth.log
Apr  5 06:24:04 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34939 -> 193.62.202.28:80
Apr  5 06:24:04 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34939 -> 193.62.202.28:80
Apr  5 06:24:04 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34331 -> 52.28.229.156:80
Apr  5 06:24:04 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34331 -> 52.28.229.156:80
Apr  5 06:24:04 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34331 -> 52.28.229.156:80
Apr  5 06:24:04 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34939 -> 193.62.202.28:80
Apr  5 06:24:05 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34939 -> 193.62.202.28:80
Apr  5 06:24:05 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34331 -> 52.28.229.156:80
Apr  5 06:24:05 alienvault snort[4133]: [1:2013504:3] ET POLICY GNU/Linux APT User- Agent Outbound likely related to package management [Classification: Not Suspicious Traffic] [Priority: 3] {TCP} 192.168.11.201:34331 -> 52.28.229.156:80

此时,我们还可以在SIEM控制台中看到经归一化处理的Snort事件,如图1-3所示。

图1-3 SIEM控制台中显示的Snort事件

·网络入侵检测模式。

网络入侵检测模式集成了嗅探器模式和日志模式(该模式下会把抓取的数据包存放到指定目录中),并且需要载入Snort规则库才能正常工作。操作命令如下:

#snort –vde –l ./log –h 10.32.14.0/24 –c /etc/snort/snort.conf

注意,当前目录下已有log目录。如果指定了“-l ./log”参数,则系统会将日志中原来的/var/log/snort/转储到当前目录的log目录下。