如何在linux中检测向攻击者服务器发送信息的恶意代码

信息安全 网络 linux 身份证 Rootkit
2021-09-07 08:02:43

假设您的 linux 笔记本电脑上有一些恶意代码,例如 rootkit 或木马或类似的东西。现在将您的注意力限制在恶意代码确实通过 Internet 将某些信息传输给黑客的情况,例如,因为黑客想通过键盘记录器从您的计算机中窃取一些文件或您的密码,或者因为他想使用您的计算机作为黑客攻击例如公司或政府服务器的基地。

作为网络安全方面的外行,我认为应该可以将您的盒子 (A) 的所有流量重定向(例如通过 ARP 欺骗或类似的东西)到另一个未受损的盒子 (B) 上,并通过嗅探来查看是否存在是任何可疑流量。如果您知道 A 目前不应该发送任何流量(因为您不浏览网络等等......),这似乎很容易。然而,恶意代码可能会更聪明一些,并且只有在从 (A) 发出一些其他流量时才发送数据,例如当您在网上冲浪时。然后,您需要一种方法来生成从机器 A 传出的受控流量。然后,机器 B 应该知道生成的流量是什么,即期望并且应该能够找到额外的流量,并在向服务器报告时以这种方式检测病毒.

我想这个模型有点幼稚,但我想了解更多关于这一点的技术细节:

  • 我的上述描述与现实有多接近?
  • 病毒还可以使用哪些其他更复杂的方法来掩盖其信息发送?
  • 如果所描述的嗅探是一种在代码报告回服务器时检测此类代码的好方法,那么实际上如何详细执行此操作(在 linux 中)?以及如何确保检测到甚至非常聪明的方式来掩盖信息的发送?
1个回答

这实际上取决于攻击者在您的系统中的深度;如果他正在控制您的 DNS,那么这将有点棘手;如果攻击者已经在您的服务器上,那么无论如何您都注定要失败。有很多不易检测的隐藏反向通道或使用 twitter、p2p、dns-queries 等的命令通道。在 SANS-ISC Reading-Room 中搜索“隐藏频道”以了解可能发生的情况

重定向...并通过嗅探查看是否有任何可疑流量

几乎不可能;启发式方法不起作用。您如何处理加密流量?

用于控制 http 请求:

  • 使用 squid 作为透明代理并使用允许连接目标的白名单

对于一般网络控制:

  • 在服务器前使用严格的 iptables-setup(拒绝任何东西,允许需要的东西)
  • 记录任何传出连接尝试以供以后分析
  • 使用 tcpdump 记录任何流量(不要忘记 UDP)