玄机——第九章-查杀linux挖矿病毒 kswapd0(应急响应) wp
文章目录
一、前言
题目·链接:第九章-kswapd0挖矿
三连私信免费送玄机注册邀请码私信!!!看见就回!!注意私信!!
简单介绍一下kswapd0挖矿(只是单纯介绍不涉及任何挖矿教程)
简单来说就是在 Linux 系统中,kswapd0
是一个合法的内核线程,负责交换管理。这意味着当系统内存不足时,它会将内存中的一些内容交换到磁盘上以释放内存。
kswapd0 的简单说明
恶意软件作者利用 kswapd0
的名字,伪装成这个合法进程,以躲避用户和系统管理员的注意。
-
入侵和感染:
- 黑客通过各种手段(例如,漏洞利用、钓鱼邮件等)入侵目标系统。
- 一旦入侵成功,他们会下载并安装挖矿恶意软件。
-
伪装为 kswapd0:
- 恶意软件会启动一个名为
kswapd0
的进程。 - 这个进程实际上是一个加密货币挖矿程序,但名称和常规系统进程相同,以避免被发现。
- 恶意软件会启动一个名为
-
执行挖矿操作:
- 伪装的
kswapd0
进程会使用系统资源(CPU 和 GPU)来进行加密货币挖矿。 - 挖到的加密货币(例如 Monero)会发送到黑客控制的加密钱包。
- 伪装的
-
隐藏和持久性:
- 恶意软件通常会具备一定的持久性机制,以便系统重启后仍能继续运行。
- 它可能会修改系统的启动项、计划任务或其他配置文件,以确保每次系统启动时都能自动运行。
简单一句话概括;
kswapd0
挖矿是一种利用系统资源进行加密货币挖矿的恶意活动。(大家注意防范)
二、概览
简介
服务器场景操作系统 Linux
服务器账号密码 root password
点击启动环境后等待一分钟点击步骤即可正常答题
任务环境说明
注:样本请勿在本地运行!!!样本请勿在本地运行!!!样本请勿在本地运行!!!
应急响应工程师小王某人收到安全设备告警服务器被植入了挖矿病毒,cpu 占用达到了百分之 300,请你根据给定的信息排除挖矿程序,恢复服务器正常使用
开放题目
请清理挖矿病毒,并且使机器恢复正常运行
参考
https://mp.weixin.qq.com/s/yaqrm62i5rnLIoleVkD0Aw
题目;
1、通过本地 PC SSH到服务器并且分析黑客的 IP 为多少,将黑客 IP 作为 FLAG 提交;
2、通过本地 PC SSH到服务器并且分析黑客的用户名为什么,将黑客的用户名作为 FLAG 提交;
3、通过本地 PC SSH到服务器并且分析黑客权限维持文件的md5,将文件的 MD5(md5sum /file) 作为 FLAG 提交;
三、参考文章
四、步骤(解析)
准备步骤#1.0
靶机的环境是Liunx,那我们正常使用Xshell连接即可;(具体步骤不再多述)
新建连接,启动靶机输入靶机IP即可;
接着输入靶机账号密码,连接成功;
root
password
步骤#1.1
通过本地 PC SSH到服务器并且分析黑客的 IP 为多少,将黑客 IP 作为 FLAG 提交;
解题思路
题目让我们提交黑客IP,这种题目我们遇到也不是一次两次了(相信看过我文章的师傅肯定都明白了),因为靶机环境是Liunx的嘛,所以我们肯定就是先想到分析日志,那Liunx日志那么多我们到底分析什么日志呢?
通常来说通过以下日志进行分析;
- 认证日志
-
文件位置:
/var/log/auth.log
或/var/log/secure
-
用途:记录所有与认证相关的事件,包括成功和失败的登录尝试、
sudo
操作等。查看当前认证日志 less /var/log/auth.log 搜索失败的登录尝试 grep 'Failed password' /var/log/auth.log 搜索成功的登录尝试 grep 'Accepted password' /var/log/auth.log
- 系统日志
-
文件位置:
/var/log/syslog
或/var/log/messages
-
用途:记录系统启动过程、内核事件和其他系统活动。
查看系统日志 less /var/log/syslog
- SSH 日志
-
文件位置:
/var/log/auth.log
(通常包含 SSH 日志) -
用途:记录 SSH 登录尝试。
查看 SSH 登录尝试 grep 'sshd' /var/log/auth.log
- Web 服务器日志
-
文件位置:
/var/log/apache2/access.log
或/var/log/nginx/access.log
-
用途:记录所有 Web 访问请求。
查看 Apache 访问日志 less /var/log/apache2/access.log 查看 Nginx 访问日志 less /var/log/nginx/access.log
- 网络连接日志
-
文件位置:
/var/log/secure
(包含所有网络连接尝试) -
用途:记录所有通过网络进行的认证尝试。
查看网络连接日志 less /var/log/secure
依次进行挨个分析,包可以找到黑客的IP的,话不多说,直接上实操;
这里先查找的“/var/log/auth.log”目录,但是发现内容十分稀少并没有在里面发现有用的信息,但是我们发现了它的“轮替文件”——/var/log/auth.log.1,那这时候有的师傅可能就会疑问了,什么是”轮替文件“啊,为什么多了个点1就不一样了呢?
简单来说就是/var/log/auth.log.1
是最近一次轮替后的旧认证日志文件。
日志轮替:
- 使用
logrotate
工具,系统会定期将当前日志文件重命名为.1
文件,并创建一个新的.log
文件。轮替后的文件通常会压缩并保留一段时间。
找到了“/var/log/auth.log”文件目录,但是内容十分稀少并没有发现什么有用·信息;
但是在“var/log”目录下,发现了“轮替文件”——“/var/log/auth.log.1”;
跟进分析, 这里我们可以简单筛选一下日志;
为什么呢?
- 因为在分析认证日志时,可以查找与攻击活动相关的记录,例如大量失败的登录尝试、异常的 sudo 使用、特定时间段的可疑活动等。
- 通过筛选这些日志记录,能够找到黑客尝试连接的 IP 地址。
例如,使用 grep
查找所有 SSH 登录尝试:
grep 'sshd' /var/log/auth.log.1
查找失败的登录尝试:
grep 'Failed password' /var/log/auth.log.1
查找成功的登录:
grep 'Accepted password' /var/log/auth.log.1
查找 sudo 操作:
grep 'sudo' /var/log/auth.log.1
这里随便一条都能查出黑客的相关信息记录,具体的就不在多叙;(这些之前都是有详细说明的)
那我们尝试筛选一下黑客登录失败;
grep 'Failed password' /var/log/auth.log.1
得到;
Jan 29 09:22:47 ip-10-0-10-1 sshd[722]: Failed password for invalid user tempuser from 23.94.143.132 port 48222 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[740]: Failed password for root from 183.164.3.252 port 57601 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[742]: Failed password for root from 183.164.3.252 port 57602 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[734]: Failed password for root from 183.164.3.252 port 57589 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[743]: Failed password for root from 183.164.3.252 port 57606 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[732]: Failed password for root from 183.164.3.252 port 57596 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[738]: Failed password for root from 183.164.3.252 port 57597 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[731]: Failed password for root from 183.164.3.252 port 57592 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[741]: Failed password for root from 183.164.3.252 port 57599 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[739]: Failed password for root from 183.164.3.252 port 57595 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[736]: Failed password for root from 183.164.3.252 port 57594 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[733]: Failed password for root from 183.164.3.252 port 57590 ssh2
Jan 29 09:23:11 ip-10-0-10-1 sshd[737]: Failed password for root from 183.164.3.252 port 57598 ssh2
这就不用说了把,典型的暴力破解(brute-force attack)尝试,黑客通过尝试多次登录以猜测正确的密码。
我们还可以从日志里得到以下信息;
- 黑客的 IP 地址:有两个不同的 IP 地址
23.94.143.132
183.164.3.252
- 尝试的用户名:
tempuser
(来自23.94.143.132
)root
(来自183.164.3.252
)
总结就是;
- 攻击时间为 2024 年 1 月 29 日的 09:22 和 09:23。
23.94.143.132
尝试使用无效用户tempuser
。183.164.3.252
多次尝试使用root
用户。
因此,这两个 IP 地址(
23.94.143.132
和183.164.3.252
)均与暴力破解尝试有关,不确定那就都提交一下嘛,或者你看183.164.3.252
出现次数不就最多嘛,那就锁定呗;
至此;
flag{183.164.3.252}
步骤#1.2
通过本地 PC SSH到服务器并且分析黑客的用户名是什么,将黑客的用户名作为 FLAG 提交;
解题思路
题目让我们提交黑客的用户名是什么,遇到这种找黑客的用户名,通常涉及几个步骤,包括检查系统日志和用户配置文件。
查看 /etc/passwd
文件
/etc/passwd
文件包含系统中所有用户的基本信息。通过检查此文件,可以找到所有有效用户的用户名。命令如下:
cat /etc/passwd
文件内容示例(可以分析一下有没有可疑的用户):
root:x:0:0:root:/root:/bin/bash
tempuser:x:1001:1001::/home/tempuser:/bin/bash
查看 /root/.ssh/authorized_keys
文件
文件包含允许通过公钥认证登录 root
用户帐户的公钥。通过查看此文件,可以确定是否有黑客添加的公钥。命令如下:
cat /root/.ssh/authorized_keys
文件内容示例:
ssh-rsa AAAAB3...base64_encoded_key... comment
我们可以简单分析一下有 /root/.ssh/authorized_keys
文件: 查看是否有未知的公钥被添加。
主要还是以实际为标准,这里举的两个例子仅供参考;
那我们可以先直接查看一下用户列表;
使用命令;
cat etc/passwd
得到;
简单分析一下;
从 /etc/passwd
文件内容来看,目前没有发现显而易见的可疑用户。这就是一个典型的系统用户列表,其中包括系统账户和一个名为 debian
的普通用户账户。
- root: 系统管理员账户,拥有所有权限。
- daemon, bin, sys, sync, games, man, lp, mail, news, uucp, proxy, www-data, backup, list, irc, gnats, nobody: 系统服务账户,通常用于运行特定的系统服务和任务,不能用于交互式登录。
- _apt, systemd-timesync, systemd-network, systemd-resolve, messagebus, unscd, ntp, sshd, systemd-coredump: 系统服务和守护进程账户,不能用于交互式登录。
- debian: 唯一的普通用户账户,属于用户账户,具有交互式登录权限。
接着我们继续排查一下"~/.ssh/authorized_keys";
使用命令;
cat /root/.ssh/authorized_keys
得到;
简单分析一下;
可以看见 SSH 公钥表示某个用户在系统上设置了 SSH 公钥认证。这种方法通常用来允许用户通过 SSH 无密码登录,但需要提供相应的私钥。
- 公钥的内容
ssh-rsa
表示这是一个 RSA 算法生成的 SSH 公钥。
以下是公钥的实际内容:
AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw==
- 公钥的注释
公钥的最后一部分 mdrfckr
通常是一个注释,通常用来标识谁拥有这把密钥。在这种情况下,也就只有黑客用来标识他们的公钥。
简单来说就是在 SSH 公钥的末尾部分,注释通常用来标识该公钥的所有者。注释部分可以是任意字符串,通常用于区分不同用户或设备,但是这里不得不让我们怀疑,反手就是提交。
至此1;
flag{mdrfckr}
步骤#1.3
通过本地 PC SSH到服务器并且分析黑客权限维持文件的md5,将文件的 MD5(md5sum /file) 作为 FLAG 提交;
解题思路
题目让我们提交黑客权限维持文件是什么并且进行MD5加密,之前我们也有做过类似的靶机“权限维持-linux权限维持-隐藏”,那这里我们还是简单分析一下Liunx的权限维持;
简单来说就是在 Linux 系统中,权限维持是指黑客在成功入侵系统后,采取措施确保他们能够长期保持对系统的访问和控制。
涉及到的我也说一下吧;
- 添加新的用户账号
黑客会创建新的用户账号并赋予其高权限,通常是 root 权限,以确保在必要时能够重新访问系统。
分析:
- 检查新增用户:可以通过检查
/etc/passwd
文件和/etc/shadow
文件来发现新增用户。 - 日志审查:查看系统日志文件
/var/log/auth.log
或/var/log/secure
(根据发行版不同)以发现可疑的用户添加操作。
- 修改现有用户的权限
黑客会修改现有用户的权限,赋予他们 sudo 权限或直接修改密码文件。
分析:
- 检查 sudoers 文件:查看
/etc/sudoers
和/etc/sudoers.d
目录下的文件,是否有异常用户被赋予 sudo 权限。 - 密码文件变化:通过
diff
工具比较/etc/passwd
和/etc/shadow
文件的历史备份与当前版本,检查是否有修改。
- 安装后门和 rootkit
后门程序和 rootkit 是恶意软件,允许黑客绕过正常的身份验证,隐藏其存在,并执行各种恶意操作。
分析:
- 文件完整性检查:使用工具如
chkrootkit
、rkhunter
等进行系统检查,查找已知的 rootkit 和后门。 - 文件监控:使用
AIDE
或Tripwire
等文件完整性监控工具,定期检查关键系统文件和配置文件的完整性。
- SSH 公钥添加
黑客会在受害者用户的 ~/.ssh/authorized_keys
文件中添加他们自己的公钥,以便可以随时通过 SSH 登录。
分析:
- 检查公钥文件:定期检查用户目录下的
~/.ssh/authorized_keys
文件,是否有未知或未经授权的公钥存在。 - 日志审查:查看 SSH 日志
/var/log/auth.log
,以查找可疑的 SSH 登录尝试。
- 计划任务和 cron 作业
黑客可能会使用 cron 作业或系统计划任务,安排恶意脚本的定期执行。
分析:
- 检查 cron 作业:查看
/etc/crontab
、/etc/cron.d/
、/var/spool/cron/crontabs/
下的 cron 作业配置文件,是否有可疑的任务。 - 日志审查:检查
/var/log/cron
日志,查看定时任务的执行情况,查找异常活动。
- 利用系统服务和守护进程
黑客会通过修改系统服务和守护进程,来确保恶意软件在系统启动时自动运行。
分析:
- 检查服务配置:查看
/etc/systemd/system/
、/lib/systemd/system/
、/etc/init.d/
下的服务配置文件,是否有新增或修改的服务。 - 系统日志:审查
/var/log/syslog
、/var/log/messages
等日志文件,查看服务启动和运行情况,查找异常服务。
- 隐藏进程
黑客会使用 rootkit 技术隐藏其恶意进程,使其不容易被系统管理员发现。
分析:
- 进程检查:使用
ps
、top
、htop
等命令查看系统进程,是否有可疑的进程存在。 - 特定工具:使用专用的反 rootkit 工具如
chkproc
来检查隐藏进程。
在 Linux 系统中,权限维持涉及多种技术和方法,不唯一哈,仅供参考;
那既然都列出来了,这里我就直接先查定时任务,(别问,问就是前面几个挨个查下来没有什么发现);
使用命令;
crontab -l
得到;
得到;
5 6 * * 0 /root/.configrc5/a/upd>/dev/null 2>&1
@reboot /root/.configrc5/a/upd>/dev/null 2>&1
5 8 * * 0 /root/.configrc5/b/sync>/dev/null 2>&1
@reboot /root/.configrc5/b/sync>/dev/null 2>&1
0 0 */3 * * /root/.X291-unix/.rsync/c/aptitude>/dev/null 2>&1
简单分析一下;
可疑文件和路径
-
/root/.configrc5/a/upd
- 这个文件在每周日的早上6点5分运行,并且在系统重启时运行。
upd
文件是一个可执行文件或者脚本,用于执行恶意操作。
-
/root/.configrc5/b/sync
- 这个文件在每周日的早上8点5分运行,并且在系统重启时运行。
sync
文件是一个可执行文件或者脚本,用于同步某些恶意内容或执行其他恶意操作。
-
/root/.X291-unix/.rsync/c/aptitude
- 这个文件每隔三天的午夜运行一次。
aptitude
文件是一个可执行文件或者脚本,用于执行恶意操作。
简单分析得到
- 路径分析:这些文件路径都位于/root目录下,隐藏在带有点号的目录中(例如
.configrc5
和.X291-unix
),这是一种常见的隐蔽技术,用于避免被系统管理员发现。 - 重定向输出:
>/dev/null 2>&1
表示将所有输出(包括标准输出和标准错误)都重定向到空设备,这样可以避免在日志中留下痕迹。(都避免留下痕迹了,你说说这是什么)
**这些cron作业明显不是系统的正常作业,非常有可能是黑客用来维持权限的,尝试提交试试看;
题目让我们提交黑客权限维持文件的md5,这里我们找到是定时任务——crontab(进行MD5加密),然后发现没提交正确,后来看了师傅的wp才发现需要提交定时任务的具体路径,当然在大多数 Unix 和 Linux 系统中,用户的 crontab 文件存储在 /var/spool/cron/crontabs
目录下;
当然,如果你以用户名为
john
的用户身份登录,并运行crontab -l
查看你的 crontab 任务,那么相应的 crontab 文件应该位于/var/spool/cron/crontabs/john
(如果这个文件存在的话),这里我们使用的是root登录,所以/var/spool/cron/crontabs/root
毫无疑问咯;
这里要进行MD5加密,正好在靶机下(liunx系统),所以;
使用命令;
md5sum /var/spool/cron/crontabs/root
得到;
至此;
flag{cc84a750dcfb988861c8bf90aa15c039}
更多推荐
所有评论(0)