1.问题背景
在开发调试时,发现进程fork失败,正常指令如ls也执行失败。
ps查看,多出 很多sh进程和tail进程,每个都有两百多个,总共四百多个进程:
sh -c while [ -d /proc/$PPID ]; do sleep 1;head -v -n 8 /proc/meminfo; head -v -n 2 /proc/stat /proc/version /pro
sh -c while [ -d /proc/$PPID ]; do sleep 1;head -v -n 8 /proc/meminfo; head -v -n 2 /proc/stat /proc/version /pro
...
sh -c while [ -d /proc/$PPID ]; do sleep 1;head -v -n 8 /proc/meminfo; head -v -n 2 /proc/stat /proc/version /pro
tail -v -n 16 /proc/net/dev
tail -v -n 16 /proc/net/dev
...
tail -v -n 16 /proc/net/dev
这个问题会导致业务中断,且不可恢复,属于极度严重的问题,必须马上定位消除。
2.问题排查
1)花了大量时间,仔细分析系统上所有的脚本和可能调用脚本的代码,都没有发现有调用这两个指令的 -- 由此排除自身代码问题
2)开始怀疑是病毒注入,于是开始查找其原始父进程PPID
发现sh指令都是由dropbear -p 22 这个进程拉起的。
进一步分析,发现
sh -c while [ -d /proc/$PPID ]; do sleep 1;head -v -n 8 /proc/meminfo; head -v -n 2 /proc/stat /proc/version /pro
tail -v -n 16 /proc/net/dev
都是获取系统资源情况的,比如系统内存总量,剩余内存,缓存,内核版本,网口流量这些信息,再结合拉起这个指令的是dropbear -p 22(dropbear是ssh服务器22是ssh默认端口),到此可以确定:
有不明ssh 客户端连接到了系统,并且在不断监视系统资源信息,看着不像是病毒,有点hacker的味道了
3)分析所有能连接到系统的ssh客户端,设备处于内网,不可能有远程ssh连接,那只能是本地ssh的连接了
内网ssh连接,最直接的就是自己使用的mobaXterm
果然在mobaXterm最下面有监控系统资源的界面
4)验证:
关掉mobaXterm的remote monitoring,sh进程和tail进程消失
停掉mobaXterm,改用其他软件连接系统,sh进程和tail进程消失
3.结论
sh -c while [ -d /proc/$PPID ]; do sleep 1;head -v -n 8 /proc/meminfo; head -v -n 2 /proc/stat /proc/version /pro
tail -v -n 16 /proc/net/dev
这四百多个进程是mobaXterm连接系统后创建的,目的是为了获取系统资源情况。
使用的mobaXterm版本
但是暂时不知道mobaXterm为什么会创建多个重复进程,可能是mobaXterm的一个BUG