Log Analysis

摘自 大数据安全分析:我们从日志中得到的

IIS的日志字段,根据配置的不同,可以多达22个字段,分别是:

date:发出请求时候的日期。time:发出请求时候的时间。
注意:默认情况下这个时间是格林威治时间,比我们的北京时间晚8个小时,下面有说明。
c-ip:客户端IP地址。
cs-username:用户名,访问服务器的已经过验证用户的名称,匿名用户用连接符-表示。
s-sitename:服务名,记录当记录事件运行于客户端上的Internet服务的名称和实例的编号。
s-computername:服务器的名称。
s-ip:服务器的IP地址。
s-port:为服务配置的服务器端口号。
cs-method:请求中使用的HTTP方法,GET/POST。
cs-uri-stem:URI资源,记录做为操作目标的统一资源标识符(URI),即访问的页面文件。
cs-uri-query:URI查询,记录客户尝试执行的查询,只有动态页面需要URI查询,如果有则记录,没有则以连接符-表示。即访问网址的附带参数。
sc-status:协议状态,记录HTTP状态代码,200表示成功,403表示没有权限,404表示找不到该页面,具体说明在下面。
sc-substatus:协议子状态,记录HTTP子状态代码。
sc-win32-status:Win32状态,记录Windows状态代码。
sc-bytes:服务器发送的字节数。
cs-bytes:服务器接受的字节数。
time-taken:记录操作所花费的时间,单位是毫秒。
cs-version:记录客户端使用的协议版本,HTTP或者FTP。
cs-host:记录主机头名称,没有的话以连接符-表示。注意:为网站配置的主机名可能会以不同的方式出现在日志文件中,原因是HTTP.sys使用Punycode编码格式来记录主机名。
cs(User-Agent):用户代理,客户端浏览器、操作系统等情况。
cs(Cookie):记录发送或者接受的Cookies内容,没有的话则以连接符-表示。
cs(Referer):引用站点,即访问来源。

这些字段就是我们寻找用户行为和攻击行为的切入点。

一个简单的例子: 从IIS字段中,我们选取几个要素IP,返回码,访问URL,即 c-ip,sc-status,cs-uri-stem 如果对这三个字段进行分别统计分析,我们可能可以得到一定时间范围内,服务器的访问情况,URL请求情况,返回码情况,是无法检测出一定异常的,因此我会对这三个字段进行关联分析,如:

  • 每个IP在访问服务器的时候,他的状态码比例是如何的,如果是相同的业务访问,状态码的比例波动应该变化不大
  • 对于一个IP,访问的URL应该是离散的,而不是聚合(收束)的,就是说,如果出现一个IP访问特定的几个URL的频率很高,那么很有可能这个就是个采集器,或者正在进行漏洞的验证。
  • 对于特定的URL,其相关请求,如URL之间的关联关系,应该是类似的,因为所有页面请求基本有一样,同理同样的URL请求,它的状态码应该也是一样的,不应该出现较大波动,比如访问index.aspx,那肯定会访问index.css,如果没有,那可能就是自动化提交的工具。
  • URL的rank值在很大程度上也是有规律的,即IP用户的入口点是有规律的,在总结了所有的高可能性入口点后,如果出现某个IP突然访问一个新的入口点,那么这个IP可能是被XSS或者CSRF或者是webshell。