近日公司局域网突然变得非常慢,上网受到很大影响,不仅仅是访问互联网慢,就连访问公司内部服务器都感到异常缓慢。于是对本局域网网关进行测试:
$ ping 10.10.26.254
发现延时很大,而且丢包相当多,丢包率达到70%-90%。先怀疑是否有机器中毒在局域网内大量发arp包,于是在自己机器上用arp命令检测:
$ sudo arp -a
可以看到本局域网内的主机ip以及对应的mac地址,貌似没有什么大问题。然后在本机上运行wireshark小鲨鱼抓包,发现确实有几个本局域网内的ip在给全网广播地址发udp包,根据ip和mac地址找到这几个主机后,让他们拔掉网线进行杀毒或者系统重装,但网慢的现象仍然存在。通过对局域网上联交换机的端口进行排查,发现局域网有主机仍然在大量向往发送数据包,量非常大,上百兆的规模,导致上联交换机端口带宽被堵死,网络当然慢了。对局域网内楼层交换机进行逐一排查,最后锁定到连接某个端口的一台主机,ip为10.10.26.70,在大量向外发数据包,很快便找到了这台主机。原来这是一台装有CentOS 7.0的Linux系统台式机,本来是作为开发测试使用的。这就很奇怪了,一般来讲Linux系统安全性比较高,而且该主机上也没有明显的服务漏洞。对系统进行检查,逐一关闭了一些服务以后,只保留ssh监听端口(22),其余服务全部关闭,但现象依旧。运行ifstat命令可以看到主机网卡接收和发出数据包的流量统计:
$ sudo ifstat
显示TX Data发出数据量巨大,达到几百兆规模,相当可怕!马上用lsof命令检测网络对外流量到底是什么:
$ sudo lsof -i
发现大流量是对外发tcp数据包,而且是发往103.240.140.152这个地址。查了一下这个地址,显示来自香港特别行政区的。同时,用top命令查看当前运行的进程:
$ top
发现总有一个不知名的字母随便乱排的进程几乎总是排在第一位,占用的系统资源最多。于是记下其PID进程号后,用ps命令查找该进程的信息及启动命令:
$ ps -ef | grep 可疑进程号
显示结果居然是一个shell内部命令,比如“cd /etc”这样的。用kill命令尝试杀掉该可疑进程:
$ sudo kill -KILL 可疑进程号
可疑进程的确是被杀掉了,马上就不发包了。网络恢复正常,但是好景不长,过了一分钟左右,网络又开始变慢,检查发现主机又开始大量发包。通过top命令发现又出现一个可疑进程大量消耗系统资源,排在第一位,进程名还是一串字母随机无序组成的,但和刚刚杀死的那个可疑进程名字不同。基本可以确定,这台主机肯定是被黑掉变成肉鸡了。马上检查系统日志:
$ sudo lastb
可以发现大量对ssh远程登录的尝试失败记录,数量相当恐怖。基本可以确定,本机是被ssh暴力攻破远程登录后变成了肉鸡。随即在网上搜索有关ssh攻击和103.240.140.152的相关内容,原来是在2014年底开始到处肆虐的“ssh神经病(Psychos)”攻击,这是一种新型的Linux恶意软件和工具包,用来发动DDoS攻击。通常都是通过异乎寻常的ssh暴力尝试登录攻击远程主机。在ssh暴力尝试root密码并登录成功之后,会从控制主机上下载恶意文件并安装执行,肉机立刻开始搜索它的命令控制(C2)主机连接建立之后,C2就可以指挥肉机发动SYN洪水攻击。
这个恶意木马程序一旦被安装在肉鸡上后,用kill无法彻底杀掉,因为总是会隔一小段时间又自动运行。所以怀疑可能是通过定时任务方式在自动启动。检查cron定时任务相关的配置文件目录,果然发现在/etc/crond.hourly目录下发现了一个名为gcc.sh的可疑脚本文件,应该就是木马程序的一部分。这个脚本会一直在内存中运行,并且会不断检测自身是否存在于/lib/libudev.so这个文件中,如果不存在,则创建一个并且销毁存在于其他地方的自身。这一步完成之后,这个.so文件还会创建一个开机启动脚本并且设置为开机启动,然后他就会写入shell到gcc.sh,也就是/etc/cron.hourly/gcc.sh。因此,这里可以说又发现了一个隐藏着的恶意木马程序的核心文件,就是/lib/libudev.so。接着,考虑到每次开机恶意木马都会自动运行,因此要检查/etc/rc.d/rc5.d,果然发现很多字幕随意排练组合名字的可执行脚本链接,它们就是在top中看到的那些杀不掉的反复出现的可疑进程。逐一检查/etc/rc.d/rc0.d一直到/etc/rc.d/rc6.d目录,发现恶意木马在这几个目录中都安插了恶意自启脚本链接,真够黑的。这些链接都指向/etc/init.d目录下的真实恶意自启脚本文件。好了,最后别忘了/lib/libudev.so,马上进行检查,发现这个/lib/libudev.so还真的存在,并且具备可执行权限,用file命令检测一下该文件的类型:
$ file /lib/libudev.so
结果这个文件其实是一个可执行程序,并不是一个共享库,只不过用一个.so的扩展名想掩盖自己的真实身份而已,它应该就是恶意木马的核心程序。既然如此,下面就开始清除这个恶意木马程序。
首先,将/lib/libudev.so取消可执行权限:
$ sudo chmod a-x /lib/libudev.so
然后,取消/etc/crond.hourly/gcc.sh的可执行权限并删除之:
$ sudo chmod a-x /etc/cron.hourly/gcc.sh
$ sudo rm -f /etc/cron.hourly/gcc.sh
删除/etc/init.d下面所有名字奇奇怪怪的那些字母随机组合的可执行脚本文件。接着从/etc/rc.d/rc0.d开始直到/etc/rc.d/rc6.d下面那些无效的链接,这些链接都指向刚才/etc/init.d下面被删除的那些使用字母随机组合名字的可执行脚本,这些脚本都是恶意木马程序安插的脚本,在系统启动时自动运行激活恶意木马。
最后,删除/lib/libudev.so这个恶意木马核心程序文件:
$ sudo rm -f /lib/libudev.so
重新启动系统,恶意木马程序就被清除掉了。
这次Linux主机被ssh神经病(Psychos)暴力攻破后成为肉鸡的攻防过程,说明没有一个系统是百分之百安全的,关键还是在于使用者自己的安全意识是否到位,安全防范措施是否足够有效。这次这台Linux之所以被ssh暴力攻破,主要还是安装后没有修改sshd的默认配置。sshd默认配置是允许root远程认证登录的,所以必须要修改sshd配置,禁止root通过ssh远程认证登录,并且最好修改sshd的默认服务端口,由22改为其他不常见的端口号。另一方面,对root的密码也要尽可能设置得复杂一些,使端口扫描和暴力攻破的难度尽可能提升。
- Mac OS X上如何实现到Linux主机的ssh免登陆
转载说明: 本文转载自 http://www.aips.me/mac-key-ssh-login-linux.html 生成密钥对 用密码登录远程主机,将公钥拷贝过去 done 第一步:生成密匙对执行 ...
- Linux主机之间ssh免密登录配置方法
由于公司的生产环境有很多台Linux的CentOS服务器, 为了方便机子(假设两台机子A,B)互相之间免密ssh, scp命令操作,配置如下 1. 在A.B上分别创建本机的公钥和私钥,输入命令后连续三 ...
- 使用putty连接本地VirtualBox上的centos7 linux主机
1. 查看linux主机默认ssh端口 因为是使用ssh连接虚拟机上的linux主机的,所以需要查看centos ssh默认端口,一般是22 打开终端 输入cd /etc/ssh/ 查看ssh_con ...
- Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序
自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH 网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...
- windows 通过ssh连接到Linux主机
1. 确定Linux主机已经开启了ssh功能. 1.1--确认sshserver是否启动 ps -e |grep ssh 如果只有ssh-agent那ssh-server还没有启动,需要/etc/in ...
- .Net使用SSH.NET通过SSH访问Linux主机
使用了SSH.NET库,添加引用dll至项目,以下代码显示了点击按钮后SSH链接Linux主机执行命令并返回命令执行结果 protected void btnExcute_Click(object s ...
- Linux主机SSH免密设置解析
为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录.但是很多时候为了操作方便,我们都通过设置SSH免密码登录.那么该如何设置?是不是免密码登录就不安全了呢? 一.被 ...
- ssh 设置私钥实现两台linux主机无密码访问
在服务器主机上(称为A主机) 创建公钥与私钥: ssh-keygen -t rsa 一路回车,如果想设置密码短语,在提示 passphrase 的时候设置密码短语 查看生成的公钥及私钥: ls ~/. ...
- Jenkins踩坑系列--你试过linux主机ssh登录windows,启动java进程吗,来试试吧
一.问题概述 在一个多月前,组长让我研究下持续集成.我很自然地选择了jenkins.当时,(包括现在也是),部分服务器用的是windows主机. 我当时想了想,如果我把jenkins装在windows ...
随机推荐
- 【转载】WPF DataGrid 性能加载大数据
作者:过客非归 来源:CSDN 原文:https://blog.csdn.net/u010265681/article/details/76651725 WPF(Windows Presentatio ...
- python之道05
1.写代码,有如下列表,按照要求实现每一个功能 li = ["alex", "WuSir", "ritian", "barry&q ...
- AC自动机讲解+[HDU2222]:Keywords Search(AC自动机)
首先,有这样一道题: 给你一个单词W和一个文章T,问W在T中出现了几次(原题见POJ3461). OK,so easy~ HASH or KMP 轻松解决. 那么还有一道例题: 给定n个长度不超过50 ...
- github+hexo+themes搭建简易个性主题博客
0x00 install Node.js and git 安装Node.js:http://www.runoob.com/nodejs/nodejs-install-setup.html 安装git ...
- Bootstrap历练实例:危险样式按钮
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...
- APIO2019&&THUSC2019游记
APIO2019懵十三记: day0: 早上和ljx从沈阳出发,下午一点到的首师大附. 由于工作人员中午十二点就散了,我们就先去试机了. 下午三点接到狗牌和T恤,晚上买麦当劳回如意吃. 晚上还有场模拟 ...
- [LUOGU] P1049 装箱问题
题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余 ...
- nginx 无法加载css/js图片等文件 404 not fund
刚配置Nginx反向代理,Nginx可能会出现无法加载css.js或者图片等文件,这里需要在配置文件*.conf里面加上如下配置项. location ~ .*\.(js|css|png|jpg)$ ...
- GIMP里的Path移动,旋转,翻转操作
1/Path的移动: 快捷键Ctrl+Move Tool 2/Path的旋转: 选择Rotate Tool,在Path中选择,出现十字圈. Angel下的滑块调节一定的角度,在合适的位置即可. 3/P ...
- python基础知识14-正则表达式
1.正则表达式 正则可以代替其他任何工具,但是其他工具不能完全代替正则. 1.匹配或提取字符串的工具,基于所有语言之上的工具. 正则表达式所面向的问题 判断一个字符串是否匹配给定的格式,如判断用户注册 ...