以前的IT工作者可能会留下一些后门。 我怎样才能消除它们?

我开始为一家公司解雇一名以前的IT员工泄露数据。

我只能说下面的事情:

我们使用Firebird数据库和另一家公司Proxmox编写的应用程序来虚拟化Windows Server 2008 R2,SQL Server,云核心Mikrotik路由器以及其他一些Mikrotik设备。

我不是100%确定的,但有没有一些快速的方法来检查是否有一些后门留下,而不中断内部过程和重新格式化的一切?

这个以前的人非常好,用C ++和C#编写软件。 我也知道他在ollydbg中做了一些汇编程序并破解了一些程序。

要绝对肯定的唯一方法是擦拭每个系统干净,并从头重新安装。 您还需要审核所有本地生成的软件和configuration,以确保它们不包含后门程序。 这是一个不平凡的任务,这是一个不平凡的成本。

除此之外,你可以做的不多。

很明显,当你决定要做什么

  • 审核所有防火墙规则的有效性
  • 审核所有帐户的有效性
  • 审核所有sudoers文件的有效性
  • 更改所有密码和密钥

但这只是表面上的划痕。

首先,被解雇的系统pipe理员最重要的目标是清理他的过去,特别是如果这是一个糟糕的背景离开。 如果他以前的系统遭到攻击,他就不会有任何收获(特别是他以前的工作),但他可能会损失很多 。 我多次面对类似的恐惧,但在我看来,他们在很大程度上是没有根据的。 我认为如果你提出一些问题,他会对你很好,对你有帮助(你应该向你的老板提一提)。


现在考虑一下非常不可能的情况,他真的想做一些有害的事情。

把你的整个networking归档为一些 – 对他来说 – 无法到达的位置(在他的职责之外的防火墙,锁在柜子里的硬盘等等)。

一旦你做了这个备份,他不能再覆盖他的轨道。 在stream氓袭击的情况下,它将作为证据。


你不可能100%确定(除了重新安装整个networking的情况)。 你可以通过一个清单,但你永远不能确定你已经检查了一切。

即使在你发现一个洞的情况下,你也不能certificate它是故意的。 请注意,软件开发人员也存在同样的问题。 不好的工作不是刑事犯罪,你不能certificate他“忘记”了,例如,故意改变默认的数据库pipe理员密码。 或者,由他设置密码的用户“不小心”被授予连接到您的绝密数据库所需的权限。


在大多数情况下,系统中最重要的部分不是您的操作系统,而是pipe理它们的数据。 尤其如此,如果这个数据是私人数据和你的客户的财产。 他可能早在上一个工作日之前就偷走了他们,encryption他们并将他们保存在只有他知道的地方。 因此,请务必检查是否有迹象表明他在离开之前已经复制了您的数据。 但请注意,如果他“正确地”做了,你什么也找不到。

@JonasWielicki将这个问题与我们的一个典型的安全问题( 我如何处理一个妥协的服务器 )相比较。 我支持这个问题的答案但有一个重要的区别。

在这个问题上,服务器被认为是妥协的。 据我所知, 这个问题还没有在这个案例中确定。 因此,我不确定我们是否需要突破火焰喷射器。

人们一直离开一个组织,没有发生什么不好的事情,即使他们离开的时候也是这样。 只要擅长编程,这就是您在OP问题中向我们展示的所有“证据”,并不意味着某个人本身就是黑客,也不意味着他们现在已经离开了他们可能会攻击您。

如果你真的担心,那么我会build议聘请一家外部安全公司来审计你的系统。 不仅希望能够揭示前任系统pipe理员可能留下的任何小小的惊喜,而且还将成为您今后所有安全问题和担忧的良好基准。

确保没有后门存在的唯一方法就是像你说的那样对系统进行encryption。

如果这不是完全可能的话,

  1. 考虑一个基准的安全configuration,并分析当前的configuration是不同的。
  2. validation所有的suid程序。
  3. 分析所有正在运行的进程。
  4. 在系统上执行portscan以识别开放的端口和服务。
  5. 定期监控所有出站和入站连接,并寻找stream氓连接。

你将需要决定你想成为什么样的人。 成本效益永远不会从轨道上消失。

pipe理者要求保证,还是只是试图对你所inheritance的系统进行一些合理的检查?

如果是经理人,现在你会发现他们是多么的合理。 他们是否愿意“确定地”解决? 也许你可以跟着那个被解雇的人去找他的新工作!

如果你想检查你自己的系统,我会开始build立一个networking监控系统,如snort。 寻找意外的stream量,比如说:“为什么系统每天都在跟俄罗斯的这台服务器通话?” 或者“为什么人们通过我的networking服务器进行IRC?” (那个发生在我身上)。

我认为@彼得关于创build一个大档案的build议是一个非常好的主意。 我也认为他对被解雇的人有帮助的build议是完全现实的。 像这样的问题90%的时间是愚蠢的pipe理。

您应该对当前的function和使用情况进行审计,但老实说,您应该从头开始。

也就是说,不要把它从轨道上“撬开”,而是要记下所有的核心function和要求,例如,防火墙上可能需要打开哪些端口,IP地址或主机名限制以及各种“水暖“就是这样。

然后根据你所看到的创build一个新的环境,运行一些testing,以确认function是相同的,如果切换,然后安排维护进行官方切换:意味着从旧的设置复制数据到新的,然后切换IP上从旧盒子接pipe旧IP或设置其他需要访问的系统才能连接到新设置。

但是,即使你这样做了,那么你可能也不能相信数据库中的数据,但至less在这种情况下,核心系统被移到了更稳定和“理智”的东西,所以你有一个更清洁初始点。

另外,你提到以前的IT人员可以用汇编程序和C ++编程。 我的问题是:为什么? 因此,对任何可能存在的自定义代码进行审计并评估function。 因为虽然其他人可能已经“编程”技能的“幻想”,谁知道他们编程的东西在C + +,例如,可以很容易地重新创build在Python或Bash / Batch脚本。 我遇到了很多C ++程序员,他们现在正在过度使用C ++代码,当使用简单的工具来实现等效的function时。

但是在一天结束的时候,从头开始重buildbuild筑可能是唯一的,也是最安全的事情。

第一件事,是每个人都改变他们的密码。 其次,你需要保护防火墙,以及任何直接连接到它的东西。 随处更改所有密码。

如果他不能通过防火墙,他将不得不依靠与他build立联系的东西,并使事情变得更加困难。

您将不得不学习有关防火墙,规则和configuration的所有内容,并逐行检查不属于的内容。 即使这样你可能会更好地获得一个新的路由器,并手动传输configuration。 validation对configuration的每个更改都是正确的,而不是后门,甚至仍然是需要的。 这是清理系统外的最佳时机。

考虑一下:他可以把后门安装到引导扇区。 根据他是多么的好,以及他是如何谨慎地获得持续的后门,你可能需要一个新的硬盘驱动器和主板。 取决于他所做的事情,你可能不得不把所有的数据放在后面。 如果是我决定做什么,我不会去看这个人的线索,看他可能做了什么, 我会根据这些数据库中隐藏的数据可能会造成的损害风险采取行动。

如果你想要一个整洁的工具来风险分类,加拿大军方有一个相当干净的方法:

数据保护“A” – 数据可能对个人造成重大损害,而不会对使用相同系统的他人造成损害。

受保护的“B” – 可能导致超过1人受到重大损害的数据,但仍限于数据存储在同一系统中,但没有损害携带数据的组织的人员。

受保护的“C” – 数据如果在错误的手中对国家安全构成威胁,组织范围内的安全或对存储数据的整个数据库的“根”访问可能造成同样广泛的损害。

因此,如果您的数据库存放个人信息,并且您的服务器属于对人员负有法律责任的实体,那么我会将可以存储数据的任何东西都垃圾清理。 在大多数情况下,这是一笔巨大的成本,但如果有潜在的诉讼,那么律师先从那里开始。 找一个专门研究数据安全的律师。 这些事情的法律可能是非常混乱的,所以最好找一个经验丰富的律师,或者把你的硬件破坏掉,重新开始。 希望这是有用的。 祝你好运,并感到遗憾听到你的困境。