我花了一些时间查看 htop,发现 root 用户在短时间内执行了一系列奇怪的进程/命令,我想知道这是否是正常行为(或某种恶意软件)。以下是 htop 中出现的命令的非详尽列表。此 Debian 服务器上仅运行 Tomcat 和 MySQL。
ifconfig eth 0
ps -ef
bash
uptime
top
netstat -antop
pwd
echo "find"
gnome-terminal
whoami
sleep 1
id
su
cd /etc
现在看来这很邪恶,不是吗?
杀死这样的进程会立即产生一个新的进程,并且总是涉及随机字符串。
答案1
这看起来确实像是恶意软件,但并没有很好地隐藏自己。精心编写的恶意软件会感染内核并安排将自己完全隐藏在任务列表中。这个笨拙地将自己伪装成无害的uptime
,但做得很糟糕,并且uptime
无论如何都是可疑的,因为它不会运行这么长时间。
如果您确认这是恶意软件,请阅读如何处理受感染的服务器?
你将不得不重新安装系统。尽管该恶意软件看起来很笨拙,但您无法确定是否能够根除它:它的一部分可能隐藏得更好。
在重新安装之前,请尝试弄清楚恶意软件是如何到达那里的。您是否安装了来自不良来源的程序?您安装的程序是否存在已知的安全漏洞?检查日志、文件日期、命令历史记录等。
重新安装时,请确保从干净的来源获取所有软件。根据提供商 HTTPS 网站上的校验和验证安装介质的校验和。尽可能坚持使用发行版中的软件,并确保执行校验和验证(Debian 下默认情况下)。将分发的二进制文件授予来源不太可信的二进制文件的特权。确保在激活任何面向 Internet 的服务之前应用所有安全更新。如果您需要安装非发行版软件,请确保从可靠的来源检索它,获取没有已知安全漏洞的最新版本,并给予它尽可能少的权限。使用强密码(如有必要,如果您在安全区域工作,请将其写在显示器旁边的便利贴上)。
答案2
您还可以使用pstree
或ps auxf
来找出哪个进程正在运行。 (也许该输出更具可读性。)
当您怀疑存在恶意软件时,您还应该检查尝试在网络上通信的进程。
您还可以用来netstat -tupln
检查是否有任何意外进程正在侦听远程连接。同样netstat -tupn
会向您显示当前的通信。
还要查看启动脚本,/etc/init.d/
甚至/etc/rc.*/
查看是否有任何异常条目。与评论中已经建议的 crontab 相同。
答案3
/boot/nnfwcjkwna 对我来说看起来不太好。
查看进程的 pid 和类型:
ls -l /proc/pid号/EXE文件
例子:
这样您将看到可执行文件的完整路径。转到那里并使用 ls -al 查看内容。对于二进制文件查看,请使用:strings file |更多 然后利用空格向下浏览。
查看新打开的端口并使用 nestat 和/或 lsof 识别它们的可执行文件。
至于一些安全建议:
- 进入单用户模式运行级别。
- 检查 /etc/passwd 和 /etc/shadow 以确保没有添加新用户以及 cron 配置文件。
- 更改根密码。
- 禁止直接 root 登录和“su”命令。
- 为您添加一个新用户并将其设置为 sudo 作为唯一能够运行 sudo 的用户。
- chmod 000 /usr/bin/sudo,然后使用 setfacl rx 规则仅允许该用户使用 sudo。
- chattr +iau /etc/passwd /etc/shadow
- 检查您的初始化文件,它可能也已安装在那里,因此它将在重新启动时再次运行。
- 返回到通常的运行级别并启动网络。
- nmap -v -sS -O 127.0.0.1 -p“1-65500”
希望其中至少有一些能对您有所帮助。
编辑:如下所述,这不是永久解决方案,而是帮助调查问题的方法。如果你在不知道到底发生了什么情况的情况下直接重装系统,那是没有多大用处的。