如何确定发出 DNS 请求的进程?

如何确定发出 DNS 请求的进程?

我在 AWS 上有一个服务器,GuardDuty 开始向我发送通知:

*** "type":"Backdoor:EC2/C&CActivity.B!DNS",
*** {"domain":"libcurl.so","protocol":"UDP","blocked":false}
*** is querying a domain name associated with a known Command & Control server. ***

我用所有可能的安全工具检查了服务器,但什么也没发现。tcpdump -A我发现我的服务器发送了有关此域的此类请求。我已打开 auditd。但没有发现任何异常。

我的问题是,如何确定究竟哪个进程发送了这个请求?

答案1

我担心通过正常的数据包捕获无法从数据包中识别出 PID,因为您所能看到的只是数据包从哪个端口发送的。

您可以使用 netstat 来识别谁在使用该端口,但 DNS 需要几毫秒的时间,所以您必须非常幸运。

Systemtap 可用于查找哪个进程使用示例 systemtap 脚本向 dns 发送了 udp 数据包:https://sourceware.org/systemtap/examples/network/who_sent_it.stp

AWS 提供的最后解决方案:如果您无法识别并阻止 EC2 实例上的未经授权的活动,我们建议您终止受损的 EC2 实例并根据需要将其替换为新实例。

答案2

AWS官方解答:

The GuardDuty team has confirmed this to be a false positive. The domain "libcurl.so" has been removed from the source threat intelligence list.

仅供参考:密码并不弱,并且已实现其他最佳实践。OSSEC、Tripwire 和其他内容都在服务器上。

相关内容