查看主机有被植入挖矿病毒篡改系统库文件的行为
排查方法
挖矿病毒被植入主机后,利用主机的运算力进行挖矿,主要体现在CPU使用率高达90%以上,有大量对外进行网络连接的日志记录。
Linux主机中挖矿病毒后的现象如下图所示:
(一)Linux 系统
1、通过安装防病毒软件(详见附件),对主机进行全盘扫描和查杀,如无法清除的建议重新安装系统及应用;
2、如具备较强动手能力,可参照以下说明进行排查:
1)排查是否存在异常的资源使用率(内存、CPU等)、启动项、进程、计划任务等,使用相关系统命令(如netstat)查看是否存在不正常的网络连接,top 检查可疑进程,pkill 杀死进程,如果进程还能存在,说明一定有定时任务或守护进程(开机启动),检查/var/spool/cron/root 和/etc/crontab 和/etc/rc.local
2)查找可疑程序的位置将其删除,如果删除不掉,查看隐藏权限。lsattr chattr 修改权限后将其删除。
3)查看/root/.ssh/目录下是否设置了免秘钥登陆,并查看ssh_config配置文件是否被篡改。
3、在防火墙关闭不必要的映射端口号或服务,重启再测试是否还会有可疑进程存在。
4、建议系统管理员对操作系统及系统相关管理界面的登录设置强密码(10位以上,大小写字母、数字及特殊字符的组合);
(二)防范建议
目前防范挖矿病毒的主要措施有:
1、多台机器不要使用相同的账号和口令,登录口令要有足够的长度和复杂性,并定期更换登录口令;
2、定期检查服务器是否存在异常,查看范围包括但不限于:
a)是否有新增账户、未知进程;
b)系统日志是否存在异常;
c)杀毒软件是否存在异常拦截情况;
3、定期检测电脑、服务器、WEB网站中的安全漏洞,及时更新补丁;
4、对于服务器,建议配置访问控制,仅允许授权IP访问;
5、安装安全软件并升级病毒库,定期全盘扫描,保持实时防护;
6、从正规渠道下载安装软件,不安装未知的第三方软件,不点击未知的链接。
(三)针对挖矿进程的基本处理,后续还要做这几件事。
1检查网络连接是否有C2通信,查看是否有其他非正常连接
重点关注防火墙iptables,命令:iptables -L -n
2检查最近修改的文件,避免遗漏,因为挖矿病毒,往往还携带者其他病毒或工具包
命令:find /etc -ctime -2 (命令解释:指定目录/etc,且近2天内的新增文件)
3修补漏洞并加固系统
3.1你可以使用上述提到的沙箱确定病毒的家族,然后使用搜素引擎确认使用的漏洞, 并与自己的系统做比对
3.2通过病毒的行为确认漏洞。最常见的就是爆破各种服务的弱口令和未授权等。
(四)列举处理中会遇到的一些问题,推荐几个小技巧
使用top命令时,未发现cpu占用率高的进程?
1.系统命令被修改:
建议直接去其他正常主机上下载命令源文件至感染主机上
2使用busybox工具替代系统的命令:
存在守护进程监视操作行为,发现敏感操作挖矿程序自动停止
多试几次top命令,因为卡顿等原因有时会看到未来得及退出的进程,很实用。
预加载so文件,隐藏进程
【技术向】Linux动态链接库预加载型后门
(五)删除文件和进程后,过段时间再次出现?
病毒采用了持久化的防护,要仔细检查启动项,计划任务,守护进程
1.查看计划任务,命令:cat /etc/crontab。计划任务文件有很多,不要看漏。
/etc/crontab;/var/spool/cron;/etc/anacrontab;
/etc/cron.d/;/etc/cron.daily/;/etc/cron.hourly/;
/etc/cron.weekly/;/etc/cron.monthly/;/var/spool/cron/
2.查看启动项
CentOS7以下版本:chkconfig –list;
CentOS7及以上版本:systemctl list-unit-files;
关闭启动项
CentOS7以下版本:chkconfig 服务名 off;
CentOS7及以上版本:systemctl disable 服务名;
启动项文件有很多,不要看漏。
/usr/lib/systemd/system;/usr/lib/systemd/system/multi-user.target.wants
/etc/rc.local;/etc/inittab;/etc/rc[0-6].d/;/etc/rc.d/
tem;/usr/lib/systemd/system/multi-user.target.wants
/etc/rc.local;/etc/inittab;/etc/rc[0-6].d/;/etc/rc.d/
谈谈处理Linux服务器(工作站)感染挖矿病毒的方法。
TLDR: 根据攻击者和攻击手段的不同,普通人没有办法可以100%确定地清除系统感染的恶意软件,建议备份重要数据后直接重装系统,重装完成后按照我们之前文章的办法进行加固。确定防护加固完成后,恢复用户数据时,需甄别并剔除可执行文件和其他可能有风险的文件。
注:本文所有清除操作建议使用Live CD启动服务器,而不要直接在已感染病毒的系统中操作,否则,您修改的密码可能被监听、您修复的文件可能被隐藏的病毒改回、您的操作可能使用了被篡改的工具根本不会生效、甚至您的操作过程还有可能被全程监控。
〇、本文操作使用Shell命令行方式并需要root权限执行,如果您不熟悉,建议直接放弃阅读本文然后重装系统。
一、定位清除占用CPU/GPU的进程
入门姿势:
使用top命令可以定位高CPU占用的进程
# top
在top程序运行界面中点键盘C键即可按照CPU占用排序进程并人工定位异常进程
使用ps命令也可以定位高CPU占用的进程
# ps -eo cmd,pcpu,pid,user --sort -pcpu | head
找到高CPU占用的进程后,使用ls命令即可定位程序实际路径
# ls -l /proc/{pid}/exe
使用kill命令停止进程
# kill -9 {pid}
使用rm命令删除可疑的程序文件(注意命令正确性,敲错命令可能删错数据)
# rm -f {path}
GPU占用排查过程与上文过程类似,Nvidia显卡官方驱动自带命令nvidia-smi可以用于查看GPU占用情况,命令如下:
# nvidia-smi -q -d utilization -l
命令运行后会持续显示当前GPU占用情况,定位进程pid后可以用上文方法定位程序实际位置并处理。
放弃姿势:
1. 如果恶意程序使用了隐藏或者伪装技术则上述操作不一定可以精确定位其位置;
2. 如果恶意程序还有其他植入的后门,则恶意程序还会再次启动;
二、定位并清除未知网络连接的进程
入门姿势:
使用ss命令可以定位网络监听和对外连接情况,TCP协议使用下面的命令:
# ss -anpt
此命令显示所有TCP监听与链接,包含程序名、pid,定位恶意网络连接后进行处置。
查看UDP协议命令为:
# ss -anpu
不同的是,UDP没有状态,所以只会显示本端信息,如果要获取对端信息,需要使用tcpdump命令:
# tcpdump -i {网卡名} host {本地IP} and udp port {本地端口号}
从命令输出信息中,可以查看与之通信的对端IP和端口信息。如果信息没有加密,还可以保存抓包并进一步调试通讯内容。
获得连接目标IP地址后,可以使用公开的安全情报数据库服务查看IP是否为已知恶意IP,常见的有:
微步:https://x.threatbook.cn
360: https://ti.360.net
放弃姿势:
1. 网络调查命令同样只在恶意程序没有使用伪装与隐藏技术的前提下才有效;
2. 有些攻击使用动态IP地址作为目标,IP地址不会记录在公开的威胁情报中;
3. 越来越多的网络流量使用了加密技术,网络抓包无法进行有效的数据分析;
4. 还存在更高端的攻击方法,如ICMP隧道,DNS隧道等。普通用自行调查难度更大,故此处未列出;
5. 调查时不仅要检查外部发起到本地的连接,还需要检查本地主动发起的连接,防火墙对已经被渗透的机器作用不大;
三、查找并修复异常的用户账户
入门姿势:
服务器被“挖矿”病毒感染,经常是由于用户使用了弱口令所致。如果是root用户或者有sudo权限的用户使用了弱口令,建议停止阅读本文并直接重装。其他普通用户建议备份用户数据后,删除用户及关联数据并重建,恢复用户数据时,需甄别并剔除可执行文件和其他可能有风险的文件。
使用root用户可以修改任何用户密码:
# passwd {用户名}
普通用户可以修改自己密码:
$ passwd
Linux系统ssh默认支持无密码登录,如果您不熟悉这项功能,强烈建议自行学习一下并开始使用。默认用户密钥位于~/.ssh/authorized_keys中,您可以用以下命令查看其内容:
$ cat ~/.ssh/authorized_keys
为了防止攻击者增加其他密钥信任文件,可以查看sshd_config的配置进行确认:
# grep AuthorizedKeysFile /etc/ssh/sshd_config
通常我们建议禁止root用户直接从ssh连接系统,而是管理员用户首先使用普通权限用户登录系统后,在有需要root权限操作时,临时使用sudo命令获得root权限。我们同时建议禁止密码方式远程登录,并强制所有用户使用证书方式登陆。可以用以下命令检查root用户当前登陆设置
# grep Root /etc/ssh/sshd_config
检查ssh是否允许密码登录:
# grep Password /etc/ssh/sshd_config
运行上述命令时,还应留意相关配置,防止黑客恶意修改,例如:允许没有密码的用户远程登录。
一旦系统root权限失陷,系统任何用户和任何文件均不可信,即使没有植入后门程序,也有可能增加用户或者修改系统内置用户配置作为入侵的后门。这可以通过检查/etc/passwd和/etc/shadow文件进行确认。
passwd文件格式如下:
1为用户名
2是密码字段,通常此字段为x,代表密码存放于shadow文件中,否则可能已被篡改
3、4分别是uid和gid,除了root用户外,其他用户uid和gid不应为0,否则可能已被篡改
5为用户全名,一般情况不重要
6为用户主目录路径,调查用户登陆权限时,目录内文件内容一定要查看
7为用户默认shell程序路径,此字段应为/etc/shells文件中的一项,或者为/usr/sbin/nologin、/bin/false,如果程序不是这些,或者对应程序被篡改,说明系统已经失陷
shadow文件格式如下:
1为用户名
2为加密后的密码,任何不以!开始的密码对应的用户都有可能可以远程密码登录,需仔细甄别其是否为系统合法用户
其他字段与本文关系不大,可自行上网查看
注意:除了检查shadow中密码字段外,还需要检查passwd中对应的用户主目录的内容才能确定用户是否可以远程登录,不要忘记,Linux默认支持无密码登录。
使用以下命令在linux下查看隐藏文件:
# ls -a
放弃姿势:
1. 攻击者使用后门程序可以绕过系统用户管理机制获得用户权限;
2. 即使只有普通用户使用了弱口令,攻击者依然可以通过本地漏洞获得root权限。参考sudo与polkit本地提权漏洞;
3. 如果有隐藏的后门程序,或系统不完整的情况,所有的修复均可能没有意义;
四、定位并清除系统自启动恶意程序
入门姿势:
攻击者想要持续控制被攻击目标,最简单的方法就是让恶意程序随系统启动。Linux系统中主要存在两种类型的启动程序设置,分别是,SysV形式的启动脚本和systemd系统管理机制。
SysV启动位置有:
/etc/init
/etc/init.d
/etc/rc.d
/etc/rc[0-6].d
/etc/rc.local
/etc/inittab
systemd启动位置有:
/etc/systemd
~/.config/systemd/user
注意:SysV和systemd并不是互斥的,检查应同时检查其对应位置的每个子目录的每个文件,并应根据发行版本的不同,检查系统脚本是否引入了其他启动位置,进行递归检查。
其他的启动位置:
Xserver启动位置有:
/etc/xdg/autostart
~/.config/autostart
系统启动命令行也可能引入外部启动参数,可以用以下命令查看:
# cat /proc/cmdline
放弃姿势:
1. Linux系统启动位置庞大繁杂,根据不同发行版本又有不同,部分脚本复杂度极高,这些都决定人工对其完整检查发现问题不具有性价比;
2. 安装不同的程序可能还会引入新的启动加载点,进一步增加了调查的难度;
3. 攻击者可能采用增加文件、修改文件、链接外部文件等各种手段,攻击目标经常是不易发现或迷惑性强的位置,人工调查难于发现;
4. 上述检查位置并不能覆盖所有启动检查项,具体启动项目名称和位置完全是所使用发行版本设计人员个人习惯和偏好决定,除非对特定系统非常熟悉,普通人检查很可能出现遗漏;
五、定位并清除定时启动的恶意程序
入门姿势:
Linux定时任务也是攻击者常用的恶意文件植入手段,常见的有cron、systemd-timers、at、自建驻留进程。
Cron任务常见的位置有:
/etc/crontab
/etc/cron.*
/var/spool/cron/
还可以使用以下命令查看当前用户的cron任务列表:
# crontab -l
systemd-timers的位置在/etc/systemd子目录下,可以用以下命令查看:
# systemctl list-unit-files | grep timer
at调度命令列表可以用以下命令查看:
$ at -l
常驻进程的定时任务根据进程设计者而定,无法统一方法查看,所以此类问题只能靠使用Live CD启动系统,然后清除所有可疑的自启动文件实现。
放弃姿势:
1. 定时任务本身比较简单,但是检查时需区分哪些是系统自带的,哪些是是被修改或增加了,如果没有正确识别,可能造成系统本身工作不正常;
2. 除了检查配置脚本本身,还需要检查其调用的目标脚本以及目标脚本调用的脚本和程序,“子子孙孙无穷尽”,实际工作量和难度也不能轻视;
六、定位并清除被篡改或增加的系统文件
入门姿势:
简单粗暴感染系统可执行文件和动态链接文件是恶意程序的祖传手艺了。不同Linux发行版包含命令可以用于对比程序安装完成后是否修改,从而发现被篡改的程序。
Redhat系统可以使用以下命令:
# rpm -Va
Debian/Ubuntu系统可以使用以下命令:
# dpkg -l | awk '/^ii/ { print $2 }' | xargs debsums | grep -vE 'OK$'
还可以使用专业杀毒软件进行全盘扫描,发现被感染文件。
放弃姿势:
1. 系统自带检查工具并不存储所有安装文件的信息,所以此检查过程不完全可靠;
2. 系统自带检查工具本身也可能被篡改,检查可能没有意义;
3. 如果恶意程序感染用户自己安装的文件,则检查完全不能发现文件异常;
4. Linux下的专业杀毒软件并不广泛,且杀毒软件很难发现脚本中的恶意代码;
七、查找并修复常见的系统配置文件与参数
入门姿势:
狡猾的猎手会在最出其不意的地方隐藏自己。Shell环境变量就是用户最容易忽视的地方。PATH/LD_LIBRARY_PATH/LD_PRELOAD/LD_AUDIT/alias篡改可以实现用户执行命令时主动触发恶意代码执行。
PATH变量:
此变量决定用户执行程序时系统定位目标程序的方式,默认情况下,普通用户会包含/bin, /usr/bin, /usr/local/bin等内容,root用户额外有/sbin, /usr/sbin, /usr/local/sbin等内容。如果攻击者篡改PATH变量的内容,可能导致用户运行了自己预料之外的恶意程序。可以使用以下命令查看PATH当前内容:
# env | grep PATH
LD_LIBRARY_PATH/LD_PRELOAD/LD_AUDIT等变量:
此类变量影响动态链接程序运行时链接的实际依赖代码,默认情况下,这些变量都应为空。如果攻击者篡改变量的内容,用户在运行程序的同时,不知不觉加载并运行恶意代码。可以用以下命令查看类似变量的内容:
# env | grep LD_
注意:配置文件/etc/ld.so.preload可以实现类似的功能,检查时不应忽略。
alias命令:
alias命令为shell内置命令,可以让用户改变一个命令运行的实际语义。攻击者可以利用此命令实现张冠李戴,让用户常见命令加载恶意代码执行,甚至隐藏或改变常见命令的结果。例如,以下命令可以让用户的ls命令永远返回空目录:
$ alias ls=echo
可以单独运行alias命令查看当前所有命令别名:
$ alias
系统环境变量通常受系统及用户目录配置文件的影响,系统配置文件位置有:
/etc/profile
/etc/profile.d
/etc/environment
/etc/bashrc
用户目录配置文件有:
~/.profile
~/.bashrc
~/.bash_profile
~/.bash_logout
~/.zshrc
如果用户使用X Window服务,配置文件还包括:
~/.xprofile
~/.xinitrc
注意:攻击者也可能直接在配置文件中植入恶意代码,用户登录时自动触发。而系统中可以写入恶意代码的配置文件也远远不止这些。
修改/etc/modprobe*或者/etc/modules*文件可以让系统加载恶意的内核模块代码;
修改/etc/initcpio或者/etc/initramfs文件可以让恶意代码写入到系统启动的早期内存镜像中;
同样,修改/etc/yum或者/etc/apt处的文件可能让你的系统升级操作替攻击者下载恶意代码;
甚至修改/etc/hosts也可以让你经常访问的网站变为黑客控制的投毒站点。
总之,这个可能被更改的列表的长度基本上只取决于攻击者的想象力。
放弃姿势:
1. 列表太长了,这里列不完,修复比重装还累;
2. 都改成这样了,还有必要修复么?
八、检查和修复系统业务文件
入门姿势:
黑手终于伸向你自己的业务程序和数据了。攻击者进入系统,修改了你网站的代码,或者给你的网站增加了一点代码,还可能,就是从你网站代码的漏洞进来的,怎么办?
根据你服务器进程的用户身份,如果是root用户身份,那么请停止阅读,备份数据,重装系统,修复代码漏洞,然后用专用非特权用户重新部署服务。部署时确认除了必要的用户上传目录外,服务用户不具有系统内任何文件的写入权限。如果是普通用户身份,备份数据后,删除用户所属的任何文件,修复漏洞后重新来过。
如果攻击者拥有系统文件写入权限,可能被写入恶意代码的位置包括但不限于:
l 修改服务器配置文件,或者服务目录配置文件,增加或修改服务的内容,形成后门
l 修改或者增加服务目录程序文件,植入一句话木马后门
l 增加服务目录包,为自己准备一个豪华版木马后门
l 增加或修改默认服务管理密码,例如,帮你的tomcat管理目录增加或者修改一个用户,使它变成一个后门
除非你为自己程序的每个文件保留了一份签名信息和文件名录,否则,在海量的程序代码中发现被攻击者修改或者增加的文件,几乎不可能。只能告诉自己吃一堑长一智了。
当业务遭受这种攻击时,“挖矿”可能是你最少需要担心的。此时服务器业务数据既可以被窃取,也可以被篡改。甚至,有经验的黑客还能在数据库中植入精心设计的触发器或者存储过程形成的后门程序,即使你恢复数据,他也能随时回来。
放弃姿势:
冰冻三尺非一日之寒,如果系统出现了这样的问题,那么,很有可能系统开发和部署的整个思路需要推倒重新来过。先不要考虑如何修复,首先止损;
九、检查并修复系统启动加载器与内核文件
入门姿势:
系统运行在病毒上,听起来是不是很新鲜刺激?对的,理论上,黑客可以把恶意代码植入系统引导器、磁盘的引导扇区、甚至BIOS硬件模块或者路由器的nvram配置区内。
事实上,上个世纪臭名昭著的CIH病毒就是针对系统启动代码和BIOS硬件本身进行攻击的。而公开消息称,美国网军有攻击硬件底层代码的病毒作为武器。这种情况,如果商业杀毒软件无法检测到病毒,可能只能请病毒专家了。
当然,为了避免这种情况发生,您可以试试secure boot(安全引导)功能,这需要BIOS和支持的操作系统相互配合完成。具体技术细节,可以查看主板和操作系统的官方文档。
云服务器 被植入挖矿木马,CPU 飙升 200%
一、什么是挖矿木马
挖矿木马会占用CPU进行超频运算,从而占用主机大量的CPU资源,严重影响服务器上的其他应用的正常运行。黑客为了得到更多的算力资源,一般都会对全网进行无差别扫描,同时利用SSH爆破和漏洞利用等手段攻击主机。
部分挖矿木马还具备蠕虫化的特点,在主机被成功入侵之后,挖矿木马还会向内网渗透,并在被入侵的服务器上持久化驻留以获取最大收益。
挖矿木马的整体攻击流程大致如下图所示:
二、挖矿木马中招特征
挖矿木马会在用户不知情的情况下利用主机的算力进行挖矿,最明显的特征就是主机的CPU被大量消耗,查看云主机CPU占用率的方法有两种:
控制台实例监控
主机执行TOP命令
如下图所示,通过执行top命令,即可在返回结果中看到当时系统的CPU占用率。
top -c
如果云主机CPU占用率居高不下,那么主机很有可能已经被植入了挖矿木马,会影响服务器上的其他应用的正常运行,需要立刻上机排查。
三、清理挖矿木马
及时隔离主机
部分带有蠕虫功能的挖矿木马在取得主机的控制权后,会继续对公网的其他主机,或者以当前主机作为跳板机对同一局域网内的其他主机进行横向渗透,所以在发现主机被植入挖矿木马后,在不影响业务正常运行的前提下,应该及时隔离受感染的主机,然后进行下一步分析和清除工作。
腾讯云主机可以通过设置安全组隔离主机,具体参考如下链接:https://cloud.tencent.com/document/product/215/20089
阻断异常网络通信
挖矿木马不仅会连接矿池,还有可能会连接黑客的C2服务器,接收并执行C2指令、投递其他恶意木马,所以需要及时进行网络阻断。
(1)检查主机防火墙当前生效的iptables规则中是否存在业务范围之外的可疑地址和端口,它们可能是挖矿木马的矿池或C2地址
iptables -L -n
(2)从iptables规则中清除可疑地址和端口
vi /etc/sysconfig/iptables
(3)阻断挖矿木马的网络通信
iptables -A INPUT -s 可疑地址 -j DROP
iptables -A OUTPUT -d 可疑地址 -j DROP
清除计划任务
大部分挖矿木马会通过在受感染主机中写入计划任务实现持久化,如果仅仅只是清除挖矿进程,无法将其根除,到了预设的时间点,系统会通过计划任务从黑客的C2服务器重新下载并执行挖矿木马。
挖矿木马常见的计划任务通常是下载并执行sh脚本,如下图所示:
可以通过执行如下命令查看是否存在可疑定时任务,若有,则先保存相关记录用于后续分析,再进行删除:
查看系统当前用户的计划任务:
crontab -l
查看系统特定用户的计划任务:
crontab -u username -l
查看其他计划任务文件:
cat /etc/crontabcat /var/spool/croncat /etc/anacrontabcat /etc/cron.d/cat /etc/cron.daily/cat /etc/cron.hourly/cat /etc/cron.weekly/cat /etc/cron.monthly/cat /var/spool/cron/
清除启动项
除了计划任务,挖矿木马通过添加启动项同样能实现持久化。可以使用如下命令查看开机启动项中是否有异常的启动服务。
CentOS7以下版本:
chkconfig –list
CentOS7及以上版本:
systemctl list-unit-files
如果发现有恶意启动项,可以通过如下命令进行关闭:
CentOS7以下版本:
chkconfig 服务名 off
CentOS7及以上版本:
systemctl disable 服务名
另外,还需要仔细排查以下目录及文件,及时删除可疑的启动项:
/usr/lib/systemd/system
/usr/lib/systemd/system/multi-user.target.wants
/etc/rc.local
/etc/inittab
/etc/rc0.d/
/etc/rc1.d/
/etc/rc2.d/
/etc/rc3.d/
/etc/rc4.d/
/etc/rc5.d/
/etc/rc6.d/
/etc/rc.d/
排查的时候,可以按照文件修改时间来排序,重点排查近期被创建服务项。如下图所示,系统近期被创建了一个名为bot.service的服务,该服务在系统启动时会启动/etc/kinsing这个木马文件,需要关闭bot服务,并删除/etc/kinsing文件。
清除预加载so
通过配置/etc/ld.so.preload,可以自定义程序运行前优先加载的动态链接库,部分木马通过修改该文件,添加恶意so文件,从而实现挖矿进程的隐藏等恶意功能。
检查/etc/ld.so.preload(该文件默认为空),清除异常的动态链接库。可以执行`> /etc/ld.so.preload`命令进行清除。
清除SSH公钥
挖矿木马通常还会在~/.ssh/authoruzed_keys文件中写入黑客的SSH公钥,这样子就算用户将挖矿木马清除得一干二净,黑客还是可以免密登陆该主机,这也是常见的保持服务器控制权的手段。
排查~/.ssh/authorized_keys文件,如果发现可疑的SSH公钥,直接删除。
清除挖矿木马
(1)清除挖矿进程
挖矿木马最大的特点就是会在用户不知情的情况下,利用主机的算力进行挖矿,从而消耗主机大量的CPU资源,所以,通过执行如下命令排查系统中占用大量CPU资源的进程。
top -cps -ef
确认相关进程为挖矿进程后,按照如下步骤将其清除:
获取并记录挖矿进程的文件路径:
ls -l /proc/$PID/exe
杀死挖矿进程:
kill -9 $PID
删除挖矿进程对应的文件
(2)清除其它相关恶意进程
恶意进程与外部的C2服务器进行通信时,往往会开启端口进行监听。执行如下命令,查看服务器是否有未被授权的端口被监听。
netstat -antp
若有未授权进程,按照如下步骤将其清除:
获取并记录未授权进程的文件路径:
ls -l /proc/$PID/exe
杀死未授权进程:
kill -9 $PID
删除未授权进程对应的文件
还可以通过如下命令排查近期新增的文件,清除相关木马
find /etc -ctime -2 (这里指定目录为/etc,获取近2天内的新增文件)lsof -c kinsing (这里要查看文件名为kinsing的相关进程信息)
风险排查、安全加固
对系统进行风险排查和安全加固,避免挖矿木马卷土重来,详情可参考如下链接:https://cloud.tencent.com/document/product/296/9604
四. 常见问题
明明刚刚清理了挖矿木马,没过多久就又卷土重来?
很多用户会反馈挖矿木马老是清理不干净,明明已经Kill了进程,删除了木马文件,没过多久,CPU占用率又上来了。究其根本,还是因为清除得不够彻底。大部分用户都只是Kill掉挖矿进程和对应文件,却没有清理计划任务和守护进程。
一般建议先清除计划任务、启动项、守护进程,再清除挖矿进程和其他恶意进程。
如何判定可疑进程是否为恶意进程?
如下图所示,未知进程kinsing监听本地31458端口,非常可疑,可通过如下方法判定:
(1)执行`ls -al /proc/$PID/exe`确认可疑进程对应的文件;
(2)若文件未被删除,则直接上传文件到Virustotal进行检测,或者计算出文件对应的md5,使用md5去Virustotal进行查询;若文件已被删除,可执行`cat /proc/$PID/exe > /tmp/t.bin`将进程dump到特定目录,再上传文件到Virustotal或者计算dump文件对应的md5到Virustotal进行查询。如果有多款杀毒引擎同时检出,那基本可以判定该进程为恶意进程。
Virustotal地址:https://www.virustotal.com/gui/s
为什么系统CPU占用率接近100%,却看不到是哪个进程导致的?
如下图所示,系统CPU占用率接近100%,却看不到是哪个进程导致的,这种情况一般是因为系统命令被木马篡改了,从而隐藏了木马进程的踪迹,让用户无法进行溯源分析。
命令篡改有多种方式,分别如下:
(1)top源文件被篡改,恶意进程信息被过滤后返回
通过执行如下命令即可复原:
rm -rf /usr/bin/top && mv /usr/bin/top.original /usr/bin/top
【相关文章】
https://blog.csdn.net/chenmozhe22/article/details/112578057
(2)篡改预加载so文件,ls、top、ps等命令已经被木马的动态链接库劫持,无法获得木马进程相关的信息
通过执行如下命令即可复原:
> /etc/ld.so.preload && rm -rf 恶意so文件路径
(3)通过其他未知手段篡改系统命令
可分别尝试如下两种方案解决:
i.从其他相同版本系统中拷贝命令源文件到当前系统中进行覆盖;可使用uname -a命令查看当前系统版本;
ii.或者安装busybox来对系统进行排查。
busybox是一个集成了300多个最常用Linux命令和工具的软件,可以使用busybox替代系统命令对系统进行排查;
yum -y install wget make gcc perl glibc-static ncurses-devel libgcrypt-devel
wget http://busybox.net/downloads/busybox-1.33.0.tar.bz2
tar -jxvf busybox-1.33.0.tar.bz2
cd busybox-1.33.0 && make && make install
【相关文章】
https://www.cnblogs.com/angryprogrammer/p/13456681.html
日志在排查文件的时候至关重要,在Linux上一般跟系统相关的日志默认都会放到/var/log下面。
1、/var/log/boot.log
一般包含系统启动时的日志,包括自启动的服务。
2、/var/log/btmp
记录所有失败登录信息。非文本文件,可以使用last -f /var/log/btmp进行查看。
3、/var/log/cron
cron计划任务的日志,每当cron任务被执行的时候都会在这个文件里面记录。
4、/var/log/dmesg
包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以直接查看这个文件或者使用dmesg这个命令查看。
5、/var/log/lastlog
记录所有用户的最近信息。非文本文件,可以使用lastlog进行查看。
6、/var/log/maillog
包含来着系统运行电子邮件服务器的日志信息。
7、/var/log/message
包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
8、/var/log/secure
包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
9、/var/log/yum.log
包含使用yum安装软件包的信息。
10、/var/log/anaconda/ 目录 或者 /var/log/anconda.log
包含在安装CentOS/RHEL时候的日志。
11、/var/log/audit目录
包含audit daemon的审计日志。例如:selinux开启的时候,这里就会有关于selinux审计的日志。
12、/var/log/sa/ 目录
包含每日由sysstat软件包收集的sar文件。
13、/var/log/cups
涉及所有打印信息的日志,即cups打印服务运行的日志。
14、其他文件或者目录
例如安装系统自带的一些软件的时候,默认的日志输出都是输出到这个路径下的,例如apache默认日志路径/var/log/httpd/,这个是为了遵循系统设计的一些规范。
原文链接:https://blog.csdn.net/u013008898/article/details/133946077