我怀疑我的一台或多台服务器受到黑客,病毒或其他机制的破坏:


我的第一步是什么?当我到达现场时,应该断开服务器的连接,保留“证据”,还有其他初始考虑吗?
如何使服务恢复在线状态?
如何防止同一件事立即发生?又是什么?
是否有最佳实践或方法可用于从此事件中学习?
如果我想制定一个事件响应计划,该从哪里开始?这应该是我的灾难恢复或业务连续性计划的一部分吗?

这应该是该主题的规范文章。最初来自serverfault。

#1 楼

最初来自serverfault。感谢Robert Moir(RobM)

很难从您在此处发布的内容中给出具体建议,但是我确实有一些通用的建议,这是我几年前写的一篇文章,当时我仍然很烦

不要惊慌

首先,除了从入侵之前进行的备份还原系统之外,没有“快速修复”的方法,至少有两个问题。


很难查明入侵发生的时间。
这并不能帮助您关闭允许它们最后一次破裂的“漏洞” ,也没有处理可能还会发生的任何“数据盗窃”的后果。

黑客侵入其Web服务器的受害者不断提出这个问题。答案很少改变,但是人们一直在问这个问题。我不知道为什么。也许人们只是不喜欢在寻求帮助时看到的答案,或者找不到可以信任的人来提供建议的人。或者,人们可能会阅读该问题的答案,而过分地关注为什么案例的特殊性和他们在网上找到的答案有5%的差异,而错过了95%的问题,而他们的案例足够接近相同的答案作为他们在线阅读的内容。

这使我进入了第一个重要的信息领域。我真的很感谢您是一个特别的独特雪花。我也很欣赏您的网站,因为它反映了您和您的业务,或者至少反映了您代表雇主的辛勤工作。但是对于外面的某个人来说,无论是计算机安全人员正在查看问题以尝试帮助您,甚至是攻击者本人,您的问题很可能与他们遇到的其他所有案例至少具有95%的相同性曾经看过。

不要个人采取攻击措施,也不要个人采取以下建议或从他人那里得到的建议。如果您只是在成为网站黑客的受害者后才读这篇文章,那么我真的很抱歉,我真的希望您能在这里找到有用的信息,但这不是让您的自我阻碍您所需要的方式的时候。

您刚刚发现服务器被黑客入侵。现在呢?

不要惊慌。绝对不要仓促行事,绝对不要试图假装从未发生过的事情,甚至根本没有采取任何行动。

第一:了解灾难已经发生。现在不是拒绝的时候。现在是时候接受已发生的事情,对其进行现实化并采取措施来管理影响的时间了。

其中一些步骤会受到伤害,并且(除非您的网站保留了我的详细信息的副本)我真的不在乎您是否忽略所有或部分这些步骤,但这样做最终会使情况变得更好。该药可能听起来很糟糕,但有时如果您真的想治愈该药,就不得不忽略它。

阻止问题变得比现在更严重的是:


首先,您应该做的是将受影响的系统与Internet断开连接。无论您有任何其他问题,使系统保持与网络的连接都只会使攻击继续进行。我的意思是从字面上看。让某人亲自访问服务器并拔掉网络电缆(如果需要的话),但是在尝试执行其他操作之前,先将受害者从其抢劫犯中断开。
更改所有计算机上所有帐户的所有密码与受感染系统相同的网络。不完全是。所有帐户。所有计算机。是的,您是对的,这可能是过大了;另一方面,可能不会。都不知道,对吗?
检查您的其他系统。请特别注意其他面向Internet的服务以及拥有财务或其他商业敏感数据的服务。
如果系统拥有任何人的个人数据,请立即通知负责数据保护的人员(如果不是您的话),然后紧急通知全面披露。我知道这很艰难。我知道这会很伤人。我知道许多企业都希望在地毯下解决此类问题,但企业将不得不对其进行处理-并且需要着眼于所有相关的隐私法。

无论您多么烦恼您的客户,如果您不告诉他们有关问题的信息,如果您不告诉他们,他们将更加烦恼,并且只有在有人使用信用卡信息向价值8,000美元的商品收费后,他们才会自己发现他们从您的网站偷了。

还记得我之前说的话吗?坏事已经发生了。现在唯一的问题是您如何处理它。

全面了解问题:


在此阶段完全完成之前,请勿使受影响的系统重新联机完成,除非您想成为其职位实际上是决定撰写这篇文章的引爆点的人。我不会链接到该帖子,这样人们就可以轻笑一笑,但真正的悲剧是当人们无法从错误中吸取教训。
检查“受攻击的”系统以了解攻击是如何成功完成的。损害您的安全性。尽一切努力找出攻击的“发源地”,以便您了解要解决的问题,以确保将来系统安全。
再次检查“被攻击”的系统,以了解攻击的去向,以便您了解攻击中哪些系统受到了威胁。确保跟踪所有提示,表明受感染系统可能成为进一步攻击系统的跳板。
确保完全理解任何攻击中使用的“网关”,以便您可以开始正确关闭它们。 (例如,如果您的系统受到SQL注入攻击的危害,那么不仅需要关闭破解它们的特定缺陷代码行,还需要审核所有代码以查看是否存在相同类型的错误是在其他地方制作的。)
了解到,由于一个以上的缺陷,攻击可能会成功。通常,攻击不是通过发现系统中的一个主要错误,而是通过将几个问题(有时是次要的和琐碎的事情)组合在一起来破坏系统而成功的。例如,使用SQL注入攻击将命令发送到数据库服务器,发现要攻击的网站/应用程序是在管理用户的上下文中运行的,并使用该帐户的权限作为踏脚石来破坏其他用户的网站一个系统。或像黑客那样称呼它:“在办公室的另一天,利用人们常犯的错误”。

为什么不仅仅“修复”您发现的漏洞或rootkit并将系统放回原处。在线吗?

在这种情况下,问题是您不再拥有该系统的控制权。不再是您的计算机。

确保对系统有控制权的唯一方法是重建系统。尽管找到并修复用于侵入系统的漏洞有很多价值,但是一旦入侵者获得控制权,您就无法确定对系统做了哪些其他事情(事实上,对于招募黑客来说,这并非闻所未闻)系统到僵尸网络中以修补他们自己使用的漏洞,以保护其他黑客“自己的”新计算机,并安装rootkit。

制定恢复计划并恢复您的网站在线并坚持下去:

没有人想拥有更长的离线时间。那是给定的。如果该网站是一种创收机制,那么将其迅速恢复在线的压力将非常巨大。即使您/公司的声誉受到威胁,这仍然会给您带来很大的压力,需要迅速恢复。

但是,不要屈服于诱惑重新上网太快。相反,应尽可能快地行动,以了解造成问题的原因并在重新上网之前解决问题,否则您几乎肯定会再次成为入侵的受害者,并记住:“一旦被黑客入侵,可被视为不幸;再次被黑,看起来像是粗心大意”(向Oscar Wilde道歉)。


我假设您已经了解了导致成功入侵的所有问题在开始本节之前。我不想高估这个案子,但是如果您还没有这样做,那么您确实需要这样做。抱歉。
请不要支付勒索/保护金。这是一个简单标记的标志,并且您不希望使用该短语来形容您。
不要试图将同一台服务器重新联机而不进行完全重建。与在旧系统上审核每个系统的每个角落以确保其干净之前,在旧硬件上构建一个新盒子或“从轨道上将服务器核对并进行全新安装”要快得多。再次在线。如果您不同意这一点,那么您可能不知道确保完全清洁系统的真正含义是什么,否则您的网站部署过程将是一团糟。您大概拥有站点的备份和测试部署,可以用来构建实时站点,如果不这样做,那么被黑不是您的最大问题。
在重用被黑客入侵时系统中“实时”存在的数据时要非常小心。我不会说“从不做”,因为您只会忽略我,但是坦率地说,当您知道无法保证数据的完整性时,您确实需要考虑保留数据的后果。理想情况下,您应该从入侵之前进行的备份中还原它。如果您不能或不会这样做,则应格外小心,因为它已污染。如果此数据属于客户或网站访问者而不是直接属于您,则您应该特别注意对他人造成的后果。
仔细监视系统。您应该决心在将来将其作为一个持续的过程来进行(更多内容请参见下文),但是在您的网站重新上线之后的这段时间内,您会付出更多的努力来保持警惕。入侵者几乎肯定会回来,如果您能发现他们试图再次闯入,那么您一定能够很快看到您是否真的已经关闭了他们以前使用过的所有漏洞以及他们自己制造的任何漏洞,并且您可能会收集到有用的信息。您可以传递给当地执法部门的信息。


减少将来的风险。

您需要了解的第一件事是安全性是在整个设计,部署和维护面向Internet的系统的整个生命周期中都必须应用的过程,此后便不能像廉价的绘画一样在代码上打几层。为了确保安全,从一开始就需要设计服务和应用程序,这是该项目的主要目标之一。我意识到这很无聊,并且您之前已经听说过所有消息,并且我“只是没有意识到让您的Beta Web2.0(beta)服务成为Web上Beta状态的压力人”,但是事实是,这种情况一直持续被重复,因为它是第一次被说成是真的,而且还没有成为谎言。

您无法消除风险。您甚至都不应该尝试这样做。但是,您应该做的是了解哪些安全风险对您很重要,并了解如何管理和减少风险的影响以及风险发生的可能性。

您可以采取哪些步骤

例如:


该漏洞是否使人们能够侵入您的站点?代码,哪些补丁可用?如果是这样,您是否需要重新考虑如何在面向Internet的服务器上修补应用程序的方法?
该漏洞是否使人们能够侵入您的站点,从而导致供应商代码中的未知错误,为此需要进行修补。没空吗?我绝对肯定不提倡每当这样的事情困扰您时更换供应商,因为它们都会遇到问题,如果采用这种方法,您最多将在一年内用尽平台。但是,如果系统不断让您失望,那么您应该迁移到更强大的产品,或者至少重新架构系统,以使易受攻击的组件包裹在棉绒中,并尽可能远离敌对的眼睛。
该缺陷是您(或为您工作的人)开发的代码中的错误吗?如果是这样,您是否需要重新考虑如何批准将代码部署到实时站点的方法?是否可以通过改进的测试系统或对代码“标准”的更改来捕获该错误(例如,虽然技术不是灵丹妙药,但您可以通过使用有据可查的编码技术来降低成功进行SQL注入攻击的可能性。 )。
该缺陷是由于服务器或应用程序软件的部署方式存在问题吗?如果是这样,您是否在可能时使用自动化过程来构建和部署服务器?这些对于在所有服务器上保持一致的“基准”状态,最大程度地减少必须在每台服务器上进行的自定义工作量以及因此希望最大程度地减少犯错的机会很有帮助。代码部署也是如此-如果您需要“特殊”操作来部署Web应用程序的最新版本,然后尝试使其自动化并确保始终以一致的方式进行操作。
入侵是否可以可以更好地监视系统来早点发现它?当然,为您的员工提供24小时监视或“通话”系统可能并不划算,但是有些公司可以为您监视面向Web的服务并在出现问题时提醒您。您可能会决定自己负担不起或不需要它,这很好...请考虑在内。
在适当的地方使用绊索和内窥镜之类的工具-但不要盲目使用它们因为我说过。花时间学习如何使用一些适合您的环境的良好安全工具,保持这些工具的更新并定期使用它们。
请考虑聘请安全专家定期“审核”您的网站安全性基础。再一次,您可能会决定自己负担不起或不需要它,这很好...只考虑它。

您可以采取哪些步骤来减少成功的后果攻击?

如果您确定房屋洪水较低楼层的“风险”很高,但又不足以保证搬家,则至少应将不可替代的家庭传家宝搬到楼上。对吧?


您可以减少直接暴露给Internet的服务量吗?您能否在内部服务和面向Internet的服务之间保持某种距离?这样可以确保即使您的外部系统受到损害,使用它作为跳板攻击内部系统的机会也很有限。
您是否存储不需要存储的信息?您是否在“在线”存储此类信息,而该信息可能会在其他地方存档。这部分有两点:显而易见的一个原因是人们无法从您那里窃取您没有的信息,第二点是您存储的内容越少,维护和编写代码所需要的内容就越少,因此出现错误的机会就越少您的代码或系统设计。
您是否在Web应用程序中使用“最少访问”原则?如果用户只需要从数据库中读取数据,则请确保该Web应用程序用于为其服务的帐户仅具有读取访问权限,不允许其具有写访问权限,当然也不允许其具有系统级访问权限。
经验不足且对您的业务不重要的,请考虑将其外包。换句话说,如果您经营一个讨论编写桌面应用程序代码的小型网站,并决定开始从该站点销售小型桌面应用程序,则可以考虑将您的信用卡订购系统“外包”给Paypal这样的人。
如果可能的话,使从受感染系统进行的实践恢复成为灾难恢复计划的一部分。可以说,这只是您可能会遇到的另一种“灾难情况”,只是其自身存在的问题和问题与通常的“服务器机房着火” /“不同”,而大型服务器吞噬了愤怒的人的东西。

...最后,

我可能没有遗漏其他人认为重要的内容,但是上述步骤至少应该可以帮助您开始整理内容,您很不幸成为黑客的受害者。

最重要的是:不要惊慌。三思而后行。做出决定后,请立即采取行动,如果有什么要添加到我的步骤列表中,请在下面留下评论。

评论


我希望这不会被错误的理解,但是Rob在这里有一个帐户,让他在这里发布答案会更有意义。您知道,这是我们未来所有“我的服务器已被毒死”问题的规范答案。

–阿迪
13年7月19日在18:24



如果RobM希望他可以复制粘贴,那么我将删除我的:)

–卢卡斯·考夫曼(Lucas Kauffman)
13年7月19日在18:34

#2 楼

在Linux中,使文件“不可删除”是通过属性完成的,尤其是“ immutable”属性。请参阅lsattr来查看属性,请参阅chattr来更改属性。

但是,这仅能解决近端原因。重要的是,您的计算机受到了恶意控制,劫机者为自己的for回目标安装了东西。尤其是,他很可能安装了rootkit来使条目保持打开状态,尽管您进行了诸如尝试执行的清理操作。 Rootkit可能以从机器本身不可见的方式更改了内核和/或系统二进制文件,并阻止了它们的自行删除。最重要的是,您的计算机无法保存;重新格式化磁盘并从头开始重新安装,这是无法可靠地使机器再次干净的方法。

免除以后的烦恼和麻烦。从轨道上核对系统。

评论


我在一台机器上安装了rkhunter,但是在删除操作之前或之后都没有发出任何警报。也许它只是一个无用的工具。另外,重新启动计算机并查看top和ps的输出时,我看不到任何可疑的运行。我现在将研究属性。

–xkcd
2014年4月7日17:58



谢谢汤姆,chattr命令有效,我能够删除文件,然后将其删除:)。无论如何都会遵循nuke的建议。谢谢。

–xkcd
2014年4月7日在20:24

#3 楼

就像我在对ServerFault的交叉帖子的回复中所说的那样。这是一个很好的解释。同样,这当然取决于攻击的类型。希望或不幸的是,此攻击非常嘈杂,您已将其识别为正在进行的攻击。或者,可以肯定地说,是攻击的早期阶段,我要说的是这种操作顺序是遵循的良好蓝图。

但是,我认为存在这样一种可能性,即您了解的危害指标可能无法完全反映出感染的情况,并且断开连接,直到您了解程度,PC才可能不符合您的最佳利益。在开始从网络中删除任何受影响的系统/设备之前,最好先找出入口点以及您可能无法控制的系统。

事实的真相是,这些角色进入系统的时间比您想象的要长,并且过早地出手(即我终于注意到您坐在系统中)可能会使根除变得更加困难。

答案很简单,但是RobM提供的答案是一个足够的起点。在所有压力下,有多个正确答案也可能是错误答案。几乎像不确定性原理一样,您不知道答案是否正确才尝试。

还应同时阅读(PDF)NIST计算机安全事件处理指南。

评论


除非您了解程度,否则断开PC的连接可能不会符合您的最大利益,但实际上我同意这一点,尽管我的答复是针对那些如果他们需要我提供的帮助的人而写的,自己有能力做出此决定,因为如您所知,您所建议的选择必须权衡受害者对当前状况和未知未来的了解。

–罗布·莫尔
2013年9月6日在7:29

是的,如果他们基于某些特定的风险因素或标准做出决定,我全力以赴。我只是希望强调一点,恐慌和匆忙拔掉电源可能弊大于利。

– M15K
2013年9月6日下午14:14

该网址没有任何内容,请给我们更新一下!

– neolace
17年7月17日在14:37

刚刚编辑了URL。抱歉,之前没有看到此请求。

– M15K
17年8月4日在15:04

#4 楼

全部备份-这样您就可以在沙盒类型的环境中进行取证。

然后-从0开始-从NOTHING是。

新的操作系统-完全修补。
应用程序-备份中的最新数据文件....(如果可能,在受到损害之前)。如果不需要,则需要扫描内容和权限。

然后彻底审查黑客的入侵方式,并确保不会再次发生。

当您找到时找出发生的事情-采取措施确保它不再发生,并(内部和/或外部)发布您发现的内容(您可以选择省略对策)。

除非您从中学习这-您将再次遭受同样的命运。

评论


对驱动器进行映像,而不是备份选择的文件,会更好吗?或者,通过“全部备份”,您是说“对驱动器进行映像”吗?

–马克·布法罗(Mark Buffalo)
16年9月9日在16:01

然后,您需要执行司法调查的专业知识(这不是服务器操作员的典型技能)。 “确保不再发生”是一个非常模糊的建议。这个答案有点可行的建议...

– schroeder♦
16 Mar 9 '16 at 17:15

映像驱动器将是最好的选择-抱歉,我没有明确地说过。我同意Forensic的专业技能-但是,如果您不花时间了解黑客是如何进入的-只需从昨天的备份中恢复系统-猜猜怎么办?他们会回来的-因为您没有填补空白。我故意含糊不清-由于臀位的原因千差万别-未打补丁的代码,密码,社交引擎,暴力破解,不良的安全模型-这份清单是无止境的。 “失败的滋味本身就有丰富的经验。”比尔·布雷迪

–提姆种子
16 Mar 10 '16 at 4:17



我不明白为什么会有这么多的反对票。这是最好的做法。仅删除恶意软件没有任何作用。该恶意软件以前不存在,它们仍然存在。还要立即使网络上的所有密码失效,并密切监视正在更改它们的用户。

–醉酒的代码猴子
16-09-17在16:56

@DrunkenCodeMonkey谢谢!我不得不处理30年IT生涯中被黑客入侵的3台服务器,我给出的建议基于经验,而不是大约10分钟的“ Anti Hazker”闪存/ powerpoint演示。黑客入侵后-您完全不知道他们对系统所做的一切-添加了新的SSH端口,新帐户,新共享,并更改了一些微妙的Apache规则。尝试找到类似的东西!!!让他们继续使用可能受到威胁的服务器。...这将是他们的工作,而不是我的。

–提姆种子
16-09-19在14:50



#5 楼

该方法适用于确切的实际情况,但下面是一种可能的方法。

•我的第一步是什么?当我到达现场时,应该断开服务器的连接,保留“证据”,还有其他初始注意事项吗?

答案:当然,您必须断开服务器与网络的连接,但不能关闭/关闭服务器电源。服务器,因为您可能必须进行取证才能了解情况,事件的影响并且必须保留证据(如果关闭服务器,则可能会擦除内存中的数据)。

危机管理和沟通–如果您具有危机管理和DR / BCP策略,请遵循所述步骤。在这种情况下,这又可能会导致病毒传播,因此您可能必须遵循自己的流程。

•如何使服务恢复在线?

答案:如上所述,请按照您的危机管理/ DR / BCP说明进行操作。具体情况视情况而定。

例如,如果该病毒是定时炸弹或在服务器上采取了某些措施并受到勒索软件攻击而触发的,则最好不要立即启动您的灾难恢复(这可能触发从您的灾难恢复服务器传播另一种恶意软件)。最好的方法是评估事件对您的网络的影响,然后采取必要的措施来恢复您的服务。

•如何防止同一件事再次发生?

回答:尽快确定事件的根本原因,以防止同一事件再次发生。如以上答案所示,在勒索软件情况下,您可能必须确保恶意软件不会传播到您的灾难恢复/备份中。

如果事件是由于网络中的漏洞引起的(例如,防火墙端口被错误地打开,并且攻击通过该端口进行,必须立即采取措施来关闭已知/已识别的漏洞,以避免再次发生此事件。

•是否有从该事件中学到的最佳实践或方法?

答案:是的,每个事件本质上都是独特的。因此,更新您的危机管理/ DR / BCP程序以反映对此类事件的了解。

始终建议您进行主动的监视/事件标识,以避免/及早发现此类事件。例如,您可以部署SOC(安全运营中心)或SIEM(安全突发事件管理)工具。

•如果我想将突发事件响应计划放在一起,该从哪里开始呢?这应该是我的灾难恢复或业务连续性计划的一部分吗?

答案:这应该是BCP / DR计划的一部分,通常包括在危机管理中(BCP计划的一部分)。

#6 楼

这是一个非常重要的注意事项。
不仅您每次尝试重新启动磁盘时都必须擦拭干净磁盘,还必须确保攻击者可能修改过的各种ROM都处于原始出厂状态。意味着至少,在我们谈论真正的硬件时,您将需要重新刷新UEFI固件并可能重置其设置。对于虚拟化环境而言这不是问题。
ROM也包含在HDD / SSD / RAID / NIC / GPU中,但是除非您是三字母代理机构的目标,否则这些ROM不太可能被修改/损坏。