应急响应-玄机刷题笔记 bakamu
前言
不得不说,感觉玄机有些题目的质量还是很适合我这种小白做的,比较好上手,而且这种做题形式比较有效率,有利于全方面学习。
日志分析-ssh日志分析
连接靶机
1 | ssh -p 222 root@52.82.16.4 |
Linux基础命令知识
awk是文本处理命令字符,用空格分隔列
自动按空白字符(空格、Tab)将每一行拆分成多个字段/列$1 表示第1列,$2 表示第2列……$NF 表示最后一列
可以对这些列进行过滤、计算、格式化输出
uniq 是一个去重命令,用于报告或删除文件中的重复行。

Linux日志
1 | /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 |
Linux日志应急基础命令
使用grep命令筛选:
1、统计了下日志,确认服务器遭受多少次暴力破解
1 | grep -o "Failed password" /var/log/secure|uniq -c |
2、输出登录爆破的第一行和最后一行,确认爆破时间范围:
1 | grep "Failed password" /var/log/secure|head -1 |
3、进一步定位有哪些 IP 在爆破?
1 | 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 | sort -nr |
4、爆破用户名字典都有哪些?
1 | grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1n";}'|uniq -c|sort -nr |
5、登录成功的日期、用户名、IP:
1 | grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' |
1 | tar -czvf html.tar.gz ./ |
web,html是要dump的目录,dump下来后进行D盾查杀
题目
日志分析-ssh日志分析
1.可以登录 SSH 的账号数量是多少
1 | cat /etc/ssh/sshd_config |
查看配置文件

只允许SSHD_USER和root两个组访问
然后查看组
1 | grep -E '^(root|SSHD_USER):' /etc/group |
-E 参数表示启用扩展正则表达式,支持更多高级符号和语法,如“|”表示或、“()”用于分组、“+”表示重复等,使表达式更简洁易读,匹配功能更强大^(root|SSHD_USER): 表示匹配以“root:”或“SSHD_USER:”开头的行

可以看到是root组为空,而SSHD_USER组是两个,toor和root
1 | flag{2} |
2.SSH日志中登录成功的日志条数是多少(去除自己登陆产生的两次)
那就访问日志文件,auth.log 是Linux 系统记录身份认证相关信息的日志文件,其中auth.log表示最新日志,auth.log.1表示上一轮未压缩归档,auth.log.N.gz表示更早的归档(N为数字)
1 | cd /var/log && ls |
进入日志文件系统

我们要分析归档文件
先gzip -d auth.log.2.gz,解压文件
这时cat会导致大量日志滚动,我们直接筛选出来就可以了
1 | grep -E "Accepted password|Accepted publickey" auth.log.1 auth.log.2 | wc -l |
Shell:103
1 | flag{103} |
grep -E-E启用扩展正则表达式(ERE),允许使用|表示“或”"Accepted password|Accepted publickey"
匹配两种成功登录模式:Accepted password:密码认证成功Accepted publickey:公钥认证成功auth.log.1 auth.log.2
同时搜索两个日志文件auth.log通常位于/var/log/,是 SSH 和系统认证日志| wc -l
管道传递给wc -l,统计输出行数
3.SSH日志中登录成功次数最多的用户的用户名是什么
1 | grep -E "Accepted password|Accepted publickey" auth.log.1 auth.log.2 | awk '{print $9}' | sort | uniq -c |

1 | flag{toor} |
4.SSH日志中登录失败次数最多的用户以及登录使用的ip是什么(flag:flag{用户名,ip})
1 | grep -E "Failed password|Failed publickey" auth.log.1 auth.log.2 | awk '{print $9, $(NF-3)}' | sort | uniq -c | sort -n |

1 | flag{root,87.163.111.11} |
第九章-blueteam 的小心思
1.攻击者通过什么密码成功登录了网站的后台?
查看日志进入var/log,要看登录日志,就要进入apache2文件夹,Apache2 是一个强大、稳定、灵活且免费的 Web 服务器,进入后查看access.log

Grep POST 可以看到黑客ip地址,由于日志中没发现密码,所以查看数据库
1 | find / -name config.inc.php |
配置文件 config.inc.php 是专门用于存放应用程序的配置参数,包括数据库连接信息

就看到了配置信息
数据库类型:pdo:mysql 数据库服务器:localhost 数据库用户名:root 数据库密码:mysql123 数据库名称:mirage
登录数据库
1 | mysql -u root -p mysql123 |
切换该靶机数据库
1 | use mirage; |
看看有什么表
1 | show tables; |

看user表呗
1 | select * from cpg16x_users; |
很可惜还是没找到密码,退出连接可以找一下流量包
1 | find / -name "*.pcap" |

果然有,finalshell连接一下下载下来,接下来就是流量分析了,找到login.php,逐个试一遍
Aa12345^
1 | flag{0ec527c43d058b733962566b827e5bf0} |
2.攻击者在哪个PHP页面中成功上传了后门文件?
接下来自己做了
依旧http过滤出POST,看见

有个upload,追踪发现上传了无加密zip和木马
pluginmgr.php
当然这里也可以在靶机中
1 | cat /var/log/apache2/access.log | grep "POST" | grep -i "upload" |
1 | flag{b05c0be368ffa72e6cb2df7e1e1b27be} |
3.找到攻击者上传的webshell文件,提交该文件的小写md5值
zip源码也写了是cpg.php
不知道为什么md5值和wp有区别,可能实在查看文件的时候不小心做了改动吧。
1 | flag{a097b773ced57bb7d51c6719fe8fe5f5} |
4.攻击者后续又下载了一个可执行的后门程序
这里我是直接看GET请求的,应为是后门程序文件,看来看去感觉最可疑的就是is.world了
1 | flag{ee279c39bf3dcb225093bdbafeb9a439} |
5.攻击者创建了后门用户的名称是?
直接查看useradd,追踪得到

useradd Linux 中添加用户的命令。
2. -p \openssl passwd -1 -salt ‘salt’ Aa123456`` 设置用户的加密密码。
子命令 含义 openssl passwd -1 使用 MD5 加密算法生成密码哈希 -salt ‘salt’ 指定盐值为 salt(增加密码安全性) Aa123456 明文密码 反引号 ... 先执行 openssl 命令,把生成的哈希结果作为 -p 参数的值 实际效果:密码 Aa123456 被加密后存入 /etc/shadow。
knowledgegraphd 要创建的用户名。
-o 允许创建 UID 重复 的用户。通常 UID 必须唯一,-o 绕过了这个限制。
-u 0 设置用户的 UID 为 0。 UID 0 的特殊含义:在 Linux 中,UID 0 是 root 用户 的唯一标识。任何 UID=0 的用户都拥有与 root 完全相同的系统最高权限。
-g root 设置用户的 主组 为 root 组。 7. -G root 设置用户的 附加组 为 root 组(实际上主组已经是 root,这里冗余但无害)。
-s /bin/bash 设置用户的登录 Shell 为 /bin/bash,意味着可以正常登录并执行命令。
-d /home/knowledgegraphd 设置用户的家目录为 /home/knowledgegraphd。
所以knowledgegraphd
当然也可以
1 | grep -n -H -a -i "useradd" ./auth.log |
1 | flag{4cda3461543c9a770a3349760594facd} |
6.攻击者创建了一个持久化的配置项,导致任意用户登录就会触发后门的连接。
1 | cd /etc/init.d |
/etc/init.d 是一个系统服务管理脚本目录,用于存放系统服务的启动、停止、重启、状态查询等控制脚本,也就是shell脚本
1 | cat etc/profile |
/etc/profile 是 Linux 系统中一个全局登录初始化脚本,它在每个用户登录时都会自动执行。“任意用户登录就会触发”。
profile
1 | flag{65bf3e4a9ac90d75ec28be0317775618} |
7.攻击者创建了一个持久化的配置项,导致只有root用户登录才会触发后门的连接。
那就看root目录的.bashrc文件.bashrc 是 Bash Shell 的用户级配置文件,用于定义交互式非登录 Shell 的行为和环境。
1 | cat .bashrc | grep python |

1 | flag{4acc9c465eeeb139c194893ec0a8bcbc} |
8.攻击者加密了哪个数据库?
看mysql文件,
1 | cd /var/lib/mysql |
发现clockup.php
加密了/var/lib/mysql/JPMorgan@0020Chase,用的aes-256-cbc
1 | flag{0928a5424aa6126e5923980ca103560e} |
9.解密数据库,提交Harper用户对应Areer的值。
这个不会了
10.因为什么文件中的漏洞配置,导致了攻击者成功执行命令并提权。
检查 /etc/sudoers 文件,
/etc/sudoers 是 Linux 系统中控制 sudo 权限的配置文件。它定义了哪些用户/组可以使用 sudo 命令执行哪些操作。www-data ALL=(root) NOPASSWD: /bin/systemctl status apache2.service 存在安全隐患
1 | flag{6585817513b0ea96707ebb0d04d6aeff} |
应急响应-Linux日志分析
1.有多少IP在爆破主机ssh的root帐号
1 | cat /var/log/auth.log* | grep -a "Failed password for root" | awk '{print $11}' | sort -n | uniq | tr '\n' ',' |

主要是linux的命令学习
2.ssh爆破成功登陆的IP是多少
1 | cat /var/log/auth.log* | grep -a "Accepted " | awk '{print $11}' | sort -n | uniq -c |

117.147.97.230是自己的ip
1 | flag{192.168.200.2} |
3.爆破用户名字典是什么?
1 | grep -a "Failed password" /var/log/auth.log.1|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr |

1 | flag{user,hello,root,test3,test2,test1} |
4.成功登录 root 用户的 ip 一共爆破了多少次?
1 | cat /var/log/auth.log* | grep -a "Failed password for root" | awk '{print $11}' | sort -n | uniq - |

1 | flag{4} |
5.黑客登陆主机后新建了一个后门用户,用户名是多少?
跟上个题目一样,看
1 | cat /var/log/auth.log* | grep -a "useradd" |

1 | flag{test2} |
应急响应-webshell查杀
1.黑客webshell里面的flag
用finalshell连接后在/var/www/html/include/里面找到gz.php文件,打开看见flag
1 | flag{027ccd04-5065-48b6-a32d-77c704a5e26d} |
2.黑客使用的什么工具的shell
可以看出是哥斯拉木马,https://github.com/BeichenDream/Godzilla
1 | flag{39392de3218c333f794befef07ac9257} |
3.黑客隐藏shell的完整路径的md5
可以直接看,也可以dum出来用D盾扫描出来
/var/www/html/include/Db/.Mysqli.php
1 | flag{aebac0e58cd6c5fad1695ee4d1ac1919} |
4.黑客免杀马完整路径
1 | cat /var/log/apache2/access.log | awk '{print $7}' | uniq |
查看access.log就可以,


/data/tplcache/top.php?1=phpinfo();有问题,正常网站不会允许通过 URL 参数直接执行 phpinfo()

像是在绕过,cat看一下

证据确凿了,是加密shell,base64+xor+字符拼接
1 | flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de} |
第一章日志分析-apache日志分析
1.提交当天访问次数最多的IP,即黑客IP
和之前一样的
192.168.200.2
当然正确做法是查看access.log文件
1 | cat access.log.1 access.log | awk '{print $1}' | sort |uniq -c | sort -nr |

1 | flag{192.168.200.2} |
2.黑客使用的浏览器指纹是什么?
1 | cat access.log.1 | grep 192.168.200.2 | awk -F'"' '{print $6}' access.log.1 | sort |uniq -c | sort -nr |

得到Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
1 | flag{2d6330f380f44ac20f3a02eed0958f66} |
3.查看包含index.php页面被访问的次数,提交次数:(不包括/xxx/index.php只筛选/index.php)
1 | cat access.log.1 access.log | grep '/index.php' | wc -l |

这里的wc -l是我自己加的,确实有用诶
1 | flag{27} |
4.查看黑客IP访问了多少次,提交次数
之前已经做出来了
1 | flag{6555} |
5.查看2023年8月03日8时这一个小时内有多少IP访问,提交次数。
1 | grep '03/Aug/2023:08' access.log.1 | awk '{print $1}' | sort | uniq -c | sort -nr | wc -l |

1 | flag{5} |
日志分析-windows日志分析base
首先这道题目要RDP连接,也就是远程桌面连接,直接用finalshell的远程连接就可以了
1.客户机的系统安全日志文件所在的绝对路径是?
打开命令提示符,
默认安全日志路径
C:\Windows\System32\winevt\Logs\Security.evtx
1 | flag{C:\Windows\System32\winevt\Logs} |
2.恶意用户是利用什么协议发起的登录?
题目中说用户是被挤掉线了,一般就是两种情况,RDP和网络登录(SMB,WinRM等)
在实践查看器里面找到4.6 12:00左右的登录日志会发现审核失败的情况

登录类型都是10,也就是RDP
1 | flag{rdp} |
3.攻击者总共使用了几个账户名尝试登录?
筛选出登录日志,一个个翻失败日志,发现是5个
审核失败尝试了 admin,XJ,XuanJi,XiaoMa
通过尝试了Administrator
1 | flag{5} |
4.攻击者总共在客户机上尝试创建了几个不同名用户?
筛选查看账户用户管理的日志

总共6个,看一下用户名,总共4个,账户名分别为hacker,hacker_real,system13,hack
1 | flag{4} |
windows实战-emlog
1.通过本地 PC RDP到服务器并且找到黑客植入 shell,将黑客植入 shell 的密码 作为 FLAG 提交
太卡了这系统,总之D盾查杀找到shell木马

密码是rebeyond
1 | flag{rebeyond} |
2.通过本地 PC RDP到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交;

在www/www/Extensions/apache2/logs找到log文件,查看后看见有大量的POST请求
1 | flag{192.168.126.1} |
3.分析黑客的隐藏账户名称
打开windows计算机管理器,在用户中找到账户
1 | flag{hacker138} |
4.分析黑客的挖矿程序的矿池域名
不知道为什么,找不到py脚本,只能找到程序,这里是要用py脚本运行解包后反编译的,严重怀疑这个容器受污染了,这么卡还。
Windows 实战-evtx 文件分析
题目就不说了,因为要传入虚拟机
其实就是分析etc文件,筛选和分析
应急响应常用的事件
用户登录事件:
4624:登录成功
4625:登录失败
4634:注销本地登录用户
4647:注销远程登录的用户
4648:使用显式凭证尝试登录
4672:新登录的用户被分配管理员权限
用户管理事件:
4720:新建用户
4722:启用新用户
4724:修改用户密码
4726:删除用户
4731:创建用户组
4732:添加用户到用户组
4733:从组中删除用户
4734:删除用户组。
4735:安全组更改
4738:修改用户账户
服务相关:
7030:服务创建失败
7040:服务类型从禁用更改成自动启动
7045:服务创建 等等
日志分析-IIS日志分析
IIS 日志基础
日志位置
• 默认路径:%SystemDrive%\inetpub\logs\LogFiles
• 根据网站名称或站点ID分目录存储(如 W3SVC1)。
站点好像过期了
应急响应-vulntarget-b-01
1、黑客是从哪个端口作为入口点的?
有bt面板,在root中看到install.sh,可以看见bt的所有端口
输入ss -tulnp查看所有被监视端口
可以看见81号是额外的端口,所以猜测是81
1 | flag{81} |
2、黑客使用了什么工具探测了ssh服务
查看access.log
发现是nmap探测工具
1 | flag{nmap} |
3、黑客使用了什么工具扫描了目录(格式flag{工具/版本号})
查看127.0.0.1.log文件,发现是gobuster/3.6
1 | flag{gobuster/3.6} |
4、黑客成功登录后台的IP地址?
就是扫描的端口
1 | flag{192.168.83.1} |
5、黑客上传的木马连接密钥是什么?
查看index.php,发现被篡改了
1 | flag{Admin@@} |
6、黑客留下的后门文件的路径为?
在tmp文件夹中找到index.elf
1 | flag{/tmp/index.elf} |
应急响应-vulntarget-j-01
1、主站进入后台的文件名称(格式flag{xxxxxxxxxx.php})
打开桌面的phpstudio,打开网站的根目录,看见FNeSOgYGkp.php
打开后

1 | flag{FNeSOgYGkp.php} |
2、黑客是从哪个端口上传木马文件的?
打开phpstudio就显示80
1 | flag{80} |
3、黑客添加的木马文件名称和密码分别是什么,将黑客添加 的木马名称和密码作为flag提交{flag{名称:密码})
就在php打开的同目录下,api3.php,打开后发现密码
1 | flag{api3.php:Admin} |
4、黑客攻击机IP地址是多少(因模拟环境故为内网地址)
找到上传api3.php木马的操作日志
1 | flag{192.168.112.123} |
Linux后门应急
1、主机后门用户名称:提交格式如:flag{backdoor}
打开finalshell连接
查看etc/passwd,这里会放置后门用户密码信息
猜测用户是backdoor
1 | flag{backdoor} |
2、主机排查项中可以发现到flag{}内以i开头的flag,如flag{ixxxxxxx}
提示查看主机排查项,也就是看查看该计算机所有进程,题目提示说有含i开头的flag{i~},所以直接搜索
ps -ef | grep flag{i
1 | flag{infoFl4g} |
3、主机排查发现9999端口是通过哪个配置文件如何开机启动的,如/etc/crontab则填写/etc/crontab 的md5 ,提交方式示例:flag{md5}
因为不是root用户,所以不好通过看pid查找,不过提示说改端口是开机自启的,所以可以查看开机自启文件
找到rc.d/rc.local
d2hpbGUgdHJ1ZTtkbyBub2h1cCBuYyAtbHZwIDk5OTkgLWMgImZsYWd7aW5mb0ZsNGd9IiAyPiYxIDtzbGVlcCAxO2RvbmU7
解码后得到
所以文件路径是/etc/rc.d/rc.local
1 | flag{cf8a978fe83579e2e20ec158524d8c06} |
4、黑客3s做了记录所有用户的每次登陆的密码的手段,flag为黑客记录的登陆密码日志路径md5,提交方式示例:flag{md5(路径)}
涉及到登录密码记录,查看tmp文件夹,发现.sshlog,打开后看见我的登录被记录下来了
所以路径是/tmp/.sshlog
1 | flag{8997d5a1b8dcca5a4be75962250959f7} |
5、给出使用了/bin/bash 的RCE后门进程名称+端口号 如进程名称为sshd,端口号为22,则flag{sshd22}
ss -nultp查看所有进程端口,发现异常端口8080,有python程序在监听
1 | flag{python38080} |
6、找出开机启动的后门服务名称MD5,提交flag{md5(服务名)}
查看之前在passwd文件中看到的usr目录路径/home/user,看到一个文件Nomal.so较为可以,是黑客所创建的
1 | flag{5213e47de16522f1dc3f9e9ecc0ab8b0} |
7、渗透提权获得root目录下的flag
find / -perm -4000 -type f 2>/dev/null
不会
8、黑客3s埋了一个flag在权限维持过程中的地方,可以发现flag{}括号内的首字母是c开头,如flag{cxxxxxxx}
不会
9、黑客3s做了一个root用户执行cat命令就删除文件的操作,请发现删除了什么文件将文件名作为flag提交
用ida分析Nomal.so
找到修改的文件
.bash_history
1 | flag{.bash_history} |
10、黑客3s很执着清理痕迹,并做了一个持续删痕迹的手段,请发现手段并给出删除的完整黑客删除命令的md5,如flag{md5(rm -f /var/log/ssh.log >/dev/stdout)}
上题的就是命令
rm -rf ~/.bash_history >/dev/null 2>&1
1 | flag{b0f531b39d88d4f603fc89bd4dd2c0aa} |
11、黑客3s设置了一个万能密码后门使得这一个万能密码可以以所有用户身份登陆,也不影响原来密码使用。请发现这个万能密码,提交flag格式为flag{万能密码}
不会
应急响应的学习就暂时到这里了,这次学主要是想扩展一下服务器的基础知识来更好学习服务器取证,熟悉一下linux的系统文件目录和命令,因此应急响应的学习也就暂时告一段落了,之后有机会再继续学好了。
