论坛公告:应用容器安全指南(SP800-190)中文版   美国政府宣布禁用卡巴斯基软件   《中华人民共和国网络安全法》讨论帖   新手报到专用帖   【论坛公告】关于本站广告贴泛滥问题的整理通知   

当前时区为 UTC + 8 小时


发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
 文章标题 : NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2011-07-22 14:53 
离线
超级用户

注册: 2005-08-29 17:37
最近: 2014-10-17 22:41
拥有: 6,982.80 安全币

奖励: 1324 安全币
在线: 4600 点
帖子: 397
前段时间测试,用NetScout + Splunk,做了一个监控异常ARP数据包的小系统

我整理了一篇文档,以下是文字部分,附件是有截图的PDF文档。

====================
NetScout + Splunk,监控异常ARP数据包

关键词:ARP、NetScout、SFI、Splunk、fields、lookup

ARP病毒曾经一度流行,各种防范手段也相应产生并得到使用。应该说如果防范手段得到恰当的部署使用,是基本可以防范ARP问题的。那为什么要搞个监控能。一方面是怕有漏网之鱼,从IT运维的角度来看,预防(preventive)、纠错(corrective)、监控(detective)是解决问题的不同角度,不管我们采用了什么管理端、技术的手段来防范ARP问题,建立有效的异常ARP流量的监控都是有价值的。不仅仅是防范ARP病毒,非法接入,异常行为等都可能在ARP上有反映。

好多年前就看到的有ARP Watch这个软件,如今物是人非,Google搜索,看到的还是这个软件。不过我手里的鸟枪已经换了,自己搞一个监控系统吧。

第一步、 装备
先说数据来源,我们有NetScout设备,大部分数据都会被记录下来。分析监控系统,准备使用Splunk。

系统的部署很简单,NetScout的infinistream本来已经就部署好了,Splunk么,找台测试服务器,安装个Linux,安装的同时下载Splunk软件,上传,安装,OK了。

第二步、 数据获取
环境有了,下一步就是实现ARP数据从NetScout设备流向Splunk。

我知道NetScout的SFI(Sniffer Focused Intelligence)软件可以导出流量的历史数据,Wizard说有Near RealTime,SFI的文档说close to real time。我还没有尝试过,就拿ARP数据开刀了。

使用SFI的Near RealTime也很简单,在Project文件中指定Source为nearrealtime即可。
<sfi_project>
<general

source = "nearrealtime"

/>
<infinistream
address = "192.168.100.41"
interface = "if3"
inputbuffer_kbyte = "100"
/>

如何过滤ARP数据呢,让我抓几个包解开来看看。


嗯,看来这个相对于数据包包头12-13的位置,值为0806就是ARP包的标志位了。查看了几种ARP包,request, reply都是这样的。这个抓包文件也反映了一种情况,某些情况下,网络设备工作异常,产生的不正常ARP数据包也会干扰我们的网络。这也进一步说明了搞一个ARP监控系统的必要性。

我以前使用SFI导出的数据是二进制的抓包文件,而Splunk是基于文本文件的数据的。怎么得到文本格式的ARP数据呢,进过短时间的网上研究,我决定还是回过头来看看SFI本身的功能。打印文档,下班路上看了一下,第二天就确定使用SFI的PacketDump模块。

使用PacketDump模块,可以在过滤数据包的同时转成文本,输出结果是以TAB键分隔,可以定义自己的标题行,后缀名设置为XLS的话输出的文件可以直接用Excel打开查看(Splunk不同于Excel,稍后再说)。

考虑到我需要将数据传到Splunk服务器上,我暂时设置为每分钟生成一个新输出文件。

配置文件为XML格式,篇幅较长,此次以一个字段Source MAC为例。
<fields
---- 描述
description = "Source MAC-Address"
----标题
printheader = "SrcMAC"
---- 输出这个字段
printoffsettype = "packet"
printtype = "hex"
printoffset = "6"
printlength = "6"
---- 过滤ARP数据包的过滤条件,使用了0806这个标志
offsettype = "range"
offset = "12"
offsetstart = "12"
offsetend = "13"
typeascii = "no"
pattern = "0806"
mask = "ffff"
/>

搓一下手,运行SFI,再看输出文件目录,哈哈,文本文件源源不断地产生。

打开看看吧。
Date Time Length SrcMAC DstMAC ARPopcode
2011-6-13 14:50:00 64 0x00110AB450DB 0xFFFFFFFFFFFF 0x0001
2011-6-13 14:50:00 64 0x00212D3F6669 0x00110AB450DB 0x0002


SenderMAC SenderIP TargetMAC TargetIP
0x00110AB450DB 192.168.31.127 0x000000000000 192.168.36.134
0x00212D3F6669 192.168.36.134 0x00110AB450DB 192.168.31.127


注1:本文不是配置文档,对SFI的相关设置不全面展开。
注2:我这里使用的字段这个名称是SFI输出文件,相当于文件用Excel打开后的一个列的意思,不是Splunk的field,看得明白就行。

第三步、 数据传到Splunk
接下来要考虑如何将这些源源不断的文件文件传到Splunk服务器上。和Soni讨论了一下,决定还是不要在NetScout探针上加太多任务。
Soni一开始建议直接将Splunk的一个目录通过NFS共享给探针,SFI输出的文件直接写那个mount的共享目录。我考虑到测试的Splunk服务器说不定经常被我重启什么的,感觉还是现将文本数据先写到探针的本地目录,再传到Splunk上比较好一些。
Soni给了我一个脚本文件,不断扫描SFI的输出目录,除了最新那个文件(SFI正在写数据呢),其它文件移到Splunk服务器上。
#!/bin/sh

while [ true ]; do

x=1
cd /opt/sfi/output/infinistream
n=`ls -1rt OA-ARP*.txt | wc -l`
if [ $n -gt 1 ]; then
for filename in `ls -1rt OA-ARP*.txt`
do
array[$x]=$filename
x=$((x+1))
done
y=1
until [ $n -eq $y ]; do
mv -f "${array[$y]}" /mnt/splunktestserver/
y=$((y+1))
sync
done
fi
sleep 20
done


第四步、 初次查询数据
在Spunk上我已经定义好了dat input,从探针传过来的文本格式的ARP数据会被索引,开始查询吧。

打开search,随便查询了一下。发现了不足。数据是过来了,但是怎么对不同的字段进行过滤等操作呢。常规情况下,用Splunk索引日志数据,系统自己会建一些field。但是SFI生成出来的ARP数据包的文本格式中,有多个MAC地址和IP地址,自己定义似乎有些麻烦。
注3:我这里使用的字段这个名称是SFI输出文件,相当于文件用Excel打开后的一个列的意思,不是Splunk的field,看得明白就行。

第五步、 让Splunk自动生成fileds
研究了一下Splunk的文档,貌似对于csv格式的ARP记录,可以设置自动识别标题行 (Enable automatic header-based field extraction)。

简单调整如下:
1. 将SFI的输出文件名后缀设置为csv
2. 将原来的文本文件传输脚本中的mv命令改为,实现将TAB替换为逗号
cat "${array[$y]}" | tr "\\t" "," > /mnt/splunktestserver/"${array[$y]}"
3. Splunk上边就配置文件,设置自动获取csv文件的标题行
编辑/opt/splunk/etc/apps/arpWatch/local/props.conf,添加
[ARP-packet]
CHECK_FOR_HEADER=TRUE

把各种服务都重启一下,清理一下老的测试数据,重新开始导出数据,再进入Splunk的search界面。

Bingo !!! csv文件中的标题自动被Splunk识别为fields了。


第六步、 怎么定义异常ARP呢
我们考虑异常ARP,多数情况下讲ARP病毒,实际是说ARP的Reply数据包里面使用了不正确的MAC地址,给网络中的设备带来混乱,此次尝试,我先将所有ARP数据包都取出来了,实际上可以查多种异常。先试试看怎么监控不正确的ARP Reply吧。

对于ARP Reply来说,无法是ARP的reply数据包里面告诉了某客户端说某某IP地址的MAC地址为XXXXXXXXXXXX,实际应为YYYYYYYYYYYY。

看来我需要定义一个正常的ARP记录的表格,和这个表格冲突的ARP记录为异常ARP。

这个可以用Splunk中的lookup文件来实现。

我定义了如下格式的一个CSV文件作为对照表,里面的IP地址就是我需要保护的IP地址。最后一个192.168.111.222是我测试的记录。
ip2protect hexMAC
192.168.1.1 0X000B295A5740
192.168.1.2 0X001E78E1E42E
192.168.1.21 0X0002556AC507
… …
192.168.111.222 0XABCDEFABCDEF

然后在Splunk中创建一个lookup,使用我这个lookup文件。

lookup表格的字段为:ip2protect,hexMAC
1. 上传lookup文件
/opt/splunk/etc/apps/arpWatch/lookups/oaARPbaseline.csv
2. 定义lookuptable,调用这个lookup文件

第七步、 手工查询异常ARP
先找台测试电脑设成192.168.111.222, 来模拟异常ARP数据包(和我的基准不一样的就算异常)。

然后我用了这么一个说简单不简单,说复杂不复杂的查询语句。
sourcetype="ARP-packet*" NOT "UTC,Date,Time" | where SrcMAC = SenderMAC | lookup ip2MAClookup ip2protect as SenderIP OUTPUT hexMAC as hexMAC | where hexMAC!="NOTFOUND" AND SenderMAC != hexMAC | table Date,Time,SrcMAC,DstMAC,ARPopcode,SenderMAC,SenderIP,TargetMAC,TargetIP,hexMAC

WOW,看到没有,我的基准中192.168.111.222的MAC地址是ABCDEFABCDEF,现在有台电脑,宣称自己的IP(SenderIP)是192.168.111.222,MAC却不是我的基准。如果有人要和192.168.111.222通讯,就会不正常。想干坏事,被我逮到了吧。



查询成功了,点下鼠标就可以调整为实时监控(严格说来,只能是Near RealTime)。


对我的查询语句简单说明一下:
查询子句 意义
SrcMAC = SenderMAC 有一些ProxyARP包,过滤掉
lookup ip2MAClookup ip2protect as SenderIP OUTPUT hexMAC as hexMAC 查我的基准lookup表,如果IP地址在我的基准表中,取出基准MAC,否则返回为“NOT FOUND”,此次NOT FOUND数据包是正常数据包
SenderMAC != hexMAC SenderMAC和基准表中的hexMAC字段不一样(IP一样)则意味着有问题
table xxxxxx 列表输出


第八步、 建一个稍微美观一些的视图吧
在前面开始查询前,我在Splunk里面已经创建了一个应用,名为ARP监控。相应的数据导入,Lookup定义也是在这个应用里面进行的。

前面查询语句产生的是明细记录,我复制这个查询语句,简单该了一下,就得到另外一个显示汇总记录的查询。保存两个查询语句到dashboard,进行简单编辑,得到这样一个准实时的监控画面。

定义的这个视图会不断刷新,画面上半部分是汇总记录,下半部分为明细记录。都是反映过去5分钟内,和我定义的要保护监控的ARP记录有冲突的ARP包的情况(IP有记录,MAC不一致).正常为空列表。

开始监控后,重新模拟前面的冲突测试。效果如下:

我定义了一个测试的需要保护的IP地址10.1.111.222(示例,实际不存在),附图的数据是我的测试电脑改IP模拟冲突的效果,差不多在我的IP地址生效的1分钟内(预计最长不超过5分钟)就能在Splunk界面中反映出来。

至此,我的基于NetScout + Splunk的ARP监控系统已经能工作了。

用两句话来结束吧。

“人有多大胆,地有多大产”

“我们能做到吗,是的,一定行”
--- 取自我儿子看的动画片巴布工程师


附件:
NetScout + Splunk,监控异常ARP数据包.pdf [689.09 KiB]

注意:所有附件下载均需支付10安全币,不足10安全币不能下载!重复下载以前下载过的附件不再需要安全币。


--------本帖迄今已累计获得48安全币用户奖励--------
回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2011-07-22 14:56 
离线
中级用户

注册: 2010-12-03 12:27
最近: 2015-12-21 10:53
拥有: 2,319.00 安全币

奖励: 1425 安全币
在线: 7028 点
帖子: 123
感谢楼主的分享


--------本帖迄今已累计获得3安全币用户奖励--------


回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2012-01-03 22:57 
离线
新手

注册: 2005-11-24 17:39
最近: 2014-01-24 18:05
拥有: 116.90 安全币

奖励: 0 安全币
在线: 1136 点
帖子: 9
Very nice write up !!


--------本帖迄今已累计获得3安全币用户奖励--------


回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2012-01-04 13:24 
离线
超级用户

注册: 2005-08-29 17:37
最近: 2014-10-17 22:41
拥有: 6,982.80 安全币

奖励: 1324 安全币
在线: 4600 点
帖子: 397
补充一下,我后来加上了Alert功能,Splunk的免费版本是没有Alert功能的。

Alert实际相当于定期自动执行查询,如果结果满足定义的条件,就执行某个动作。可以执行某个自己的脚本,并将查询结果作为参数传入。我用python写了一个脚本,供我这个应用的Alert调用,然后读取一下内容,再发往我的短信平台,就不用看屏幕了。


--------本帖迄今已累计获得35安全币用户奖励--------


回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2012-01-04 18:28 
离线
新手

关注按钮

注册: 2011-12-04 10:23
最近: 2012-03-06 10:41
拥有: 19.00 安全币

奖励: 0 安全币
在线: 404 点
帖子: 7
这个灰常棒
一定要顶!
会场实用


--------本帖迄今已累计获得3安全币用户奖励--------


回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2012-01-06 13:57 
离线
高级用户

注册: 2009-07-22 17:30
最近: 2015-01-09 11:04
拥有: 2,769.00 安全币

奖励: 415 安全币
在线: 4677 点
帖子: 283
不错,如果能分享一下NetScout的具体案例就更好了。


--------本帖迄今已累计获得3安全币用户奖励--------


回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2013-11-26 10:41 
离线
新手

注册: 2013-04-16 13:25
最近: 2014-09-09 12:09
拥有: 16.00 安全币

奖励: 0 安全币
在线: 198 点
帖子: 18
已经挺不错的案例了~谢谢分享!


--------本帖迄今已累计获得3安全币用户奖励--------


回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2013-11-26 19:35 
离线
初级用户

注册: 2012-02-14 08:49
最近: 2014-01-20 13:30
拥有: 433.00 安全币

奖励: 2 安全币
在线: 657 点
帖子: 36
很有参考意义,如果vss加上logger 应该也可以玩出好多的花样。SOC的建设还是很需要这样的需求,聚沙成塔。。。牛


--------本帖迄今已累计获得3安全币用户奖励--------


回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2014-08-23 14:43 
离线
中级用户

注册: 2007-03-05 19:37
最近: 2016-06-23 21:51
拥有: 1,385.20 安全币

奖励: 55 安全币
在线: 4255 点
帖子: 136
mark


--------本帖迄今已累计获得3安全币用户奖励--------


回到顶部
  用户资料  
 
 文章标题 : Re: NetScout + Splunk,监控异常ARP数据包
帖子发表于 : 2018-01-25 16:32 
离线
初级用户

注册: 2012-02-07 13:50
最近: 2018-05-20 14:43
拥有: 11,172.00 安全币

奖励: 0 安全币
在线: 12504 点
帖子: 22
感谢分享! :D :D :D :D


--------本帖迄今已累计获得3安全币用户奖励--------


回到顶部
  用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Baidu [Bot] 和 0 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
cron
华安信达(CISPS.org) ©2003 - 2012