详解空会话攻击及防御

安全 黑客攻防
早在windows 2000时代,空会话攻击就已经被发现,然而系统管理员在强化网络时经常忘记考虑空会话攻击问题,这可能带来灾难性后果,因为空会话可能会泄漏关键信息助攻击者获取远程访问系统的权限。

空会话攻击可以说是一种很古老的网络攻击形式,已经古老到系统管理员几乎忘却了还有这种攻击形式的存在。但现在它却又开始像几年前一样肆虐起来。尽管现在的系统已经不那么容易受到攻击,然而在针对windows设备执行渗透测试时,空会话枚举仍然是最先要做的事情之一。本文的目的在于分析空会话攻击,并探讨如何防止空会话攻击的发生。

空会话攻击过程

当用户使用用户名和密码(可以访问系统资源的登陆帐户)远程登陆到计算机时就创建了一个远程会话,这是通过服务器消息模块(SMB)和Windows Server服务来实现的,当提供正确登陆信息时这些连接都是完全合理的。

当用户没有使用用户名或者密码来与windows系统建立连接时就会出现空会话,这种类型的连接不能进行任何典型的windows共享,但是可以进行进程间通信(IPC)管理共享。IPC共享,是windows进程(通过SYSTEM用户名)来与网络其他进程进行通信的,IPC共享是SMB协议专用的。

没有登陆凭证使用IPC共享是专供程序间通信使用的,但这并不是说用户不能通过IPC连接代替连接到计算机。这种方式不允许对计算机的无限制访问,但广泛枚举可能会帮助攻击者发起攻击。

通过空会话进行枚举

现在我们知道空会话是如何发生的,那么攻击者如何利用空会话发动攻击呢?可以说,攻击者可以很轻松地利用空会话。空会话连接可以通过简单使用NET命令从windows命令行直接产生,不需要额外的工具。NET命令可以用来执行各种管理功能,使用NET命令我们可以尝试对目标主机(命名为HACKME)上的标准共享建立连接,但是这样会失败,因为我们没有提供正确的登陆凭证。

如何防御空会话攻击

首先你会问的问题是:“我的系统容易受到攻击吗?”这个问题的答案取决于网络环境中的操作系统,如果运行的是Windows XP、Windows Server 2003或者Windows 2000,答案是肯定的,至少在某种程度上来看。虽然现在大多数人都在使用这些版本以上的系统,不过Windows XP和Server 2003仍然是使用最多的系统,但还是可以通过其他防御来防止空会话攻击的。

在注册表中限制空会话攻击

事实上,大多数公司由于资金紧缺问题,一直还在使用旧版本的软件,这也是为什么到处可见windows 2000工作站和服务器的原因。如果你仍然在使用Windows 2000,那么可以通过简单的修改注册表来防止通过空会话的信息提取。

打开regedit,浏览HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous,你可以配置这三种设置选择:

· 0 – 默认设置,无限制空会话访问

· 1 – 不排除空会话,但是防止用户名和共享的枚举

· 2 – 通过严格限制对所有资源的访问,从而防止任何值从空会话流失

正如你所见,你不能100%的消除空会话,但是你可以通过设置2来严格限制攻击者的攻击,在windows2000服务器上配置时要非常注意,因为可能会破坏集群。

你可以在windows XP和2003服务器中执行类似的操作,主要通过以下三种不同的注册表项:

HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous

· 0 – 默认设置,空会话可以用于枚举共享

· 1 –空会话不可以用于枚举共享

HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM

· 0 –空会话可以用于枚举用户名

· 1 –默认设置,空会话不可以用于枚举用户名

HKLM\System\CurrentControlSet\Control\Lsa\EveryoneIncludesAnonymous

· 0 –默认设置,空会话没有特殊权力

· 1 – 空会话被认为是成员组的部分(非常危险,可以允许共享访问) 

 你可以清楚地从上述内容中看出,默认情况下,windows XP只允许共享的枚举,这样比windows 2000更加安全。

从网络级别阻止访问

如果你不能对上述注册表进行修改,那么你可以通过windows防火墙或者网络防火墙阻止空会话攻击,这可以通过组织与NetBIOS和SMB TCP/IP有关的端口来实现,这些端口包括:

· TCP Port 135

· UDP Port 137

· UDP Port 138

· TCP Port 139

· TCP和 UDP Port 445

这些端口用于windows的各种网络功能,包括文件共享,网络打印功能、集群和远程管理等。话虽如此,在关闭这些端口之前应该进行全面的测试,以确保系统正常运行。

使用IDS识别空会话

如果上述注册表修改或者防火墙政策破坏了网络应用程序的功能性,那么你必须将防御工作调整为被动方式,而不是主动方式。除了阻止空会话枚举之外,最后的希望就是在发生枚举的时候我们能够阻止它。

如果你正在使用Snort,也就是现在最常用的IDS,那么进行以下操作就可以检测所有空会话枚举:

alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:”NETBIOS NT NULL session”; flow:to_server.establshed;

content: ‘|00 00 00 00 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 20 00 4E 00 54 00 20 00 31 00 33 00 38 00 31|’; classtype:attempted-recon;)

这不能够阻止空会话枚举的发生,但是会提醒你枚举的发生,从而采取适当行动。

总结

空会话攻击概念并不是新的攻击方式,但是却常常被忘记和误解。这种方式对于攻击者而言,仍然是非常可行的攻击策略,了解空会话攻击的方式是系统管理员的必修课。
 

【编辑推荐】

  1. 浅析DOS关联洪水攻击
  2. 验证洪水攻击的原理与应对方法
  3. 防火墙安全测试之日志分析工具
  4. 浅析各类DDOS防火墙应对攻击时的表现
  5. 实例体验自造DDOS硬件防火墙
责任编辑:张启峰 来源: 安全中国
相关推荐

2014-09-18 09:42:15

2017-05-16 10:39:02

2015-05-13 10:36:43

2016-09-30 15:59:41

2017-06-08 19:19:10

2023-03-06 08:00:00

2012-11-30 14:54:48

2016-01-28 14:21:16

2018-07-12 07:21:34

2009-09-15 16:08:00

2013-04-25 11:04:42

2011-01-18 15:29:46

2010-09-29 14:00:05

2009-10-29 17:47:31

2010-07-19 21:52:35

2013-06-24 10:16:45

2010-09-13 09:20:21

2021-06-03 10:16:12

CSRF攻击SpringBoot

2013-05-14 18:14:38

点赞
收藏

51CTO技术栈公众号