渗透-细节决定成败[1]

细节决定成败,不但对于写程序、渗透入侵甚至人生都是如此。谈人生就有点深奥了,还是来谈谈入侵吧。记得很久前有一位同事,注入的时候,在sa权限什么命令都能执行的情况下竟然入侵花费了三天左右的时间,为什么呢?这是因为他在NBSI下输了个time命令,想看下服务器的时间,结果命令无法应答,注入点宕在哪儿了,再也没办法执行其它命令了,直到服务器重启。有的写的不好的木马,如果执行time命令也会自动退出。如果注意到了这个细节的话,最好的执行办法就是time /t。
这一期我不谈注入,针对我在内网入侵的经验,来谈一下细节吧。

1、系统自带命令的细节
拿到系统权限后,常会想到收集机器的信息。例如看看共有几个盘,难道要一个一个的去cd盘符吗?2003系统的话就不必如此了,有一个命令很是方便:●fsutil.exe fsinfo drives●,可以列出全部盘符了(图1)。

 

图1
当然,这个命令还有其它的用途,大家自己搜索研究吧。也许还有人说,●systeminfo命●令更强大吧,看到的应当更多,当然个人有个人的爱好,像我还喜欢用●start /wait msinfo32.exe /nfo swenv.nfo /categories +swenv-swenvprogramgroup-swenvstartupprograms●,这个示例收集了软件环境信息,但是不包括“程序组”和 “启动程序”子类别,所创建的 .nfo 文件可以使用 Msinfo32.exe 读取(图2、图3)。

 

 

 

 

大家自己执行一下,就会看到有多么强大了。另外,在域内网里如何判读哪台机器属于哪个域呢?当然命令也许有多个,最好用的应当还是net config Workstation。说到net命令,其实对这个命令我还有一个独门绝技,用它来判读主域服务器。怎么判断呢?主域服务器一般也做为时间服务器,所以在域权限下用net time /domian的话,主域服务器的主机名立马拿来。其实如果每个命令我都打一个示例的话,再抓一个图,这篇文章就会很长,但是这里只起个抛砖引玉吧,只把我最常用的命令示例写出来,剩下的大家自己研究吧。

2、常用工具的细节
内网入侵后,通常做法是抓出用户的hash来破密码,再试下别的机器是否同密码。抓hash,有三个基本的工具。●pwdump4、gethashes、 fgdump●,这三个exe大家应当都可以通过百度来搜索到。我常用的是gethashes,当gethashes无能为力的时候再请出fgdump。不过我以前喜欢用pwdump4,一般情况下●pwdump4 /l●就会抓出机器的密码HASH值。但是有人会发现,pwdump4 /l在3389里用不了。编辑文章时常看到有人入侵了3389,然后就说丢个 pwdump4上去抓hash,结果再也无话了。我估计这样的人都没有仔细操作。在3389情况下,正确用pwdump4 /l的方法是先用●psexec \ip -u username -p password cmd.exe●得到这个用户身份的shell,然后再来用这个命令。说到psexec,我就想到了一个有趣的事情。以前我在公司负责招人的时候,主要是招对渗透有经验的人。由于要考虑到招的人对内网的渗透水平,我会出这样一道测试题。两台机器一模一样的配置,用户和密码都是相同的,两台之间只开了139 和445互相通讯,其它端口不开,不过有一台可以溢出得到最高权限,别一台不可以。此时你溢出了一台,在溢出的cmdshell情况下如何再控制另一台? 其实这道题我考的是被招的人对权限的认识。溢出的时候,是system权限的,此时要在这个权限的cmdshell下ipc$另一台机器是不可以的,也是先要用●psexec \ip -u username -p password cmd.exe(我只是示例,在溢出的shell下正确命令应当用nc反弹这个psexec的命令才能得到cmdshell)●得到这台溢出机器的用户权限shell,此时两台机器密码用户名都相同,直接可以dir \ip2c$了,连ipc$连接也不用做。
这期的细节我先谈这两点吧,下期我们再来.

本文作者lcx由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理.