0x01 前言

在这个open的互联网时代, 风险几乎无处不在,无时不有。如果对安全不重视的话,就会被挨打。

接 到一个哥们的江湖救急,说他的测试服务器被机房电话投诉流量过大,把出口带宽都跑完了,自己上去检查没发现异常进程,就是历史操作记录和登录记录不见.哥 第一反应就是,被人入侵了,攻击者太粗暴了,把登录记录都清除不是告诉管理员有人上来过吗,还往外攻击流量,实在是太嚣张了.

得到对方的授权后, 那么接下来远程登录服务器进行一一排查分析,看看敌人究竟做了哪些坏事.先从系统完整性开始入手排查

0x02 rootkit检查

既然明确知道有攻击者上来干过坏事,那么系统肯定是不干净的,就检查下有没有rootkit吧(Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。)

先安装老牌的chkrootkit来检查下.到http://www.chkrootkit.org进行下载安装:

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.50
make sense
#编译完成没有报错的话执行检查
./chkrootkit

果然发现有进程被隐藏.

记一次服务器沦陷后的分析-开水网络

那再检查下那些命令可能被替换了, 下载Rootkit Hunter进行检测

wget http://cznic.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz
tar zxvg rkhunter-1.4.2.tar.gz
cd rkhunter-1.4.2
./installer.sh --install
rkhunter -c

 

记一次服务器沦陷后的分析-开水网络

发现不少重要命令被替换了

0x03 RPM check检查

系统完整性也可以通过rpm自带的-Va来校验检查所有的rpm软件包,有哪些被篡改了,防止rpm也被替换,上传一个安全干净稳定版本rpm二进制到服务器上进行检查:

./rpm -Va > rpm.log

如 果一切均校验正常将不会产生任何输出。如果有不一致的地方,就会显示出来。输出格式是8位长字符串, c 用以指配置文件, 接着是文件名. 8位字符的每一个 用以表示文件与RPM数据库中一种属性的比较结果 。. (点) 表示测试通过。.下面的字符表示对RPM软件包进行的某种测试失败:

显示字符错误源

5 MD5 校验码
S 文件尺寸
L 符号连接
T 文件修改日期
D 设备
U 用户
G 用户组
M 模式e (包括权限和文件类型)

 

果然ps, pstree, netstat, sshd等等系统关键进程被篡改了

0x04 分析行为

系统命令和服务既然都被攻击者替换了,隐藏了他们一举一动,没有ssh登录记录,没有操作记录,那就需要分析下攻击者隐藏了哪些进程,做了哪些后门的手脚.

1.隐藏进程分析

既然ps被替换了,那么上传干净的ps看看,攻击者到底隐藏了什么进程?

记一次服务器沦陷后的分析-开水网络

根据经验判断是流量攻击类代码,本地代码已经被删除,那就直接干掉.(由于时间有限,就没有深入研究)

2.后门分析

根据哥们反应防火墙策略也会被人清除掉,改了密码后登录记录还是会被清除掉.

那么sshd是被人种马了,使用strings来分析sshd文件中的ASCII字符串,果然发现攻击的接受密码QQ邮箱

记一次服务器沦陷后的分析-开水网络

发现攻击者记录ssh登录密码文件

记一次服务器沦陷后的分析-开水网络

那么尝试新开个终端用账号密码登陆服务器时同时抓包看看是否有什么发现:

./tcpdump -ni bond0 -s0 -A -vv ‘tcp port 25′ -w smtp.cap

记一次服务器沦陷后的分析-开水网络

从抓包分析来看,对方用24168***@qq.com信息来发服务器IP和root密码到27945***@qq.com邮箱中,密码” UGFzc3***”反解出来为yxj1993***(93年的小黑阔),从注册时间来看都是小号.

哥们可以让公司律师起草律师函咯.

3.攻击者后续操作记录

后续抓到攻击者一些操作记录,下载后门程序,清除登录和访问记录,太残暴了.

记一次服务器沦陷后的分析-开水网络

114.113.222.66 北京IP

222.186.31.229 江苏省镇江市 电信

0x05 临时修复方案

1.修复被篡改的软件包

根据所找到被篡改的软件包,在官方安装介质找到openssh openssh-server net-tools sysstat psmisc procps pam.x86_64软件包上传到服务器上全部重新强制安装:

rpm -ivh --force openssh-*.rpm
rpm -ivh --force net-tools-*.rpm
rpm -ivh --force sysstat-*.rpm
rpm -ivh --force psmisc-*.rpm
rpm -ivh --force pam-*.rpm

2.重启sshd服务

使攻击者的sshd后门密码记录器失效,避免密码再次泄露

/etc/init.d/sshd restart

3.启用相关防火墙策略,保护业务服务端口

#开放管理IP地址访问
/sbin/iptables -A INPUT -s *.*.*.*/24 -p tcp --sport 1122 -j ACCEPT
#开放相关服务端口访问
/sbin/iptables -A INPUT -p udp --sport 123 -j ACCEPT
#默认策略拒绝一切访问.
/sbin/iptables -A INPUT -j DROP
#保存相关防火墙策略到配置文件
/etc/init.d/iptables save

4.修改root密码

passwd root

后续攻击者再也没能登录上这台服务器.

0x06 防御方案

平时做好安全加固可以避免此类问题发生

1)使用ssh-key证书方式登陆管理远程ssh,禁止直接ssh密码直接登录(这样就算密码被攻击者偷走也不能登录.)

可以参考如下文章:

http://blog.sina.com.cn/s/blog_541a3cf10101epzf.html

http://blog.sina.com.cn/s/blog_541a3cf10100la6u.html

vi /etc/ssh/sshd_conf
PasswordAuthentication yes 改为
PasswordAuthentication no

重启sshd服务

/etc/init.d/sshd restart

2)使用专业zabbix监控平台对系统核心配置文件进行文件监控,有异常流量或是文件操作进行邮件和短信告警

3)启用iptbales策略,限制只有公司管理IP才可以远程ssh登录.

4)安装跳板机,使用VPN或是4A方式远程管理服务器

5)使用日志集中收集方式,对系统关键日志如ssh登录等进行上报到中心日志服务器,自动审计.

6)系统核心文件和业务文件有全量和增量备份,以便快速检验系统和恢复业务,避免发生如携程宕机事件.

7)系统初建完成,做好rpm校验和md5数据收集.

8)做好本地密码强度和保管工作.避免业务密码泄露.

9)不放过一丝蛛丝马迹,提早发现问题,不要全线崩溃了才着急查问题.

10)始终保持一颗敬畏之心对待互联网安全

0x07 小结

由于时间有限所以未能对攻击者运行的流量攻击POC做dmp分析,还好这次攻击者没有使用内核级的rootkit,否则上传干净的命令和服务都是无法检查追踪到攻击者的.。最后回想起那部电影“我是谁:没有绝对安全的系统”