1 web日志检查

讲解:web访问日志记录客户端访问服务端指定资源的关键信息,通过如下日志示例我们可以得知访问者的ip地址在什么时间通过哪种http请求方式使用了什么浏览器访问了服务端的哪个页面,并且将访问响应状态以状态码的形式记录在日志中。

127.0.0.1 - - [11/jun/2018:12:47:22 +0800] "get /login.html http/1.1" 200 786 "-" "mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/66.0.3359.139 safari/537.36"

注意点:

apache的web访问日志通常位于/var/log/httpd/access_log

nginx的web访问日志通常位于nginx主目录下/logs/access.log。也可通过查看web服务器的配置文件获得web访问日志文件的实际路径。

iis服务器web访问日志通常位于c:\windows\system32\logfiles\或c:\inetpub\logs\logfiles

某些特定情况下若网站存在文件包含漏洞可通过植入一句话木马至ua中,日志文件记录后,利用文件包含漏洞获得服务器web权限。

服务器本地日志在被攻击者入侵后不可信,因为攻击者获取服务器权限后可对日志文件进行任意篡改,需有第三方日志审计设备对日志进行审计和记录。

内容:

确定入侵的时间范围,查找这个时间范围内可疑的日志,进一步排查,关联ip、最终确定攻击者,还原攻击过程。

一般攻击者攻击前首先会利用工具进行漏洞扫描和后台扫描,会产生大量404响应码,可关联入侵时间综合分析。

攻击者在入侵网站后,通常会留下后门维持权限,以方便再次访问,我们可以找到该文件,并以此为线索来展开分析。

示例1:通过攻击时间确定攻击路径

扫描行为特征:短时间内产生大量404请求,404状态码表示客户端请求的资源不存在,一般后台扫描器或漏洞扫描器会产生大量404请求。

使用如下系统自带命令将web日志中产生大量404状态码的ip地址去重并计数展示出来。下图为主机10.211.55.4发出了5888条404状态码的请求。

cat access.log  | grep 404 | awk '{print $1}' | sort | uniq -c

1617005434_60618b7a4b58cb87a2efb.png!small

1617005446_60618b8668fc8e8c18403.png!small

使用如下系统命令过滤出可疑主机成功访问的服务器文件,ip地址根据上一步过滤出的可疑主机进行查询。

1617005482_60618baa92077c4bea32f.png!small?1617005482912

cat access.log | grep 10.211.55.4 | grep -v "404"|grep “200” | awk '{print $7}'

示例2通过可疑文件确定攻击路径

通过webshell检查工具确认后门文件位置和名称,可将网站脚本文件打包后导出并使用第三方webshell检查工具进行检查。

1617005533_60618bdd7332a43ed2e17.png!small?1617005534301

确认后门文件名称和位置后,使用如下命令对日志文件进行分析:

cat access.log | grep config.jsp

该命令可过滤出所有所有config.jsp后门文件的请求,如下可发现访问源地址为172.17.0.1。

1617005546_60618beaf13d35c47206d.png!small?1617005547994

根据上一步获得的可疑ip地址,进一步搜索该地址访问的页面,可以发现该地址在访问config.jsp前访问了/pass-01/index.jsp。

通过如下命令获得可疑地址访问的页面并去重计数

cat access.log | grep 172.17.0.1 |  awk '{print $7}' | uniq -c

1617005570_60618c02e1913e60efe91.png!small?1617005571893

使用浏览器访问该页面,发现该页面为文件上传页面,攻击者可通过该页面上传后门文件(实际场景下可能为上传头像或图片、后台上传文件等路径)。

1617008694_6061983650430d7d70b7f.png!small?1617008694983

2系统应用日志

讲解:系统应用日志一般指操作系统自带应用的日志,linux系统记录的系统登录日志、系统运行日志,计划任务日志如下:

1617005816_60618cf8d66c25263a7fc.png!small?1617005817759Windows系统日志可通过系统自带程序事件查看器打开,通过在运行中输入eventvwr.msc打开或右击我的电脑后打开管理中可看到事件管理器。

1617005841_60618d119266c919d3d5b.png!small?1617005842843

linux系统日志可记录SSH爆破攻击、定时任务反弹shell攻击的相关攻击痕迹。Windows系统日志可记录RDP暴力破解、恶意程序进程运行、新建后门账号等恶意行为。

注意点:

Centos系统SSH登录日志一般记录在/var/log/secure,Ubuntu上系统SSH登录日志一般记录在/var/log/auth.log。该日志文件可检查系统是否有暴力破解密码行为和登录成功事件等。

内容:

针对linux系统的SSH服务进行爆破,检查分析系统登录日志判断是否有异常地址登录成功的情况。

针对定时任务日志进行检查分析,判断黑客是否篡改了计划任务实现后门驻留恶意行为。

针对windows操作系统进行RDP暴力破解,并创建后门进程执行,检查分析系统日志发现其痕迹和过程。

示例1:linux系统SSH服务爆破

简介:

通过SSH暴力破解登录服务器,通过分析系统日志确定入侵源、入侵时间。

使用SSH爆破工具对目标服务器进行大量并发登录尝试操作,可以看到经过不断尝试后使用密码12345登录成功root账号。

1617005865_60618d29e8015d58e006c.png!small?1617005868714

使用系统命令cat secure | grep Failed可检索出所有ssh登录失败的记录。

1617005882_60618d3a7548b5495562b.png!small?1617005884418

使用如下命令可过滤出所有登录失败的可疑IP地址以及失败次数。

cat secure | grep Failed | awk '{print $ 11}' | uniq -c

1617005890_60618d4288d9573737c3f.png!small?1617005890770

使用如下命令可查看可疑IP地址是否有成功登录记录。通过该命令可看到可疑地址的登录时间和登录账户分别为12月2日晚上23点29分,登录账户为root账户。

cat secure | grep Accept | grep 10.211.55.5

1617005901_60618d4d251c0d6bd5cba.png!small?1617005901420

使用w命令查看当前系统是否仍有可疑地址处于登录中。

1617005909_60618d557b11319b406ee.png!small?1617005909963

使用last命令结合grep也可查看可疑地址的历史登录记录(secure日志被删除或篡改的情况下)。

1617005919_60618d5f3a634c6d84178.png!small?1617005920569

示例2 计划任务日志溯源

简介:

计划任务一般为黑客漏洞利用成功获得了一定的服务器权限后执行的提权或驻留操作手段。

通过crontab -e 写入一条反弹shell的计划任务,每一分钟执行一次如下:

1617005928_60618d680c0b726c67af0.png!small?1617005928352

攻击者通过监听对应的端口即可获取目标服务的shell,并控制目标服务器。

1617005938_60618d727f0bf0ece8958.png!small?1617005938842

Cron计划任务的每一条执行记录都会保存在/var/log/cron文件下,查看cron日志文件可看到每一分钟都执行了一条计划任务,且任务内容为一条反弹shell的系统命令。

通过检查定时任务可发现黑客尝试外联的公网地址以及计划任务的内容。

1617005953_60618d815e37f472eddde.png!small?1617005954857

示例3 windows系统日志

简介:

通过RDP爆破工具对windows系统的远程桌面进行爆破,并在获取服务器权限后上传后门文件执行。通过系统日志溯源整个入侵过程。(Windows本地安全策略需开启审核策略才可对爆破事件进行记录审核。)

1617005964_60618d8c7dd54a079a94c.png!small?1617005966441

使用RDP暴力破解工具进行远程桌面爆破,经过不断尝试使用密码12345成功登录administrator账户。

1617005972_60618d94b11e6dca0f8fb.png!small?1617005973921

可以看到15点38分左右存在大量审核失败的登录事件,未记录源IP但记录了源工作站名即WorkstationName。

1617005983_60618d9f5f0e3c8619cd2.png!small?1617005985491

内网环境下局域网内爆破某些情况下无源IP地址可尝试ping工作站名获得该主机的IP地址为10.211.55.5:

1617005995_60618dab89f14bd8a5d11.png!small?1617005996858

15点41分左右通过系统程序管理器打开了位于桌面的shell.exe可执行文件,可通过筛选4688事件ID获得系统进程创建的事件。

1617006009_60618db9445cc2518c1e8.png!small?1617006010501

10秒后通过shell.exe运行了一个cmd程序如下:

1617006020_60618dc414bb170a8dc85.png!small?1617006021126

随后通过cmd.exe运行了whoami命令。(该处可运行任意系统命令)

1617006043_60618ddb62da691b022ae.png!small?1617006044685

3 web后门检查

讲解:

攻击者通过漏洞利用后一般会上传web后门文件实现长期驻留以及远控,此时需针对网站甚至全盘进行web后门的检查,网站外的脚本文件检查是为了防止存在文件包含漏洞。

注意点:

部分环境下无法将网站文件下载至本地使用工具进行检查,需手动排查是否存在可疑文件或原文件被恶意篡改。

建议针对网站脚本文件进行哈希计算后保存,并在发生入侵事件后重新计算哈希值,通过对比两次哈希值差异,若存在新增或篡改文件即可立即进行检查和处置。

场景:

攻击者入侵后植入web后门文件,针对此类文件进行检查和清除。

内容:

web后门文件人工检查。

web后门文件工具检查。

示例:可疑web后门文件检查

部分特殊环境下无法上传工具或将网站文件打包下载时,需人工进行web后门文件的排查。

windows环境下可结合web日志中线索以及文件创建时间,通过优先排查日志中可疑脚本文件以及网站路径下与入侵时间相近的脚本文件或与其他网站脚本文件时间差距较大的文件。

linux环境下可通过搜索字符串的方式简单排查可疑网站脚本文件,若已知入侵时间,可根据时间范围,寻找可疑.php文件如下。(不同语言查找不同的文件后缀如jsp、asp)

查找24小时内被修改的php文件

find . -mtime 0 -name "*.php"

1617006102_60618e16da00106e29df0.png!small?1617006103457

查找指定时间段被修改的php文件

find . -newermt '2020-09-03 00:00' ! -newermt '2020-09-04 00:00' -name "*.php"

1617006120_60618e28532f8c7c3d8d9.png!small?1617006121173

针对全站文件进行web后门检查命令如下:

find . -type f  | xargs grep -e "eval|system|assert"

针对一些非jsp文件中但也包含了恶意代码的文件也需进行分析处置,防止攻击者通过服务器解析漏洞或文件包含漏洞使其解析为jsp文件执行。

1617006136_60618e38b9761d5a32e79.png!small?1617006137169

若可对网站文件进行打包下载,可使用第三方离线web后门检查工具进行检查,由于web后门文件变形较多,人工不易发现其恶意代码,使用专业的工具可快捷全面的检测出web后门文件。

使用压缩命令将网站内所有文件进行打包

tar -czvf bak.tar.gz  *

1617006149_60618e45e6d6a482c4837.png!small?1617006150561

使用webshell查杀工具对打包的网站脚本文件进行检查。

1617006160_60618e50763aea166ee84.png!small?1617006162869

本文作者:zeros123, 转自FreeBuf