8_Password_Attacks

1 tech

1.1 Password Cracking

/usr/share/wordlists/rockyou.txt 

1.2 John The Ripper

john --single passwd

will use GECOS info, passwd: r0lf:$6$ues25dIanlctrWxg$nZHVz2z4kCy1760Ee28M1xtHdGoy0C2cYzZ8l2sVa1kIa8K9gAcdBP.GI6ng/qA4oaMrgElZ1Cb9OeXO4Fvy3/:0:0:Rolf Sebastian:/home/r0lf:/bin/bash

john --wordlist=<wordlist_file> <hash_file>
john --incremental <hash_file>

brute force

The --format argument can be supplied to instruct JtR which format target hashes have.

Cracking files

It is also possible to crack password-protected or encrypted files with JtR. Multiple "2john" tools come with JtR that can be used to process files and produce hashes compatible with JtR. The generalized syntax for these tools is:

capybaralalale@htb[/htb]$ <tool> <file_to_crack> > file.hash
capybaralalale@htb[/htb]$ locate *2john*

/usr/bin/bitlocker2john
/usr/bin/dmg2john
...

1.3 hashcat

identify the hashcat hash type by specifying the -m argument.

Dictionary attack (-a 0): hashcat -a 0 -m 0 e3e3ec5831ad5e7288241960e5d4fdb8 /usr/share/wordlists/rockyou.txt

Mask attack (-a 3):

Symbol
Charset

?l

abcdefghijklmnopqrstuvwxyz

?u

ABCDEFGHIJKLMNOPQRSTUVWXYZ

?d

0123456789

?h

0123456789abcdef

?H

0123456789ABCDEF

?s

«space»!"#$%&'()*+,-./:;<=>?@[]^_`{

?a

?l?u?d?s

?b

0x00 - 0xff

Custom charsets can be defined with the -1, -2, -3, and -4 arguments, then referred to with ?1, ?2, ?3, and ?4.

Let's say that we specifically want to try passwords which start with an uppercase letter, continue with four lowercase letters, a digit, and then a symbol. The resulting hashcat mask would be ?u?l?l?l?l?d?s.

1.4 Cracking Protected Files

One way to tell whether an SSH key is encrypted or not, is to try reading the key with ssh-keygen.

As shown below, attempting to read a password-protected SSH key will prompt the user for a passphrase:

2john

常用工具:ssh2john, office2john, pdf2john, zip2john, rar2john

1. SSH 私钥

2. Office 文档(Word/Excel/PPT)

3. PDF 文件

4. ZIP 压缩包

2 Remote Password Attacks

2.1 Network Services

核心工具概览

  • NetExec (nxc): 多协议枚举与爆破工具 (支持 WinRM, SMB 等)。

  • Hydra: 传统的在线密码爆破工具。

  • Evil-WinRM: WinRM 的专用 Shell 连接工具。

  • xFreeRDP: Linux 下的 RDP 客户端。

  • Metasploit (MSF): 渗透测试框架,用于替代 Hydra 处理复杂的 SMB 爆破。

  • Smbclient: SMB 文件交互客户端。

1. WinRM (Windows Remote Management)

  • 端口: TCP 5985 (HTTP) / 5986 (HTTPS)

  • 爆破工具: NetExec

    注: 如果看到 (Pwn3d!),表示该用户极大概率可以执行系统命令。

  • 连接工具: Evil-WinRM

2. SSH (Secure Shell)

  • 端口: TCP 22

  • 爆破工具: Hydra

  • 连接工具: OpenSSH Client

3. RDP (Remote Desktop Protocol)

  • 端口: TCP 3389

  • 爆破工具: Hydra

  • 连接工具: xFreeRDP

4. SMB (Server Message Block)

  • 端口: TCP 445

  • 爆破工具:

    • 方案 A (Hydra):

      注: 旧版 Hydra 可能不支持 SMBv3,会报错 invalid reply

    • 方案 B (Metasploit) - 推荐:

  • 枚举共享: NetExec

  • 连接/文件操作: Smbclient

2.2 Spraying, Stuffing, and Defaults

1. 密码喷洒 (Password Spraying)

  • 原理:与其对一个用户尝试所有密码(容易锁定账户),不如用一个常用密码(如 ChangeMe123!)去尝试所有用户

  • 适用场景:新员工入职默认密码、弱口令环境、Active Directory。

  • 工具NetExec (SMB/AD), Burp Suite (Web), Kerbrute

  • 命令示例 (NetExec)

2. 凭据填充 / 撞库 (Credential Stuffing)

  • 原理:利用互联网上泄露的用户名:密码对(Database Leaks),去尝试登录其他服务。

  • 核心逻辑:用户倾向于在不同平台复用相同的密码。

  • 工具Hydra

  • 命令示例 (Hydra)

    Bash

3. 默认凭据 (Default Credentials)

  • 原理:管理员部署设备(路由器、防火墙、数据库)后忘记修改出厂默认密码。

  • 常见目标:Linksys, Tomcat, Jenkins, IoT 设备等。

  • 工具

    • Default Credentials Cheat Sheet (Python工具):

    • 在线列表: RouterPasswords, Datarecovery.com 等。

    • 产品文档: 手册中通常包含默认设置说明。

3 Extracting Passwords from Windows Systems

3.1 核心架构与流程

Windows 的本地交互式登录是通过多个组件协同工作的。

简易流程:

WinLogon (处理交互) -> LogonUI (接收输入) -> Credential Provider (获取凭据) -> LSASS (验证核心) -> SAM 或 AD (数据对比)

1. 关键组件解析:

  • WinLogon (Windows Logon Process):

    • 职责:受信任的系统进程,负责管理安全相关的用户交互。

    • 功能:处理登录/注销、加载用户配置、锁定工作站、处理 SAS (Ctrl+Alt+Del)。

    • 动作:它是唯一能拦截键盘登录请求的进程。它启动 LogonUI 显示登录界面,并将凭据传递给 LSASS。

  • LSA (Local Security Authority):

    • 职责:受保护的子系统,管理本地安全策略、用户登录、审计日志生成以及用户名与 SID 的转换。

    • 范围:在域控制器 (DC) 上,LSA 管理整个域的策略(存储在 AD 中)。

  • LSASS (LSA Subsystem Service):

    • 定位:Windows 身份验证的守门人 (Gatekeeper)

    • 路径%SystemRoot%\System32\Lsass.exe

    • 职责:执行安全策略、验证用户、写入事件日志。

2. LSASS 内部的认证包 (DLLs)

LSASS 加载不同的 DLL 来处理不同类型的认证:

DLL 名称

描述

Lsasrv.dll

LSA 服务器服务,包含 Negotiate 函数(决定使用 NTLM 还是 Kerberos)。

Msv1_0.dll

用于本地机器登录(非域环境)或没有自定义认证的情况。

Kerberos.dll

处理基于 Kerberos 的认证(域环境主要协议)。

Samsrv.dll

SAM 服务器,存储本地账户和策略。

Netlogon.dll

处理网络登录服务。

Ntdsa.dll

用于在注册表中创建新记录(涉及 AD 交互)。

3. 凭据存储位置 (攻击目标)

攻击者在该阶段的主要目标是提取存储在磁盘或内存中的哈希值。

A. 本地认证:SAM 数据库 (Security Account Manager)

  • 用途:存储本地用户账号和密码哈希。

  • 哈希类型:通常为 LM 或 NTLM 哈希。

  • 文件位置%SystemRoot%\system32\config\SAM

  • 注册表挂载HKLM\SAM

  • 权限要求:需要 SYSTEM 权限才能访问。

  • SYSKEY:Windows NT 4.0 引入的机制,用于部分加密 SAM 文件,防止简单的离线破解。

B. 域认证:NTDS.dit (Active Directory)

  • 用途:当机器加入域后,凭据由域控制器 (DC) 验证。

  • 文件位置%SystemRoot%\ntds.dit (仅在域控制器上)。

  • 存储内容:整个域的用户账户(哈希)、组、计算机账户、GPO 等。

  • 同步机制:在所有 DC 之间同步(只读 DC 除外)。

C. 客户端缓存:Credential Manager (凭据管理器)

  • 用途:存储用户保存的网站、RDP 或网络共享的凭据。

  • 存储方式:按用户配置文件隔离,加密存储。

  • 位置C:\Users\[Username]\AppData\Local\Microsoft\[Vault/Credentials]\


4. 关键命令速查 (Cheatsheet 精选)

根据模块附带的 Cheatsheet,以下是针对本章节相关的攻击与提取命令:

连接与探测

  • RDP 连接: xfreerdp /v:<ip> /u:<user> /p:<pass>

  • WinRM 连接: evil-winrm -i <ip> -u <user> -p <pass>

  • SMB 连接: smbclient -U user \\\\<ip>\\SHARENAME

本地密码提取 (Windows Local Password Attacks)

  • 寻找含密码的文件: findstr /SIM /C:"password" *.txt *.ini *.config

  • 导出 SAM/System Hive (用于离线提取):

    DOS

  • 解析导出的 SAM: python3 secretsdump.py -sam sam.save -system system.save LOCAL

  • LSASS 内存转储 (Dump):

    (注:需先用 Get-Process lsass 获取 PID)

  • 解析 LSASS Dump: pypykatz lsa minidump /path/to/lsass.dmp

  • 复制 NTDS.dit (卷影复制技术):

远程密码攻击

  • SMB 密码喷洒: netexec smb <ip> -u user.list -p password.list

  • 提取 SAM (远程): netexec smb <ip> --local-auth -u <user> -p <pass> --sam

  • 提取 NTDS (远程): netexec smb <ip> -u <user> -p <pass> --ntds

  • 哈希传递 (PtH): evil-winrm -i <ip> -u Administrator -H "<passwordhash>"

3.2 Attacking LSASS

LSASS (Local Security Authority Subsystem Service) 是 Windows 的核心进程,负责执行安全策略和处理用户认证。关键点在于它会在内存中缓存用户的凭据(哈希、Kerberos 票据,有时甚至是明文)。

1. 创建内存转储 (Dumping LSASS)

目标是将 LSASS 进程的内存保存为 .dmp 文件,以便离线提取凭据。

  • 方法 A:任务管理器 (GUI)

    1. 打开任务管理器 -> 详细信息。

    2. 右键 lsass.exe -> 创建转储文件 (Create dump file)

    3. 文件通常保存在 %temp% 目录下。

  • 方法 B:命令行 (CLI - Rundll32) 此方法更灵活(无需 GUI),但容易被杀毒软件拦截。

    1. 查找 PID:

      • CMD: tasklist /svc | findstr lsass

      • PowerShell: Get-Process lsass

    2. 执行转储:

2. 离线提取凭据 (Analyzing Dump)

.dmp 文件传回攻击机 (Linux),使用 Pypykatz (Mimikatz 的 Python 实现) 进行解析。sudo python3 /usr/share/doc/python3-impacket/examples/smbserver.py -smb2support transfer .

  • 命令:

3. 关键输出字段

Pypykatz 会解析出不同认证包的数据:

  • MSV: 包含 NT Hash

    • 利用: 拿到 Hash 后使用 Hashcat (-m 1000) 破解,或进行哈希传递攻击。

  • WDIGEST: 旧协议,可能包含 明文密码 (Cleartext)。

    • 注意: 现代 Windows 默认禁用,若启用则直接显示密码。

  • Kerberos: 包含域名、用户名、票据数据。

  • DPAPI: 包含 MasterKey,可用于解密 Chrome 密码、Outlook 凭据等。

总结流程

  1. 获取 PID (目标机器)。

  2. Dump LSASS (目标机器 -> 生成 .dmp)。

  3. 传输文件 (目标机器 -> 攻击机)。

  4. 解析文件 (Pypykatz)。

  5. 破解/利用 (Hashcat 或 直接使用明文)。

3.3 Attacking Windows Credential Manager

1. 核心概念

Credential Manager (凭据管理器) 是 Windows 用于安全存储用户凭据(如网站密码、RDP、网络共享、Outlook 等)的功能。

  • 存储机制:凭据存储在用户的 AppData 目录下的 Vault(保险库)文件夹中。

  • 加密方式:使用 AES 密钥加密,而 AES 密钥由 DPAPI (Data Protection API) 保护。

  • 存储位置示例%UserProfile%\AppData\Local\Microsoft\Vault\

2. 枚举凭据 (Enumeration)

在无需管理员权限的情况下,我们可以查看当前用户保存了哪些凭据(但看不到明文密码)。

  • 命令:

  • 关键信息:

    • Target: 凭据适用的目标(如 Domain:interactive=SRV01\mcharlesWindowsLive:target=...)。

    • Type: Generic (通用) 或 Domain Password (域密码)。

    • Persistence: Local machine persistence 表示重启后依然存在。

3. 攻击方式 A:利用凭据 (Impersonation)

如果我们只想利用凭据执行命令,而不需要知道明文密码(例如用于横向移动),可以使用 runas 配合 /savecred

  • 原理:利用系统保存的凭据自动通过认证。

  • 命令:

    (执行后会弹出一个新的 CMD 窗口,拥有该用户的权限)

Using computerdefaults.exe:

This will automatically move me to the administrator profile.

Press enter or click to view image in full size

4. 攻击方式 B:提取明文 (Extraction)

如果需要获取明文密码,则需要使用工具解密 DPAPI 保护的数据。通常需要管理员权限或调试权限。

  • 工具: Mimikatz

  • 命令流程:

  • 其他工具: LaZagne, DonPAPI, SharpDPAPI

3.4 Attacking Active Directory and NTDS.dit

1. 基础概念

  • 认证变化:一旦 Windows 加入域,默认通过域控制器 (DC) 验证身份,不再默认使用本地 SAM 数据库(除非显式指定 Hostname\User.\User)。

  • NTDS.dit:AD 的核心数据库文件,存储所有域用户、密码哈希等信息。位置通常在 %systemroot%\ntds\NTDS.dit

  • 前提条件:通常需要内网立足点(Foothold)或通过端口转发访问。


2. 对AD账户进行暴力破解

bash

注意:这种攻击会产生大量日志(Event ID 4776),容易被检测,也可能触发账户锁定策略。


3. 获取 NTDS.dit 文件

NTDS.dit 是 AD 的核心数据库,存储所有域用户的密码哈希,位置:%systemroot%\ntds\NTDS.dit

前提条件:需要 Domain AdminAdministrators 权限

方法一:手动提取

在攻击机上设置SMB共享

方法二:NetExec 一键提取(推荐)


4. 提取和破解哈希

从 NTDS.dit 提取哈希(需要同时有 SYSTEM 文件):

用 Hashcat 破解 NTLM 哈希


5. Pass the Hash(哈希传递攻击)

原理:NTLM 认证协议允许直接使用哈希进行认证,无需明文密码。当无法破解哈希时可用此方法。

bash

应用场景:横向移动、权限提升

3.5 Credential Hunting in Windows

一、概述

Credential Hunting(凭据搜寻) 是在获得目标 Windows 系统访问权限后,通过详细搜索文件系统和各种应用程序来发现凭据的过程。

核心思路:根据目标系统的用途来决定搜索方向。例如,如果是 IT 管理员的工作站,就要考虑管理员日常工作中哪些任务需要凭据(SSH连接设备、访问文件服务器、管理数据库等)。


二、常用搜索关键词

在搜索凭据时,可以使用以下关键词:


三、搜索工具和方法

1. Windows 搜索(GUI)

如果有图形界面访问权限,可以直接使用 Windows 搜索功能:

  • 在搜索栏输入关键词(如 "password")

  • 系统会搜索 OS 设置和文件系统中匹配的文件和应用


2. LaZagne 工具

功能:自动从各种应用程序中提取不安全存储的凭据

支持的模块

使用方法

传输方法:如果使用 xfreerdp 连接,可以直接复制粘贴文件到 RDP 会话中。


3. findstr 命令

功能:在多种文件类型中搜索指定模式

参数说明

  • /S - 在当前目录和所有子目录中搜索

  • /I - 忽略大小写

  • /M - 只打印包含匹配项的文件名


4. Windows Credential Manager


四、其他重要凭据存放位置

网络共享和域环境

用户系统和文件


五、浏览器凭据提取

浏览器是凭据搜寻的重点目标,因为很多用户会保存登录信息。

主流浏览器凭据都是加密的,但可以用工具解密:

  • firefox_decrypt - 解密 Firefox 密码

  • decrypt-chrome-passwords - 解密 Chrome 密码

  • LaZagne 的 browsers 模块支持 35 种浏览器


六、网络共享搜索工具

4 Extracting Passwords from Linux Systems

4.1 Linux Authentication Process

一、Linux 认证机制

PAM(Pluggable Authentication Modules)

Linux 使用 PAM 作为主要认证机制,核心模块如 pam_unix.sopam_unix2.so 位于:

PAM 功能

  • 用户信息管理

  • 认证验证

  • 会话管理

  • 密码更改

当用户执行 passwd 命令修改密码时,PAM 负责处理和存储密码信息。


二、关键认证文件

1. /etc/passwd 文件

权限:所有用户可读(world-readable)

格式:7个字段,用冒号分隔

密码字段的含义

  • x → 密码存储在 /etc/shadow 文件中(现代系统标准做法)

  • 实际哈希值 → 非常老的系统可能直接存储哈希(安全风险)

  • 空 → 无需密码即可登录

安全漏洞:如果 /etc/passwd 被错误配置为可写,攻击者可以删除 root 的密码字段:


4. /etc/security/opasswd 文件

用途:存储用户的旧密码,防止密码重用

权限:仅 root 可读

攻击价值

  • 旧密码可能使用弱哈希算法(如 MD5)

  • 用户往往重复使用相似密码

  • 识别密码模式有助于猜测当前密码


三、破解 Linux 凭据

完整流程

Step 1:复制认证文件(需要 root 权限)

Step 2:合并文件(unshadow)

Step 3:使用 Hashcat 破解

或使用 John the Ripper


Hashcat 模式对照

image-20251126030740795

四、安全检查要点

配置错误检查

常见安全问题


五、命令速查

4.2 Credential Hunting in Linux

git clone https://github.com/unode/firefox_decrypt.git

5 Extracting Passwords from the Network

5.1 Credential Hunting in Network Traffic

虽然现代应用大多使用 TLS 加密敏感数据,但仍存在以下情况可能导致凭据明文传输:

  • 遗留系统:老旧系统未升级

  • 配置错误:服务未正确配置加密

  • 测试环境:未启用 HTTPS 的测试应用

这些漏洞为攻击者提供了从明文流量中获取凭据的机会。


常见协议对照表


三、Wireshark 使用

常用过滤器

高级过滤器

搜索凭据

方法一:显示过滤器

方法二:手动搜索

  • 菜单:Edit > Find Packet

  • 输入搜索字符串(如 "passw"、"password")

  • 选择搜索类型:String

常见搜索关键词

  • password, passwd, passw, pwd

  • username, user, login

  • credential, auth, token


四、Pcredz 工具

功能

Pcredz 可从网络流量中自动提取以下凭据:

使用方法

五、实战流程

1. 使用 Wireshark 分析

2. 使用 Pcredz 快速提取

3. 关注的协议


六、命令速查

5.2 Credential Hunting in Network Shares

MANSPIDER

If we don’t have access to a domain-joined computer, or simply prefer to search for files remotely, tools like MANSPIDER allow us to scan SMB shares from Linux. It's best to run MANSPIDER using the official Docker container to avoid dependency issues. Like the other tools, MANSPIDER offers many parameters that can be configured to fine-tune the search. A basic scan for files containing the string passw can be run as follows:

6 Windows Lateral Movement Techniques

6.1 Pass the Hash (PtH)

一、概述

什么是 Pass the Hash?

Pass the Hash (PtH) 是一种攻击技术,攻击者使用密码哈希而非明文密码进行身份认证。由于 NTLM 协议的特性,密码哈希在密码更改前保持不变,因此可以直接用于认证。

核心优势:无需破解哈希获取明文密码


哈希获取途径


NTLM 协议特点Microsoft's Windows New Technology LAN Manager (NTLM)

  • Windows 的 SSO(单点登录)解决方案

  • 使用质询-响应协议验证身份

  • 密码哈希不加盐(unsalted)→ 可直接用于认证

  • 虽然 Kerberos 是现代 AD 默认认证机制,但 NTLM 仍广泛用于兼容性


二、Windows 工具

1. Mimikatz

模块sekurlsa::pth

必需参数

命令示例

结果:打开一个以目标用户身份运行的 cmd 窗口,可访问该用户有权限的资源。


2. Invoke-TheHash (PowerShell)

特点

  • 使用 WMI 或 SMB 执行命令

  • 客户端不需要本地管理员权限

  • 目标用户需要在目标机器上有管理员权限

参数

SMB 方式执行命令

WMI 方式获取反弹 Shell

Step 1:启动监听

Step 2:生成 PowerShell 反弹 Shell

(使用 revshells.com)To create a simple reverse shell using PowerShell, we can visit revshells.com, set our IP 172.16.1.5 and port 8001, and select the option PowerShell #3 (Base64), as shown in the following image.

Step 3:执行


三、Linux 工具

1. Impacket 套件

impacket-psexec

其他可用工具

  • impacket-wmiexec. https://github.com/SecureAuthCorp/impacket/blob/master/examples/wmiexec.py

  • impacket-atexec. https://github.com/SecureAuthCorp/impacket/blob/master/examples/atexec.py

  • impacket-smbexec. https://github.com/SecureAuthCorp/impacket/blob/master/examples/smbexec.py


2. NetExec

批量扫描(密码喷洒)

输出解读

  • [+](Pwn3d!) → 认证成功且有本地管理员权限

  • [-]STATUS_LOGON_FAILURE → 认证失败

执行命令

注意:密码喷洒可能触发账户锁定策略,建议使用 --local-auth 进行单次尝试。


3. Evil-WinRM

适用场景:SMB 被阻止或需要 PowerShell 远程访问时


4. xfreerdp (RDP PtH)

前提条件:目标必须启用 Restricted Admin Mode(默认禁用)

在目标上启用 Restricted Admin Mode

执行 RDP PtH


四、UAC 对 PtH 的限制

LocalAccountTokenFilterPolicy

位置HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy

FilterAdministratorToken

重要:这些限制仅适用于本地账户。域管理员账户不受影响。


五、命令速查表

Windows

Linux

6.2 Pass the Ticket (PtT) from Windows

一、概述

什么是 Pass the Ticket?

Pass the Ticket (PtT) 是一种横向移动技术,使用窃取的 Kerberos 票据(而非 NTLM 哈希)进行身份认证和访问资源。


Kerberos 协议回顾

认证流程Key Distribution Center (KDC),

  1. 用户用密码哈希加密时间戳 → 发送给 DC

  2. DC 验证后返回 TGT

  3. 用户用 TGT 向 KDC 请求 TGS

  4. 用 TGS 访问目标服务

关键点:获得 TGT 后,无需再提供密码即可请求任何服务票据。


PtT 攻击可用的票据


二、票据收集

Windows 票据存储

票据由 LSASS 进程处理和存储:

  • 普通用户:只能获取自己的票据

  • 本地管理员:可收集所有票据


方法一:Mimikatz 导出票据

结果:生成 .kirbi 文件

文件名格式

  • [0;6c680]-2-0-40e10000-plaintext@krbtgt-inlanefreight.htb.kirbi

  • $ 结尾 → 计算机账户票据

  • @krbtgt → TGT 票据


方法二:Rubeus 导出票据

结果:Base64 格式票据(便于复制粘贴)


提取 Kerberos 密钥

输出密钥类型

  • aes256_hmac - AES-256 密钥(推荐使用)

  • rc4_hmac_nt - NTLM 哈希(可能被检测为降级攻击)


三、Pass the Key / OverPass the Hash

概念

将哈希/密钥转换为完整的 TGT 票据,然后用于认证。


Mimikatz 方式

注意:需要管理员权限


Rubeus 方式

优势:不需要管理员权限

注意:使用 RC4(NTLM)可能被检测为"加密降级"攻击,建议使用 AES 密钥。


四、Pass the Ticket 攻击

Rubeus - 请求并导入票据


Rubeus - 导入已有票据


Mimikatz - 导入票据


验证票据导入


.kirbi 转 Base64


五、PowerShell Remoting + PtT

端口

权限要求

  • 管理员权限,或

  • Remote Management Users 组成员,或

  • 显式 PS Remoting 权限


Mimikatz + PowerShell Remoting


Rubeus + PowerShell Remoting

createnetonly 作用:创建新的登录会话(Logon type 9),防止覆盖当前会话的 TGT。


六、命令速查表

票据收集

Pass the Key / OverPass the Hash

Pass the Ticket

PowerShell Remoting


七、PtH vs PtT 对比


八、注意事项

  • AES vs RC4:现代 AD(2008+)默认使用 AES,使用 RC4 可能触发降级攻击检测

  • 票据有效期:TGT 通常 10 小时有效,7 天内可续期

  • 权限要求:Mimikatz 的 sekurlsa 模块需要管理员权限,Rubeus 的 asktgt 不需要

  • 牺牲进程:使用 createnetonly 避免覆盖当前会话票据

6.3 Pass the Ticket (PtT) from Linux

一、概述

Linux 系统也可以加入 Active Directory 域,使用 Kerberos 进行认证。如果攻陷了域加入的 Linux 机器,可以寻找 Kerberos 票据来冒充其他用户。


二、Linux 上的 Kerberos 票据存储

image-20251127012009857

关键环境变量


三、识别 Linux 是否加入域

方法一:realm 命令

输出信息

  • 域名、认证类型

  • 允许登录的用户和组

  • 客户端软件(sssd/winbind)

方法二:检查服务进程


四、查找 Kerberos 票据

查找 KeyTab 文件

常见位置

  • /etc/krb5.keytab - 计算机账户的 keytab(root 可读)

  • 用户自定义位置 - 脚本中使用的服务账户 keytab

查找 ccache 文件

注意

  • 普通用户只能读取自己的 ccache

  • root 可以读取所有用户的 ccache


五、滥用 KeyTab 文件

查看 KeyTab 信息

使用 KeyTab 冒充用户

提示:在导入新 keytab 前,备份当前 ccache 文件以保留原有票据。

从 KeyTab 提取哈希

用途

  • NTLM 哈希 → Pass the Hash 攻击或破解密码

  • AES 哈希 → 伪造票据或破解密码


六、滥用 ccache 文件

前提条件

需要 root 权限来读取其他用户的 ccache 文件。

查找可用票据

导入 ccache 票据

注意:检查票据的 "Valid starting" 和 "Expires" 时间,过期票据无法使用。


七、Linux 攻击工具与 Kerberos

环境准备(非域成员机器)

1. 配置 /etc/hosts

2. 配置代理(如需要)

3. 设置票据环境变量

Impacket 工具

Evil-WinRM

安装 Kerberos 包

bash

配置 /etc/krb5.conf

ini

使用


八、票据格式转换

ccache ↔ kirbi 转换

在 Windows 上导入转换后的票据


九、Linikatz 工具

功能:Linux 版 Mimikatz,自动提取域加入 Linux 机器上的所有凭据

支持的集成

  • FreeIPA

  • SSSD

  • Samba

  • Vintella

  • PBIS

输出:在 linikatz.*/ 目录下生成 ccache 和 keytab 文件


十、命令速查表

票据查找

KeyTab 操作

ccache 操作

票据转换

攻击工具

Last updated