快捷搜索:  网络  后门  CVE  渗透  木马  扫描  黑客  as

经验分享 | 关于“入侵检测”的一些设法主张

*

脱离长沙的时辰写了一篇文章“左右互博:站在攻击者的角度来做防护”(freebuf上可以找到),一晃已是三年了。这三年接触了很多器械,本人也有过很多设法主张,但实际上去做的却很少。花了很多时间,做了一款插件化的漏洞扫描器,这里不做先容。这里首要先容的是另外一个设法主张(这些年做的最有造诣感的事情),我把它理解为真正意义上的“入侵检测”。

很多安全人员对“入侵检测”这个器械都是持吐槽的立场(记得发“使用Pfsense+Snorby构建入侵检测体系”出来后,有好些人吐槽“不以为用nmap扫描一下  然后一大堆告警还值得牛逼  那么多告警没人看的”,印象深刻啊!),光有吐槽还不够,我们还要想着怎么去改变。只有不断的改进,这个全国才有可能不断的进步变好。 

0×00、前面的废话

“入侵检测”,从字面上的意思来诠释就是“对入侵举动的检测”。但目前市面上的商业产品以及开源产品实际上都是对“攻击举动的检测”,入侵举动日记往往淹没在攻击举动日记内里去了,其实是有些鸡肋。

0×0一、我想要成为的模样

1.png

上面那张图就是我想要抒发的设法主张(通过流量镜像,将要求数据全量保存,响应存在异常才保存)。

通过阐发收集中的要求和响应,来判定漏洞的存在(攻击者前脚发现漏洞,我们可以完成实时发现,并溯源)。

正常的漏洞检测过程(将漏洞poc打向服务器,根据服务器的响应判定漏洞是否存在)。

2.png

站在守护者的角度,我也可以将要求和响应拿到,然后来做判定。

0×02、结果A(发现漏洞的存在)

我目前做的是“检测http响应数据(基于症结字)”,检测出问题然后关联http要求。

3.png

案例1、Directory:(目录遍历漏洞)

http响应内里出现Directory:,关联http要求,下面是部分具体数据(我把http要求头内里的字段都做了切割)。

 4.png

5.png案例二:”\system”(这是一个误报,只是攻击举动)

6.png7.png

案例3、svn信息泄露漏洞

8.png

案例4、遥程命令执行漏洞

9.png10.png

案例5、文件读取漏洞

11.png

通过上面几个案例,人人会发现这类对只针对http响应做症结字匹配的检测,照样会存在一些的误报。要是对http要求也做检测,要是http要求和响应都存在异常,那基本就可以90%确定问题了。 

0×0三、结果B(监控文件下载举动)

我为什么想要去完成这个了?

一、  很多时辰治理员部署应用的时辰,都喜好打个包上传,然后解压部署,往往忘怀了删除压缩包,导致源代码泄漏。

2、  很多时辰黑客攻击,想要窃取数据,也会通过打包下载的方式。

那怎么去完成“监控文件下载的举动”(这里我们只讨论http)?

实在谜底很简单啦,多抓几个文件下载的数据包,看下就知道了。http响应内里有一个字段鸣“Content-Type”,通过这个字段我们就可以知道文件的类型。

例如:

Content-Type 内容为“application/zip”,说明下载的文件类型为zip。

Content-Type 内容为“application/x-gzip”,说明下载的文件类型为gz。 

这里给人人提供个Content-Type内容对应的文件列表,方便人人查找。

https://github.com/hosom/file-extraction/blob/master/scripts/file-extensions.bro

12.png

我这边完成了一个zip的(只是存储下了http响应头,理论上全部文件都可以保存下来。)

13.png

具体以下:

14.png

完成过程:拿获到响应数据包,判定头部是否存在“Content-Type”字段,存在且内容为“application/zip”,然后把http要求数据包关联起来就行存储到Elasticsearch中去。

题外话:

要是完成了从流量中提取全部文件,那可以接入一些病毒检测引擎,对文件做安全检测。

0×0四、扩大

除http外的协定

一、ssh:  ssh登录判定,从流量中判定是否登录成功(这个目前还真不知道怎么去完成)。

2、dns:  获取dns要求(这里可以结合现在比较流行的威胁情报来玩)

15.png

无心中在github中发现一个故意思的开源项目(可以结合起来玩)。

xsec ip database为一个恶意IP以及域名库(Maliciousip database),它获取恶意IP以及域名的方式有下列几种:

通过爬虫定期拉取收集中地下的恶意ip库(可能过增添新爬虫的方式订阅新的IP库)

支持与自有的其他安全产品联动(HIDS、WAF、蜜罐、防火墙等产品),实时更新IP库

https://github.com/netxfly/xsec-ip-database

0×0五、怎么去完成上面的结果(拿http协定举例子)

要“成为想要的模样”需要做以下的工作:

A、 流量镜像(这个比较好搞,直接在收集设备上可设置)

B、 从流量中提取http要求数据以及http响应数据

C、 组合http要求数据(一般出现在post要求中,tcp会分段)

D、 组合http响应数据

E、  解压缩http响应数据(很多都做了gzip压缩,需要解压)

F、  检测http要求和http响应数据(安全检测,也能够说是对数据的阐发,判定数据是否异常。)

G、 关联http要求和http响应

PS:内心累,黑客工具,一堆问题,老是一次又一次把本人之前的观点(B到G)给推倒。

这里我不做先容了,怕误导人人,因为我也没完全搞明白。

写的程序也还有些bug如:

一、如要求和响应关联不上

2、要求(响应)数据包没组合起来3

三、响应数据包没有解压

……

0×0六、不该写的部分

攻击以及防守老是在互相促进,要是我是攻击者,肯定会想办法去藏避这个检测。实在也很简单,检测都是基于数据是明文传输的基础上的。要是对http响应数据进行一些简单的编码再传输(dns地道木马就是如许做的,它会对执行命令的效果进行编码后传输。),如许肯定会加大检测的难度。

16.png

这类明文传输的命令执行,肯定是很容易从流量中检测到的。

17.png

这里我们将命令执行效果做了一次编码,然后再传输,如许就加大了检测难度了。如许我们就需要对响应数据包进行编码的识别了,效劳大大降低,成本将大大提高。 

0×0七、后面的废话

这套体系是我用python写的,目前实行了一些功能(上面提到的基本都有了),无非还存在很多bug。本打算开源出来,一想没必要,不懂的拿来也无法用好,无法改进,能看懂的,有了上面我提供的思路下面的逻辑图,基本上也能搞出来。

下面是精简化的逻辑图(python为开发说话,redis为缓存,Elasticsearch为存储,Kibana为前端铺示):

18.png

PS:该写的不该写的都写了,写的不好,发现错别字,请不要大惊小怪,理解万岁!

*

您可能还会对下面的文章感兴趣: