常见取证总结——2
日志分析
计算机、网络和其他IT系统生成审计跟踪记录或记录系统活动的日志。通过对这些记录的分析评估,帮助公司缓解各种风险或者发现受到的攻击行为。
日志分析主要分成两种:
Web日志分析
系统日志分析
Web日志分析
日志格式类型
分析日志之前我们先了解一下日志的格式有哪些。
目前比较常见的WEB日志格式主要有两类:
- Apache的NCSA日志格式,NCSA格式分为:
- NCSA普通日志格式(CLF)
- NCSA扩展日志格式(ECLF)
- IIS的W3C日志格式
除了格式不同之外,一般的分析方法基本相似,下面用NCSA普通日志格式进行讲解。
首先,它的格式如下:
常用日志分析方法
常见的日志分析方法有两种:
特征字符分析
访问频率分析
特征字符分析
特征字符分析法:顾名思义,就是根据攻击者利用的漏洞特征,进行判断攻击者使用的是哪一种攻击。
常见的类型有SQL注入、XSS跨站脚本攻击、恶意文件上传、一句话木马连接等。
SQL注入
漏洞特征:存在SQL注入语句
常见的SQL注入语句有:
- 通过报错注入、布尔盲注、时间盲注判断是否存在注入:
- 字符型
- 参数后加单引号,报错:sql1.php?name=admin’
- 参数后加’ and ‘1’=’2和’ and ‘1’=’2,访问正常:sql1.php?name=admin’ and ‘1’=’1 /sql1.php?name=admin’ and ‘1’=’2
- 参数后加’ and sleep(3) —,是否延迟3秒打开:sql1.php?name=admin’ and/or sleep(3)—
- 数字型
- 参数后加单引号,报错:sql2.php?id=1’
- 参数后加and 1=1和and 1=2,访问正常:sql2.php?id=1 and 1=1/sql2.php?id=1 and 1=2
- 参数后加and sleep(5),是否延迟3秒打开:sql2.php?id=1 and sleep(5)
- 字符型
- 通过各种注入语句进行SQL注入攻击:
- 联合查询注入
- union select
- order by
- 报错注入(常见报错注入函数)
- floor()
- extractvalue()
- updatexml()
- geometrycollection()
- multipoint()
- polygon()
- multipolygon()
- linestring()
- multilinestring()
- exp()
- 常见数据库类型判断
- ACCESS
and (select count () from sysobjects)>0返回异常
and (select count () from msysobjects)>0返回异常 - SQLSERVER
and (select count () from sysobjects)>0返回正常
and (select count () from msysobjects)>0返回异常
and left(version(),1)=5%23参数5也可能是4 - MYSQL
id=2 and version()>0返回正常
id=2 and length(user())>0返回正常
id=2 CHAR(97, 110, 100, 32, 49, 61, 49)返回正常 - Oracle
and length (select user from dual)>0返回正常
- ACCESS
- 联合查询注入
上述内容并非全部,只是举出来的部分常见例子。
XSS跨站脚本攻击
漏洞特征:明显的js恶意执行代码
常见的XSS跨站脚本攻击中存在的一些代码:
- 标签
- <script>
- <body>
- <input>
- <img>
- <a>
- <svg>
- <BGSOUND>
- <LINK>
- <META>
- <TABLE>
- <DIV>
- <IFRAME>
- <FRAMESET>
- <STYLE>
- <OBJECT>
- ……
- 常用触发事件
- oninput
- onload
- oncut
- onclick
- onerror
- onmouseover
- onfocus
- onblur
- poster
- onscroll
- ……
常用恶意代码
- prompt
- confirm
- alert
- javascript
- eval
- expression
window.location
……
这里要注意一点:由于apache日志的特性,如果是通过Post请求,则无法准确判断出是否存在XSS跨站脚本攻击
恶意文件上传
通常存在于upload、file等出现类似字样的文件,均可能存在恶意文件上传,具体还需结合日志进行判断,一般是判断后续是否有出现Webshell等一些可以的web操作,可通过查看下图,发现在file.php页面的前后日志中,有存在一个带着日期的php页面,很可能就是利用file.php上传的文件,服务器自动生成名字,因此判断此处可能存在恶意文件上传。
一般地,如果Post请求的数据未被显示出来,则需要我们通过访问的链接以及上下文的访问详情确认此处是否存在恶意文件上传
一句话木马(Webshell)
一般名字可疑的文件,如带日期字样的页面(.php、.asp、.aspx、.ash、.jsp等)、一串随机值的页面等,并且是通过Post请求,同时会返回一定的数据,此时可判断可能存在一句话木马、webshell等恶意文件,有些日志可能还有post请求参数,可结合参数,更准确地判断出是否存在一句话木马、webshell等恶意文件。
访问频率分析
访问频率分析:不难理解,就是通过查看攻击者访问的频率来判断攻击者使用的是哪一种攻击。
这一特点分析法也常常用在流量分析中。
常见的类型有有以下:SQL盲注、敏感目录爆破、账号爆破、Web扫描。
- SQL盲注
一般访问比较有规律,基本都包含SQL语句,并且大体都相似,有个别字符不同 - 敏感目录爆破
一般会有大量的探测目录,一般以Head方法为主进行探测 - 账号爆破
通常都是对一个登录页面进行大量post请求,并且返回值基本相似 - Web扫描
一般来说,访问的目标比较离散,并且来源地址相对固定,同时访问的结果大多数也都是失败的,并且在参数中有比较明显的扫描器特征字段
常见扫描器在url上的特征:- AWVS 10.5或11
acunetix-wvs-test-for-some-inexistent-file
by_wvs
acunetix_wvs_security_test
acunetix
acunetix_wvs
acunetix_test
wvs_test - Netsparker
netsparker
Netsparker
ns: netsparker - Appscan
Appscan - Webinspect
HP404 - Rsas
nsfocus - Nessus
nessus
Nessus - Sqlmap
sqlmap
- AWVS 10.5或11
系统日志分析
Linux操作系统
Linux的系统日志一般存放在/var/log目录下,常见的日志(列举部分)有以下:
/var/log/messages
用于记录系统相关信息,如执行程序、系统错误、启动信息等,一般我们会使用message进行查看可疑程序执行的可疑操作,系统在执行程序时出现错误等,
对应的格式:
日期 时间 主机 执行的程序[进程ID]:具体信息
/var/log/boot.log
用于记录系统启动信息的日志,一般用于查看在系统启动时所有相关信息,具体如下:
不难发现,该日志记录的是系统启动时的启动信息,比如开启了哪些服务、做了什么操作都能一目了然。
/var/log/lastlog
用于记录了用户近期登陆情况,直接查看lastlog,可能信息不太明显,但是也可以使用lastlog命令进行查看,会比较详细:
/var/log/cron
Linux的计划任务相关信息的日志,我们也会使用它来找寻攻击者可能会写入的一些恶意计划任务,其中可能会带有一些恶意软件等相关信息。
/var/log/secure
此日志是linux 的安全日志,被用于记录用户工作的安全相关问题以及登陆认证情况,
Windows操作系统
Windows日志一般在事件查看器中可以进行查看,通常分为五个:应用程序、安全、Setup、系统、转发事件。并且这五个中又以应用程序、安全以及系统日志较为常见。
应用程序日志
此日志顾名思义便是记录了应用程序的运行情况,包括运行出错、甚至于出错的原因,如:
它指出了错误应用程序名称、版本、具体时间错,并且还指出了错误的模块以及异常代码,故而,我们可以通过这些信息,进行对应的故障排查,具体如何排查可通过适当的资料等进行,这里不做过多说明,需要提的是它在Windows中保存在Application.evtx文件中,如果在CTF比赛中看到这个文件,那么可能就是让你进行应用程序日志分析了。
安全日志
此处的安全日志和Linux的安全日志相似,但是它只记录用户登陆情况、用户访问时间以及访问是否授权等,通过它我们可以轻松的发现是否存在爆破风险(一般在短时间内发现大量登陆失败,即可认为该账号被爆破了)。
系统日志
系统日志则是记录了操作系统安装的应用程序软件相关的事件。它包括了错误、警告及任何应用程序需要报告的信息等。
相比于Linux 的日志,Windows对于系统日志的记录,也是挺详细的,我们可以通过它来进行一些分析判断,它存在于System.evtx文件中。
它详细到可以发现使用者信息、登陆类型、登陆失败的账户、失败信息、进程信息、内网信息以及详细身份验证信息等,十分方便。它在操作系统中保存在Security.evtx文件下,我们也可以通过双击它打开安全日志。