1 日志分析
1.1 What is 日志
日志,是作为记录系统与服务最直接有效的方法。在日志中,可以发现访问记录以及发现攻击线索。日志分析也是最常用的分析安全 事件所采用的途径。系统日志和 web 日志分别记录了不同内容,为分析攻击提供了有效证据。
日志分析主要分成两种:
●Web日志分析
●系统日志分析
1.2 Web日志分析
1.2.1日志格式类型:
目前在比赛中比较常见的WEB日志格式主要有两类:
●Apache的NCSA日志格式,NCSA格式分为:
NCSA普通日志格式(CLF)
NCSA扩展日志格式(ECLF)
●IIS的W3C日志格式
1.2.2常用日志分析方法:
常见的日志分析方法有两种:
1.特征字符分析
2.访问频率分析
特征字符分析:
特征字符分析法:顾名思义,就是根据攻击者利用的漏洞特征,进行判断攻击者使用的是哪一种攻击。
常见的类型有以下: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()
访问频率分析:
访问频率分析:就是通过查看攻击者访问的频率来判断攻击者使用的是哪一种攻击。
常见的类型有有以下:SQL盲注、敏感目录爆破、账号爆破、Web扫描。
1.3系统日志分析
1.3.1 windows系统日志
简介
Windows系统默认以二进制XML Windows事件日志记录格式(由.evtx扩展名指定)将日志存储在%SystemRoot%\System32\Winevt\logs目录中。日志也可以使用日志订阅远程存储。对于远程日志记录,运行Windows Event Collector服务的远程系统订阅其他系统生成的日志。
类型
Windows日志一般在事件查看器中可以进行查看,通常分为五个:应用程序、安全、Setup、系统、转发事件。并且这五个中又以应用程序、安全以及系统日志较为常见。
应用程序日志
记录了应用程序的运行情况,包括运行出错、甚至于出错的原因
默认存放路径:%SystemRoot%\System32\Winevt\Logs\Application.evtx。
系统日志
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。默认存放路径:%SystemRoot%\System32\Winevt\Logs\System.evtx
安全日志
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。这个日志一般是安全工程师重点关注对象。
默认存放路径:%SystemRoot%\System32\Winevt\Logs\Security.evtx
查看本地日志
Win+R打开运行框,输入eventvwr.msc打开事件查看器,当使用默认的审核策略时,显示的日志内容仅仅是一些简单的内容,当修改审核策略之后,日志记录的内容会有所增加
1.3.2Linux系统日志
Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。
大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为 /etc/syslog.conf 或 rsyslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息。
Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。完成这个过程的程序就是syslog。syslog可以根据日志的类别和优先级将日志保存到不同的文件中。
默认配置下,日志文件通常都保存在“/var/log”目录下。
常见的日志类型,但并不是所有的Linux发行版都包含这些类型
1.4日志分析例题
1.4.1[陇剑杯 2021]日志分析(问1)
打开access.log文件,搜索200,发现www.zip文件
1.4.2[陇剑杯 2021]日志分析(问2)
搜索tmp
这串编码进行了url编码,解码一下,看到sess_car
1.4.3[陇剑杯 2021]日志分析(问3)
发现存在反序列化,类就是SplFileObject
1.4.4 [陇剑杯 2021]简单日志分析(问1)
这一串看着就不正常,状态量为500,参数为user
1.4.5[陇剑杯 2021]简单日志分析(问2)
把参数值解密
绝对路径为
/Th4s_IS_VERY_Import_Fi1e
1.4.6[陇剑杯 2021]简单日志分析(问3)
2 流量分析
2.1简介
总的来说有以下几个步骤
- 总体把握
- 协议分级
- 端点统计
- 过滤赛选
- 过滤语法
- Host,Protocol,contains,特征值
- 发现异常
- 特殊字符串
- 协议某字段
- flag 位于服务器中
- 数据提取
- 字符串取
- 文件提取
比赛中的流量分析可以概括为以下三个方向:
- 流量包修复
- 协议分析
- 数据提取
2.2wireshark简介
2.3基本语法
2.3常见关键字
2.4 例题
2.4.1 [CISCN 2023 初赛]被加密的生产流量
右击modbus流量包,选择追踪TCP流
可以看到这一串被加密的字符
解密一下,就得到flag啦
2.4.2 buuctf 被嗅探的流量
过滤http流
看到在第五个流量包中存在image等图像文件,于是追踪流
得到flag
2.4.3 攻防世界 流量分析1
统计协议分级
发现主要是tcp协议,就在tcp协议里面找flag
tcp contains "flag"
追踪tcp流,发现一串编码
解码,发现进行了两次url编码。这是时间盲注
然后以时间为规则来晒选HTTP协议
sleep(3)持续的时间大概是0.018ms
查询语句:frame.time_delta>0.018&&http,
我们得到了以时间排序好的http报文
同样追踪tcp流,然后进行解码,得到ascii码,49对应1
然后以此类推,我是手动对比ascii,得到flag
flag{1qwy2781}
2.4.4 攻防世界 流量分析2
协议分级
尝试导出http流
得到很多txt文件,拼接起来
拼接得 fl{17uaji1l}
修改成flag