2024全网最全面及最新且最为详细的网络安全技巧 十一:应急响应系列之Windows,Linux及Web日志分析入侵排查;(2)[含2024护网行动各厂商面试精题及全网查杀工具整合]

肾透侧视攻城狮 2024-09-03 14:33:02 阅读 69

目录

11.5 勒索病毒自救指南

11.5.1 前言

11.5.2 勒索病毒搜索引擎

【360】 勒索病毒搜索引擎,支持检索超过800种常见勒索病毒

【腾讯】 勒索病毒搜索引擎,支持检索超过 300 种常见勒索病毒

【启明】VenusEye勒索病毒搜索引擎,超300种勒索病毒家族

【奇安信】勒索病毒搜索引擎

【深信服】勒索病毒搜索引擎

11.5.3 勒索软件解密工具集

【腾讯哈勃】勒索软件专杀工具

【金山毒霸】勒索病毒免疫工具

【火绒】安全工具下载

【瑞星】解密工具下载

【nomoreransom】勒索软件解密工具集

【MalwareHunterTeam】勒索软件解密工具集

【卡巴斯基】免费勒索解密器

【Avast】免费勒索软件解密工具

【Emsisoft】免费勒索软件解密工具

【GitHub 项目】勒索病毒解密工具收集汇总

日志分析篇

11.6 Windows日志分析

11.6.1 Windows事件日志简介

系统日志

应用程序日志

安全日志

11.6.2 审核策略与事件查看器

查看系统日志方法:

11.6.3 事件日志分析

举例1:可以利用eventlog事件来查看系统账号登录情况:

举例2:可以利用eventlog事件来查看计算机开关机的记录:(步骤同上)

11.6.4 日志分析工具

Log Parser

基本查询结构

使用Log Parser分析日志

1、查询登录成功的事件

2、查询登录失败的事件

3、系统历史开关机记录:

LogParser Lizard

Event Log Explorer

11.7 Linux日志分析

11.7.1 前言

11.8.1 日志简介

日志默认存放位置:/var/log/

查看日志配置情况:more /etc/rsyslog.conf

比较重要的几个日志:

 11.9.1日志分析技巧

 A、常用的shell命令

1、grep显示前后几行信息:

2、grep 查找含有某字符串的所有文件

3、如何显示一个文件的某几行:

4、在目录/etc中查找文件init

5、只是显示/etc/passwd的账户

6.删除历史操作记录,只保留前153行

B、日志分析技巧

1、/var/log/secure

2、/var/log/yum.log

11.8 Web日志分析

11.8.1 Web日志

11.8.2 日志分析技巧

第一种:确定入侵的时间范围

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

常用分析工具:

11.8.3 日志分析举例

1、定位攻击源

2、搜索相关日志记录

3、对找到的访问日志进行解读

11.8.4 日志统计分析技巧

统计爬虫:

统计浏览器:

IP 统计:

统计网段:

统计域名:

HTTP Status:

URL 统计:

文件流量统计:

URL访问量统计:

脚本运行速度:查出运行速度最慢的脚本

IP, URL 抽取


11.5 勒索病毒自救指南

11.5.1 前言

经常会有一些同学问:中了勒索病毒,该怎么办,可以解密吗?第一次遇到勒索病毒是在早几年的时候,我因网站访问异常,进而师傅协助我进行排查。登录服务器,在 站点目录下发现所有的脚本文件及附件后缀名被篡改,每个文件夹下都有一个文件打开后显示勒索提示信息,这便是勒索病毒的特征。出于个人习惯,我打包了部分加密文件样本和勒索病毒提示信息用于留档,就在今天,我又重新上传了样本,至今依然无法解密。 作为一个网络安全攻城狮,而非一个专业的病毒分析师,我们可以借助各大安全公司的能力,寻找勒索病毒的解密工具。本文整理了一份勒索病毒自救指南, 通过勒索病毒索引引擎查找勒索病毒相关信息,再通过各个安全公司提供的免费勒索软件解密工具解密。当然, 能否解密全凭运气,so,平时还是勤打补丁多备份。

11.5.2 勒索病毒搜索引擎

在勒索病毒搜索 引擎输入病毒名、勒索邮箱、被加密后文件的后缀名,或直接上传被加密文件、勒索提示信息,即可可快速查找到病毒详情和解密工具。这些网站的解密能力还在持续更新中,是值得收藏的几个勒索病毒工具型网站。

【360】 勒索病毒搜索引擎,支持检索超过800种常见勒索病毒

官网:安全卫士勒索病毒专题:文件恢复_安全卫士离线救灾版_文档卫士

【腾讯】 勒索病毒搜索引擎,支持检索超过 300 种常见勒索病毒

官网:勒索病毒拦截|文件恢复_文档守护者保护文档安全 - 腾讯电脑管家

【启明】VenusEye勒索病毒搜索引擎,超300种勒索病毒家族

官网:VenusEye勒索病毒搜索引擎

【奇安信】勒索病毒搜索引擎

官网:勒索病毒搜索

【深信服】勒索病毒搜索引擎

官网:深信服EDR

11.5.3 勒索软件解密工具集

很多安全公司都提供了免费的勒索病毒解密工具下载,收集和整理相关下载地址,可以帮助我们了解和获取最新的勒索病毒解密工具。

【腾讯哈勃】勒索软件专杀工具

官网:腾讯哈勃分析系统

【金山毒霸】勒索病毒免疫工具

官网:金山毒霸防范勒索病毒

【火绒】安全工具下载

官网:火绒安全工具 - 火绒安全软件

【瑞星】解密工具下载

官网:瑞星防勒索病毒专题 - 瑞星

【nomoreransom】勒索软件解密工具集

官网:主页面 | The No More Ransom Project

【MalwareHunterTeam】勒索软件解密工具集

官网:ID Ransomware

【卡巴斯基】免费勒索解密器

官网:No Ransom: Free ransomware file decryption tools by Kaspersky

【Avast】免费勒索软件解密工具

官网:免费勒索软件解密工具 | 解锁您的文件 | Avast

【Emsisoft】免费勒索软件解密工具

官网:Emsisoft: Free Ransomware Decryption Tools

【GitHub 项目】勒索病毒解密工具收集汇总

官网:https://github.com/jiansiting/Decryption-Tools

日志分析篇

11.6 Windows日志分析

11.6.1 Windows事件日志简介

Windows系统日志是 记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。

系统日志

<code>记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。

默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx

应用程序日志

包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。

默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx

安全日志

记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。

默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx 系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。 安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。

11.6.2 审核策略与事件查看器

Windows Server 2008 R2 系统的审核功能在 默认状态下并没有启用 ,建议开启审核策略,若日后系统出现故障、安全事故则 可以查看系统的日志文件,排除故障,追查入侵者的信息等。PS:默认状态下,也会记录一些简单的日志,日志默认 大小20M 设置1开始 → 管理工具 → 本地安全策略 → 本地策略 → 审核策略,参考配置操作: 设置2:设置合理的 日志属性,即日志最大大小、事件覆盖阀值等:

查看系统日志方法:

“开始”菜单上,依次指向“所有程序”“管理工具”,然后单击“事件查看器”

按 "Window+R",输入 ”eventvwr.msc“ 也可以直接进入“事件查看器

11.6.3 事件日志分析

对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,摘录一些 常见的安全事件的说明:

事件ID

说明

4624

登录成功

4625

登录失败

4634

注销成功

4647

用户启动的注销

4672

使用超级用户(如管理员)进行登录

4720

创建用户

每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:

登录类型

描述

说明

2

交互式登录(Interactive)

用户在本地进行登录。

3

网络(Network)

最常见的情况就是连接到共享文件夹或共享打印机时。

4

批处理(Batch)

通常表明某计划任务启动。

5

服务(Service)

每种服务都被配置在某个特定的用户账号下运行。

6

解锁(Unlock)

屏保解锁。

7

网络明文(NetworkCleartext)

登录的密码在网络上是通过明文传输的,如FTP。

8

网络明文(NetworkCleartext)

使用带/Netonly参数的RUNAS命令运行一个程序。

9

远程交互,(RemoteInteractive)

通过终端服务、远程桌面或远程协助访问计算机。

10

缓存交互(CachedInteractive

通过终端服务、远程桌面或远程协助访问计算机。

关于更多EVENT ID,详见微软官方网站上找到了“Windows 7 和 Windows Server 2008 中的安全事件的说明”。
举例1:可以利用eventlog事件来查看系统账号登录情况:

“开始”菜单上,依次指向“所有程序”“管理工具”,然后单击“事件查看器”

在事件查看器中,单击“安全”,查看安全日志

在安全日志右侧操作中,点击“筛选当前日志”,输入事件ID进行筛选。

4624 --登录成功 4625 --登录失败 4634 -- 注销成功 4647 -- 用户启动的注销 4672 -- 使用超级用户(如管理员)进行登录

我们输入 事件ID:4625进行日志筛选,发现事件ID:4625,事件数175904,用户登录失败了175904次,那么这台服务器管理员账号可能遭遇了 暴力猜解

举例2:可以利用eventlog事件来查看计算机开关机的记录:(步骤同上)
1、在 “开始”菜单上,依次指向 “所有程序”“管理工具”,然后单击 “事件查看器”;2、在事件查看器中,单击 “系统”,查看系统日志;3、在系统日志右侧操作中,点击 “筛选当前日志”,输入事件ID进行筛选。其中 事件ID 6006 ID6005、 ID 6009就表示不同状态的机器的情况(开关机)。 6005 信息 EventLog 事件日志服务已启动。(开机) 6006 信息 EventLog 事件日志服务已停止。(关机) 6009 信息 EventLog 按ctrl、alt、delete键(非正常)关机我们输入事件ID:6005-6006进行日志筛选,发现了两条 在2024/8/24:10:51左右的记录, 也就是我刚才对系统进行重启的时间。  

11.6.4 日志分析工具

Log Parser

Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它 可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。Log Parser 2.2下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659Log Parser 使用示例:Log Parser Rocks! More than 50 Examples! | LichtenBytes

基本查询结构

<code>Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM c:\xx.evtx"

使用Log Parser分析日志

1、查询登录成功的事件

登录成功的所有事件

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4624"

指定登录时间范围的事件:

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where TimeGenerated>'2018-06-19 23:32:11' and TimeGenerated<'2018-06-20 23:34:00' and EventID=4624"

提取登录成功的用户名和IP:

LogParser.exe -i:EVT –o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM c:\Security.evtx where EventID=4624"

2、查询登录失败的事件

登录失败的所有事件:

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4625"

提取登录失败用户名进行聚合统计:

LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,EXTRACT_TOKEN(Message,19,' ') as user,count(EXTRACT_TOKEN(Message,19,' ')) as Times,EXTRACT_TOKEN(Message,39,' ') as Loginip FROM c:\Security.evtx where EventID=4625 GROUP BY Message"

3、系统历史开关机记录:

LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM c:\System.evtx where EventID=6005 or EventID=6006"

LogParser Lizard

对于GUI环境的Log Parser Lizard,其特点是 比较易于使用,甚至不需要记忆繁琐的命令,只需要做好设置,写好基本的SQL语句,就可以直观的得到结果。下载地址:Log Parser Lizard: Advanced SQL Analysis for Log Files依赖包:Microsoft .NET Framework 4 .5下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=42642

Event Log Explorer

Event Log Explorer是一款非常好用的Windows日志分析工具。可用于查看,监视和分析跟事件记录,包括安全,系统,应用程序和其他微软Windows 的记录被记载的事件, 其强大的过滤功能可以快速的过滤出有价值的信息。下载地址:Event Log Explorer - Download参考链接:Windows日志分析 第三十一期 取证实战篇-Windows日志分析

11.7 Linux日志分析

11.7.1 前言

Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。 本文简介一下Linux系统日志及日志分析技巧。

11.8.1 日志简介

日志默认存放位置:/var/log/

查看日志配置情况:more /etc/rsyslog.conf

日志文件

说明

/var/log/cron

记录了系统定时任务相关的日志

/var/log/cups

记录打印信息的日志

/var/log/dmesg

记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息

var/log/mailog

记录邮件信息

/var/log/message

记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件

/var/log/btmp

记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看

var/log/lastlog

记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看

/var/log/wtmp

永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看

/var/log/utmp

记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询

/var/log/secure

记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

比较重要的几个日志:

登录失败记录:

<code>/var/log/btmp //lastb 最后一次登录:

/var/log/lastlog //lastlog 登录成功记录:

/var/log/wtmp //last 登录日志记录:

/var/log/secure 目前登录用户信息:

/var/run/utmp //w、who、users 历史命令记录:history​ 仅清理当前用户:

history -c

 11.9.1日志分析技巧

 A、常用的shell命令

Linux下常用的shell命令如:find、grep 、egrep、awk、sed 小技巧:
1、grep显示前后几行信息:

标准unix/linux下的grep通过下面參数控制上下文:

​grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行

​grep -B 5 foo file 显示foo及前5行

​grep -A 5 foo file 显示foo及后5行

​查看grep版本号的方法是

​grep -V

2、grep 查找含有某字符串的所有文件

grep -rn "hello,world!"

* : 表示当前目录所有文件,也可以是某个文件名

-r 是递归查找

-n 是显示行号

-R 查找所有文件包含子目录

-i 忽略大小写

3、如何显示一个文件的某几行:

cat input_file | tail -n +1000 | head -n 2000

#从第1000行开始,显示2000行。即显示1000~2999行

4、在目录/etc中查找文件init

find /etc -name init

5、只是显示/etc/passwd的账户

`cat /etc/passwd |awk -F ':' '{print $1}'`

//awk -F指定域分隔符为':',将记录按指定的域分隔符划分域,填充域,​$0则表示所有域,$1表示第一个域,​$n表示第n个域。

6.删除历史操作记录,只保留前153行

sed -i '153,$d' .bash_history

B、日志分析技巧

1、/var/log/secure

1、定位有多少IP在爆破主机的root帐号:

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

定位有哪些IP在爆破:

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

爆破用户名字典是什么?

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

2、登录成功的IP有哪些:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

登录成功的日期、用户名、IP:

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

3、增加一个用户kali日志:

Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001

Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali

, shell=/bin/bash

Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali

#grep "useradd" /var/log/secure

4、删除用户kali日志:

Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'

Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'

Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'

# grep "userdel" /var/log/secure

5、su切换用户:

Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)

sudo授权执行:

sudo -l

Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

2、/var/log/yum.log
软件安装升级卸载日志:

yum install gcc

[root@bogon ~]# more /var/log/yum.log

Jul 10 00:18:23 Updated: cpp-4.8.5-28.el7_5.1.x86_64

Jul 10 00:18:24 Updated: libgcc-4.8.5-28.el7_5.1.x86_64

Jul 10 00:18:24 Updated: libgomp-4.8.5-28.el7_5.1.x86_64

Jul 10 00:18:28 Updated: gcc-4.8.5-28.el7_5.1.x86_64

Jul 10 00:18:28 Updated: libgcc-4.8.5-28.el7_5.1.i686

11.8 Web日志分析

11.8.1 Web日志

Web访问日志记录了 Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析,不仅可以帮助我们 定位攻击者,还可以帮助我们 还原攻击路径,找到网站存在的安全漏洞并进行修复。我们来看一条Apache的访问日志:

`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"` 通过这条Web访问日志,我们可以清楚的得知用户在什么IP、什么时间、用什么操作系统、什么浏览器的情况下访问了你网站的哪个页面,是否访问成功。本文通过介绍Web日志安全分析时的思路和常用的一些技巧。

11.8.2 日志分析技巧

在对WEB日志进行安全分析时,一般可以按照两种思路展开,逐步深入,还原整个攻击过程。
第一种:确定入侵的时间范围
以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。
第二种:攻击者在入侵网站后,通常会留下后门维持权限,以方便再次访问,我们可以找到该文件,并以此为线索来展开分析。
常用分析工具:
Window下,推荐用 EmEditor 进行日志分析,支持大文本,搜索效率还不错。 Linux下,使用Shell命令组合查询分析。Shell+Linux命令实现日志分析,一般 结合grep、awk等命令等实现了几个常用的日志分析统计技巧。Apache日志分析技巧:

1、列出当天访问次数最多的IP命令:

cut -d- -f 1 log_file|uniq -c | sort -rn | head -20

2、查看当天有多少个IP访问:

awk '{print $1}' log_file|sort|uniq|wc -l

3、查看某一个页面被访问的次数:

grep "/index.php" log_file | wc -l

4、查看每一个IP访问了多少个页面:

awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file

5、将每个IP访问的页面数进行从小到大排序:

awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n

6、查看某一个IP访问了哪些页面:

grep ^111.111.111.111 log_file| awk '{print $1,$7}'

7、去掉搜索引擎统计当天的页面:

awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l

8、查看2018年6月21日14时这一个小时内有多少IP访问:

awk '{print $4,$1}' log_file | grep 21/Jun/2018:14 | awk '{print $2}'| sort | uniq | wc -l

11.8.3 日志分析举例

Web日志分析实例: 通过nginx代理转发到内网某服务器,内网服务器某站点目录下被上传了多个图片木马,虽然II7下不能解析,但还是想找出谁通过什么路径上传的。在这里,我们遇到了一个问题: 由于设置了代理转发,只记录了代理服务器的ip,并没有记录访问者IP?这时候,如何去识别不同的访问者和攻击源呢?这是管理员日志配置不当的问题,但好在我们可以 通过浏览器指纹来定位不同的访问来源,还原攻击路径。

1、定位攻击源

首先访问 图片木马的记录,只找到了一条,由于所有访问日志只记录了代理IP,并不能通过IP来还原攻击路径,这时候,可以利用浏览器指纹来定位。浏览器指纹:

`Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E)`

2、搜索相关日志记录

通过筛选与该浏览器指纹有关的日志记录,可以清晰地看到攻击者的攻击路径。

3、对找到的访问日志进行解读

攻击者大致的访问路径如下:

A、攻击者访问首页和登录页

B、攻击者访问MsgSjlb.aspx和MsgSebd.aspx

C、攻击者访问Xzuser.aspx

D、攻击者多次POST(怀疑通过这个页面上传模块缺陷)

E、攻击者访问了图片木马

//打开网站,访问Xzuser.aspx,确认攻击者通过该页面的进行文件上传了图片木马,

同时,发现网站了存在越权访问漏洞,攻击者访问特定URL,无需登录即可进入后台界面。

通过日志分析找到网站的漏洞位置并进行修复。

11.8.4 日志统计分析技巧

统计爬虫:

grep -E 'Googlebot|Baiduspider' /www/logs/access.2019-02-23.log | awk '{ print $1 }' | sort | uniq

# 从日志文件中提取包含 "Googlebot" 或 "Baiduspider" 的行

grep -E 'Googlebot|Baiduspider' /www/logs/access.2019-02-23.log |

# 从这些行中提取第一个字段 (通常是 IP 地址)

awk '{ print $1 }' |

# 对提取出的 IP 地址进行排序

sort |

# 去除重复的 IP 地址,保留唯一的 IP

uniq

统计浏览器:

cat /www/logs/access.2019-02-23.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' | sort | uniq -c | sort -r -n | head -n 100

# 显示日志文件内容,并传递给管道的下一个命令

cat /www/logs/access.2019-02-23.log |

# 排除包含指定浏览器标识的行

grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' |

# 对排除后的记录进行排序

sort |

# 对排序后的记录进行去重,并统计每个唯一记录的出现次数

uniq -c |

# 根据出现次数对结果进行降序排序

sort -r -n |

# 输出出现次数最多的前100条记录

head -n 100

IP 统计:

grep '23/May/2019' /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 10

2206 219.136.134.13

1497 182.34.15.248

1431 211.140.143.100

1431 119.145.149.106

1427 61.183.15.179

1427 218.6.8.189

1422 124.232.150.171

1421 106.187.47.224

1420 61.160.220.252

1418 114.80.201.18

# 从日志文件中提取包含特定日期 (23/May/2019) 的所有行

grep '23/May/2019' /www/logs/access.2019-02-23.log |

# 从这些行中提取第一个字段 (假设为 IP 地址)

awk '{print $1}' |

# 将 IP 地址转换为网络前缀格式 (例如,192.168.1.1 转换为 192.168.1.0)

awk -F'.' '{print $1"."$2"."$3"."$4}' |

# 对网络前缀格式的 IP 地址进行排序

sort |

# 统计每个网络前缀的出现次数,并显示这些次数

uniq -c |

# 按出现次数的降序对统计结果进行排序

sort -r -n |

# 提取出现次数最多的前 10 个网络前缀及其出现次数

head -n 10

统计网段:

cat /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200

# 显示日志文件的内容

cat /www/logs/access.2019-02-23.log |

# 提取每一行的第一个字段 (假设为 IP 地址)

awk '{print $1}' |

# 将 IP 地址转换为网络前缀格式 (例如,192.168.1.5 转换为 192.168.1.0)

awk -F'.' '{print $1"."$2"."$3".0"}' |

# 对网络前缀格式的 IP 地址进行排序

sort |

# 统计每个网络前缀的出现次数,并显示这些次数

uniq -c |

# 按出现次数的降序对统计结果进行排序

sort -r -n |

# 提取出现次数最多的前 200 个网络前缀及其出现次数

head -n 200

统计域名:

cat /www/logs/access.2019-02-23.log |awk '{print $2}'|sort|uniq -c|sort -rn|more

# 显示日志文件内容,并传递给管道的下一个命令

cat /www/logs/access.2019-02-23.log |

# 排除包含指定浏览器标识的行

grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' |

# 对排除后的记录进行排序

sort |

# 对排序后的记录进行去重,并统计每个唯一记录的出现次数

uniq -c |

# 根据出现次数对结果进行降序排序

sort -r -n |

# 输出出现次数最多的前100条记录

head -n 100

HTTP Status:

cat /www/logs/access.2019-02-23.log |awk '{print $9}'|sort|uniq -c|sort -rn|more

5056585 304

1125579 200

7602 400

5 301

# 显示日志文件的内容

cat /www/logs/access.2019-02-23.log |

# 提取每一行的第九个字段 (通常是 HTTP 响应状态码)

awk '{print $9}' |

# 对提取出的状态码进行排序

sort |

# 统计每个唯一状态码的出现次数,并显示这些次数

uniq -c |

# 按出现次数的降序对统计结果进行排序

sort -rn |

# 分页显示排序后的结果,便于查看

more

URL 统计:

cat /www/logs/access.2019-02-23.log |awk '{print $7}'|sort|uniq -c|sort -rn|more

#同统计网段

文件流量统计:

cat /www/logs/access.2019-02-23.log |awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}'|sort -rn|more

grep ' 200 ' /www/logs/access.2019-02-23.log |awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}'|sort -rn|more

#第一部分

# 显示日志文件的内容

cat /www/logs/access.2019-02-23.log |

# 使用 awk 计算每个 URL 路径的总响应字节数,并打印结果

awk '{sum[$7]+=$10} END {for(i in sum) {print sum[i], i}}' |

# 对计算结果按总响应字节数降序排序

sort -rn |

# 分页显示排序后的结果,便于查看

more

#第二部分

# 从日志文件中过滤出状态码为 200 的行

grep ' 200 ' /www/logs/access.2019-02-23.log |

# 使用 awk 计算每个 URL 路径的总响应字节数,并打印结果

awk '{sum[$7]+=$10} END {for(i in sum) {print sum[i], i}}' |

# 对计算结果按总响应字节数降序排序

sort -rn |

# 分页显示排序后的结果,便于查看

more

URL访问量统计

cat /www/logs/access.2019-02-23.log | awk '{print $7}' | egrep '\?|&' | sort | uniq -c | sort -rn | more

# 显示日志文件的内容并提取 URL 路径

cat /www/logs/access.2019-02-23.log |

# 使用 awk 打印 URL 路径

awk '{print $7}' |

# 使用 egrep 过滤出包含问号或与号的 URL 路径

egrep '\?|&' |

# 对过滤后的 URL 路径进行排序

sort |

# 统计每个 URL 路径的出现次数,并去重

uniq -c |

# 对统计结果按出现次数降序排序

sort -rn |

# 分页显示排序后的结果,以便逐页查看

more

脚本运行速度:查出运行速度最慢的脚本

grep -v 0$ /www/logs/access.2019-02-23.log | awk -F '\" ' '{print $4" " $1}' web.log | awk '{print $1" "$8}' | sort -n -k 1 -r | uniq > /tmp/slow_url.txt

# 从日志文件中排除结尾为0的行,并将结果传递给下一条命令

grep -v 0$ /www/logs/access.2019-02-23.log |

# 使用 awk 以双引号后的空格作为分隔符,提取第四列和第一列,格式化为"第四列 第一列",并将结果输出到 web.log 文件

awk -F '\" ' '{print $4" " $1}' web.log |

# 使用 awk 从每行中提取第一列和第八列,格式化为"第一列 第八列"

awk '{print $1" "$8}' |

# 对提取后的数据按第一列(数字)进行降序排序

sort -n -k 1 -r |

# 对排序后的结果进行去重

uniq >

# 将最终的结果输出到临时文件 /tmp/slow_url.txt

/ tmp/slow_url.txt

IP, URL 抽取

tail -f /www/logs/access.2019-02-23.log | grep '/test.html' | awk '{print $1" "$7}'

# 实时监控日志文件的新增内容

tail -f /www/logs/access.2019-02-23.log |

# 过滤出包含 '/test.html' 的行

grep '/test.html' |

# 使用 awk 提取每行的 IP 地址和 URL 路径

awk '{print $1" "$7}'

\tan \csc \sin



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。