域控安全基础.md

时间:2022-07-28
本文章向大家介绍域控安全基础.md,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

[TOC] 注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

如果做过大型服务器的windows运维的朋友可能会了解到域控,使用它方便我们对域内主机的进行安全统一的管理;(想要更深入了解请百度百科)

AD的基础概念:

  1. AD是微软实现的目录服务,基于X.500工作在应用层,AD使用”Kerberos”认证用户以及使用LDAP来递归目录信息
  2. DC控制所有用户,用户信息,计算机,以及策略.主要工作就是认证用户
  3. 在AD中所有网络资源都叫对象(Object),包括计算机,用户,打印机等等
  4. 域(Domain)是安全的边界.域内的对象可以彼此共享数据,所有对象的信息存储在DC中(ntds.dit)
  5. Domain 域 ->tree 树->Forest 森林

注意: 下面都是win系统自带的命令,有的时候windows Server 版本不同,有的命令会不存在,所以多一种方法多一种成功的可能性,实际渗透自行根据目标环境变换;

学习参考:https://pentestlab.blog/tag/ntds-dit/ http://carnal0wnage.attackresearch.com/2015/12/more-with-smbclient-smbget-enum4linux.html

0x00 域信息收集

1.判断域

首先要判断所控主机是否在域内:

net share  #查看是否存在syslog
set log    #判断当前登陆服务器 LOGONSERVER=\DESKTOP-OVF3TEN
net time /domain        #存在域不确定,但当前用户不是域用户 存在域,且当前用户是域用户会从域控返回当前时间
net config workstation  #查看是否有域
systeminfo              #域及登陆服务器项
ipconfig /all           #注意DNS是否是内网的地址
netsh interface ipv4 show dnsservers   #也可以在本地连接中查看(效果同上)
servermanagercmd -query    ##server中查看是不是安装域控制器 
##转移架构主机角色
    依次单击开始和运行,在打开框中键入 mmc,然后单击确定。
    在文件菜单上,单击“添加/删除管理单元”。
    单击添加。
    依次单击 Active Directory 架构、添加、关闭和确定。
    在控制台树中,右键单击 Active Directory 架构,然后单击更改域控制器。
    单击指定名称,键入将成为新角色持有者的域控制器名称,然后单击确定。
    在控制台树中,右键单击 Active Directory 架构,然后单击操作主机。
    单击更改。
    单击确定以确认您要转移该角色,然后单击关闭。

WeiyiGeek.workstation

2.域信息

判断存在域后通过以下操作进行域内信息搜集

#我们拿到机器权限的时候有两种可能: 本地用户与域用户
> whoami
win-03administrator   #本地用户 不能直接提升为 ntauthoritysystem,SYSTEM用户权限(受到域管理)
WeiyiGeekadministator  #域用户
##注意:
1. 本质上所有查询都是通过ldap协议去域控制器上查询,但是查询需要经过权限认证,只有域用户才有这个权限。
2. 当域用户运行查询命令时,会自动使用kerberos协议认证,无需额外输入账号密码。
3. SYSTEM用户的情况比较特殊,在域中除了普通用户外,所有机器都有一个机器用户,用户名是机器名后加$,本质上机器上的SYSTEM用户对应的就是域里面的机器用户,所以SYSTEM权限是可以运行查询命令的;(最高权限的存在)

> net view /domain    #查看有几个域
> net user /domain      #查看域用户 常常存在krbtgt用户
> net view /domain:XXX   #查看此域内电脑
> net group /domain       #查看是不是存在域组账户
> net group "domain computers" /domain #查看加入到域内的所有计算机名
> net group "domain admins" /domain  #查看管理员登陆时间,密码过期时间,是否有登陆脚本,组分配等信息
> net group "domain controllers" /domain # 查看域控制器 (注意通过该指令得到的机器名后面会多一个$符号)
> net user zhangsan /domain       #获得指定账户的详细信息
> net accounts /domain  #获得域密码策略设置/密码长短/错误锁定等信息

> nslookup -type=SRV _ldap._tcp.corp  ##通过srv记录
  Server: dj0116w-dc03.motor.csr.com
  Address: 10.169.0.36


#在域中时定位域控
> nltest /dsgetdc:域名      # 定位域控
> nltest /dclist:domain-a  #或者使用dc列表其中pdc是主域控
> nltest /domain_trusts  可以列出域之间的信任关系

> dsquery server         #得到域控制器的IP:
> dsQuery Server -domain corp  ##使用dsquery查询 

> netdom query pdc  ##使用netdom查询
#返回的信息
  Primary domain controller for the domain:
  DJ0116W-DC01
  The command completed successfully.

WeiyiGeek.dsquery-server

3.域控连接

IPC$的正确连接姿势:

#Windows
net use \172.31.4.212ipc$ “password" /user:corp.pentest.labadministrator
net use \172.31.4.212ipc$ “password" /user:administrator

#Linux
sudo apt install smbclient
$ smbclient -L 172.31.4.212 -U administrator
$ smbclient \\172.31.4.212\C$ -U administrator
$ smbclient -L 172.31.4.212 -U corp.pentest.lab/administrator

#命令参考
http://carnal0wnage.attackresearch.com/2015/12/more-with-smbclient-smbget-enum4linux.html


$ rpcclient -U corp.pentest.lab/administrator 172.31.4.212
rpcclient $> enumdomusers
user:[Administrator] rid:[0x1f4]
user:[Guest] rid:[0x1f5]
user:[krbtgt] rid:[0x1f6]
user:[employeeA] rid:[0x454]
rpcclient $> queryuser 0x1f4

#命令参考
https://bitvijays.github.io/LFF-IPS-P3-Exploitation.html#active-directory-reconnaissance


#在OSX上找DC的方法(当前机器已经加入了DOMAIN)
dsconfigad -show | awk '/Active Directory Domain/{print $NF}'
corp.pentest.lab

$ host -av _ldap._tcp.corp.pentest.lab
dc-CN-02.corp.pentest.lab. 384	IN	A	172.1.0.201
dc-CN-01.corp.pentest.lab. 780	IN	A	172.1.227.69
dc-APCN-02.acorp.pentest.lab. 691	IN	A	172.1.227.12

一键导出当前域的所有用户信息
$ ldapsearch -h 172.31.4.212 -p 389 -x -b "cn=sers,dc=corp,dc=pentest,dc=lab" -W -D administrator
Enter LDAP Password: 
对于用户多的域环境,慎用该命令,输出文件会非常大*

执行AD远程帐号破解时,了解账户策略很重要
配置AD帐号策略以及AD远程帐号破解
C:UsersAdministrator>net accounts /domain
4.域安全

Runas /netonly 妙用蜜罐来防止域控被攻击并进行预警:

C:>runas /netonly /user:corp.pentest.labadministrator cmd

#建立蜜罐账户和Mimikatz的使用
runas /netonly /user:corp.pentest.labhoneypot cmd

WeiyiGeek.蜜罐

使用runas得好处:

  1. 可以在一台机器上产生多个用户上下文的CMD窗口
  2. 只有在有网络连接的时候才产生身份CHECK
  3. 在加入域和没加入域的主机上都可以运行
  4. 通过设置蜜罐用户和登录日志排查,可以检测当前网络是否有人运行了类似Mimikatz的工具DUMP了用户的HASH

WeiyiGeek.runas

0x01 学习参考网站(Reference)

https://adsecurity.org/ https://attack.mitre.org/ https://github.com/CyberMonitor/APT_CyberCriminal_Campagin_Collections