Snort规则分析举例

*Snort规则分析举例html

Snort一种开源*检测系统,当他做为NIDS模式运行时,能够分析网络传输的数据包,当它发现能够流量时就会根据事先定义好的规则发出报警,有关这些规则的介绍网上能够轻松找到,可对于具体规则分析却很少。下面分析了几个典型可疑流量报警规则。ios

.1.可疑流量的报警程序员

假设一个场景:在内网中,你用Snort监控的VLAN中的若干网络交换机,并经过Telnet来管理它们。在这种状况下下面这条Snort规则所发出的警报就算是正常。咱们要打开Ossim系统中/etc/suricata/rules/emerging-telnet.rules配置文件,查看第53行,以下
Snort规则分析举例
若是你把一样这条规则用在了监控一个受禁止使用Telnet进行访问的防火墙,那么它发出的报警就很是重要,应该引发管理员的注意。就是说你必定要注意产生报警的具体环境,而不能一律而论。
下面在看个例子,Web有些资源是不让访问的,当有人试图尝试访问一个Web服务器所禁止访问的资源时,就会由下面这条规则所触发报警。
打开emerging-misc.rules配置文件,查看第85行,以下shell

.2.空会话×××漏洞报警数据库

早在Windows 2000系统时就发现了空会话×××漏洞(固然如今Windows 7/8系统已经消除此问题)在当时×××者能够很轻松地利用空会话完成×××,经过在主机上面创建一个空会话,再经过Enum枚举共享等方式,者可能会得到一个重命名管理员的账户,这是由于这个空会话回加载到全部该计算机账户组中。它使得不在域中的主机也能使用主机所使用的网络。
Snort规则分析举例
上图使用 Net命令发起的成功空会话链接
当你使用Snort监控这些主机时,这种方式就会马上暴露出来。在Ossim系统中先打开emerging-netbios.rules,查看249行,Netbios Null会话的规则以下:
Snort规则分析举例
当一个×××者企图经过匿名方式链接枚举用户或其它系统信息时,该规则将会被触发。安全

.3.用户权限获取企图服务器

有权使用一个普通用户帐号的×××者,它能够利用系统的各类漏洞来提高本身的权限,直到最高权限。这样就能访问未受权的数据。好比能够经过修改.rhosts文件来获取全
局访问权限,下面是Snort规则检测这样的用户权限获取企图行为: 打开emerging-misc.rules,查看 139行
Snort规则分析举例
在一个具体应用中提权的目标极可能是数据库,用户能够访问一种类型的数据,但可能但愿访问其它受限制的资源,另外,若是用户得到超级用户权限,它就能够控制主机。下面咱们看看Snort中一个监控这种用户提权的例子是Microsoft SQL Server的xp_cmd shell规则:
打开emerging-exploit.rules,查看931网络

Xp_cmdshell能够被用于执行SQL Server的系统命令。×××者可以使用xp_cmdshell安装×××或执行能够在Windows命令行下执行的任何程序。这个规则就能检测这种×××行为。ide

.4.失败的权限提高报警规则学习

×××者提高用户权限也不是一路顺风,经常遇到问题,若是能在提权中,若是失败就报警,失败的登陆行为就会触发系统大量报警,这样×××者的行为就会被发现。下面举的一个PCAnywhere失败登陆规则就是一个是被的用户权限获取的例子,咱们打开emerging-policy.rules文件,查看1706行
Snort规则分析举例
该规则检测登陆PCAnywhere失败的尝试。

5.管理员权限获取企图

若是×××者能够访问Windows系统里的Admin$共享资源,它就能够访问Windows系统目录(c:\winnt\)但这么作的人有时候并非真正的管理员,怎么发现呢?下面这条规则就可能检测这种行为,打开emerging-netbios.rules文件,查看第303行。
Snort规则分析举例

6.成功获取管理员权限

Unix系统的passwd文件传出是绝对不能发生在TFTP这样不安全协议上的,TFTP协议既不须要认证,也不加密,很是危险。因此在一些Unix系统中能够经过下面方式获取passwd
$tftp 1.1.1.1
tftp>connect 1.1.1.1
tftp>get /etc/passwd /tmp/passwd.cracker
tftp>quit
若是经过Snort就能检测到,经过TFTP传输 passwd文件的行为,例如:
打开 emerging-tftp.rules查看89行规则以下:
Snort规则分析举例
这条规则的报警就能够表示×××者得到了对root用户和其它用户的控制权。
像这样的例子还有用于检测BSD Telnet守护进程×××的规则。打开Ossim 2.3系统的Snort规则库中telnet.rules文件,查看第38行
Snort规则分析举例

7).拒绝服务

举例:发现Chargen/echo DOS×××,chargen服务端口为UDP 19,echo 为UDP 7,若是UDPchargen server 收到了一个封包就会回一个封包回去,并且若是发现与客户端链接存在就会不断发送。若是是被利用为ddos×××,这样就会被放大占用整个网络带宽。这里×××者伪造了数据包,将两台开放Chargen/echo的服务器互指,结果形成资源耗尽而致使网络不可用。

Snort规则分析举例

图 拒绝服务×××的例子
打开dos.rules的第1行

Snort规则分析举例

该特征检测的DOS条件是一个Chargen/echo服务的无限循环。
还有一些DOS×××会出现一些异常的数据输入,这些输入的内容会是服务器瘫痪,固然,这是个比较老的漏洞,Microsoft FTP STAT globbing DOS就是一个典型,当×××者在Windows 2000 IIS 5.0的FTP服务器上发送STAT命令以后再追加一些异常的文件名匹配字符($g.*?等)时,顿时没有打补丁的FTP服务器将会当即崩溃。咱们看看Snort应对此种×××的规则代码,打开ftp.rules规则,查看66行:

Snort规则分析举例

除此以外,其它DOS的规则用来检测DDOS,DDOS×××利用大量的受害主机向目标主机发送大量请求,形成其瘫痪。这种行为也能够用Snort规则来检测,如下是在收到DDOS×××时,在ACID系统里发出的事件日志。
#(2 - 10994) [2012-08-21 09:58:06] [arachNIDS/253] DDOS shaft synflood
IPv4: 195.27.218.62 -> 123.xxx.yyy.252
hlen=5 TOS=0 dlen=40 ID=28789 flags=0 offset=0 TTL=19 chksum=17659
TCP: port=13000 -> dport: 13000 flags=**S* seq=674711609
ack=39679596 off=5 res=0 win=25622 urp=39897 chksum=44744
Payload: none

#(2 - 10993) [2012-08-21 09:58:06] [arachNIDS/253] DDOS shaft synflood
IPv4: 195.27.218.62 -> 123.xxx.yyy.250
hlen=5 TOS=0 dlen=40 ID=28789 flags=0 offset=0 TTL=19 chksum=17661
TCP: port=13000 -> dport: 13000 flags=**S* seq=674711609
ack=1883199726 off=5 res=0 win=20738 urp=46580 chksum=22367
Payload: none
如下是Snort获得的数据包分析
Snort:
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
21-09:37:16.080331 195.27.218.62:13000 -> 12.82.128.178:13000
TCP TTL:16 TOS:0x0 ID:39977 IpLen:20 DgmLen:40 DF
**S* Seq: 0x28374839 Ack: 0x26917D08 Win: 0x2240 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Snort processed 1 packets.
Breakdown by protocol:
Action Stats:
TCP: 1 (100.000%) ALERTS: 0
UDP: 0 (0.000%) LOGGED: 0
ICMP: 0 (0.000%) PASSED: 0
ARP: 0 (0.000%)
IPv6: 0 (0.000%)
IPX: 0 (0.000%)
OTHER: 0 (0.000%)
本来发起一个序列号为SYN包674711609,将产生一个SYN/ACK 674711610或者ACK 674711610,也许是shaft的程序员疏忽或者太懒了,当实际状况是发起一个SYN包,它们为每一个数据包使用了相同的TCP序列号。因此简单的经过检测6747116909的序列号,就能检测这种×××,另外你还会发现序列号变成了0x28374839,为何?其实十进制的674711609,表示为十六进制为0x28374839.
接下来咱们就要看看Snort规则如何防范这种×××,首先打开deleted.rules的第105行,以下:

Snort规则分析举例
若是你们还关注如何手动从源码安装Snort系统,能够关注个人Snort课程:https://edu.51cto.com/course/7896.html ,本课程介绍了IDS基础,重点讲解了Windows、CentOS和Ubuntu环境下的Snort安装配置包括数据存储数据展示的完整过程,同时提供了已经配置完成的Ubuntu14.04虚拟机和CentOS 6.8虚拟机环境;若是你还但愿学习与之相关的安全案例分析请参阅《Unix/Linux网络日志分析与流量监控》一书。

相关文章
相关标签/搜索