gpt4 book ai didi

linux - 我如何发现使接口(interface)混杂的进程?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:40 25 4
gpt4 key购买 nike

在 Linux 上,我想快速将正在运行的进程绑定(bind)到它创建的混杂接口(interface)。例如,tcpdump 在开始和结束时会更改接口(interface),我想在该进程运行时有效地将其关联到混杂接口(interface)。

例如,我希望这种方法能够检测正在嗅探的流氓恶意软件。

通常我可以 ps -ef | grep tcpdump,但在恶意软件案例中,我可能不知道执行工作的进程。

另外,为了加分...如果进程不再运行,您将如何确定接口(interface)是如何变得混杂的? (假设它不在.history 中)

最佳答案

当一个接口(interface)被置于混杂模式时,内核将打印 k() 一条消息。该消息应该最终出现在系统日志中(通常在 /var/log 中),尽管您的入侵者很可能足够聪明来审查日志并隐藏他/她/它的踪迹。以我的愚见,应对这一挑战的唯一正确答案是拥有一个远程日志记录服务器,除了将它们存储到本地磁盘之外,至少还重定向一些系统消息。

要在日志中获取更多信息,您可以通过添加 audit=1 打开内核审计至 kernel command line .

接口(interface)可以处于混杂模式,而无需任何进程主动“保持”它的状态。实际上,您可以使用 ip link set <interface> promisc on 为接口(interface)打开混杂模式。 .使用 ip link set lo promisc on 在您的环回接口(interface)上尝试它,看什么netstat -i在您的终端上生成,然后使用 ip link set lo promisc off 再次关闭混杂模式并再次检查 netstat -i环回接口(interface)的标志如何更改。

回答您的第一个问题:无法知道哪个进程将接口(interface)保持在混杂模式,因为一开始可能存在这样的进程。内核在 __dev_set_promiscuity() 点没有详细的进程信息:

if (dev->flags != old_flags) {
pr_info("device %s %s promiscuous mode\n",
dev->name,
dev->flags & IFF_PROMISC ? "entered" : "left");
if (audit_enabled) {
current_uid_gid(&uid, &gid);
audit_log(current->audit_context, GFP_ATOMIC,
AUDIT_ANOM_PROMISCUOUS,
"dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u",
dev->name, (dev->flags & IFF_PROMISC),
(old_flags & IFF_PROMISC),
from_kuid(&init_user_ns, audit_get_loginuid(current)),
from_kuid(&init_user_ns, uid),
from_kgid(&init_user_ns, gid),
audit_get_sessionid(current));
}

详情见文件net/core/dev.c在 Linux 内核源代码树中。

关于linux - 我如何发现使接口(interface)混杂的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com