当一个服务器被植根时( 比如像这样的情况 ),你可能决定要做的第一件事就是遏制 。 一些安全专家build议不要立即input补救措施,并保持服务器联机,直到取证完成。 这些build议通常是针对APT的 。 如果偶尔发生脚本小孩违规,这是不一样的,所以你可能会决定早日修复(修复)。 修复中的一个步骤就是控制服务器。 引用罗伯特·莫尔的答案 – “将受害者与劫持者分开”。
通过拉动网线或电源线可以容纳服务器。
哪种方法更好?
考虑到需要:
编辑:5个假设
假设:
如果你面对的是APT,那么除了监视服务器之外,你最好的select是设置一个蜜jar并彻底调查stream入和stream出的所有stream量。
在时间和努力方面,经历记忆的措施是非常昂贵的,除非你尝试过其他所有的方法,否则通常是不值得的,如果你确定这是值得的,通常最好设置一个蜜jar,让你轻松地转储将存储器和系统状态存储到另一台机器上,这样您就可以在机器启动并运行的同时,以更less的检测威胁进行分析。
我曾经遇到过一种情况:攻击者把内存中的所有东西都保存在内存中,除了日志以外,一旦关机再打开,机器看起来完全像它的图像。 然后他们会重新开始使用它,因为这个漏洞依然存在 – 他们不需要为自己留下任何后门。 记忆评估在这里可能有所帮助,但在这种情况下观察stream量足以快速识别漏洞。
因此:
避免拉动力量和进行离线磁盘评估的唯一原因是,如果您要经历一个对威胁进行彻底内存分析的痛苦,那么这个威胁就位和运行。 如果你已经到了必要的地步,那么没有任何理由要拔插头。
如果你没有进行内存分析,那么拔下电源插头是最好的select – 拉动以太网(或者使用关机命令)只会给攻击者的软件提前通知 – 这偶尔会有影响。
所以:
拉他们两个,除非你正在做一个记忆分析,在这种情况下,不拉。
RAM取证(例如/ dev / shm)可能会有帮助。
但我更喜欢拔掉电源线(但是之前尝试login和rsync / proc)。
去电源线的原因是:
凯尔兰金给了一个很好的取证介绍 – 在那里,他build议拉动电力电缆。
断开networking。 如果没有networking连接,攻击者无法获取任何附加信息。 这是非常困难的(阅读:不可能)没有权力做任何取证。
在这个时代,它可以是虚拟机,所以任何一种方法都很容易,甚至可以远程完成。 (当然,虚拟机也可以使用快照)
我build议从networking上断开连接作为自动的第一步,因为这会让您有时间思考下一步应该做什么,下一步是拔出电源线还是其他的东西。 如果您知道您的企业“安全响应程序”不会让您花费时间仔细查看机器,那么保留RAM的内容可能并不重要。
我build议,以任何方式“将受害者与受害者分开”比如何更重要,所以这两种方法都是有效的。 我自己拉动电源线没有任何问题,让我们这样说吧。
这不是一个任何一种情况。 您通常希望同时执行这两个操作,您希望在已从networking中删除的系统上执行某些取证(正在运行的进程的转储,侦听套接字,/ tmp中的文件等),然后从安全柜中执行其余的诊断环境(即现场CD)。 有些情况下,任何一种方法都不是正确的,而且你需要考虑并理解你的组织中可能的东西。
在你做任何事之前,找出你是否需要保存最终的起诉证据。 证据处理是一个非常棘手的问题,而不是为了训练有素。 一旦你回答了,那么训练有素的计算机取证人员就可以从那里拿走它。
无需closures服务器电源。 您可以禁用边界网关/路由器的连接。 一个防火墙规则将足以丢弃任何进一步的发送/接收的数据包。
答案在很大程度上取决于你的意思是“扎根”。 拉networking引导通常是一个好主意,特别是如果你认为这是一个积极的人类攻击者寻找敏感信息。
拉动力很难回答。 如果您觉得恶意代码正在运行,可能会覆盖其轨道,请这样做。 但是,如果您觉得可能存在内存中的闯入证据,请将其保留。
总的来说,这取决于你是否正在处理恶意代码,不满意的员工,或者有特定目标的人。
如果发生意外,请拔掉电源。 您将失去less量的潜在证据,但可能会阻止通过自动代码大量删除其他证据。
– 如果您觉得机器已经被盗用,而且您知道它没有任何敏感数据,那么您对其他地方的networking安全性非常有信心,并了解这样做的后果,或许可以立即获得法医的帮助。看看你是否可以跟踪或理解攻击并从那里出发。 虽然这通常不是一个好主意
我的回答是在编辑之前,有5个假设。
我的假设是,如果你的服务器已经扎根,那么你正在处理一个复杂的,有针对性的攻击者,而且你无法知道攻击来自何时何地。 (因为机器是根植的,显然你不能相信它告诉你的任何东西,但是,你可能有一些现成的信息,例如IDS …)
我还假定你有兴趣与你的攻击者打交道,而不是像一个令人烦恼的苍蝇挥手。 如果假设的攻击者是脚本小子,这将是不同的。 我还认为,由于攻击者的攻击目标和复杂性,他们可能会在您的计算机上运行自定义软件,并可能对您的操作做出响应。
都不是。
看看https://security.stackexchange.com/q/181/33 ,无论如何这是一个坏主意。
这就像给黑骑士带来了几张纸……太less了,太迟了,这不会有太大的帮助。
对于那些觉得这个答案太过于遥远,或者只是不够“安全意识”的人,你需要意识到现在已经太晚了 。
这不是你的服务器,即使你完全断开它。 即使你closures了,运行你所有的AV以及其他东西 – 你不再拥有它了。
这有点“根深蒂固”的定义。
现在,假设他们拥有它,并且可以隐藏他们对你的所有权,那么你需要考虑 – 什么会使它失去动力?
唯一能达到的 – 因为它会继续根植,就是让你的对手知道你在跟他们走。 这只是把他们的卫士,让他们开始清理自己(如果他们还没有),这将杀死取证的任何希望。
您仍然不保护该服务器或其任何数据。 它的根源有多久了? 你怎么知道的?
你最好做什么:
经过审查你的假设做到两个。 使用基于CD / DVD的媒体转储当前状态。 主要你会希望能够确定你是如何被入侵的。 您可能还想尝试恢复用户数据,而不是在备份映像上。 哟
然后从未受污染的最新备份媒体重build系统。 如果可能,请使用校验和进行validation。 或者,从安装介质重新安装软件,然后重新configuration。 如果您使用Puppet或cfEngine来configuration您的服务器,重新configuration应该是自动的。
重新加载用户数据并扫描根工具包组件。 validation数据目录中没有setuid或setgid程序。
确定并closures用于感染系统的访问方法。 阶段重新激活服务器允许时间validation应用程序正在按预期运行。 仔细监测新的感染企图。
这一切都假定感染是在根本上。 Web感染可以通过改变Web服务器运行的代码来完成。 允许Web服务器对其代码进行写入访问可能使得这更容易完成。 您可能仍然想要处理这种情况,就好像root帐户已经被入侵一样。
如果一个系统上的root用户在一个系统上受到威胁,则可能会有更多的系统受到攻击。 仔细考虑哪些系统可以被感染系统的密码访问。