一、记一次Linux服务器被***后的检测过程


文章来之网络整理,《记一次Linux服务器被***后的检测过程》转载至http://mageedu.blog.51cto.com/4265610/1901543

0×00 前言

故事是这样的,大年初一,客户反应他们服务器无法访问,查看路由,发现某oracle+tomcat服务器UDP流量超大,把带宽占完了,过年嘛,客户那边先找了当地的技术人员弄了几天没搞定,然后没办法大年初三的找我们弄…顾客是上帝!

其实吧以前也遇到过这类***,当时某IDC都被打瘫了,只不过马儿不在我们的设备上,所以没过多关注…

0×01 查找***

首先SSH登陆,top查看进程,发现奇怪名字的命令gejfhzthbp,一看就感觉有问题。

lsof –c gejfhzthbp

查看关联文件,发现对外的tcp连接,不知道是不是反向shell…

执行命令

Whereis  gejfhzthbp        ls  -al  gejfhzthbp

查看文件路径。并查看文件创建时间,与***时间吻合。

顺便把文件拷贝下来放到kali虚拟机试了下威力,几秒钟的结果如下…

之前还以为是外国人搞的,这应该能证明是国人搞的了…

0×02 恢复业务

首先kill进程,结果肯定没那么简单,进程换个名字又出来了

中间尝试过很多过程,ps –ef |grep 发现父进程每次不一样,关联进程有时是sshd,有时是pwd,ls,中间装了个VNC连接,然后关闭ssh服务,同样无效,而且kill几次之后发现父进程变成了1,水平有限,生产服务器,还是保守治疗,以业务为主吧…

既然被人***了,首先还是把防火墙的SSH映射关掉吧,毕竟服务器现在还要用,还是写几条iptables规则吧

iptables -A OUTPUT -o lo -j ACCEPT

允许本机访问本机

iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT

允许主动访问本服务器的请求

iptables -A OUTPUT –p tcp –d 192.168.1.235 -jACCEPT

允许服务器主动访问的IP白名单

iptables -A DROP

拒绝对外访问

到此,业务恢复正常。

0×03 查找原因

其实原因一开始我就意识到了是SSH的问题,只是先要帮人把业务恢复了再说,web端口方面就只有tomcat的,web漏洞都查过了,什么struts2,manager页面,还有一些常规web漏洞均不会存在,除非有0day….  Oracle也不外连,只有个SSH

基于这一点,我直接查root账户ssh登陆日志,翻啊翻,终于….

cd /var/log     less secure

如上图,使用印尼IP爆破成功,而后面服务器内网IP登陆竟然是失败,问了客户,算是明白了怎么回事,他们年底加设备,给服务器临时改了弱密码方便各种第三方技术人员调试,然后估计忘了改回来,结果悲剧了,被坏人登陆了不说,root密码还被改,自己都登不上…不知道他们老板知不知道…

继续查看history文件,看人家都干了些什么。

坏人的操作过程基本就在这里了,他执行了好多脚本,谁知道他干了多少事,还是建议客户重装系统吧…

0×04 后记

主要还是自己经验尚浅,linux运维玩的不熟,不知道怎么把马儿彻底赶出去…大牛勿喷。

二、Linux服务器被***和删除***程序的经历


一、背景

晚上看到有台服务器流量跑的很高,明显和平常不一样,流量达到了800Mbps,第一感觉应该是中***了,被人当做肉鸡了,在大量发包。

我们的服务器为了最好性能,防火墙(iptables)什么的都没有开启,但是服务器前面有物理防火墙,而且机器都是做的端口映射,也不是常见的端口,按理来说应该是满安全的,可能最近和***有缘吧,老是让我遇到,也趁这次机会把发现过程记录一下。

二、发现并追踪处理

1、查看流量图发现问题

查看的时候网页非常卡,有的时候甚至没有响应。

2、top动态查看进程

我马上远程登录出问题的服务器,远程操作很卡,网卡出去的流量非常大,通过top发现了一个异常的进程占用资源比较高,名字不仔细看还真以为是一个Web服务进程。

3、ps命令查看进程的路径

发现这个程序文件在/etc目录下面,是个二进制程序,我拷贝了下来,放到了本文附近位置,以供大家在虚拟机上面研究,哈哈。

4、结束异常进程并继续追踪

干掉进程之后,流量立刻下来了,远程也不卡顿了,难道删掉程序文件,干掉异常进程我们就认为处理完成了么?想想也肯定没那么简单的,这个是***啊,肯定还会自己生成程序文件(果然不出我所料,在我没有搞清楚之前,后面确实又生成了)我们得继续追查。

5、查看登录记录及日志文件secure

通过命令last查看账户登录记录,一切正常。查看系统文件message并没有发现什么,但是当我查看secure文件的时候发现有些异常,反正是和认证有关的,应该是尝试连进来控制发包?

6、再次ps查看进程

其实第一次ps的时候就有这个问题,那时候没有发现,第二次是自习查看每个进程,自习寻找不太正常的进程,发现了一个奇怪的ps进程。

我找了一台正常的机器,查看了一下ps命令的大小,正常的大约是81KB,然后这台机器上面的ps却高达1.2M,命令文件肯定是被替换了。

然后进入另一个ps的目录,看到有如下几个命令,然后我有查询了一下系统的这几个命令,发现都变得很大,都达到了1.2M,这些系统命令文件肯定是都被替换了。

7、更多异常文件的发现

查看定时任务文件crontab并没有发现什么一次,然后查看系统启动文件rc.local,也没有什么异常,然后进入/etc/init.d目录查看,发现比较奇怪的脚本文件DbSecuritySpt、selinux。

第一个文件可以看出他就是开机启动那个异常文件的,第二个应该和登录有关,具体我还不是很清楚,反正肯定是有问题的。

既然和登录有关,那就找和ssh相关的,找到了下面的一个文件,是隐藏文件,这个也是***文件,我们先记录下来,这样程序名字都和我们的服务名字很相近,就是为了迷惑我们,他们的大小都是1.2M,他们有可能是一个文件。

我有看了一下***喜欢出现的目录/tmp,也发现了异常文件,从名字上感觉好像是监控***程序的。

想到这里,替换的命令应该很多,单靠我们去找肯定是解决不了的,我的建议最好是重装操作系统,并做好安全策略,如果不重装,我下面给一下我的方法,具体行不行有待验证。

三、***手动清除

现在综合总结了大概步骤如下:

1、简单判断有无***

2、上传如下命令到/root下

3、删除如下目录及文件

4、找出异常程序并杀死

5、删除含***命令并重新安装(或者把上传的正常程序复制过去也行)

我自己重新安装好像不行,我是找的正常的机器复制的命令。

四、杀毒工具扫描

1、安装杀毒工具clamav

2、启动服务

3、更新病毒库

由于ClamAV不是最新版本,所以有告警信息。可以忽略或升级最新版本。

4、扫描方法

可以使用clamscan -h查看相应的帮助信息

5、查看日志发现

把发现的命令删掉替换正常的

附录:Linux.BackDoor.Gates.5

经过查询资料,这个***应该是Linux.BackDoor.Gates.5,找到一篇文件,内容具体如下:

某些用户有一种根深蒂固的观念,就是目前没有能够真正威胁Linux内核操作系统的恶意软件,然而这种观念正在面临越来越多的挑战。与4月相比,2014年5月Doctor Web公司的技术人员侦测到的Linux恶意软件数量创下了新纪录,六月份这些恶意软件名单中又增加了一系列新的Linux***,这一新***家族被命名为Linux.BackDoor.Gates。

在这里描述的是恶意软件家族Linux.BackDoor.Gates中的一个***:Linux.BackDoor.Gates.5,此恶意软件结合了传统后门程序和DDoS******的功能,用于感染32位Linux版本,根据其特征可以断定,是与Linux.DnsAmp和Linux.DDoS家族***同出于一个病毒编写者之手。新***由两个功能模块构成:基本模块是能够执行不法分子所发指令的后门程序,第二个模块在安装过程中保存到硬盘,用于进行DDoS***。Linux.BackDoor.Gates.5在运行过程中收集并向不法分子转发受感染电脑的以下信息:

  • CPU核数(从/proc/cpuinfo读取)。

  • CPU速度(从/proc/cpuinfo读取)。

  • CPU使用(从/proc/stat读取)。

  • Gate'a的 IP(从/proc/net/route读取)。

  • Gate'a的MAC地址(从/proc/net/arp读取)。

  • 网络接口信息(从/proc/net/dev读取)。

  • 网络设备的MAC地址。

  • 内存(使用/proc/meminfo中的MemTotal参数)。

  • 发送和接收的数据量(从/proc/net/dev读取)。

  • 操作系统名称和版本(通过调用uname命令)。

启动后,Linux.BackDoor.Gates.5会检查其启动文件夹的路径,根据检查得到的结果实现四种行为模式。

如果后门程序的可执行文件的路径与netstat、lsof、ps工具的路径不一致,***会伪装成守护程序在系统中启动,然后进行初始化,在初始化过程中解压配置文件。配置文件包含***运行所必须的各种数据,如管理服务器IP地址和端口、后门程序安装参数等。

根据配置文件中的g_iGatsIsFx参数值,***或主动连接管理服务器,或等待连接:成功安装后,后门程序会检测与其连接的站点的IP地址,之后将站点作为命令服务器。

***在安装过程中检查文件/tmp/moni.lock,如果该文件不为空,则读取其中的数据(PID进程)并“干掉”该ID进程。然后Linux.BackDoor.Gates.5会检查系统中是否启动了DDoS模块和后门程序自有进程(如果已启动,这些进程同样会被“干掉”)。如果配置文件中设置有专门的标志g_iIsService,***通过在文件/etc/init.d/中写入命令行#!/bin/bash\n<path_to_backdoor>将自己设为自启动,然后Linux.BackDoor.Gates.5创建下列符号链接:

如果在配置文件中设置有标志g_bDoBackdoor,***同样会试图打开/root/.profile文件,检查其进程是否有root权限。然后后门程序将自己复制到/usr/bin/bsd-port/getty中并启动。在安装的最后阶段,Linux.BackDoor.Gates.5在文件夹/usr/bin/再次创建一个副本,命名为配置文件中设置的相应名称,并取代下列工具:

***以此完成安装,并开始调用基本功能。

执行另外两种算法时***同样会伪装成守护进程在被感染电脑启动,检查其组件是否通过读取相应的.lock文件启动(如果未启动,则启动组件),但在保存文件和注册自启动时使用不同的名称。

与命令服务器设置连接后,Linux.BackDoor.Gates.5接收来自服务器的配置数据和僵尸电脑需完成的命令。按照不法分子的指令,***能够实现自动更新,对指定IP地址和端口的远程站点发起或停止DDoS***,执行配置数据所包含的命令或通过与指定IP地址的远程站点建立连接来执行其他命令。

此后门程序的主要DDoS***目标是中国的服务器,然而不法分子***对象也包括其他国家。下图为利用此***进行的DDoS***的地理分布:

三、linux如今后处理实战


事件背景

操作系统:Ubuntu12.04_x64

运行业务:公司业务系统,爬虫程序,数据队列。

服务器托管在外地机房。

突然,频繁收到一组服务器ping监控不可达邮件,赶紧登陆zabbix监控系统查看流量状况。

可见流量已经达到了800M左右,肯定不正常!

马上尝试SSH登陆系统,不幸的是,这种情况是很难登录系统的。

该怎么办?

1、排查问题

当时我的第一反应是想马上切断外部网络,通过内网连接查看。

可是这样一来流量就会消失,也就很难查找***源了。

于是联系机房协助解决,授权机房技术登录到系统:

首先通过w命令查看是否有异常用户在登录;

再查看登录日志/var/log/auth.log,预料之中,日志已经清空;

最后使用iftop工具找出占用大量流量的连接。

下图是机房技术给我拍的照:

可以看到本地一直通过http方式向104.31.225.6这个ip发送数据包,而且持续不断。

那好,先把这个ip给屏蔽了试试:

iptables –A OUTPUT –d 104.31.225.6 –j DROP

哇塞!奇迹出现了,流量下去了,能正常连接了。

过一会儿,不幸的事情发生了,流量又上来了!

什么情况!我的心情顿时紧张起来。

又赶紧联系机房技术,执行上次的操作。

下图是当时的情况:

傻眼了,目的ip变了,这可咋搞,不可能一个个封吧!

静下心来,仔细想了下,本地向外发包,那本地肯定会有程序来发!

找到本地程序就能解决了!

2、查找***源

首先我使用了netstat工具过滤端口,查看运行的进程ID:

netstat –atup |grep 15773

没有任何结果,更换端口尝试后仍然没有结果。

拜托机房技术大哥观察了下连接状态,原来是短连接,会很快的释放端口,所以才看不到端口的连接状态。

正常长连接来说,可以使用lsof –i :15773这样方式找到PID,再lsof –p PID找到打开的相关文件。

好吧!只好先切断外部网络,内网SSH进入系统,然后找到这个发包的程序。

第一步:通过netstat –antup 查看有无开放可疑的端口或者连接。

第二步:通过ps –ef查看有无可疑的进程。

结果是~

都没有!

难道是植入了rootkit***程序?!

想要判断系统有没有植入了rootkit可以使用md5sum校验执行文件判断:

先找个同版本操作系统,获取到这个工具执行文件的md5值,再获取可疑的工具执行文件md5值,比较两个值是否相同。

如果相同说明这个工具是可信任的,如果不相同很有可能是被替换的。

另外,一般工具可执行文件大小都在几十K到几百K。

但我没有选择用md5方式来判断工具是否可信任,因为完全相同版本的操作系统并不好找。

我直接使用du –sh /bin/lsof查看,发现大小1.2M,明显有问题。

所以直接下载正常系统里的netstat、ps等工具上传到被黑的系统里使用,再将不可用的替换掉。

3、清理***程序

完成第二步的操作后,奇迹出现了,执行ps –ef后,发下最下面有几行可疑程序。

本想截图的,可惜SSH客户端给关了,没留下截图。

记忆中,大概是这样的:

pid /sbin/java.log

pid /usr/bin/dpkgd/ps –ef

pid /usr/bin/bsd-port/getty

pid /usr/bin/.sshd

看到这几个,感觉很奇怪,怎么会有个java.log的执行文件在运行呢?

先杀掉并删除再说。

这里就更奇怪了,怎么会有我执行的命令呢?

ps –ef,命令的路径不是/bin/ps,引起了我的怀疑,马上进入此目录下查看。

擦,还有几个,初步判断是工具被替换了。

还有一个怎么叫getty呢,再正常系统里面对比进程,发现没有这个。

宁可错杀一百,也不放过一个!

杀掉进程,删除目录。

这个.sshd进程明显很可疑,可能是ssh后门,先杀掉删除再说!

再执行ps –ef命令看下,奇怪,java.log进程又起来了,难道有自启动设置?

于是到了/etc/init.d下查看,有个异常脚本,在正常系统的也没有,打开看了下,果然是启动***程序的脚本。

把脚本删除,再删除一次java.log,不再出现了。

删除了/sbin/java.log文件过一会又出现了,估计是getty趁搞的鬼,同样清除,不再自动生成了。

好了,可以开启外网了,观察了一会网络流量不再飙升了,心情有如看到美女一样的愉快!

4、事件总结

ls /usr/bin/dpkgd/   #替换的工具,系统自带的工具正常不会在这个目录下,并且也不可用

netstat lsof ps ss

/sbin/java.log  #判断是发包程序,删除后会自动生成

/usr/bin/bsd-port #判断是自动生成java.log或着后门程序

/usr/sbin/.sshd  #判断是后门程序

如果还有其他***程序怎么办?如果是XSS***,应用层漏洞***怎么办?

针对这些问题,从我们公司角度来说,尽量不重装系统,业务太复杂。找出***点,跑的程序多,***面多,很棘手。

就先这样吧!兵来将挡,水来土掩。~

被***趁机***的原因:

1. 运维对网络安全实施落实力度低

2. 没有相关安全测试人员,不能及时发现应用层漏洞

等等...

针对这次***,总结了下防护思路:

1. linux系统安装后,启用防火墙,只允许信任源访问指定服务,删除不必要的用户,关闭不必要的服务等。

2. 收集日志,包括系统日志,登录日志,程序日志等,及时发现潜在风险。

3. 针对用户登录实时收集,包括登录时间,密码重试次数以及用户执行命令记录等。

4. 对敏感文件或目录变化进行事件监控,如/etc/passwd、/etc/shadow、/web、/tmp(一般上传文件提权用)等。

5. 进程状态监控,对新增或可疑进程做好记录并通知。

6. 对上线的服务器系统、Web程序进程安全漏洞扫描。

最后,没有绝对的安全,只有尽可能减少***面,提供系统防护能力。

网络安全,从我做起!

转载于:https://blog.51cto.com/solin/1903543

服务器***处理三则相关推荐

  1. 刀片服务器提升三要点

    本文讲的是刀片服务器提升三要点,[IT168资讯]IDC数据显示,问世7年,刀片服务器即获全球服务器市场13.5%份额.取得如此成绩主要得益于刀片服务器的应用逐渐成熟,行业应用获得大范围拓展.今天,不 ...

  2. 在IIS上搭建WebSocket服务器(三)

    在IIS上搭建WebSocket服务器(三) 原文:在IIS上搭建WebSocket服务器(三) 编写客户端代码 1.新建一个*.html文件. ws = new WebSocket('ws://19 ...

  3. Python服务器开发三:Socket

    Python服务器开发三:Socket socket是操作系统中I/O的延续,它可以使进程和机器之间的通信成为可能.socket可以看成一个标准的文件描述符.不同的是文件需要用open()函数打开,而 ...

  4. 从零开始写高性能的人脸识别服务器(三)

    这里写自定义目录标题 从零开始写高性能的人脸识别服务器(三) 1 消息格式 1.1 定义Proto 1.2 编译 2 人脸识别微服务 3 Netty服务器 从零开始写高性能的人脸识别服务器(三) ​ ...

  5. 服务器存储系统的模式,服务器的三种存储方式

    服务器的三种存储方式 内容精选 换一换 CSBS在支持崩溃一致性备份的基础上,同时支持应用一致性备份.文件/磁盘数据在同一时间点,通过应用一致性备份内存数据,能够保证应用系统一致性,如包含MySQL或 ...

  6. 关于ACL和NAT技术(内含PC服务器常见三种类型介绍与通配符掩码简介)

    目录 PC服务器常见三种外形介绍(硬盘尺寸相关知识普及) 一.塔式服务器 二.刀片式服务器 三.机架式服务器 四.硬盘尺寸 ACL 一.ACL概述及其组成 1.ACL的概述及技术背景 2.ACL的组成 ...

  7. 将数据写入数据库:打开数据库,建库建表,通过php访问后台服务器(连接服务器(三种),选择数据库,设置字符集:防止数据乱码),通过php对数据库进行:增,删,改,查,操作

    前端表单设计以后,需要把数据写入数据库 将数据写入数据库:         如果涉及php.sql,wamp服务器必须打开         wamp里面有一个专门,图形化的移动窗口:          ...

  8. ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)

    为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有三个节点,所以这里搭建一个三个节点的集群,可是我只有两天服务器怎么办呢?我试过两台服务器组件集群,但是无法启动,所以这里部署一个[一 ...

  9. 无法连接到已配置的开发web服务器_你知道多少种服务器?这三种服务器你都认识吗?...

    服务器是现实中常被讨论的设备之一,因为服务器与现代生活息息相关.按照服务器的用途,服务器可细分为诸多类别.为增进大家对服务器的了解程度,本文将对三种服务器予以介绍,它们分别是:Web服务器.应用程序服 ...

  10. 【Linux网络编程】并发服务器的三种实现模型

    服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器. 循环服务器与并发服务器模型 在网络程序里面,一般来说都是许多客户对应一个服务器(多 ...

最新文章

  1. composer PHP Fatal error: Allowed memory size of 报错解决
  2. golang socket读写同时_epoll在Golang的应用
  3. Jquery DataTable基本使用
  4. Linux游戏0 A.D.操作说明(持续更新中)
  5. SAP UI5应用里搜索功能的实现
  6. 地牢房间迷宫走廊生成(二),Python实现洪水法、完美迷宫
  7. phpcms函数:用*号替换(私密信息)中间数据(如手机号、邮箱)
  8. day16- django
  9. Linux定义多个标准输入输出,言简意赅解释Linux中的标准输入输出
  10. 详解Javascript的继承实现
  11. 统计学基础之卡方检验
  12. TMEA:源于音乐,高于盛典
  13. 微信公众号如何申请原创声明功能
  14. java 正则拼音,用于匹配拼音的正则表达式
  15. AI之路最近的一些思考
  16. 《蔡康永的说话之道》-[中]蔡康永
  17. 佳能mg3150pixma_升级到佳能Pixma MP500多功能喷墨打印机
  18. [附源码]SSM计算机毕业设计高校流动党员信息管理系统JAVA
  19. ibmmq 通道命令_IBM WebSphere MQ 7.5基本用法
  20. SunGard Global trading Presentation

热门文章

  1. 定时器开始时延时了十几秒_第六章--系统滴答定时器
  2. ora-32004 oracle10,ORA-32004错误的解决方法
  3. java runtime 清屏_【图片】请问java编写中如何做到清屏啊。。。_java吧_百度贴吧...
  4. 鸿蒙推送荣耀,华为鸿蒙首批推送机型8款,荣耀“避嫌”,不在首批名单
  5. 晓庄2019c语言真题卷,南京晓庄学院—C语言期末考试复习提纲
  6. python 读取wifi数据_通过Python实现WiFi测试数据分析
  7. 将查询出来的数据按照一个字段分组且排序过程中,遇到的一些有关group的问题(分组排序应该使用partition by)
  8. 计算机原理考研题库,2022考研853计算机专业基础综合《计算机组成原理》复习笔记及考研真题题库.pdf...
  9. android 行居中,android自己定义换行居中CenterTextView
  10. cpu核心 线程 进程_科个普:进程、线程、并发、并行