改进网站建设英文作文,购物平台软件开发,有网站了小程序怎么做,怎么样分析一个网站摘要 莫名其妙的服务器就被攻击了#xff0c;又被薅了羊毛#xff0c;当做免费的挖矿劳动力了。 一、起因
上班#xff08;摸鱼#xff09;好好的#xff0c;突然收到一条阿里云的推送短信#xff0c;不看不知道#xff0c;两台服务器被拉去作为苦力#xff0c;挖矿去… 摘要 莫名其妙的服务器就被攻击了又被薅了羊毛当做免费的挖矿劳动力了。 一、起因
上班摸鱼好好的突然收到一条阿里云的推送短信不看不知道两台服务器被拉去作为苦力挖矿去了。这不是耽误我摸鱼吗再说你挖到的矿币又不带我分岂能忍。本着对公司负责任的态度实在没办法这不收拾一下过分的挖矿脚本对不起这么多年积攒的专业知识。
登录服务器top 一下ps 一下crontab -l 一下好家伙只看到 CPU 异常占用了却没发现到底是哪个玩意贪了我这么多资源。与以往的不太一样啊你特么在逗我。
按照以往的经验ps -aux --sort-pcpu|head -10 一下贪渎者肯定原形毕露。难不成穿了个马甲。仔细分析可能不仅仅是马甲这么简单更有可能是隐身衣。使出万能的百度大法果然有几篇秘籍指出问题一一对照下只能发现大概定位不到最终的“宝藏”地点。看来百度不行得 google 一下了。这次秘籍多了起来给出了一项专门破解隐藏进程的功法。
二、寻“宝”
BusyBox 是一个集成了 300 多个最常用 Linux 命令和工具的软件。甚至还集成了一个 http 服务器和 telnet 服务器集成的包大小只有 1M 左右。有人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单点说 BusyBox 就是一个集成了许多 Linux 工具和命令的大的工具箱。在嵌入式软件中BusyBox 有着广泛的运用。
所以下载 BusyBox安装
$ wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox
$ mv busybox /usr/bin/busybox
$ chmod x /usr/bin/busybox查看 BusyBox 基本功能
$ busybox --help使用瑞士军刀查看一下进程信息
$ busybox top作祟者原型毕露有个 /bin/daemon 进程占用过高的 CPU 使用 同时使用 netstat 查看一下程序端口占用
$ netstat -anp | grep ESTAB结果如下 可以看到有一个程序占用端口 14444连接的ip为 217.182.169.148却并没有打印出程序的进程号在shadan搜索一下ip 为法国的基本确定入侵使用的端口为 14444先把端口禁用掉。 三、“六娃”的能力
既然确定是 /bin/daemon那就需要找出这个玩意是怎么具有“六娃”的能力又是如何进行挖矿的。
首先可以确定的是 /bin/daemon 是一个二进制执行程序那就可以看看它的动态库依赖关系
$ ldd /bin/daemon此时还未发现有任何异常的结果请原谅眼神不好使四个眼睛都没发现问题
既然 ldd 无法找出异常祭出大招看看 /bin/daemon 所执行的系统调用
$ strace /bin/deamon好家伙不看不知道居然有一个 ld.so.preload来了个预加载。
一般来说预加载 so 有两种方式
修改/etc/ld.so.preload配置文件这种方法对配置修改后运行的进程有效而无法影响已经在运行的进程启动进程前设置LD_PRELOAD环境变量此方法只对当前进程生效
LD_PRELOAD 可以影响程序的运行时链接它允许定义在程序运行前优先加载的动态链接库通过这个环境变量可以在主程序和其动态链接库的中间加载别的动态链接库甚至覆盖正常的函数。
进程在启动后会按照一定的顺序加载动态库
加载环境变量 LD_PRELOAD 指定的动态库加载文件 /etc/ld.so.preload 指定的动态库搜索环境变量 LD_LIBRARY_PATH 指定的动态库搜索路径搜索路径 /lib64 下的动态库文件
从上面的结果来看加载了一个 /usr/local/lib/libprocesshider.so 动态库从上面的 ldd 返回结果也看到了这个动态库再仔细一看这名字不就是 processhider。 libprocesshider.soHide a process under Linux using the ld preloader. 官方的解释本来可能只是作者觉得一个好玩的玩意却被别有用心的人拿来做坏事。
找到这家伙那好办了先把它直接干掉。
$ rm -rf /usr/local/lib/libprocesshider.so啥万能的 rm -rf 大法居然失效了这家伙身上居然给自己加了个盾大招居然没有收到人头。
冷静一下仔细分析。既然不能删除那就是有着隐藏属性等待技能冷却我还有招。
$ lsattr /usr/local/lib/libprocesshider.so果然文件被追加了隐藏属性。可以看到有 i 和 a 属性。
文件隐藏属性解释
属性选项功能i如果对文件设置 i 属性不允许对文件进行删除、改名也不能添加和修改数据如果对目录设置 i 属性只能修改目录下文件中的数据但不允许建立和删除文件a如果对文件设置 a 属性只能在文件中增加数据不能删除和修改数据如果对目录设置 a 属性只允许在目录中建立和修改文件不允许删除文件u设置此属性的文件或目录在删除时其内容会被保存以保证后期能够恢复常用来防止意外删除文件或目录s和 u 相反删除文件或目录时会被彻底删除直接从硬盘上删除然后用 0 填充所占用的区域不可恢复
既然加了盾那把盾给破了就是
$ chattr -ia /usr/local/lib/libprocesshider.so什么chattr 没权限这是反弹伤害吗这玩不下去了啊。
试试分身术吧。
$ cp /usr/bin/chattr /usr/bin/chattr2
$ chattr2 -ia /usr/bin/chattr没报错嗯再试试
$ chattr -ia /usr/local/lib/libprocesshider.so咋还提示没权限。
再看一下 chattr
$ file /usr/bin/chattr这这这跟我这虚晃一枪呢。你把我原来的文件删了给我放个空文件你是想骗谁呢。
看来要重装 chattr 了但是机器上跑了不少服务担心有影响。集中精力冥想三分钟条条大路通罗马此路不通换路走。谁让咱兄弟姐妹多呢。
服务器都是选择的一样的镜像版本一致从其它未被攻击的系统中拷贝一份 chattr划重点拷贝到服务器上时请换一个文件名称通过新的文件修改原来的文件。如 chattr2。
$ chattr2 -ia /usr/bin/chattr
$ rm -rf /usr/bin/chattr
$ mv /usr/bin/chattr2 /usr/bin/chattr正主归位一切妖魔邪道即将化为无形。
$ chattr -ia /usr/local/lib/libprocesshider.so
$ chattr -ia /etc/ld.so.preload
$ rm -rf /usr/local/lib/libprocesshider.so
$ rm -rf /etc/ld.so.preload此时通过 top 即可看到 /bin/daemon 进程。没有了隐身衣无所遁形了吧。
那么接下来就应该干掉“罪魁祸首”了。大蛇精和蝎子精已死救爷爷终于有希望了。
/bin/daemon 是通过软链指向 /usr/bin/daemon不墨迹直接干掉本尊。
$ chattr -ia /usr/bin/daemon
$ rm -rf /usr/bin/daemon当然记得杀掉运行中的 /bin/daemon 进程
$ kill -9 2415四、守护者
一般的挖矿脚本程序肯定都有一个守护进程保证挖矿的进程被杀之后可以重新启动绝大多数是用的定时任务的方式。既然通过 crontab -l 没看到定时任务那就看看 /etc/cron.d 目录下有没有 果然在 /etc/cron.d 目录下存在着定时任务脚本查看脚本内容
$ cat /etc/cron.d/systemd果然运行了一条定时任务查看指向的脚本内容
$ cat /lib/systemd/systemd-login脚本文件没有内容file /lib/systemd/systemd-login
very short file(no magic)
什么 ,先不管了干掉再说。
$ rm -rf /lib/systemd/systemd-login
$ rm -rf /etc/cron.d/systemd
$ rm -rf /etc/cron.d/systemd~
$ rm -rf /etc/cron.d/systemz~打完野怪打小龙打完小龙打大龙等一段时间看看还好己方水晶没爆。
运行一段时间一切稳定算是暂告一段落。
五、总结
本篇文章还有很多的不足之处并没有找到病毒攻击的入口又是如何入侵到系统的挖矿的脚本究竟运行在哪按照正常的被攻击排错方式一开始并不顺利。总结一下系统被入侵的排查思路只是给后来者提供一下解决思路希望大家的系统都很健壮不被攻击。
查看系统的 CPU 和 内存占用查询占用系统资源过高的进程排查定时任务crontab -l 或者 /etc/cron.d 目录检查异常端口如发现禁用端口堵漏使用 last 命令查看系统异常登录情况一般攻击者会抹去入侵记录使用 history 命令查看系统历史执行命令一般攻击者会抹去历史命令查看开机启动脚本 /etc/rc.local 是否插入了开机启动进程通过 find /etc/cron.daily/* -mtime -1 查找前一天到现在被修改的文件找一台正常的机器比较一下被修改文件的 md5 值
后续救援不如从源头堵住疏漏平时使用系统时可以从以下方面尽量保证系统安全
检查弱口令使用强口令能用证书的尽量不使用密码不需要在外网访问的端口尽量不开启只开放在内网尽量使用普通用户启动服务不要使用 root 用户启动服务系统被入侵一般都是通过部署的服务暴露出来的漏洞及时更新软件版本加固系统修改常用软件服务的端口尽量不要使用原有端口定时备份重要的文件数据以防止服务器被入侵时丢失重要数据
未完待续…