内网渗透:破解管理员的空格密码

前言

一客户,指定要给其公司做安全测试可从网络层面做,也可以人肉社工 :) 对于一个小清新来说,怎么可以做人肉社工呢,要是把对方公司的妹子骗走怎么办,于是果断交给单身的同事去做了,自己默默的看站,客户扔过来的一个域名,域名是a.com,其他什么信息都没有。

信息收集

Google搜了下,得到了一批二级域名;开起kali用fierce来一轮域名枚举,成功枚举出某域名下的子域名列表。

可 以看到邮件服务器的域名是mail.a.com,采用微软的exchange所搭建。再用Nslookup看了下mx记录,发现是smtp1.a.com,smtp2.a.com,也就是说目标邮件服务器不是用的腾讯或者谷歌之类的企业邮箱,而是他们自己的邮件服务器。因为一般这种情况下邮件服务器所在的ip地址段就是目标公司真实的ip地址段。于是剔除掉不在其ip段的域名,将目标锁定在mail.a.com所在的网段开始一系列的扫描。

内网渗透

经过一轮前端扫描,成功的扫到一个存在漏洞的二级域名,姑且称其为vulnerable.a.com。该网站用wordpress所搭建,但是由于管理员的疏忽,在网站其中的一个文件夹还搭建了另一套测试系统,该系统在安全防护上较为薄弱,因此通过sql注入跨库查询到wordpress管理员帐号密码,成功登录到网站后台。由于wordpress后台拿webshell网上有不少教程了,这里就不再赘述。拿到webshell之后执行了下whoami命令发现权限是nt authority\system,估计是管理员疏忽没有做降权操作。
得到了webshell,首先看看内网是什么结构,net time /domain看了下,没有回显;ipconfig /all得到如下结果。

Net view 查看下周边机器情况得到如下结果,目测是工作组环境了

但是Exchange是基于域来搭建的,已经拿下来的这台网站服务器所处的环境是工作组,经过进一步的分析发现这几台内网服务器并没有涉及到目标的核心服务,因此初步判定网站服务器位于目标内网的DMZ区。继续搜集各种信息,首先netstat -ano看一下端口连接情况,很意外的发现有几个内网IP连接了过来,另一方面服务器连接到了内网一个IP的1433端口。姑且不去分析管理员到底在这台 服务器上做了什么操作,但是能肯定的是内网的访问控制肯定没做好。一般来说,当规划一个拥有DMZ的网络时候,DMZ访问内网要有限制,否则当入侵者攻陷 DMZ时,就可以进一步进攻到内网的重要数据。接着net start命令查看服务器开了什么服务,发现服务器用的杀软是金山毒霸。立刻着手免杀了个htran丢上去做个socks5代理方便下一步的渗透工作,经过扫描发现内网存在几台开了1433端口的服务器,习惯性的用sa用户名123456作为密码成功的连接上了其中一台数据库服务器。执行了一系列的命令后发现,主要的服务器都部署在域当中。

屡屡受挫

很不幸在数据库服务器上没有抓取到域管理员的哈希,只得到了一个普通域成员密码。通过这个普通成员的密码尝试登录内网的其他机器,在某台机器上居然抓到了其中一个域管理的哈希,当时很兴奋的尝试用破出来的管理员密码去登录域控,很可惜登录失败了。Net user 后发现管理员在一个月前修改过密码。所以抓到的这个历史密码也毫无意义了。期间尝试过可能会出现的密码组合以及管理员的习惯去加以尝试,均以失败告终。因为在内网踩点时得知域控服务器是Windows2008,因此尝试用Windows GPP安全问题去碰碰运气,结果域管理员根本就没有设置过组策略,也没有设置过什么登录脚本,因此这条路子就此夭折。又经过了半个月的测试,一天,不知道是什么原因引起管理员的注意,管理员在清理掉了我的webshell之后还在网络边界安装了个waf,导致无论是中国菜刀还是K8飞刀,只要有post过去的敏感数据都被重置连接了,这一时半会也找不到什么好的替代品,只能重新找个大马凑合着用。另一方面waf还定义的很多狗血的规则,一旦在web服务器上上传了大小超过100K的文件就会提示数据包长度超出,一时间渗透的思路就断了。

希望之光

遇到这种情况就应该吃根辣条冷静下。虽然大马在用起来有诸多不便,但是管理员还是没把权限降下来,webshell依旧是system权限;尝试连接内网的数据库服务器,sa密码也没有更改。但是socks5代理已经无法正常使用,估计是内网也做了一定的安全防护。于是着手写个VBS脚本去连接内网的那台数据库服务器来执行域命令。看了下之前被我关掉的那台服务器还是没开起来……再次使用net user 命令查看域管理员的信息,几天下来发现管理员登录次数还是很频繁的,看来还是只能通过蹲点碰运气去抓管理员的哈希了。此时因为不能轻易登录域内其他服务器 导致打草惊蛇,因此用一个更简单的方法去刺探管理员是否登录某台域内服务器。在命令提示符下输入“Tasklist /s x.x.x.x /u username  /p password /v”(不包括引号)即可查看到IP地址为x.x.x.x 的远程系统的进程。/u后指Tasklist命令使用的用户账号,它必须是远程系统上的一个合法账号,/p后的“password ”指的是该用户的密码。写一个批处理,定时的对可以登录的域内服务器去跑,查看管理员是否曾经登录过,经过了漫长的等待,终于得到了回报,发现其中一台服务器上有域管理员登录过

当时马上操家伙上去把哈希抓了,破解后尝试登录域控。但现实是残酷的,还是提示登录错误!抱着绝望的心态再次net user查看了下管理员的信息,发现管理员在一天前刚修改了密码。虽然结局很悲伤,但是值得欣慰的是这个办法是有效的,只要坚持不懈就能成功的搞定域管理员。

几近崩溃

又是一段漫长的等待,某天又在另一台域内服务器看到了类似上图的结果,抱着崩溃的心情再次去抓取了管理员哈希,破解后登录域控制器,结果还是提示密码错误。但是这次的结果很蹊跷,我反复的查询发现管理员在这段期间并没有修改密码。但是为什么无法登录就不得而知了。后来和朋友聊到这个事情,他说既然搞不定,就先放放聊聊说不定有思路呢,来聊点开心的,前些日子他说他恶搞了一个他讨厌的人,那娃通过社工得到了对方的论坛密码,然后很邪恶的修改密码在其原始密码处加了两个空格,因为那个论坛在找回密码的时候是会把密码发送到注册邮箱的,不提供直接修改密码的功能。因此这招非常的阴险,一般人来说怎么会注意到密码后面多了几个空格呢。

峰回路转

这阴损招数倒是提醒了我,因为我在最后一次抓哈希的时候,我很确定对方管理员在期间是没有修改过密码的,所以破出来的密码应该是不存在任何问题。难道是管理员在密码后加有空格!果然,我仔细的观察了在那在线破解哈希的网站所破出来的密码后,后边居然跟了3个空格!拿着这个逗比密码,成功的登录了域控,抓到了所有人的哈希,整个渗透终于告一段落。最后得出个结论:如果不够细心,就算幸运之神眷顾了自己,还是无法获得成功的。Game over。

[via@sobug]