《详解空会话攻击及SMB相关安全知识》由会员分享,可在线阅读,更多相关《详解空会话攻击及SMB相关安全知识(28页珍藏版)》请在金锄头文库上搜索。
1、详解空会话攻击及防御空会话攻击可以说是一种很古老的网络攻击形式,已经古老到系统管理员几乎忘却了还 有这种攻击形式的存在。但现在它却又开始像几年前一样肆虐起来。尽管现在的系统已经不 那么容易受到攻击,然而在针对windows设备执行渗透测试时,空会话枚举仍然是最先要做 的事情之一。本文的目的在于分析空会话攻击,并探讨如何防止空会话攻击的发生。空会话攻击过程当用户使用用户名和密码(可以访问系统资源的登陆帐户)远程登陆到计算机时就创建 了一个远程会话,这是通过服务器消息模块(SMB)和Windows Server服务来实现的,当提供 正确登陆信息时这些连接都是完全合理的。当用户没有使用用户名或者密码
2、来与windows系统建立连接时就会出现空会话,这种类 型的连接不能进行任何典型的windows共享,但是可以进行进程间通信(IPC)管理共享。IPC 共享,是windows进程(通过SYSTEM用户名)来与网络其他进程进行通信的,IPC共享是SMB 协议专用的。没有登陆凭证使用IPC共享是专供程序间通信使用的,但这并不是说用户不能通过IPC 连接代替连接到计算机。这种方式不允许对计算机的无限制访问,但广泛枚举可能会帮助攻 击者发起攻击。通过空会话进行枚举现在我们知道空会话是如何发生的,那么攻击者如何利用空会话发动攻击呢?可以说, 攻击者可以很轻松地利用空会话。空会话连接可以通过简单使用NET
3、命令从windows命令行 直接产生,不需要额外的工具。NET命令可以用来执行各种管理功能,使用NET命令我们可 以尝试对目标主机(命名为HACKME)上的标准共享建立连接,但是这样会失败,因为我们没 有提供正确的登陆凭证。如何防御空会话攻击首先你会问的问题是:“我的系统容易受到攻击吗?”这个问题的答案取决于网络环境 中的操作系统,如果运行的是Windows XP、Windows Server 2003或者Windows 2000,答 案是肯定的,至少在某种程度上来看。虽然现在大多数人都在使用这些版本以上的系统,不 过Windows XP和Server 2003仍然是使用最多的系统,但还是可以
4、通过其他防御来防止空 会话攻击的。在注册表中限制空会话攻击事实上,大多数公司由于资金紧缺问题,一直还在使用旧版本的软件,这也是为什么到 处可见windows 2000工作站和服务器的原因。如果你仍然在使用Windows 2000,那么可以 通过简单的修改注册表来防止通过空会话的信息提取。打开regedit,浏览HKLM/Sys tem/Curren tCon tr olSe t/Con trol/LSA/Res trie tAnonymous,你可以配置这三种设 置选择:0 -默认设置,无限制空会话访问1 -不排除空会话,但是防止用户名和共享的枚举2 -通过严格限制对所有资源的访问,从而防止任
5、何值从空会话流失正如你所见,你不能100%的消除空会话,但是你可以通过设置2来严格限制攻击者的 攻击,在windows2000服务器上配置时要非常注意,因为可能会破坏集群。你可以在windows XP和2003服务器中执行类似的操作,主要通过以下三种不同的注册 表项:HKLMSystemCurrentControlSetControlLsaRestrictAnonymous0 -默认设置,空会话可以用于枚举共享1 -空会话不可以用于枚举共享HKLMSystemCurrentControlSetControlLsaRestrictAnonymousSAM0 -空会话可以用于枚举用户名1 -默认设
6、置,空会话不可以用于枚举用户名HKLMSystemCurrentControlSetControlLsaEveryoneIncludesAnonymous0 -默认设置,空会话没有特殊权力1 -空会话被认为是成员组的部分(非常危险,可以允许共享访问)你可以清楚地从上述内容中看出,默认情况下,windows XP只允许共享的枚举,这 样比windows 2000更加安全。从网络级别阻止访问如果你不能对上述注册表进行修改,那么你可以通过windows防火墙或者网络防火墙阻 止空会话攻击,这可以通过组织与NetBIOS和SMB TCP/IP有关的端口来实现,这些端口包 括: TCP Port 135
7、 UDP Port 137 UDP Port 138 TCP Port 139 TCP 和 UDP Port 445这些端口用于windows的各种网络功能,包括文件共享,网络打印功能、集群和远程管 理等。话虽如此,在关闭这些端口之前应该进行全面的测试,以确保系统正常运行。使用IDS识别空会话如果上述注册表修改或者防火墙政策破坏了网络应用程序的功能性,那么你必须将防御 工作调整为被动方式,而不是主动方式。除了阻止空会话枚举之外,最后的希望就是在发生 枚举的时候我们能够阻止它。如果你正在使用Snort,也就是现在最常用的IDS,那么进行以下操作就可以检测所有 空会话枚举:alert tcp $E
8、XTERNAL_NET any - $H0ME_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 0054 00 20 00 31 00 33 00 38 00 31| ; classtype:attempted-recon;)这不能够阻止空会话枚举的发生,但是会提醒你枚举的发生,从而采取适当行动。总结空会话攻击概念并不是新的攻击方式,但是却常常被忘记和误解。这种
9、方式对于攻击者 而言,仍然是非常可行的攻击策略,了解空会话攻击的方式是系统管理员的必修课。SMB介绍以及相关安全知识Volume 0x0b, Issue 0x3c, Phile #0x0b of 0x10| = SMB/CIFS BY THE ROOT = |I = I| = ledin = |I = I本文提到了如何探测远程主机的SMB信息。您可以使用T-SMB这个工具来获取你所想要的 信息,包括操作系统指纹,共享目录,用户与组,传输列表及其他信息。您可以在中华安全网 (SafeChina)下载此软件。下载地址:htt p:/www.safechina.ne t/download/click
10、.php ?t ype二本站原创&id=1040000080-目录1 -介绍2 -什么是 SMB/CIFS ?3 -会话的建立客户端如何与服务器建立一个SMB会话?4 - SMB的安全等级5 -密码6 -几种SMB数据报的描述6.1 - SMB数据报的常规特征6.2 NETBIOS 与 SMB6.3 - SMB的基础报文头部6.4 -重要SMB命令的描述6.5 -我们如何才能将本应该加密的SMB密码清楚的还原?6.6 - Man in the middle 攻击6.7 -注意Windows 2k/XP里基于TCP的SMB操作7 -事物处理子协议与RAP命令7.1 -事物处理子协议7.2 - R
11、AP 命令8 -使用RAP命令列出服务器上所有可得的共享列表&1 - Tconx数据报& 2 - RAP 命令“NetshareEnum” 的解释9 -结论10 -参考11 -感谢-1 -介绍本文,我将向大家解释什么是CIFS和SMB,它们如何工作和这些协议里一些共同的不安全 隐患。本文将会成为学习微软网络知识的一个有用资源。SMB协议是一个在LAN中非常通用的协议 了。我为大家提供了一个关于如何操作SMB例子的源代码。你将会学习到在所有SMB密码都是加密的情况下,如何使用ARP毒药来获得清晰的SMB密码 (不需要粗鲁与暴力)。你将会理解SMB与NETBIOS之间的关系。你同样会学到什么是微软
12、远程管理 协议(RAP),以及如何使用它来扫描远程SMB服务器上的共享资源。本文提供的程序和资料都只有一个教育性的目的。你将用它来做的任何事情与我无关。-2 -什么是 SMB/CIFS ?依照微软的意思,CIFS是为客户系统在网络上向服务器请求文件和打印服务的开放跨平台 的运行机制。它是建立在广泛应用于个人电脑和工作站等操作系统的标准服务器消息块(SMB)协议。实际上,SMB是一个通过网络在共享文件,设备,命名管道和邮槽之间操作数据的协议。CIFS 是SMB的一个公共版本。SMB客户端的可用系统: for Microsoft :Windows 95, Windows for workgroup
13、s 3.x, Windows NT,2000 and XP for Linux :Smblient from Samba, Smbfs for LinuxSMB服务器:SambaMicrosoft Windows for Workgroups 3.xMicrosoft Windows 95Microsoft Windows NTThe PATHWORKS family of servers from DigitalLAN Manager for 0S/2,SC0,etcVisionFS from SCOTotalNET Advanced Server from SyntaxAdvanced S
14、erverfor UNIX from AT&T (NCR?)LAN Server for OS/2 from IBM.-3会话的建立注意:SMB协议已经被发展成为可以运行于DOS操作系统,因此字节顺序将会和网络顺序相 反。SMB可以运行在TCP/IP,NetBEUI,DECnet和IPX/SPX协议之上。如果SMB执行于TCP/IP,DECnet或则是NetBEUI之上,那么NETBIOS名字必须被使用。我将会在第六章向大家介绍什么是NETBIOSo但是现在,你必须知道NETBIOS名字用来在网 络上鉴别一台计算机。SMB技术的发展开始于八十年代,出现过很多版本的SMB协议。但是最通用的(在W
15、indows 9& Windows NT,Windows 2000 and XP)是 NT LM 0.12 版本。本文是基于 NT LM 0.12 版本之上 的。你必须知道一个SMB域名是用来鉴别一个SMB服务器上的一组资源的(用户,打印机,文 件)o那么一个客户端是如何与一个服务器建立SMB会话的呢?让我们假设一个这样的环境:一个客户端希望访问一台服务器上的特定资源。1-开始于客户端向服务器请求一个NETBIOS会话。客户端发送它的已编码的NETBIOS名字 到SMB服务器(它们在139端口监听连接请求)。服务器接收到NETBIOS名字后回复一个NETBIOS会话数据报给有效的会话连接。客户端在建立了连接之后才能进入访问。2 -客户端发送一个SMB negprot请求数据报(negprot是磋商协议“negotiate protocol” 的简写)。客户端列出了它所支持的所有SMB协议版本。3 -通过磋商之后,客户端进程向服务器发起一个用户或共享的认证。(下一章中我们将会 看到共享认证和用户认证之间的不同)。这个过程是通过发送Sessse tu