CPU被挖矿了,却找不到哪个进程!

CPU起飞了

最近有朋友在群里反馈,自己服务器的CPU一直处于高占用状态,但用topps等命令却一直找不到是哪个进程在占用,怀疑中了挖矿病毒,急的团团转。

根据经验,我赶紧让他看一下当前服务器的网络连接,看看有没有可疑连接,果然发现了有点东西:

Shodan查一下这IP地址:

反向查找,发现有诸多域名曾经解析到这个IP地址:

这是一个位于德国的IP地址,开放了4444,5555,7777等数个特殊的服务端口:

其中这位朋友服务器上发现的连接到的是7777端口,钟馗之眼显示,这是一个HTTP服务的端口,直接访问返回的信息如下:

mining pool!,服务器正在挖矿实锤了!

但神奇的是,这个进程像是隐身了一般,找不到存在的任何痕迹。

进程如何隐藏

现在说回到本文的正题:Linux操作系统上,进程要隐藏起来,有哪些招数?

要回答这个问题,先来知道ps、top等命令枚举系统的进程列表的原理。

Linux的设计哲学是:一切皆文件!

进程也不例外, Linux系统中有一个特殊的目录:/proc/,这个目录下的内容,不是硬盘上的文件系统,而是操作系统内核暴露出的内核中进程、线程相关的数据接口,也就是procfs,里面记录了系统上正在运行的进程和线程信息,来查看一下:

这些以数字命名的目录,就是一个进程的PID,里面记录了该进程的详细信息。

而ps、top等命令的工作原理,实质上就是遍历这个目录。

知道了原理,想实现隐藏就有以下几个思路:

命令替换

直接替换系统中的ps、top命令工具。可以从GitHub上下载它们的源码,加入对应的过滤逻辑,在遍历进程的时候,剔除挖矿进程,实现隐藏的目的。

模块注入

编写一个动态链接库so文件,在so中,HOOK遍历相关的函数(readdir/readdir64),遍历的时候,过滤挖矿进程。

通过修改LD_PRELOAD环境变量或/etc/ld.so.preload文件,配置动态链接库,实现将其注入到目标进程中。

内核级隐藏

模块注入的方式是在应用层执行函数HOOK,隐藏挖矿进程,更进一步,可以通过加载驱动程序的方式在内核空间HOOK相应的系统调用来实现隐藏。不过这对攻击者的技术要求也更高,遇到这样的病毒清理起来挑战也更大了。

揪出挖矿进程

通过上面的进程隐藏原理看得住来,都是想尽办法隐藏/proc目录下的内容,类似于“障眼法”,所以包含pstopls等等在内的命令,都没办法看到挖矿进程的存在。

但蒙上眼不代表不存在,有一个叫unhide的工具,就能用来查看隐藏进程。

我让这位朋友安装这个工具来查找隐藏的进程,但奇怪的是,一执行yum install安装,远程连接的SSH会话就立刻断开。

于是退而求其次,选择通过源码安装,又是一直各种报错···

因为我没办法亲自操作这台服务器,沟通起来比较麻烦,于是我决定研究下这个unhide工具的源码,然后编一个python脚本发给他执行。

源码地址:https://github.com/YJesus/Unhide-NG/blob/master/unhide-linux.c

在查找隐藏进程模块,其大致使用了如下的方法:

挨个访问 /proc/pid/ 目录,其中,pid从1到到max_pid累加

  • 如果目录不存在,跳过

  • 如果是unhide自己的进程,跳过

  • 如果在ps命令中能看到,跳过

  • 剩下的,既不是自己,也不在ps命令输出中,则判定为隐藏进程

按照这个思路,我编写了一个Python脚本发给这位朋友,执行后果然发现了隐藏的进程:

别着急,不是真的有这么多进程,这里是把所有的线程ID列举出来了。随便挑选了一个看一下:

还记得前面通过netstat命令看到挖矿进程建立了一个网络连接吗?Linux一切皆文件,在 /proc/pid/fd 目录下有进程打开的文件信息:

这里发现这个进程打开了一个socket,后面的10212是inode id,再通过下面的命令看一下这个socket到底是什么:

cat /proc/net/tcp | grep 10212

输出了四元组信息:

左边是源IP地址:源端口,右边是目的IP地址:目的端口

目的端口1E61就是7777!!!

找到了,就是这货!

再次查看 cat /proc/pid/environ,定位到进程的可执行文件:

总算把这家伙找到了:

网上一搜这家伙,看来是惯犯了:

挖矿病毒分析

把这个挖矿木马下载下来,反汇编引擎中查看,发现加壳了。

脱壳后,在IDA中现出了原形,不禁倒吸了一口凉气,居然悄悄修改/root/.ssh/authorized_keys文件,添加了RSA密钥登录方式,留下这么一个后门,随时都能远程登录进来。

除此之外,还发现了病毒尝试连接的大量域名:

看到这里简直可怕!自己的服务器被病毒按在地上摩擦啊!

清除建议

  • 开启SELinux

  • 杀掉挖矿进程

  • 删除病毒程序(注意rm命令是否被替换)

  • 删除病毒驱动程序(注意rm命令是否被替换)

  • 删除病毒添加的登录凭据

  • 防火墙封禁IP、端口


---END---

长按进入小程序,进行打卡签到

新一期打卡签到,奖品超多

(更多精彩值得期待……)
最近热文:2020年,年终总结!
再见,360安全卫士!
中国大学最新排名是怎样的?
2021年1月编程语言排行榜:Python年度编程语言
和导师的微信聊天翻车现场,你一定也经历过!



2T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,人工智能,考研,软考,英语,等等。在公众号内回复「资源」,即可免费获取!回复「社群」,可以邀请你加入读者群!


明天见(。・ω・。)ノ♡
<think>好的,用户现在遇到了一个比较棘手的问题:他的Linux电脑被用来挖矿了,想追踪对方的IP地址。首先,我需要理解用户的情况,可能他已经发现了系统异常,比如CPU或GPU使用率异常高,或者发现了未知的进程在运行。用户的目的很明确,就是要到攻击者的IP,可能还希望采取进一步的措施,比如封禁IP或者报告给相关部门。 首先,我应该考虑用户的技术水平。他使用Linux系统,可能有一定的技术基础,但未必是安全专家。所以给出的建议需要清晰、步骤明确,同时避免使用过于复杂的术语,或者在必要时解释术语。 接下来,分析问题。被挖矿通常意味着系统被植入了恶意软件,这些软件可能会连接到一个命令与控制服务器(C&C)或者矿池,从而产生网络连接。追踪IP可能需要检查这些网络连接。但攻击者可能会使用代理、Tor或者多个跳板,所以实际IP可能难以直接获取,但用户至少可以到直接连接的IP,即使不是最终攻击者的真实地址。 可能的步骤包括: 1. 检查当前活动的网络连接,出可疑的IP。 2. 检查系统进程,识别恶意进程及其发起的连接。 3. 分析日志文件,寻异常登录或连接记录。 4. 使用工具进行深入分析,比如网络抓包。 5. 采取后续措施,如封禁IP、清除恶意软件等。 需要注意的事项:用户可能需要root权限执行某些命令;确保在分析过程中不进一步触发恶意软件;建议用户隔离系统,防止进一步损害;备份重要数据;在清除恶意软件后加强安全措施。 另外,用户可能没有提到的深层需求:如何彻底清除挖矿程序,如何防止再次被入侵,是否需要法律手段追究等。但当前问题主要集中在追踪IP,所以先集中解答这一点,再适当提及后续步骤。 可能的挑战:攻击者可能隐藏了IP,或者连接使用的是加密通道,或者使用动态IP,使得追踪困难。需要告知用户这些可能性,避免期望过高。 总结回答结构: 1. 确认被入侵,建议立即隔离系统。 2. 检查网络连接(netstat、ss、lsof)。 3. 检查进程(top/htop,ps)。 4. 分析日志(/var/log/,journalctl)。 5. 使用抓包工具(tcpdump,Wireshark)。 6. 查矿池相关IP。 7. 后续处理建议(清除恶意软件,加固安全)。 8. 提醒可能无法到真实IP,需综合措施。 需要确保步骤可行,命令正确,并且给出具体例子,比如netstat -antp 或 ss -tunp,这样用户可以直接复制命令执行。同时提醒用户注意隐私和安全,比如在分享日志时脱敏,处理恶意软件时可能需专业人士帮助。</think>如果你的 Linux 系统被植入挖矿程序,追踪对方 IP 需要结合系统日志、网络连接和进程分析。以下是具体步骤和建议: --- ### **1. 立即隔离系统** - **断开网络**:拔掉网线或禁用网络接口,防止进一步通信。 - **避免关机**:保持系统运行以保留内存中的进程信息。 --- ### **2. 检查活跃的网络连接** 通过以下命令查看当前或近期的可疑连接: ```bash # 查看所有 TCP/UDP 连接及关联进程 sudo netstat -antup # 传统工具 sudo ss -tunp # 更现代的替代工具 sudo lsof -i -P -n # 列出所有网络连接 # 检查 ESTABLISHED 状态的连接,重点关注陌生 IP 和端口 ``` - **可疑迹象**:连接到非常见 IP(尤其是境外地址)、矿池常用端口(如 3333、4444、5555、6666、8333 等)。 --- ### **3. 定位恶意进程** - **查看高资源占用的进程**: ```bash top # 实时进程监控(按 CPU 或内存排序) htop # 更友好的交互式查看工具(需安装) ps auxf # 查看进程树,识别异常进程 ``` - **终止可疑进程**:记录进程 PID 后,用 `kill -9 PID` 终止。 --- ### **4. 分析系统日志** - **检查登录记录**: ```bash sudo last -ai # 查看登录历史(包括 IP) sudo grep "Failed password" /var/log/auth.log # 检查暴力破解痕迹 ``` - **审查定时任务**: ```bash crontab -l # 查看当前用户的计划任务 sudo ls /etc/cron*/ # 检查系统级定时任务目录 ``` - **服务日志**: ```bash journalctl -xe --since "1 hour ago" # 检查 systemd 日志(近 1 小时) sudo tail -f /var/log/syslog # 实时跟踪系统日志 ``` --- ### **5. 抓包分析(高级)** 若攻击者仍在线,可用抓包工具捕获实时流量: ```bash sudo tcpdump -i eth0 -w capture.pcap # 捕获 eth0 网卡流量到文件 ``` - 用 Wireshark 分析 `capture.pcap`,筛选到矿池域名(如 `xmrpool.eu`)或可疑 IP 的流量。 --- ### **6. 检查已知矿池 IP** - 挖矿程序通常连接公开矿池。常见矿池域名/IP 包括: - `moneropool.com` - `xmrpool.eu` - `minexmr.com` - 参考威胁情报平台(如 [ AbuseIPDB ](https://www.abuseipdb.com/))查询 IP 是否被标记。 --- ### **7. 后续处理** 1. **清除恶意程序**: - 根据进程和文件路径定位恶意文件(`ps aux` 中的进程路径或 `ls -l /proc/PID/exe`)。 - 删除恶意文件,修复被篡改的配置(如 `/etc/rc.local`、`systemd` 服务)。 2. **加固系统**: - 更新系统和软件:`sudo apt update && sudo apt upgrade`。 - 配置防火墙(UFW/iptables),限制非必要端口。 - 禁用弱密码和 SSH 密码登录,改用密钥认证。 3. **溯源报警**(可选): - 收集日志和 IP 提交至网络执法部门(需配合取证)。 --- ### **注意事项** - **IP 可能是傀儡机**:攻击者常通过跳板机或代理隐藏真实 IP,直接追踪难度较大。 - **彻底排查**:挖矿程序可能残留多个后门,建议重装系统或使用安全工具(如 `chkrootkit`、`rkhunter`)深度扫描。 希望这些步骤能帮助你定位问题。如果技术细节复杂,建议寻求专业安全团队协助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值