(安全问题)有啥办法可以隐藏dbus方法调用来监控dbus?

Posted

技术标签:

【中文标题】(安全问题)有啥办法可以隐藏dbus方法调用来监控dbus?【英文标题】:(Security Problem)Is there any way to hide dbus method call from monitoring dbus?(安全问题)有什么办法可以隐藏dbus方法调用来监控dbus? 【发布时间】:2021-01-05 07:47:17 【问题描述】:

请理解我不擅长英语。

我开发了一个由多个进程组成的身份验证系统,使用 dbus 相互通信。

我刚刚发现通过 dbus 进行的每一次通信都可以使用 dbus-monitor 进行监视。这样的交流密码和身份证。我只想隐藏它。

使用 dbus 私有连接,它可以被隐藏,因为它不经过 dbus-daemon。但是私人连接是一项复杂而肮脏的工作。

那么,有没有办法使用 dbus 开放连接(不是私有连接)来隐藏 dbus 通信?

抱歉,再次出现乱码。感谢阅读。

【问题讨论】:

【参考方案1】:

我刚刚发现通过 dbus 进行的每一次通信都可以 使用 dbus-monitor 观看。这样的交流密码和身份证。我只是想让它 隐藏起来。

情况并非如此:policykit 规则仍然适用。例如,作为非特权用户,我无法监控 wpa_supplicant

dbus-monitor  --system interface=fi.w1.wpa_supplicant1.Network
dbus-monitor: unable to enable new-style monitoring: org.freedesktop.DBus.Error.AccessDenied: "Rejected send message, 1 matched rules; type="method_call", sender=":1.6957" (uid=1002 pid=206438 comm="dbus-monitor --system interface=fi.w1.wpa_supplica") interface="org.freedesktop.DBus.Monitoring" member="BecomeMonitor" error name="(unset)" requested_reply="0" destination="org.freedesktop.DBus" (bus)". Falling back to eavesdropping.
signal time=1600511999.087722 sender=org.freedesktop.DBus -> destination=:1.6957 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.6957"

因为policykit-规则:

<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
        <policy user="root">
                <allow own="fi.w1.wpa_supplicant1"/>

                <allow send_destination="fi.w1.wpa_supplicant1"/>
                <allow send_interface="fi.w1.wpa_supplicant1"/>
                <allow receive_sender="fi.w1.wpa_supplicant1" receive_type="signal"/>
        </policy>
        <policy context="default">
                <deny own="fi.w1.wpa_supplicant1"/>
                <deny send_destination="fi.w1.wpa_supplicant1"/>
                <deny receive_sender="fi.w1.wpa_supplicant1" receive_type="signal"/>
        </policy>
</busconfig>

当然root 无论如何都可以读取您的所有数据。

如果您担心日志文件中出现的数据,可以使用 Unix 文件描述符(类型签名h)传递数据。所以数据对于dbus-monitor的用户是不透明的

【讨论】:

【参考方案2】:

那么,有没有办法使用 dbus 开放连接(不是私有连接)来隐藏 dbus 通信?

不,没有。

dbus-monitor 需要权限才能运行,所以不用担心泄露秘密。

【讨论】:

非常感谢!无论如何,我必须找到其他解决方案

以上是关于(安全问题)有啥办法可以隐藏dbus方法调用来监控dbus?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法检查是不是有人收听 dbus 信号?

有啥办法可以暂时隐藏蓝点,然后让它在 GMSMapView 中再次消失?

c语言中字符串能否转为代码执行?或者有啥替代办法?

C中的Dbus结构和方法调用

网站被挂马有啥解决办法?

有啥方法可以监控 Java 应用程序的功能流?