当前位置: 首页 > 科技观察

如何搭建一个完美的Dropbox(下)

时间:2023-03-15 08:52:43 科技观察

接上文《如何构建完美的Dropbox(上)》自动攻击方案这个也可以自动区分上面提到的两种场景,通过监控/sys/class/net/lan/carrier和/sys/class/net/wan/carrier,我们可以检测LAN和WAN接口上是否有一个或两个连接。如果你希望自动化网络配置,一个选项是监控这些文件,如果LAN接口处于活动状态,则假设这是一个中间人场景,而如果LAN接口没有承载,则继续“未使用”港口”的场景。如下:while[`cat/sys/class/net/wan/carrier`==0];dosleep1doneif[`cat/sys/class/net/lan/carrier`==0];then#execute"unusedport"scenarioelse#executePersonintheMiddlescenariofi这样,您可以继续选择IP地址,或使用DHCP请求IP地址。请注意,Windows和LinuxDHCP客户端有时可能会因请求的不同字段或发送到服务器的不同填充字段而有所不同。在开始探索您所连接的网络之前,花一些时间监视和微调您自己的DHCP请求可能是值得的。Windows10DHCP请求(左)和KaliLinux(右)关于网络访问控制的区别您可能会在会议室中发现一个未使用的网络端口,但它很可能会被网络访问控制(NAC)检查。它们有多种形式,从802.1x到连接到新设备上的服务以检查防病毒配置等服务的网络服务器。如果新设备未通过检查,交换机端口将被禁用或配置为受限VLAN,无法访问真正有趣的系统,真令人失望!绕过此类控制的一种简单方法是对现有设备执行中间人攻击,这可能是PC、打印机,甚至是IP电话。在许多情况下,打印机等设备无法执行802.1x身份验证,因此在该特定网络端口上禁用它。在其他情况下,设备在网络上具有必要的授权,因此,网络端口被分配到正确的VLAN。中间的人需要做的就是确保它发送的任何流量看起来与受害者的流量相同,这样交换机就不会检测到任何异常情况。许多交换机可以配置为在端口上检测到多个MAC地址时关闭端口,这是您绝对不想发生的事情!为此,我在阅读这篇帖子脚本后创建了一个简单的shell,它设置了适当的iptables规则,使来自R1S的任何流量看起来都来自受害者。这个过程的基础可以在GitHub上旧版本的slimjim脚本中找到。本质上,找出被拦截设备的MAC和IP地址,然后使用Linuxebtables(第2层)和iptables(第3层)规则来保护从中间人设备到更广泛网络的所有流量都来自MAC和被拦截设备的IP地址。如果您还希望能够与被拦截的设备进行交互,请选择要使用的上游设备的MAC和IP地址并伪装成该设备。鉴于设备的独特位置,直接连接到受害者,您可以选择任何上游设备伪装成它。早期的slimjim依赖于手动将可达设备的MAC和IP地址分别添加到ARP和路由表中,还需要操作者使用tcpdump-nnelilan-Qin等命令来识别被拦截设备地址的MAC和IP,并在运行脚本之前执行一些手动配置。当前版本的slimjim会为您完成所有这些工作,并将观察到的DNS流量映射到相关地址。但是需要python脚本,这在资源受限的设备上可能不可行!一旦配置了网桥,网络访问控制解决方案应该能够连接到受害者,即使没有识别受害者的详细信息,执行所需的任何身份验证过程并相应地激活端口。从网络访问控制中窃取凭据的一个有用技巧是了解网络访问控制的实际工作原理。在某些情况下,我们已经看到NAC解决方案使用SSH或SMB等协议来建立与新设备的连接。具有可获取和重复使用的凭据的经过身份验证的连接。此连接用于执行目录,或验证防病毒软件是否是最新的等。在这些端口上运行合适的蜜罐服务可能会导致明文凭据(或等效哈希)的泄露,这些凭据通常是高特权帐户能够登录到所有连接到网络的工作站!不幸的是,802.1x解决了这不是方案!网络命名空间自2002年以来,Linux已经支持命名空间大约18年了,但它们对很多人来说仍然有点神秘。各种不同的资源类都有命名空间,例如进程、文件系统、网络、用户ID等。这些名称通常由容器工具(如Docker工具)使用,以限制所包含系统可以看到的资源。它们还可以帮助防止命名冲突,因为很多人都叫约翰。在这种情况下,我们对网络名称空间感兴趣,因为它们提供了一种方法,使网络接口及其整个网络堆栈仅对系统上运行的程序子集可见。通过将网络接口分配给网络名称空间,只有在该网络名称空间中运行的进程才能看到或访问该接口。Opsec注意事项如前所述,R1S生成的无意网络流量(如DNS查找)可能会泄露整个游戏。避免这种情况的一种方法是在网络命名空间(例如pitm)中隔离以太网接口,并仔细考虑在该命名空间中启动了哪些进程。当前的slimjim脚本也处理这个问题,在命名空间内创建一个屏幕实例。在pitm命名空间内启动的任何进程都可以访问以太网接口,而在命名空间外创建的进程则不能。通过这种方式,我们可以确保没有意外流量命中目标网络,从而暴露他们的存在!安装slimjim要在R1S上安装slimjim,应执行以下步骤。首先,在以太网接口上禁用IPv6:cat</etc/sysctl.d/01-disable-ipv6.conf#disableIPv6onEthernetinterfaces#net.ipv6.conf.wan.disable_ipv6=1net.ipv6.conf.lan。disable_ipv6=1EOF不幸的是,LinuxIPv6堆栈执行一些自动冲突检测,这可能允许意外流量流出到以太网接口。接下来,安装所需的软件包:aptinstall-ydnsmasqtcpdumpebtablesredsocksiftoppython3-pypcappython3-dpktpython3-pyroute2python3-iptablespython3-setuptoolspython3-cffi我们要防止Redsocks自动启动,因为它无法访问网络接口,除非它在??pitm命名空间内运行。slimjim脚本将在命名空间内为我们启动它。我们还想将Redsock侦听的IP地址更新为在以太网桥上。你可以这样做:systemctldisable--nowredsockssed-i-e's|log=.*;|log="stderr"|'-e's|daemon=on;|daemon=off;|'-e's|local_ip=127.0.0.1;|local_ip=169.254.0.1;|'/etc/redsocks.conf我们实际上不会在本文中使用redsocks,但在本文中使用了类似的“中间人”技术,它提供了有关如何使用的信息使用它。接下来,我们从GitHub克隆slimjim存储库:gitclonehttps://github.com/RoganDawes/slimjimslimjim/slimjim运行slimjim将在第一个窗口中启动带有slimjim脚本的屏幕会话。你会看到它等待来自受害者的数据包来识别要使用的MAC和IP地址。确认受害者的MAC和IP地址注意:在运行slimjim脚本之前,LAN和WAN接口之间不会有任何流量通过。我建议您使用前面描述的自动化技术,通过检测连接到LAN接口的活动接口来自动启动slimjim,或者,在断开目标网络连接之前,手动启动slimjim。一旦确定了受害者的MAC和IP地址,就可以关闭该窗口。另一个窗口将运行一个名为pitm_snoop.py的python脚本,该脚本监控网络流量以识别相邻设备并更新ARP和路由表。这是必要的,因为slimjim阻止R1S执行自己的ARP查找以避免暴露。为广播域中的设备添加ARP条目并将名称映射到IP地址另一个窗口将运行一个dnsmasq实例,该实例配置为仅执行基于本地“主机文件”的查找。主机文件也由pitm_snoop.py根据观察到的进出受害者的DNS流量创建和更新。通过这种方式,您可以了解被拦截设备正在与哪些主机通信并了解网络布局。如果您希望使用目标服务器的名称服务器,您可以编辑命名空间的自定义/etc/resolv.conf文件(通常位于/etc/netns/pitm/resolv.conf中)。另一种确定受害者正在与谁交谈的方法是运行iptraf。slimjim启动一个iptraf实例,以用户友好的方式显示跨pitm网桥的网络流量。处理网络名称空间的复杂性使用网络名称空间来隔离以太网接口有时会使事情变得有点棘手,尤其是当您需要能够将流量从控制接口定向到网桥时,反之亦然。为了解决这个问题,我们创建了一对虚拟网络接口,169.254.20.1(命名空间内)和169.254.20.2(命名空间外)。使用它们将流量路由进出命名空间。我的首选方法是使用SSH隧道,如下所示:在R1S上,为pitm命名空间内的虚拟接口添加/etc/hosts条目:169.254.20.1pitm将以下条目添加到您个人的~/.ssh/配置文件中:HostpitmUserrootProxyJumpnanopi-r1RemoteForward1080Hostnanopi-r1UserrootRemoteForward1080然后,如果您在R1S上安装了ssh公钥,您可以使用以下命令直接ssh进入pitm命名空间:sshpitm这利用了OpenSSH的“ProxyJump”功能,并在另一个内部建立了一个ssh连接隧道为了到达命名空间内的虚拟接口。这将启用简洁的功能,例如在本地计算机上使用Wireshark进行远程网络监控:sshpitmtcpdump-nlipitm-w-|wireshark-k-i-当然,所有其他SSH端口转发技巧也可用。这种基于slimjim的解决方案不适用于使用802.1x-2010的网络,它可以使用MACsec来加密受害者和交换机之间的数据包。本文翻译自:https://sensepost.com/blog/2020/making-the-perfect-red-team-dropbox-part-2/