http://www.cndba.cn/account/article/details/106

1    故事开始
首先剧透一下后门木马:Linux.BackDoor.Gates.5
http://forum.antichat.ru/threads/413337/

首先是下午14点左右有几台服务器出现流量超高,平时只有几百M的流量,那时候发现流量上G了,达到这个量第一感觉就是遭受了DDOS流量攻击,那时候手上的服务器比较多,出现几台并没

有放在眼里,觉得查查就可以出来结果。随便说一句为了达到最好的性能,我们这些服务器都没有开防火墙(包括硬件及iptables),也就是服务器一直处于裸奔的状态。这些服务器裸奔了几年一直没有出现问题,看来linux服务器安全这块还是挺让人满意的。

开始也没有什么头绪,就是ps查进程啊,netstat查端口号,iftop查流量,估计大家一开始出现这种情况都是这样操作,一时也没发现什么异常,只是iftop发现我们的服务器一直向外大量发包,对某个IP的流量能到达600多M,这时我们意识到服务器被黑了,但是只是当成了肉鸡,去攻击别的服务器,当然攻击的IP也是一直在变化的,就好像有人在远程控制一样。

转眼都快到下班时间了,这时大概有3台服务器有这种的情况,此时大家把各自了解的情况汇总了一下:

1、/bin/ps,/bin/netsta程序都是1.2M的大小,显然是被人掉包了
2、/usr/bin/.dbus-daemon--system 进程还带了一个点,跟哪个不带点的很像,但终归是假的,你咋不给真的删掉替换呢,看来写这种程序的人法律意识很强,要不然程序推广起来了,死了一大片CIA会放过他吗
3、/etc/rc.local权限改了,而且添加了一个开机启动项
4、lsattr、chattr命令删除了
5、进程杀掉了立即又起来了这点很让人头痛
6、找到了一些最近修改的文件,显然这些都是黑客留下的
7、开机自动启动文件增加2个启动项

刚开始进程杀了又起来,文件删了又自动生成,线上环境又没有防火墙配置,无奈之下只好想了一个怪招,把/bin/bash重命名一下,果然流量下来了,这种杀敌1万自损8千的招果然有用。

其实这时候还没有找到真正的木马,但是已经有时间去分析查找病毒源了,这3台其中两台修改了bash名字,突然断开了,这样就登陆不了,只好重装系统了。后来这台我就慢慢查找了,差不多都找到了,然后删除。这时心情大好,准备写博文记录一下,毕竟这是线上环境第一次遭遇木马。

大概22点的时候,博文写了一半,突然又接到故障,这次一下子又7台服务器出故障了,好心情一下子没了,原来那3台只是个开场白,真正的战斗还没有开始。所以后面的博客是续上的,调调要是有些不一样将就的看吧。

由于这段时间网上查了些资料,慢慢的对这个木马熟悉起来了。这时我上传了一些正常的二进制程序如:ls,netstat,chattr,lsattr这样用自动的程序一下子就查到了木马程序,我分析了一下,这些木马程序名字变着花样来,但万变不离其宗,名字都写在/etc/rc.d/init.d/DbSecuritySpt和/etc/rc.d/init.d/selinux里面,而且名字和正常的服务很像。

有/usr/local/zabbix/sbin/zabbix_AgentD、/usr/bin/bsd-port/getty、/usr/bin/dpkgd/ps、/usr/bin/.dbus-daemon--system、/usr/bin/.sshd、/usr/bin/sshd反正你系统有什么类似的进程在运行,他就改成差不多的来迷惑你,其实他们都是一个程序大小也一样。

现在就是删除这些文件,杀死这些进程,说个小插曲由于某台服务器漏掉了一些没有删,第二天有激活了,这些东西当你用上面的命令时就可以激活,所以要千万小心仔细。在大概凌晨4点多的时候这7台服务器的木马清理了差不多了,现在综合总结了大概步骤如下。

2    简单判断有无木马
有无下列文件

cat /etc/rc.d/init.d/selinux
cat /etc/rc.d/init.d/DbSecuritySpt
ls /usr/bin/bsd-port 
ls /usr/bin/dpkgd

查看大小是否正常

ls -lh /bin/netstat
ls -lh /bin/ps
ls -lh /usr/sbin/lsof
ls -lh /usr/sbin/ss

3    上传如下命令到/root下
从其他Linux上复制出如下命令

lsattr   chattr  ps  netstat  ss lsof

4    删除如下目录及文件

rm -rf /usr/bin/dpkgd  (ps netstat lsof ss)
rm -rf /usr/bin/bsd-port  (木马程序)
rm -f  /usr/local/zabbix/sbin/zabbix_AgentD (木马程序)
rm -f  /usr/local/zabbix/sbin/conf.n
rm -f  /usr/bin/.sshd 
rm -f  /usr/bin/sshd 
rm -f  /root/cmd.n
rm -f  /root/conf.n
rm -f  /root/IP
rm -f  /tmp/gates.lod   
rm -f  /tmp/moni.lod
rm -f  /tmp/notify.file  程序
rm -f  /tmp/gates.lock   进程号
rm -f  /etc/rc.d/init.d/DbSecuritySpt(启动上述描述的那些木马变种程序)
rm -f  /etc/rc.d/rc1.d/S97DbSecuritySpt
rm -f  /etc/rc.d/rc2.d/S97DbSecuritySpt
rm -f  /etc/rc.d/rc3.d/S97DbSecuritySpt
rm -f  /etc/rc.d/rc4.d/S97DbSecuritySpt
rm -f  /etc/rc.d/rc5.d/S97DbSecuritySpt
rm -f  /etc/rc.d/init.d/selinux(默认是启动/usr/bin/bsd-port/getty)
rm -f  /etc/rc.d/rc1.d/S99selinux
rm -f  /etc/rc.d/rc2.d/S99selinux
rm -f  /etc/rc.d/rc3.d/S99selinux
rm -f  /etc/rc.d/rc4.d/S99selinux
rm -f  /etc/rc.d/rc5.d/S99selinux

5    找出下列程序进程号并杀死
top 一眼就看到那个木马cpu利用率特高

/root/ps aux |grep -i jul29(主要是最近开启的进程)
/root/ps aux |grep -i jul30
/root/ps aux |grep -i jul31
/root/ps aux |grep sshd
/root/ps aux |grep ps
/root/ps aux |grep getty
/root/ps aux |grep netstat
/root/ps aux |grep lsof
/root/ps aux |grep ss
/root/ps aux |grep zabbix_Agetntd
/root/ps aux |grep .dbus
举例如下:
/root/ps aux |grep getty
root      6215  0.0  0.0  93636   868 ?        Ssl  20:54   0:05 /usr/bin/bsd-port/getty
kill 6215
/root/ps aux |grep zabbix_AgentD
root      2558 71.0  0.0 106052  1048 ?        Ssl  20:54 117:29 ./zabbix_AgentD
kill 2558
/root/ps aux |grep "/dpkgd/ps"
root     11173 67.8  0.0 105924  1020 ?        Ssl  01:39   8:00 /usr/bin/dpkgd/ps -p 11148 -o comm=
kill 11173
注意如果kill后删除后还会再出现就这样操作(破坏木马程序)
>/usr/bin/dpkgd/ps && /root/chattr +i /usr/bin/dpkgd/ps
>/usr/bin/bsd-port/getty && /root/chattr +i /usr/bin/bsd-port/getty

6    删除含木马命令并重新复制
因为OS的命令已经被替换,需要从其他Linux上复制命令。

cp /root/ps /bin
cp /root/netstat /bin
cp /root/lsof /usr/sbin
cp /root/ss /usr/sbin

修改下面两个程序的权限,这个是意外发现有的改了这两个程序的权限,让你发现了木马既不能下载正常程序也不能杀进程

/usr/bin/killall 
/usr/bin/wget

另外他们还修改了DNS怕我们识别不了有的域名吧,想得很周到哈

cat /etc/resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.4.4

7    安装扫描工具clamav

8    加强自身安全
1.启用防火墙
2. yum update  更新系统(特别是bash、openssh和openssl)
3.关闭一些不必要的服务
4.设置ssh普通用户登陆并用hosts.all、hosts.deny限制登陆的网段
5.记录登陆系统后操作的命令

时间: 2024-11-04 17:19:57

http://www.cndba.cn/account/article/details/106的相关文章

mybaits入门(含实例教程和源码) http://blog.csdn.net/u013142781/article/details/50388204

前言:mybatis是一个非常优秀的存储过程和高级映射的优秀持久层框架.大大简化了,数据库操作中的常用操作.下面将介绍mybatis的一些概念和在eclipse上的实际项目搭建使用. 一.mybatis的概念介绍 1.1.背景介绍 MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old 

RTP协议分析(转自:http://blog.csdn.net/bripengandre/article/details/2238818)

RTP协议分析 第1章.     RTP概述 1.1.  RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本).RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议).RTP用来为IP网上的语音.图像.传真等多种需要实时传输的多媒体数据提供端到端的实时传输

http://blog.csdn.net/LANGXINLEN/article/details/50421988

GitHub上史上最全的Android开源项目分类汇总 今天在看博客的时候,无意中发现了 @Trinea在GitHub上的一个项目 Android开源项目分类汇总, 由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫的界面特效设计.个性化控件.工具库.优秀的Android 开源项目.开发测试工具.优秀个人和团体等.可以这样说,每一位Andorid开发人员都能从中找到一个或多个适用自己项目的解决方案,消化吸收并加以利 用,可以为自己的APP增色不少.文章最后还

转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101

Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要讲解了异常.多线程.容器和I/O的相关面试题.首先,异常机制提供了一种在不打乱原有业务逻辑的前提下,把程序在运行时可能出现的状况处理掉的优雅的解决方案,同时也是面向对象的解决方案.而Java的线程模型是建立在共享的.默认的可见的可变状态以及抢占式线程调度两个概念之上的.Java内置了对多线程编程的支

使用C++扩展Python的功能 转自:http://blog.csdn.net/magictong/article/details/8897568#comments

使用C++扩展Python的功能 环境 VS2005Python2.5.4 Windows7(32位) 简介 长话短说,这里说的扩展Python功能与直接用其它语言写一个动态链接库,然后让Python来调用有点不一样(虽然本质是一样的).而是指使用Python本身提供的API,使用C++来对Python进行功能性扩展,可以这样理解,使用更高效的语言实现一些算法计算等等需要更高执行效率的核心(或者需要与系统进行密切交互的)模块,然后让Python像调用内建标准库的方式来调用这些模块,听起来是不是很

Win32消息循环机制等【转载】http://blog.csdn.net/u013777351/article/details/49522219

Dos的过程驱动与Windows的事件驱动 在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别: DOS程序主要使用顺序的,过程驱动的程序设计方法.顺序的,过程驱动的程序有一个明显的开始,明显的过程及一个明显的结束,因此程序能直接控制程序事件或过程的顺序.虽然在顺序的过程驱动的程序中也有很多处理异常的方法,但这样的异常处理也仍然是顺序的,过程驱动的结构. 而Windows的驱动方式是事件驱动,就是不由事件的顺序来控制,而是由事件的发生来控制,所有的事件是无序的,所为一个程

推荐一些C#相关的网站、资源和书籍 (转载自http://blog.csdn.net/chinacsharper/article/details/17514923)

一.网站 1.http://msdn.microsoft.com/zh-CN/ 微软的官方网站,C#程序员必去的地方.那里有API开发文档,还有各种代码.资源下载. 2.http://social.msdn.microsoft.com/Forums/zh-CN/home 微软msdn论坛.定位于微软技术的传播和技术问题的解决,是学习微软技术的好去处. 3.http://www.codeproject.com/ 国外著名的社区网站,面向世界的程序员.有很多不错的程序都可以从那里下载到. 4.htt

http://blog.csdn.net/renfufei/article/details/37725057/

版权声明:本文为博主原创文章,未经博主允许不得转载. 原创:http://blog.csdn.net/renfufei/article/details/37725057/ 说明: 首先,你需要注册一个 github 账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字.本文中假设用户名为 tiemaocsdn 1. 注册账号:地址: https://github.com/输入账号.邮箱.密码,然后点击注册按钮. 图1 第1步 2. 初始设置注册完成后,选择Fre

中文录入问题 转载自:http://blog.csdn.net/ichsonx/article/details/8625925

2.1中文录入问题 默认安装的msysgit的shell环境中无法输入中文,为了能在shell界面输入中文,需要修改配置文件/etc/inputrc,增加或修改相关配置如下: #disable/enable 8bit input set meta-flag on set input-meta on set output-meta on set convert-meta off 关闭bash再重启就可以输入中文了. 2.2分页器中文输出问题 对于/etc/inputrc正确配置之后能正确输入中文了