日志分析目前已经是互联网企业必备安全系统之一了,之前在安全加固模块中已经给大家介绍了如何进行主机的收集,包括windows和Linux。今天我们就来学习一下什么是日志日志分析?各类型安全漏洞对应着有什么样的日志特征?

首先,需要明确一点,日志分析是一个非常大的概念。这不仅体现在日志的种类非常多,也体现在数量非常庞大,所以整个日志分析的架构非常复杂。在这篇文章里,我只能尽量将一些复杂的内容化繁为简,方便大家理解,不可能做到全面覆盖滴水不漏,更多的内容还是需要大家在工作学习中多积累多思考。

首先梳理下整个日志分析系统,虽然说比较复杂,但是也可以大致抽象成三个方面:收集、存储、分析。收集以及存储在前面的章节我都有细致的讲到,没有看过的朋友可以点这里 ,今天我们的重点是学习如何分析。

日志分析的目的是通过对日志的分析有效的监控用户网络行为,跟踪网络资源的使用情况,识别异常流量和性能的瓶颈,让我们更好的去规划部署系统的资源,响应故障告警。从而达到一个稳定、安全、高校的系统运营环境。

 

web应用日志分析

环境说明:

使用dvwa模拟web服务,使用Kali模拟攻击。

 

①账户爆破日志分析

使用hydra对账户进行爆破,查看数据库apache的日志记录

开始爆破之后,查看日志。可以看到这个日志,记录了用户的数据以及时间。首先可以发现,他在一秒钟之内发送了6次请求,3次get请求,3次POST请求,这种情况很明显就是一种爆破的行为。因为在正常情况下,一般人点击访问是不太可能在一秒钟之内发送这么多次请求的。

另一方面,记录的user-agent显示了Hydra,一般的正常访问的话应该会显示用户的浏览器信息以及操作系统信息等等,一般有些爆破工具可能不会显示这个信息,但是这里我们使用的Hydra留下了工具服务信息,这种的话就百分之百是爆破行为了。当然,有些攻击者使用自己写的一些脚本进行爆破,可能不会改变user-agent的信息,但是从时间和行为上来分析,也能看出爆破这样一个行为。

所以总结一下,账户爆破的日志特征。apache的access日志会呈现以下特征:

  1. 访问时间紧凑,同一IP访问数量大
  2. 不断在login页面重复提交POST请求
  3. user-agent 出现hydra(或其他爆破工具)

 

②注入日志分析

使用sqlmap对靶场进行注入攻击:

可以看到已经脱出了五个数据库名:

接着脱出表:

就这样一层一层的往下,就可以拿到其中的数据了。这时候,我们来看一下日志的情况:

可以看到在日志里,出现了一些很眼熟的关键词:像select、union这样的查询语句,也有出现table_name这样的表名。一般查询语句是不会出现在URL里面的,所以这基本上可以判断是收到了注入攻击。另一方面,在user_agent也显示了sqlmap。当然,真正的攻击者,他可能不会这么直白的显示在这里,就像隐藏IP一样。

总结一下日志特征,面对注入攻击,主要的特征可以通过识别URL中的关键字,像一些常见的攻击关键词如果出现了,很大可能就是遭受到了注入攻击。

 

③XSS日志分析

接下来是XSS日志分析特征,xss也是我们在日常中经常碰到的一种漏洞攻击。对靶场进行一个简单的XSS攻击:

这个时候我们再看一下我们的日志,可以看到我们日志中记录的URL内容也变了。鉴于XSS的特征,可以依靠一些常见的字符,比如%3c、%3E、script、alert等等之类的可疑字符去判断是否存在XSS注入攻击,作为一些告警的规则。

如果是存储型的话,内容会直接存储到数据库,当我每次访问这个页面的时候,都会触发弹窗:

这种存储型在URL中不会有太大变化,但是我们在数据库中就可以很明显的发现。这种情况下,我们可以对数据库存储的数据做一个规则的匹配,去看看评论、需要存储到数据库的地方,是否存在一些可疑的字符。

这就是当我们受到XSS攻击时,可能出现的一些日志特征或者异常。

 

web系统服务日志分析

①SSH日志分析

这个最常用,也比较简单。ssh日志主要分为三块内容:

如果查看wtmp的话,就是指我们系统登录成功的一些信息。他日志的格式是固定的:

btmp也是一样的,很简单。相对来说,secure复杂一点:

这是登录成功显示的:

登录失败显示为:

因为SSH是用pam模块去进行认证的,所以也会有一个pam(ssh:auth)的报错提示。以上就是ssh日志的一些主要特征。

当然也会有其他的一些情况,ssh他会有证书免密登录的情况,当我们配置了秘钥去登陆的话有的时候是可以不用输入密码,这也会带来一个问题:如果攻击者在攻击的时候在authorized_keys里面带上自己的一个秘钥,那么他每次登录的时候我们的日志不会显示出任何的异常,直接显示登录成功的状态,这个时候其实我们已经被提权了。这个时候我们就要去检查一下authorized_keys里面有没有这种不常见的,可疑的主机名和用户名,因为他这里面会记录好服务器的主机名和用户名。

日志分析全部内容比较多,相关的操作也非常多,我都录了视频详细的记录操作过程,感兴趣的朋友可以点击链接直接查看:

目前,互联网企业对于安全的重视程度越来越高。安全从业人员的薪资待遇也慢慢的水涨船高。市面上有很多针对web渗透的教学案例,甚至有些是高价付费学习,但是他们对于安全防御,安全建设的资料非常零散,很多都不够贴合甲方互联网企业的实际情况。对于中小企业的IT运维人员,或者是在校生来说,想学习大型防御体系建设是比较复杂和吃力的。

传统的安全建设,形式大多处于填坑救火的level,一方面是公司自身的安全意识不强;另一方面是小公司的安全资源配备有限。但是随着现在体系理论和开源解决方案的成熟,安全建设在人少的团队下面也可以做的非常漂亮。之前就有朋友提议出一个相关的体系化内容分享,经历了大半年也终于算是画上了句号。整个内容基于纵深防御体系展开,纵深防御体系——是目前大多数甲方采用的防御模型。从安全的基础设施建设开始会配合大量开源案例,一步步介绍到体系化防御是如何形成的。安全建设是反入侵视角,需要我们针对攻击活动中的每一步“埋点”,进行预判。

为了避免很多朋友觉得免费的东西不值得学习,所以内容设置了一元,不作盈利:

领取地址:https://zhishihezi.net/box/80ccbb4b0546ad86786c07e3ce016639?u_source=anquanke2

认真学完之后相信可以掌握纵深防御体系思想,一些基础的运维安全防御:如,服务系统加固,基线检查,简单的入侵检测,和日志收集分析的入门等等。

目前这些内容都是免费开放的,如果对安全运维工程师这份工作感兴趣的朋友可以抽空学习一下,学完之后也可以按照内容的架构再深入研究,相信可以在未来大有一番作为。