See also:Safe File and Printer Sharing in Windows
Deploying Windows Firewall Settings With Group Policy
NetBIOS Null Sessions: The Good, The Bad, and The Ugly
枚举资源和用户的工具enum和hunt,winfo,dumpsec,
Hunt (http://www.foundstone.com/knowledge/proddesc/forensic-toolkit.html)
Part of the NT Forensic Toolkit from Foundstone, this tool makes it very easy to enumerate users and shares from a vulnerable windows host. Some sample output is below:
C:"tools>hunt ""<IP Address>
share = IPC$ - Remote IPC
share = c -
share = ADMIN$ - Remote Admin
share = C$ - Default share
User = Administrator, , , Built-in account for administering the computer/domain
Admin is <NetBIOS Name>"Administrator
User = Guest, , , Built-in account for guest access to the computer/domain
User = IUSR_<NetBIOS Name>, Internet Guest Account, Built-in account for anonymous access to Internet Information Services, Built-in account for anonymous access to Internet Information Services
User = IWAM_<NetBIOS Name>, Internet Guest Account, Built-in account for anonymous access to Internet Information Services out of process applications, Built-in account for anonymous access to Internet Information Services out of process applications
User = victim_user Victim Name, ,
winfo (http://ntsecurity.nu/toolbox/winfo/)
This command line tool queries the host for most of the information made available by a null session (Including any trust relationships) and displays it to the screen. Sample output is below:
L:">winfo 128.148.151.7 杗
winfo 1.5 - copyright (c) 1999-2001, Arne Vidstrom
- http://www.ntsecurity.nu/toolbox/winfo/
Trying to establish null session...
Null session established.
USER ACCOUNTS:
* Administrator
(This account is the built-in administrator account)
* Guest
(This account is the built-in guest account)
* victim_user
WORKSTATION TRUST ACCOUNTS:
INTERDOMAIN TRUST ACCOUNTS:
SERVER TRUST ACCOUNTS:
SHARES:
* IPC$
* drivec$
The output above shows the listing of users, similar to the other tools. winfo is unique in that it will also show the trust relationships this machine may have with other machines. Finally, it will list the shares it has made available.
dumpsec (http://www.systemtools.com/somarsoft/)
Formerly Dumpacl, This tool is similar to winfo, but has a GUI interface.
The easiest way to enumerate Null Sessions is to execute the following command using the "net" utility that comes with most versions of windows. Without Null Sessions when we attempt to list the shares on a remote windows computer this is typically the result:
C:\tools>net view http://www.cnblogs.com/jjkv3/admin/file://128.148.54.251/
System error 5 has occurred.
Access is denied.
By default we would not have permissions to list the shares. If we map the IPC$ share (Inter Process Communications) using our null username and password combinations we are successful:
C:\tools>net use \\MY.SUB.NET.IP\IPC$ "" /u:""
The command completed successfully.
Now we try to list the shares again with greater success:
C:\tools>net view http://www.cnblogs.com/jjkv3/admin/file://128.148.54.251/
Shared resources at \\MY.SUB.NET.IP
Share name Type Used as Comment
------------------------------------------------------------------------------
c Disk
The command completed successfully.
windows XP sp2中的防火墙开启后阻止file and printer sharing可防止。
空连接和ipc$是不同的概念。空连接是在没有信任的情况下与服务器建立的会话,换句话说,它是一个到服务器的匿名访问。ipc$是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限。有许多的工具必须用到ipc$。默认共享是为了方便远程管理而开放的共享,包含了所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$)。
使用命令 net use \\\\IP\\ipc$ "" /user:"" 就可以简单地和目标建立一个空连接(需要目标开放ipc$)。
对于NT,在默认安全设置下,借助空连接可以列举目标用户、共享,访问everyone权限的共享,访问小部分注册表等,没有什么利用价值。对2000作用就更小了。而且实现也不方便,需借助工具。
2,为什么我连不上IPC$?
1,只有nt/2000/xp及以上系统才可以建立ipc$。如果你用的是98/me是没有该功能的。
2,确认你的命令没有打错。正确的命令是: net use \\\\目标IP\\ipc$ "密码" /user:"用户名"
注意别多了或少了空格。当用户名和密码中不包含空格时两边的双引号可以省略。空密码用""表示。
3,根据返回的错误号分析原因:
错误号5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限;
错误号51,Windows 无法找到网络路径 : 网络有问题;
错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。
错误号1326,未知的用户名或错误密码 : 原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况)
错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码。
3,怎样打开目标的IPC$?
首先你需要获得一个不依赖于ipc$的shell,比如sql的cmd扩展、telnet、木马。当然,这shell必须是admin权限的。然后你可以使用shell执行命令 net share ipc$ 来开放目标的ipc$。从上一问题可以知道,ipc$能否使用还有很多条件。请确认相关服务都已运行,没有就启动它(不知道怎么做的请看net命令的用法)。还是不行的话(比如有防火墙,杀不了)建议放弃。
4,怎样映射和访问默认共享?
使用命令 net use z: \\\\目标IP\\c$ "密码" /user:"用户名" 将对方的c盘映射为自己的z盘,其他盘类推。
如果已经和目标建立了ipc$,则可以直接用IP加盘符加$访问。比如 copy muma.exe \\\\IP\\d$\\path\\muma.exe 。或者再映射也可以,只是不用用户名和密码了:net use y: \\\\IP\\d$ 。然后 copy muma.exe y:\\path\\muma.exe 。当路径中包含空格时,须用""将路径全引住。
5,如何删除映射和ipc$连接?
用命令 net use \\\\IP\\ipc$ /del 删除和一个目标的ipc$连接。
用命令 net use z: /del 删除映射的z盘,其他盘类推。
用命令 net use * /del 删除全部。会有提示要求按y确认。
6,连上ipc$然后我能做什么?
能使用管理员权限的帐号成功和目标连接ipc$,表示你可以和对方系统做深入“交流”了。你可以使用各种命令行方式的工具(比如pstools系列、Win2000SrvReskit、telnethack等)获得目标信息、管理目标的进程和服务等。如果目标开放了默认共享(没开你就帮他开),你就可以上传木马并运行。也可以用tftp、ftp的办法上传。像dwrcc、VNC、RemoteAdmin等工具(木马)还具有直接控屏的功能。如果是2000server,还可以考虑开启终端服务方便控制。这里提到的工具的使用,请看自带的说明或相关教程。
7,怎样防止别人用ips$和默认共享入侵我?
A、一种办法是把ipc$和默认共享都删除了。但重起后还会有。这就需要改注册表。
1,先把已有的删除
net share ipc$ /del
net share admin$ /del
net share c$ /del
…………(有几个删几个)
2,禁止建立空连接
首先运行regedit,找到如下主键[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\LSA]把RestrictAnonymous(DWORD)的键值改为:00000001。
3,禁止自动打开默认共享
对于server版,找到如下主键[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters]把AutoShareServer(DWORD)的键值改为:00000000。
对于pro版,则是[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters]把AutoShareWks(DWORD)的键值改为:00000000。
如果上面所说的主键不存在,就新建一个再改键值。
B、另一种是关闭ipc$和默认共享依赖的服务(不推荐)
net stop lanmanserver
可能会有提示说,XXX服务也会关闭是否继续。因为还有些次要的服务依赖于lanmanserver。一般情况按y继续就可以了。
C、最简单的办法是设置复杂密码,防止通过ipc$穷举密码。但如果你有其他漏洞,ipc$将为进一步入侵提供方便。
D、还有一个办法就是装防火墙,或者端口过滤。
在成功建立空连接后,你能干什么呢?在NT4和Win2k的默认情况下,你可以枚举账户列表和共享文件信息。当在注册表中设置RestrictAnonymous=1 时,它能够帮你防止别人枚举你的相关信息(虽然不是完全的防止)。RestrictAnonymous=2 将会完全防止,只在Win2K中有效。
在WinXP中,注册表中的键值被重新定义了:
默认时,RestrictAnonymousSam=1 。这个将防治枚举账户信息。这个键值的定义说明是:“Do not allow anonymous enumeration of SAM accounts.”默认值是激活了这项功能(这意味着XP默认时不能通过空连接来枚举账户信息)。
默认时,RestrictAnonymous=0。这个将防治枚举SAM中的账户信息和共享信息。这个键值的定义说明是:“Do not allow anonymous enumeration of SAM accounts and shares”激活开关的键值应该是1。
RestrictAnonymous=2在XP上不再有效。
所以,在XP系统的默认设置情况下,你能够匿名连接并且枚举共享信息,但是不能枚举账户信息。
空连接*一直*都能够在NT4, Windows 2000, 和 Windows XP 的机器上实现。如果对方主机的相应服务是打开着的,并且没有关闭139或445端口,你便可以使用匿名进行连接,对方主机会对回复你说“Command completed successfully"(命令成功完成)。这些在NT4 到Win2K 到 XP 中都没有改变。
那什么被改变了呢?在成功建立空连接后,你能干什么呢?在NT4和Win2k的默认情况下,你可以枚举账户列表和共享文件信息。当在注册表中设置 RestrictAnonymous=1 时,它能够帮你防止别人枚举你的相关信息(虽然不是完全的防止)。RestrictAnonymous=2 将会完全防止,只在Win2K中有效。
在WinXP中,注册表中的键值被重新定义了:
默认时,RestrictAnonymousSam=1 。这个将防治枚举账户信息。这个键值的定义说明是:“Do not allow anonymous enumeration of SAM accounts.”默认值是激活了这项功能(这意味着XP默认时不能通过空连接来枚举账户信息)。
默认时,RestrictAnonymous=0。这个将防治枚举SAM中的账户信息和共享信息。这个键值的定义说明是:“Do not allow anonymous enumeration of SAM accounts and shares”激活开关的键值应该是1。
RestrictAnonymous=2在XP上不再有效。
所以,在XP系统的默认设置情况下,你能够匿名连接并且枚举共享信息,但是不能枚举账户信息。
总而言之,想要完全的禁止匿名用户连接,应该关闭139和445端口(通过IPSec端口过滤或Internet防火墙),或者在网络的协议属性中不选择“在Microsoft网络中共享文件和打印”。
原文:
Null sessions can *always* be established to NT4, Windows 2000, and Windows
XP machines. If the machine's server service is enabled, and ports 139 or
445 are available, then you can do a net use with anonymous credentials,
and the system will respond with "Command completed successfully". This
has not changed from NT4 to Win2K to XP.
What has changed, however, is what you are able to do once you establish
the null session. In NT4 and Win2K, by default, you could enumerate
information about users and shares. Setting RestrictAnonymous=1 would help
prevent against this enumaration (though not fully). RestrictAnonymous=2
(Win2K only) would fully prevent this enumeration.
On Windows XP, there are new registry keys:
RestrictAnonymousSam=1 is a default setting. This prevents detailed
enumeration of user accounts. This setting correlates with the
SecurityPolicy setting "Do not allow anonymous enumeration of SAM
accounts" with a default setting 'Enabled" (meaning the default of XP will
prohibit anonymous enumeration (R.A.SAM=1).
RestrictAnonymous=0 is a default setting. This correlates with the
SecurityPolicy Setting "Do not allow anonymous enumeration of SAM accounts
and shares". Set this policy to 'Enabled' (RA=1) to prevent anonymous
enumeration of shares.
RestrictAnonymous=2 (on XP) is no longer a valid setting.
So, by default, on an XP system, you can anonymously connect and enumerate
shares by default, but you cannot enumerate detailed user information.
To disable anonymous connections altogether, block access to tcp139/445
(IPSec port filters or Internet Connection Firewall), or uncheck "File and
Print Sharing for Microsoft Networks" from the network interface in
question (via the properties tab of the network connection).
前面我们成功利用了IPC$入侵了目标主机,不过目标主机是基于windows 2000的,如果将这种方法用于连接windows xp则不能成功,这里怀仁忘记说明白了,这是因为windows 2000和windows xp在网络登录上有所不同,下面怀仁将详细介绍他们的差异。
windows2000与XP网络登录的差别
先来看win 2000的,win 2000系统完全是按照你提拱的用户名和口令赋予登录权限的,也就是你用超级用户登录,也就是建立连接了,那你就可以得到超级用户的连接权限,你用GUEST登录,你得到的就是来宾权权限。
再来看win XP,这就和win 2000有点不同了,默认的win XP系统不是根据你提供的用户名和口令来赋予登录权限的,这点你可以在windows xp的帮助里找到。
依次打开“控制面板”“管理工具”“本地安全策略”,在“安全设置”“本地策略”“安全选项”中,打开“网络访问:本地帐户的共享和安全模式”。
Windows xp的网络登录有两种模式可用,有“典型和仅来宾”,如果将登录模式设置为“典型”,则登录过程使用客户提供的用户进行登录,登录成功后具有这个用户的权限,如果设置为“仅来宾”,则登录过程中不论是什么用户登录,如果登录成功,则自动映射到来宾帐户,也就是只有guest的权限,
简单的说,windows xp网络登录所获得的权限取决于系统的设置,如果网络访问模式为典型,那么你可以得到相应的权限,例如你有超级用户的密码,你得到的就是超级用户的权限,而如果网络访问模式为仅来宾,那么无论你用什么用户权限,即使你是超级用户,建立连接后得到的只能是Guset的权限,很不幸的是,windows xp系统默认设置是“仅来宾”。
这也是局域网中,有的朋友问我,为什么在局域网互访时,会出现要求输入用户名和密码对话框,就是因为开启了“经典”选项,修改为“仅来宾”即可解决。
网络登录的权限问题搞清楚了,下面我们扩展一下,当我们请求目标主机的时候都需要什么权限,IPC$很简单,在目标系统默认下,无论是Guest用户,Administrator用户,甚至NULL(空连接),都可以进行登录,而磁盘资源则不同,默认设置下,只能用administrator组的用户登录,也就是只能超级用户权限用户权限映射磁盘。
明白了windows xp的网络登录后,我们就回到了本节问题之初:局域网中,对方使用了windows xp,使用对方机器上的的超级用户ipc$连接,提示成功,想用net use Z: \ip\d$这个命令映射对方的D盘,却总是提示用户名和密码都不正确,即使是正确的用户名和密码,这是为什么呢?
怀仁博客里可以解答这个问题,这里许多网友查遍所有都找不到的答案,对方是windows xp系统,有了正确的超级用户的口令,用这个口令建立ipc$连接成功,可是映射磁盘不成功,原因就出在windows xp的“仅来宾”的默认设置上,不管你用什么口令登录,都是Guest权限,而映射磁盘必须是Administrator权限,所以,磁盘根本无法映射成功,ipc$可以连接成功,是因为建立ipc$连接不需用什么特别权限,任何用户口令甚至为NULL都可以。
下面怀仁总结一下,默认设置下,win 2000系统只要你有超级用户的权限,就可以获取目标上的任何共享资源,win xp系统就不同,因为默认设置是“仅来宾”,所以,无论你用什么用户登录,即使你有超级用户的口令,但登录后得到的权限仅仅是Guest.
有的入侵者会使用缓冲区溢出的方法入侵XP,由于windows xp的网络访问默认为guest的权限,所以缓冲区溢出主要目的在于提升Guest帐户的控制权限,并达到ipc$入侵的目的,可这种方法是利用了windows的各种漏洞,随着系统的升级,该漏洞可能已被微软修补,所在就不再介绍。有网友留言说,ipc$这是很久以前的东东了,是的,是很久以前,可是ipc$这个东东只要有电脑,就会存在,学好了,不比任何木马差,因为,IPC不是木马。明白了吗?
本文来源于怀仁博客 http://ttluck.com/ , 原文地址:http://ttluck.com/jichu/198/198.html
“网络访问:本地帐户的共享和安全模式”。xp的解释:
此安全设置确定如何对使用本地帐户的网络登录进行身份验证。如果将此设置设为“经典”,使用本地帐户凭据的网络登录通过这些凭据进行身份验证。如果将此设置设为“仅来宾”,使用本地帐户的网络登录会自动映射到来宾帐户。
经典模型允许更好地控制对资源的过度访问。通过使用经典模型,您可以针对同一个资源为不同用户授予不同的访问类型。通过使用仅来宾模型,您可以平等地对待所有用户。以来宾身份验证所有用户,它们都会得到相同的访问权限级别来访问指定的资源,这些权限可以为只读或修改。
有两种模型可用:
经典: 对本地用户进行身份验证,不改变其本来身份。
仅来宾: 对本地用户进行身份验证,其身份为来宾。
默认:
在 Windows XP Professional 上为“仅来宾”。
在 Windows Server 2003 家族和加入域的 Windows XP Professional 计算机上为“经典”。
重要信息:
使用“仅来宾”模型时,所有可以通过网络访问计算机的用户(包括匿名 Internet 用户)都可以访问共享资源。您必须使用 Internet 连接防火墙(ICF)或其他类似设备以防止对计算机进行未经授权的访问。同样,使用经典模型时,本地帐户必须受密码保护,否则,这些用户帐户可以被任何人用来访问共享的系统资源。
此设置仅影响未加入域的运行 Windows XP Professional 的计算机。
此策略将不会影响运行 Windows 2000 的计算机。
注意
此设置不会影响通过使用如 Telnet 或终端服务等服务远程执行的交互式登录。
计算机未加入域时,此设置也会将 Windows 资源管理器中的“共享和安全”选项卡修改为与正在使用的共享和安全模型对应的设置。