admin管理员组

文章数量:1794759

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

  • 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 项目】勒索病毒解密工具收集汇总
  • 官网:

日志分析篇

11.6 Windows日志分析

11.6.1 Windows事件日志简介

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

Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。

系统日志
代码语言:javascript代码运行次数:0运行复制
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。

默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx
应用程序日志
代码语言:javascript代码运行次数:0运行复制
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。 

默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx
安全日志
代码语言:javascript代码运行次数:0运行复制
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。

默认位置:%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

创建用户

  • 事件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

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

  • 登录类型
  • 描述
  • 说明
  • 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下载地址:.aspx?id=24659

Log Parser 使用示例:Log Parser Rocks! More than 50 Examples! | LichtenBytes

基本查询结构
代码语言:javascript代码运行次数:0运行复制
Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM c:\xx.evtx"
使用Log Parser分析日志
1、查询登录成功的事件
代码语言:javascript代码运行次数:0运行复制
登录成功的所有事件
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、查询登录失败的事件
代码语言:javascript代码运行次数:0运行复制
登录失败的所有事件:
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、系统历史开关机记录:
代码语言:javascript代码运行次数:0运行复制
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

下载地址:.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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

  • 日志文件
  • 说明
  • /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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
比较重要的几个日志:

登录失败记录:

代码语言:javascript代码运行次数:0运行复制
/var/log/btmp //lastb

最后一次登录:

代码语言:javascript代码运行次数:0运行复制
/var/log/lastlog //lastlog

登录成功记录:

代码语言:javascript代码运行次数:0运行复制
 /var/log/wtmp //last

登录日志记录:

代码语言:javascript代码运行次数:0运行复制
/var/log/secure

目前登录用户信息:

代码语言:javascript代码运行次数:0运行复制
/var/run/utmp //w、who、users

历史命令记录:history

​ 仅清理当前用户:

代码语言:javascript代码运行次数:0运行复制
 history -c

11.9.1日志分析技巧

A、常用的shell命令

Linux下常用的shell命令如:find、grep 、egrep、awk、sed

小技巧:

1、grep显示前后几行信息:
代码语言:javascript代码运行次数:0运行复制
	标准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 查找含有某字符串的所有文件
代码语言:javascript代码运行次数:0运行复制
	grep -rn "hello,world!" 
	* : 表示当前目录所有文件,也可以是某个文件名
	-r 是递归查找
	-n 是显示行号
	-R 查找所有文件包含子目录
	-i 忽略大小写
3、如何显示一个文件的某几行:
代码语言:javascript代码运行次数:0运行复制
	cat input_file | tail -n +1000 | head -n 2000
	#从第1000行开始,显示2000行。即显示1000~2999行
4、在目录/etc中查找文件init
代码语言:javascript代码运行次数:0运行复制
find /etc -name init
5、只是显示/etc/passwd的账户
代码语言:javascript代码运行次数:0运行复制
`cat /etc/passwd |awk  -F ':'  '{print $1}'`  
//awk -F指定域分隔符为':',将记录按指定的域分隔符划分域,填充域,​$0则表示所有域,$1表示第一个域,​$n表示第n个域。
6.删除历史操作记录,只保留前153行
代码语言:javascript代码运行次数:0运行复制
sed -i '153,$d' .bash_history
B、日志分析技巧
1、/var/log/secure
代码语言:javascript代码运行次数:0运行复制
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

软件安装升级卸载日志:

代码语言:javascript代码运行次数:0运行复制
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的访问日志:

代码语言:javascript代码运行次数:0运行复制
`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日志分析技巧:

代码语言:javascript代码运行次数:0运行复制
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来还原攻击路径,这时候,可以利用浏览器指纹来定位。

浏览器指纹:

代码语言:javascript代码运行次数:0运行复制
`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、对找到的访问日志进行解读

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

代码语言:javascript代码运行次数:0运行复制
A、攻击者访问首页和登录页
B、攻击者访问MsgSjlb.aspx和MsgSebd.aspx
C、攻击者访问Xzuser.aspx
D、攻击者多次POST(怀疑通过这个页面上传模块缺陷)
E、攻击者访问了图片木马

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

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

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

11.8.4 日志统计分析技巧

统计爬虫:
代码语言:javascript代码运行次数:0运行复制
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
统计浏览器:
代码语言:javascript代码运行次数:0运行复制
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 统计:
代码语言:javascript代码运行次数:0运行复制
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
统计网段:
代码语言:javascript代码运行次数:0运行复制
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
统计域名:
代码语言:javascript代码运行次数:0运行复制
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:
代码语言:javascript代码运行次数:0运行复制
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 统计:
代码语言:javascript代码运行次数:0运行复制
cat  /www/logs/access.2019-02-23.log |awk '{print $7}'|sort|uniq -c|sort -rn|more			
#同统计网段
文件流量统计:
代码语言:javascript代码运行次数:0运行复制
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访问量统计
代码语言:javascript代码运行次数:0运行复制
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
脚本运行速度:查出运行速度最慢的脚本
代码语言:javascript代码运行次数:0运行复制
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 抽取
代码语言:javascript代码运行次数:0运行复制
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}'
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-21,如有侵权请联系 cloudcommunity@tencent 删除日志分析网络安全工具技巧面试

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