NetBIOS掌握在黑客手中

本文将简短介绍我们可以说出诸如NetBIOS之类的熟悉事物的故事。 他可以为潜在的攻击者/ pentester提供哪些信息。

侦察技术的已证明应用领域涉及内部,即与外部网络隔离且不可访问。 通常,即使是最小的公司也都存在这样的网络。

通常, NetBIOS本身用于获取网络名称。 这样至少可以做4件事。

主机发现


由于NetBIOS可以使用UDP作为传输,因此它的速度使得可以在非常大的网络中检测主机。 因此,例如,具有相同名称的软件包中包含的nbtscan工具仅能在2秒内解析出192.168.0.0/16类型的网络地址(它可以放入网络),而传统的TCP扫描将花费数十分钟。 此功能可以用作在启动nmap之前未知的非常大的网络中检测主机(主机扫描)的技术。 尽管结果不能保证100%能够被检测到,但是由于Windows主机大多数情况下会响应而不是全部响应,因此仍可以让您确定活动主机的范围。

主机识别


使用从ip地址获取名称的结果:

图片

您会看到:除了名称揭示了工作站的所有者(尽管这种情况并非总是如此)之外,其中一个地址显然也与众不同。 我们可以看到已收到名称KALI 。 通常,对于SMB / NetBIOSunix实现(作为samba软件包或非常老的Windows 2000的一部分),这种行为是典型的。

获得名称KALI ,而在其他主机上,此< 未知 >表示存在所谓的null-session 。 使用默认设置, Linux上的SMB服务器容易使用它。 空会话仅允许您完全匿名地获得大量其他信息,例如本地密码策略,本地用户列表,组和共享资源列表(ball)(并且您没有输入任何密码,如您在屏幕上看到的那样):

图片

通常,在Linux SMB服务器上,都有公开访问的球,不仅用于读取,甚至用于写入。 它们的存在都会带来各种威胁,其使用不在本文讨论范围之内。

NetBIOS还允许您获取工作站存储的所有类型的名称:

图片

在这种情况下,它使您可以发现主机也是ARRIVA控制器

还值得特别注意的是NetBIOS允许您获取mac地址。 而且,与arp请求不同,NetBIOS请求可以超出子网范围。 例如,如果您需要在知道网络的制造商的情况下在网络上找到笔记本电脑或特定硬件,这将很有用。 由于mac地址的前三个八位字节标识制造商,因此您可以向所有已知的子网发送类似的NetBIOS请求,以尝试找到所需的设备(http://standards-oui.ieee.org/oui.txt)。

域成员资格确定


通常,在内部公司网络中移动时,有必要攻击域中包含的工作站(例如,将特权提升到域管理员级别),反之亦然。 在这种情况下, NetBIOS可以再次提供帮助:

图片

在这种情况下,使用NetBIOS可以获得所有类型的所有名称。 其中,除了PC的名称(以前已经收到的名称)之外,您还可以看到工作组的名称。 对于Windows,默认情况下通常是WORKGROUPIVAN-PC之类的东西,但是如果工作站在域中,则其工作组就是域名。

因此,使用NetBIOS,您可以确定工作站是否在域中,如果是,则在哪个域中。

如果要获取子网中的域主机的列表,则一个带有所需域名称的广播请求就足够了:

图片

结果,该域中的所有主机都会响应。

发现多宿主主机


最后,另一种可能鲜为人知的技术,对于找到保护甚至物理上隔离的网络的方法来说,这是必不可少的。 可以是装满控制器的企业车间网络。 对于攻击者而言,访问此网络意味着有机会影响技术过程,并且对于企业而言,存在巨大损失的风险。

因此,最重要的是,即使网络与公司网络是隔离的,通常还是有些管理员由于他们的懒惰或某种原因喜欢在PC上举起另一张网卡来访问同一网络。 而且,所有这些当然都是绕开了公司防火墙的各种规则而发生的。 方便,是的,但不是很安全,如果您被黑客入侵,那么您将成为该网络的桥梁并承担责任。
但是,对于攻击者而言,存在一个问题-查找以类似非法方式加入安全网络的管理员。 而且,对于网络安全人员本身来说,这不是一个容易的问题。 在大型企业中,这确实是一项艰巨的任务,就好像在大海捞针一样。

在这种情况下,攻击者将有两个明显的选择:

  1. 尝试将公司子网中的每台PC用作所需网络的网关。 这将非常方便,但这很少见,因为在Windows主机上,几乎始终禁用ip转发 。 此外,这种检查仅在其自己的子网内是可能的,并且还要求攻击者准确地从隔离的网络中了解目标地址。
  2. 尝试远程登录到每个主机并执行banal ipconfig / ifconfig命令。 而且这里的一切都不那么顺利。 即使攻击者保护了域管理员的权限,也没有人取消防火墙和本地防火墙。 因此,此任务不是100%自动化的。 结果,前往每台主机仍然很痛苦,克服了防火墙(通常恰好阻塞445 / tcp端口),希望最终看到令人垂涎的网络接口。

但是,一切都简单得多。 有一个非常简单的技巧,使您可以从给定主机获取网络接口列表。 假设我们有一个主机:

图片

这是反向解析器的IP地址→网络名称。 如果我们现在尝试建立直接解析网络名称→ip-address:

图片

那么我们将发现该主机也是其他网络中的网关(显然)。 值得注意的是,在这种情况下,该请求已被广播。 换句话说,主机只会从攻击者的子网中听到它。

如果目标主机在子网之外,则可以发送目标请求:

图片

在这种情况下,可以看出目标位于攻击者的子网之外。 使用-B开关,表明该请求应该发送到特定的地址,而不是广播的地址。

现在仍然只是从整个感兴趣的子网而不是从单个地址快速收集信息。 为此,您可以使用一个小的python脚本:

图片

几秒钟后:

图片

在这种临时情况下,它是专用主机,如果攻击者使用网络172.16.1 / 24,它将成为攻击者的第一个目标。

图片

在不同的ip上重复的名称表示主机也有两个网卡,但是在同一子网上。 值得注意的是, NetBIOS没有公开别名 (可以通过arp请求将ip与相同的mac一起轻松地计算出来)。 在这种情况下,ip地址具有不同的macs

使用此技术的另一个示例是公共Wi-Fi。 有时,当访客设备中封闭的公司网段中的工作人员连接到公共网络时,可能会遇到这种情况。 然后,借助这种侦察技术,攻击者将很快能够为自己确定进入封闭网络的路径:

图片

在这种情况下,在65个公共Wi-Fi客户端中,有两个工作站带有附加接口,这可能与公司网络有关。

如果有时在网段之间或直接在工作站上观察到对445 / tcp端口的通信的过滤,这阻止了远程登录系统(远程执行代码),则在这种情况下,使用137 / udp端口来解析NetBIOS上的名称,而该名称几乎从未被有意识地阻止发生这种情况是因为网络可用性会因此受到很大的影响,例如,网络环境可能会消失等。

正如他们所说, 枚举是关键
有什么保护措施吗? 并非如此,因为它并不是所有方面的漏洞。 这只是Windows默认情况下的功能的标准功能(在Linux中,行为略有不同)。 而且,如果您突然不一致地绕过封闭路由的网络路由规则,那么攻击者一定会找到您并很快地做到。

Source: https://habr.com/ru/post/zh-CN445212/


All Articles