【Linux运维】服务器感染netools病毒排查

0x00 前言

朋友实验室新配了一台深度学习服务器,但是跑项目总是莫名其妙被killed,排查了但没查出来可能的原因,于是让我帮忙看看是怎么回事。具体表现为服务器进程会被随机killed,且服务器cpu占用持续达到100%。

初步怀疑方向:有病毒;服务器被DDoS;有人跑了一个整人脚本一直运行kill -9(误)

0x01 排查

服务器运行的是Ubuntu系统,是amd epyc的处理器256线程,性能挺强的,基本排除某个系统进程吃满的可能。

既然排除了系统问题,那着重分析异常进程。

先用常规手段,htop和top做分析。

htop没看到有程序占用cpu,top用<Shift + H>显示所有进程,依旧没有任何线索。

遂用ps查看

ps -aux | sort -rnk 3 | head -5

仍然无果。怀疑是个病毒躲在后台,所以抓不出来。

突然想起来会不会是有别的用户登录在跑东西,于是乎,w和who了一下,也没看出来有异常。

这时deepseek提示我,可能是中断占用,导致cpu在处理中断,于是进行查询

 

 

硬中断汇总(按中断类型统计前10)

awk '{if(NR>1){irq=$1; sum=0; for(i=2;i<=NF-3;i++){if($i~/^[0-9]+$/)sum+=$i}}; if(NR>1) print irq, sum}' /proc/interrupts | sort -k2 -nr | head -10

软中断汇总(按类型统计)

cat /proc/softirqs | awk 'NR==1 {print} {if(NR>1){printf "%s ", $1; sum=0; for(i=2;i<=NF;i++){if($i~/^[0-9]+$/)sum+=$i}; print sum}}' | sort -k2 -nr

 

 

跑了一下,好家伙,中断一大堆。

硬中断中,LOC: 1429530485,CAL: 52816924;软中断中,RCU: 537699079,SCHED: 97051681

正打算排查是否是硬件问题或者kernel的问题时,突然想起来mpstat -P ALL用一下。

 mpstat -P ALL

结果发现,CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle几项中:

 

%irq %soft(硬中断、软中断)基本都是0或者0.1

%usr(用户态)基本都是100或者99

意识到和中断基本无关,尽可能抓病毒。

遂用strace判断一下,发现程序显示

+++ killed by SIGKILL +++

大彻大悟了,有病毒一直在kill -9程序,导致没办法正常运行

原本想用bcc抓一下程序,但是下载也一只被kill,遂放弃。

用pidstat -u 1打算查查是什么东西一直在后台,看了一下也没抓到

perf record -g -a sleep 10

又尝试用perf抓病毒,但是还是无果,过了会儿病毒把我的perf也kill了

 

bpftrace -e 'tracepoint:syscalls:sys_enter_exec { printf("%s %d\n", comm, pid); }'

没办法,用bpftrace看看二进制调用,没看出什么玄机,但是看到很多iptables和ufw的操作,怀疑是病毒在定时关闭防火墙

突然想起了unhide,可以用来抓隐藏的进程,遂上手

unhide proc

结果也没看到病毒的影子

又查了一下crontab,用户的和系统的,还是没查出玄机。

本来做到这,已经黔驴技穷了,打算向病毒低头(bushi)打算让朋友重装一下服务器系统。

突然脑子里冒出来了一个程序——powertop,是笔记本电脑上用来监测耗电程序的。本着死马当活马医的心态,装了一个。

powertop跑起来以后,果然显示了耗电程序,在里面,我看到一个身影:

 /dev/shm/netools --tls

我突然有了一种明白了的感觉,就像是 aha moment一样。

 

这就是找了半天的病毒,来做个简单的分析。/dev/shm是一个利用内存虚拟出来的临时文件系统,病毒将自身藏在里面,避免被系统进程检测到。netools很明显是neta了linux下的常用工具集net-tools(ifconfig等常用指令都在这个工具集中),有点像是Windows下冒出来一个exploere.exe的感觉(explorer.exe是Windows资源管理器);tls则是这个挖矿病毒走加密流量连接到矿池之类的,同时避免流量被发现。

systemctl list-unit-files | grep enabled

已经有方向了,于是列出所有服务,果然找到了几条随机代码名字的服务,停用之后顺着service顺藤摸瓜,在bin里面找到了病毒的二进制文件,迅速的取消了他的可执行权限。

至此,病毒被关闭,服务器占用恢复正常,排查成功。

0x02 诱因

现在查完了病毒,解决了燃眉之急,该事后诸葛亮了,病毒是怎么进来的?

分析一下后,发现朋友的服务器有几个特点:

  1. 服务器的ssh有公网访问权限(尽管并非默认端口)
  2. 服务器用了弱密码(仅几个小写字母)
  3. 服务器的root没有禁止登录

遂查询

view /log/sys/auth.log

果然发现大量爆破记录,有来自世界各地的ip(包括罗马尼亚 荷兰等)对服务器的ssh做爆破,针对root账号,141000多行多行,非常恐怖。

因此,本次事件大概率是,由于弱密码+公网+root没有禁用登录,导致事故链被击穿,引发的。

查询:grep “^root:” /etc/passwd,果然得到:root:x:0:0:root:/root:/bin/bash,且/etc/ssh/sshd_config中未对root登录做限制。

迅速地做了补救措施,在sshd_config添加:

PermitRootLogin no

随后重启sshd服务

使用

sudo usermod -s /usr/sbin/nologin root

直接彻底禁用root登录(包括控制台),现在root只能通过sudo调用,最大限度保证安全。

0x03 思考

本次事故,说大不大,说小不小。因为是新配置的服务器,也没有什么敏感数据或业务数据,除了损失电费和时间之外,确实也没什么关系。

这回被攻击 主要是几点:

  1. 弱密码,这是主要诱发因素,弱密码容易被爆破,从而导致对方登陆服务器。
  2. root账户没有禁用,为爆破提供了可乘之机,安装linux的时候就不应该启用root账户的登陆,直接不要用root,现在基本所有的发行版都可以直接禁用root,让root无法登陆(把root设为nologin并且禁止root从ssh登陆)。
  3. 服务器地址和端口暴露在公网上,这也是比较危险的一个事,一般来讲,不会直接把服务器ssh直接暴露在公网,会采用限定ip白名单,或者中间加一个跳板机比如内网有个todesk,或者采用vpn的方式进行ssh,这样子安全性就会好很多。

好在这回是个挖矿病毒,有明显的表征,并且随机kill业务程序,因此很快就认识到了异常,并进行排查。但如果攻击者是植入一个木马后门呢?一个隐藏的木马后门,在不进行排查的情况下非常难被发现,且个人linux服务器一般较少装安全软件;攻击者却可以用服务器作为肉鸡,甚至破坏服务器业务代码,偷窃资料等,严重危害信息和数据安全。

个人观点是,对于所有在公网暴露的服务都要重视,现代互联网已然是黑暗森林,任何攻击都有可能发生(笔者曾经有一台服务器直接暴露ssh端口在公网上,一天就收获几万次爆破,好在禁用了root,也没用弱密码)。公网是很严肃的事情,要认真对待,哪些端口暴露在公网上,业务是否刚需公网,都是要斟酌的;在内网里,可以随便怎么搞,在公网上,尽可能少的暴露端口,减小安全风险。永远不要为了方便,就随意放开公网权限、使用弱密码、不禁用root登录。时刻记住:风险总和便利如影随形,安全常同复杂相伴相生。永远不要为了省事、因为怕麻烦,而丢失了安全!

 

评论

  1. 四夕
    Windows
    4 周前
    2025-7-04 19:23:32

    感触颇多!正值校园与社会交接之际,对网络安全和服务器安全方面的危机意识非常淡薄,并在事发缺乏有效的技术手段进行抵御。为徒便利反被攻破耽误项目进展,并深思对后门等缺乏更有效的防范措施。谨记安全,不图省事。同时也需要了解学习博主对本次事件排查的技术与思路,值得参考,值得学习!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇