zoukankan      html  css  js  c++  java
  • IPC,一直被人们忽视的“东西”。

    IPC(instruction per clock)

    实际上是频率和IPC在真正影响CPU性能。准确的CPU性能判断标准应该是:CPU性能=IPC(CPU每一时钟周期内所执行的指令多少)×频率(MHz时钟速度),这个公式最初由英特尔提出并被业界广泛认可。

    通信

    IPC 进程间通信
    IPC(Inter-Process Communication)是共享"命名管道"的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC是NT/2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。NT/2000在提供了ipc功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c,d,e……)和系统目录winnt或windows(admin)共享。所有的这些,微软的初衷都是为了方便管理员的管理,但在有意无意中,导致了系统安全性的降低。
    平时我们总能听到有人在说ipc漏洞,ipc漏洞,其实ipc并不是一个真正意义上的漏洞,我想之所以有人这么说,一定是指微软自己安置的那个‘后门’:空会话(Null session)。

    网络入侵

    IPC(Inter-Process Communication)网络入侵
    为了帮助大家更好的学习IPC,我在这里特定整理及完善了一下IPC的概念、一些常用命令、在IPC出现在些问题的原因等等,资料大都来自因特网,由于不知道作者名字,故不能标记内容来处,敬请见谅。

    IPC的概念

    空会话的概念
    空会话是在没有信任的情况下与服务器建立的会话,对于一个空会话,LSA提供的令牌的SID(空会话的SID)是S-1-5-7,用户名是:ANONYMOUS LOGON(系统内置的帐号),该访问令牌包含下面伪装的组:Everyone和Network。

    IPC建立的过程

    1)会话请求者(客户)向会话接收者(服务器)传送一个数据包,请求安全隧道的建立;
    2)服务器产生一个随机的64位数(实现挑战)传送回客户;
    3)客户取得这个由服务器产生的64位数,用试图建立会话的帐号的口令打乱它,将结果返回到服务器(实现响应);
    4)服务器接受响应后发送给本地安全验证(LSA),LSA通过使用该用户正确的口令来核实响应以便确认请求者身份。如果请求者的帐号是服务器的本地帐号,核实本地发生;如果请求的帐号是一个域的帐号,响应传送到域控制器去核实。当对挑战的响应核实为正确后,一个访问令牌产生,然后传送给客户。客户使用这个访问令牌连接到服务器上的资源直到建议的会话被终止。

    IPC连接条件

    ★ 跟操作系统相关(NT/2000/XP可以建立ipc$连接,98/ME不能建立ipc$连接);
    ★ 目标主机必须要开启ipc$共享;
    本地主机必须要启动Lanmanworkstation服务(功能为提供网络链结和通讯);
    ★ 目标主机必须要启动Lanmanserver服务(ipc$依赖于此服务,它提供了 RPC 支持、文件、打印以及命名管道共享);
    ★ 目标主机必须要启动NetLogon,它支持网络上计算机 pass-through 帐户登录身份;
    ★ 目标主机应该启动NBT(打开139端口);
    ★ 目标主机防火墙配置(如果屏蔽139和445端口也将导致连接失败);
    ★ 用户名或者密码错误;
    ★ 命令输入错误(特别要注意空格的输入,用户名和密码中不包含空格时两边的双引号可以省略,密码为空,直接输入两个引号"");
    ★ 建立好连接后目标主机重启,ipc$连接会自动断开。

    连接错误号分析

    错误号5: 拒绝访问,权限不够;
    错误号51: 无法找到网络路径(网络有问题);
    错误号53: 找不到网络路径(ip地址错误;目标主机未开机;目标主机lanmanserver服务未启动;目标主机防火墙设置过滤端口);
    错误号67: 找不到网络名(本地主机中lanmanworkstation服务未启动或者目标主机删除了ipc$);
    错误号1219: 提供的凭据与已存在的凭据集冲突(已经建立了一个ipc$,可以删除再连);
    错误号1326: 用户名或密码错误;
    错误号1792: 试图登录,网络登录服务没有启动(目标主机中NetLogon服务未启动);
    错误号2242: 该用户的密码已经过期。

    常用口令

    ★ 建立空连接: net use\\IP\ipc$"" /user:""
    ★ 建立非空连接: net use\\IP\ipc$"password" /user:"username"
    ★ 查看远程主机的共享资源(但看不到默认共享) net view\\IP
    ★ 查看本地主机的共享资源(可以看到本地的默认共享) net share
    ★ 得到远程主机的用户名列表 nbtstat -A IP
    ★ 得到本地主机的用户列表 net user
    ★ 查看远程主机的当前时间 net time\\IP
    ★ 显示本地主机当前服务 net start
    ★ 启动/关闭本地服务 net start 服务名 /y net stop 服务名 /y
    ★ 映射远程共享: net use z:\\IP\sihochina此命令将共享名为sihochina的共享资源映射到z盘
    ★ 删除共享映射 net use z: /del /y 删除映射的z盘net use * /del /y 删除全部
    ★ 向远程主机复制文件 copy \路径\*.exe\\IP\共享目录名,如: copy sihochina.exe\\IP\c将当前目录下的sihochina.exe复制到对方c盘内
    ★ 远程添加计划任务 at\\ip时间 程序名,如: at\\192.168.0.111:00 sihochina.exe 11:00在主机192.168.0.1上运行sihochina.exe
    本文所用的方法主要是在VISTA 旗舰版SP2以及XP SP2的环境下测试的,别的系统没做测试,不过相信都大同小异,出现的问题也应该差不多,我将列举我在两个系统的实验中所出现的所有问题供大家参考。
    另外如果是初学者,对IPC及DOS命令毫无概念,请配合上一篇《IPC基础及IPC-DOS命令》一起阅读。

    进入正题

    第一步

    按WIN+R弹出一个运行框(别告诉我说WIN键都不知道是哪一个,那没救了!就是打开开始菜单的那个键,上面有一个WINDOWS的标志的键),键入CMD,进入DOS中。

    第二步

    输入net use \\目标IP\ipc$ "密码" /user:"用户名"。输入完这个之后,将会显示命令成功完成的提示符。值的注意的是语法的格式问题。在这条语法中一共有四个空格。USE前后各有一个空格,密码前后各有一个空格。此外需要注意的是这里的用户名和密码是入侵主机的登录系统用的用户名和密码而非宽带拨号的那个。在这个过程中,如果目标机是VISTA系统的话,那么可以很轻松的入侵,因为VISTA系统中微软默认就把SERVER服务给开了,只要知道用户名和密码就可以进来。而XP中却是关闭的,如果别人用的是XP系统而你又只是做实验的话那就放弃吧。或者你还不死心,打个电话给别人叫别人开一下吧!别人问你怎么开怎么办?如果你也不知道的话,晕,算了,好人做到底了,我告诉你吧,免得你去百度上去找了。打开“控制面板-经典视图-管理工具-服务”在服务项目中找到SERVER那一项,然后自己想办法开启吧!要再不会,那我也没辙了!

    第三步

    输入net view \\目标IP 查看一下目标开放了哪些共享。如果对方已将全部的盘上的资源都共享了的话,那么已经可以说入侵已经接近尾声了(在XP中默认开启的共享有:打印机什么的,而VISTA默认中几乎把所有的共享都开了)。但是如果对方没有开启共享的话那我们就得自己想办法来解决这个问题了。一般我们都是用telnet这项服务进入对方的电脑,然后帮他开启你想要的那些共享。那么怎么样进入telnet呢?这又是一个比较大的问题了。在XP中默认telnet服务是禁用的,也就是说你不可以用这项服务。而VISTA做的更绝,在服务项中都没有这一项,不过没关系我们可以自己加。具体方法如下:“控制面板-进入控制面板主页-打开或关闭WINDOWS功能(左下方)-在里面找到telnet两项都添加就行”。碰到这种情况,像我们这种做实验的类型的应该就要选择放弃了。如果你再打个电话叫对方把禁用去掉,改成自动的,那么情况又不一样了(修改方法和刚才开启SERVER差不多,这里就不详细介绍了),只要不是禁用,不管他的服务有没有开启我们都有办法把它变成开启的。下面我给大家介绍一个比较简单的方法。首先打开“记事本-在里面输入@net start telnet"保存为opentelnet.bat放在C盘中吧!这里是用的一个批处理命令来实现的,具体怎么实现的在这里我就不多说了,因为今天的重点不是它。大家按做就行了,不过我可以告诉大家的是这个命令的效果就是打开停用的telnet服务(注意是停用的而非禁用的)。接下来我们要做的就是把这个文件复制到目标机的根目录中去。具体操作为:

    第四步

    输入 copy c:\opentelnet.bat \\目标IP\admin$ 这样我们就把刚才建的那个文件复制到对方主机的根目录中去了。不过在复制的过程中可能会出现在一些问题,我在向XP中上复制时就出现问题了,而且一直找不到问题出在哪,不过复制失败的原因具体有以下一些,我从网上找的,现在COPY过来。
    复制文件的时候提示出错,原因可能有以下几个方面:
    1)盲目复制:
    复制根本就不存在的共享文件,复制前应使用net view\\IP命令查看目标主机的共享情况;
    2)默认共享判断错误:
    ipc$共享与默认共享是两码事,ipc$共享是一个命名管道,不是具体的文件夹,而默认共享并不是ipc$共享的必要条件;
    ★ net view\\IP无法显示默认共享(因为默认共享带$),我们无法通过这个命令判断对方是否开启了默认共享。
    3)用户权限不够:
    空连接向所有共享(默认共享和普通共享)复制时,大多情况下权限是不够的;
    ★ 向默认共享复制时,要具有管理员权限;
    ★ 向普通共享复制时,要具有相应权限(即目标主机预设的访问权限);
    ★ 目标主机通过防火墙安全软件的设置,禁止外部访问共享;
    4)被防火墙杀死或在局域网

    第五步

    运行这个文件。就这要用到我们的at命令了。方法如下:首先看一下目标机的时间。键入net time 目标机IP 知道目标机时间我们就可以给它一个任务让它在要求的时间运行。假设刚才看到的时间为14:20,那么我们可以键入 at opentelnet.bat 14:30 \\目标IP 这行命令将使目标机在14:30的时候准时运行opentelnet.bat这个文件。

    第六步

    telnet 目标IP 这就是和对方建立telnet连接,有了这个连接我们可以在别人的计算机上做任何事了,损害他人利益的事禁止做,否则格杀勿论。具体可以做哪些事我也不自己写了,累啊,复制一下:
    ★ 在远程主机上建立用户,激活用户,修改用户密码,加入管理组等操作;
    ★ 打开远程主机ipc$共享,默认共享,普通共享的操作;
    ★ 运行/关闭远程主机的服务;
    ★ 启动/杀掉远程主机的进程。
    其中第二个应用才是我们要做的事,打开主机的IPC$共享(加一个美元符号其实就是打开共享之后不会在对方机器上显示一个手托盘的符号)

    第七步

    先退出telnet,输入exit就可以了。然后键入 net use h: \\目标IP\c$ 这个命令的作用是将对方的C盘映射到本地盘的h盘,其中h盘不能是本机原来已有的盘。映射,不懂?好的,不急。我来解释一下:就是把别人的东西反射到自己的电脑,然后可以对其进行任何操作,就相当于是自己的电脑一样,至此,恭喜你,入侵成功!
    YES
  • 相关阅读:
    48. Rotate Image
    47. Permutations II
    46. Permutations
    45. Jump Game II
    44. Wildcard Matching
    43. Multiply Strings
    42. Trapping Rain Water
    41. First Missing Positive
    40. Combination Sum II
    39. Combination Sum
  • 原文地址:https://www.cnblogs.com/new0801/p/6175937.html
Copyright © 2011-2022 走看看