0x1
事情是这样的,在被告知服务器被攻击之前我还在网站上看一篇关于openssh漏洞的一篇文章(http://www.oschina.net/news/64507/openssh-under-attack);当时我就在想我们的服务器会不会受到影响,客户是不是又该来叫我打补丁了,结果尼玛第二天就出事儿了,接到通知说我们有两台在运营商处托管的四台服务器,发现这些服务器在不断的向外发送请求并且流量超大(顿时我就。。。。)。
0x2
接下来就是开始着手处理问题了,当我的同事把服务器密码给我的时候,心中飞过一万只草泥马(暗想我++这尼玛谁设置的密码,这不明摆着让人家来搞吗?),这个时候我大概也猜到服务器被搞掉的原因了(密码太easy啦!!!),原因知道了问题还要处理啊,拿到密码后登陆服务器,一看一台的发送流量是80多个T一台的流量是224T,(大家算一算这他妈能下载多少部成人爱情动作教育片了?算好了告诉我一声);其他两台没有被攻破,原因是密码不一样。。。。
0x3
进入其中一台服务器一看,history 一下就看见 >~/.bash_history(草,什么意思)废话这特么不就是被搞了了吗?然后再赶快看看登陆的用户,没有异常,然后再查看登陆的日志:
0x4
我看了看日志从6月20日左右到7月24日左右才攻破,产生的日志文件都有5个,而且居然没有删掉这个日志,历史命令都清除了,居然没有删除登陆日志。。。。,然后就是利用服务器疯狂的向外发包。
0x5
确认是被暴力破解后就是开始查找服务器被攻破后都被懂了些什么东西,看了时间是当天才被攻破的(我是当天上午的时候接到通知的),然后果断使用find / -ctime -1 /查找最近一天内被修改了的文件。
结果就分别发现了以下几个文件:
/root/236991
/etc/init.d/DbSecuritySpt
/usr/sbin/.sshd
/bin/ps
/bin/netstat
/etc/shadow
/etc/init.d/selinux
/usr/bin/bsd-port/getty
/usr/bin/bsd-port/getty.lock
0x6
找出这些文件后我使用strings看了一下他们的静态字符串,发现里面有大量的ip地址(地址指向浙江,美国,广东)
0x7
就在这个时候我发现操作很卡,一看流量又开始向外发送数据了,马上查看了一下进程列表和网络连接,然后把异常连接的程序(也就是236991)kill掉,但是没过一会儿又发现236991程序起来了,一看尼玛居然还有一个守护程序.sshd,然后再次杀掉.sshd,然后将这两个程序mv 到一个一个文件夹(/back)下,同时也将/etc/init.d/selinux,/etc/init.d/DbSecuritySpt,/usr/bin/bsd-port/getty ,/usr/bin/bsd-port/getty.lock都mv到/back 下。然后用ps看了一下进程列表 236991和.ssh没有了,再一看尼玛又起来了,刚刚才mv走居然又有了,果断看了一下之前mv掉的东西,一看全都恢复了,仔细一想,原来是ps干的,ps的程序被替换了,我将ps程序从其他没有被攻击的服务器上拷贝了过来替换掉,然后我又试了一下netstat命令,和ps的效果一样被mv的程序全都恢复了,果断替换之。还有发现/etc/shadow和passwd文件里面多了两个用户,果断干掉。
将所有文件删除以及替换后,经过观察没有发现有异常程序再次启动,证明后门程序已经被清理完成,ok,后门程序处理完成后,查看我们的业务程序,业务程序工作正常,数据库也没有被破坏掉(万幸啊)。。
后期就是加强系统的安全保障,
1、修改sshd的配置减少重试次数
2、添加防火墙访问规则
3、修改密码
4、升级软件
5、持续观察
0x8
后面我大概分析了下这一套攻击流程以及工作原理:
1、服务器被攻击后放入后门程序以及攻击程序,服务器被当成肉鸡作为攻击集群中的一个节点,通过不断的攻击不断的增加服务器节点形成一个越来越大的攻击集群,越到后面攻击能力越强。
2、被植入后门程序后,在几个地方放置了可以触发启动的程序,/etc/init.d/ /bin/ps /bin/netstat ,如果稍微不注意的话/bin/下的两个程序很难被清理掉,因为其他地方被删除后一旦运行这两个程序就会重新生成。
3、总之 ps、netstat、.sshd、236991 中一个未被清除干净,所有都会死灰复燃。
把这件事记录一下,留个经验教训!
网友评论