首页 > 其他分享 >【安全工具】Cobalt Strike使用教程:内网渗透之信息收集篇

【安全工具】Cobalt Strike使用教程:内网渗透之信息收集篇

时间:2024-12-28 09:30:15浏览次数:6  
标签:教程 shell 登录 主机 用户 Cobalt domain Strike net

一、前言

二、内网信息收集篇
    2.1 判断是否存在域
    2.2 域内存活主机探测
    2.3 域内基础信息收集
    2.4 域内控制器的查找
    2.5 定位域管理员工具
        2.5.1 通过psloggedon.exe
        2.5.2 通过PVEFindADUser.exe
        2.5.3 通过PowerSploit的PowerView
        2.5.4 通过NetSess工具
    2.6 查找域管理进程
        2.6.1 本地检查
        2.6.2 查询域控制器的活动域用户会话
        2.6.3 扫描NetBIOS信息的远程系统
        2.6.4 查询远程系统中运行的任务
    2.7 通过PowerView模块
        2.7.1 Get-Domain
        2.7.2 Get-DomainController
        2.7.3 Get-DomainComputer
        2.7.4 Get-NetLocalGroup
        2.7.5 Invoke-ShareFinder
    2.8 判断当前用户
        2.8.1 判断当前域用户是否是域内主机的超管
        2.8.2 判断当前域用户是否是域管理员名

三、总结

四、参考链接

作者:C1ay,转载于国科漏斗社区。

一、前言

从本篇文章开始,斗哥将向大家详细的介绍cobalt Strike 这款工具在内网渗透中的具体使用方式,因为涉及的内容较多,大致会分为信息收集篇、横向渗透篇、域控攻击篇、权限维持篇,在本篇文章中将为大家介绍信息收集篇。

二、内网信息收集篇

测试环境:

2.1 判断是否存在域

具体方式如下:

1、ipconfig /all

2、systeminfo

3、net config workstation

4、net time /domain

输入该命令可能存在如下三种情况:

●1.存在域,当前用户不是域用户。

●2.存在域,当前用户是域用户。

●3.不存在域。

通过shell net view /domain 查看当前域。

2.2 域内存活主机探测

1、利用netbios快速探测内网

工具:Nbtscan

使用方法:将该文件上传到目标机器上并执行 nbtscan.exe IP 即可

效果如下:

2、通过arp 扫描完整探测内网

方式一:工具:arp-scan

命令:arp.exe –t IP

效果如下:

方式二:通过ARPScan脚本

命令:

powershell-import
powershell Invoke-ARPScan -CIDR 1.1.1.0/24

效果如下:

3、利用常规 tcp / udp 端口扫描探测内网

工具:scanline

命令:

sl -h -t 22,80-89,110,389,445,3389,1099,1433,2049,6379,7001,8080,1521,3306,3389,5432 -u 53,161,137,139 -p 1.1.1.1-254 /b

效果如下:

可以通过判端口开放情况来确定域内存活主机情况。

2.3 域内基础信息收集

获取域内主机信息,命令如下:

1.net view

效果如下:

获取所在域的域名,命令如下:

net view /domain

在得到域名后,通过shell net view /domain:hacker 查看当前域内主机。

查询结果可以在 View->target中进行查看。

通过 net group “domain computers” /domain 命令可以查看域内计算机。

通过 shell nltest /domain_trusts 命令查看域信任关系。

通过 shell net accounts /domain 命令查看域内账号密码信息。

2.4 域内控制器的查找

通过如下命令查看当前域的域控制器。

1、 shell nltest /dclist:hacker

2、shell net time /domain

3、net group “Domain Controllers” /domain

4、netdom query pdc

2.5 定位域管理员工具

2.5.1 通过psloggedon.exe

该工具可以查看本地登录的用户和通过本地计算机或远程计算机的资源登录的用户。如果指定的是用户名而不是计算机名,该工具会搜索网上邻居中的计算机,并显示该用户当前是否已经登录。其原理是通过检查注册表 HKEY_USERS 项的 key 值 和 通过NetSessionEnum API 来枚举网络会话,但是该工具的某些功能需要管理员权限才能使用

参数:

●-l:仅显示本地登录,不显示本地和网络资源登录

●-x:不显示登录时间

●\计算机名:指定要列出登录信息的计算机的名称

●用户名:指定用户名,在网络中搜索该用户登录的计算机,该功能实现有问题。

效果如下:

1、获取本地及远程登录的计算机名称。

2、获取指定计算机名的用户。

3、获取指定用户登录的计算机。

2.5.2 通过PVEFindADUser.exe

该工具可用于查找活动目录用户登录的位置,枚举域用户,以及查找在特定计算机上登录的用户,包括 本地用户,通过RDP登录的用户、用于运行服务和计划任务的用户。该工具的运行不需要管理员权限, 只需要普通域用户即可。

参数:

●-h:显示帮助信息

●-u:检查程序是否有新版本

●-current :如果仅指定了-current参数,将获取目标计算机上当前登录的所有用户。如果指定了用户名,则显示该用户登录的计算机

●-last:如果仅制定了-last参数,将获取目标计算机的最后一个登录用户。如果指定了用户名,则显 示此用户上次登录的计算机。根据网络的安全策略,可能会隐藏最后一个登录用户的用户名,此时 使用该工具可能无法得到该用户名。

●-noping:阻止该工具在尝试获取用户登录信息之前对目标计算机执行ping命令

●-target:可选参数,用于指定要查询的主机。如果未指定此参数,将查询当前域中的所有主机。如果指定了此参数,则后跟一个由逗号分隔的主机名列表,此功能实现由问题。

效果如下:

1、查询所有主机当前的登录用户。

直接运行pveadfinduser.exe -current,则可显示域中所有计算机上当前登录的所有用户。查询结果将 被输出到 report.csv文件中。

2、查询指定用户当前登录的主机。

shell PVEFindADUser.exe -current hacker\administrator

3、查询指定主机当前的登录用户。

shell PVEFindADUser.exe -current -target DC

2.5.3 通过PowerSploit的PowerView

PowerView.ps1脚本的Invoke-StealthUserHunter和Invoke-UserHunter函数。

●Invoke-UserHunter:找到域内特定的用户群,接收用户名、用户列表和域组查询,接收一个主机 列表或查询可用的主机域名。它可以使用Get-NetSessions和Get-NetLoggedon扫描每台服务器并 对扫描结果进行比较,从而找到目标用户集,不需要管理员权限。

●Invoke-StealthUserHunter:只需要进行一次查询,就可以获取域内的所有用户。该函数从 user.HomeDirectories 中提取所有用户,并对每台服务器进行Get-NetSessions获取。因为不需 要使用Invoke-UserHunter对每台机器进行操作,所以这个方法的隐蔽性相对较高,但是扫描结果 不一定全面。PowerView默认使用Invoke-StealthUserHunter,如果找不到需要的信息,就使用 Invoke-UserHunter。

执行以下命令可用于定位指定域用户登录的主机和查看指定主机当前的登录用户。但是值得说明的是,查看指定主机当前登录的用户这个功能并不好用,仅仅能列出当前主机登录的用户,枚举其他主机时不显示。

powershell-import
powershell Invoke-UserHunter

2.5.4 通过NetSess工具

netsess.exe的原理也是调用NetSessionEnum API,并且无需管理员权限。

命令如下:

netsess.exe -h 机器名

还有其他很多方式,这里就不一一列举了。

2.6 查找域管理进程

当计算机加入到域后,默认将”Domain Admin”组赋予了本地系统管理员的权限。也就是说,在计算机添加到域,成为域的成员主机的过程中,系统将会自动把”Domain Admin”域组添加到本地的Administrators组中。因此,只要是Domain Admin组的成员均可访问本地计算机,而且具备”完全控制”的权限。

因此对于渗透测试人员来说,把”Domain Admin”域组添加到本地的Administrators组中是他们模拟域管理员帐户操作的常用方式。不过前提是,他们需要知道这些进程正在运行的系统。在本文中,五种寻找 “Domain Admin” 运行的进程的方法,其中涉及的技术包括:

1.本地检查;

2.查询活动域用户会话的域控制器;

3.扫描运行任务的远程系统;

4.扫描NETBIOS协议信息的远程系统。

2.6.1 本地检查

首先检查最初被破坏的系统,如果你已经存在于域管理进程中,那么在网络上运行真的没什么意义了。以下是使用本机命令检查是否有任何域管理进程正在运行的简单方法:

1、运行以下命令获取域控制器列表。

shell net group "Domain Controllers" /domain

2、运行以下命令以获取域管理员列表。

shell net group "Domain Admins" /domain

3、运行以下命令列出进程和进程用户,运行该过程的帐户应该在第7列。

shell Tasklist /v

也可以直接通过CS模块查看进程列表。

4、将任务列表与域管理员列表交叉引用,查看你是否进入域管理进程中

如果域管理进程始终是在最初受到攻击的系统上运行,那就太好了,但这属于理想的情况所以接下来的几种技术将帮助你在各种情况下的远程域系统上找到域管理进程。

2.6.2 查询域控制器的活动域用户会话

这项技术是安全公司Netspi的原创技术。我们需要一种用来识别活动的域管理进程和登录,而不是在整个网络上执行shell喷洒或执行任何会引发“入侵检测系统”的扫描。最终,我发现只需简单地查询以获取一个活动域用户会话列表即可,然后将该列表与域管理列表交叉引用。唯一可能出现问题的环节,就是你必须查询所有的域控制器。下面是我提供的一些基本步骤,以获得具有域用户权限的活动域管理会话的系统列表。

1、使用LDAP查询或net命令从“域控制器”OU中收集域控制器的列表,以下是我用过的一个net命令:

net group “Domain Controllers” /domain

请注意:虽然OU是域控制器列表的最佳来源,但前提是,你要对受信任域完成枚举并监控这些域控制器的过程。或者,你可以通过DNS查找它们:Nslookup –type=SRV _ldap._tcp.

2、使用LDAP查询或net命令从“域管理员”组中收集域管理员的列表。以下是我用过的一个net命令:

net group “Domain Admins” /domain

3、通过使用Netsess.exe查询每个域控制器,收集所有活动域会话的列表。Netsess工具是Joe Richards提供的一个很棒的工具,它里面包含了本地Windows函数“netsession enum”。该函数可以返回活动会话的IP地址、域帐户、会话启动时间和空闲时间。以下是我用过的一个net命令:

shell netsess.exe -h dc

4、将Domain Admin列表与活动会话列表交叉引用,以确定哪些IP地址上有活动的域令牌。在更安全的环境中,你可能需要等待具有域管理员权限的域管理员或服务帐户在网络上执行此操作。下面是一个使用netsess的非常快速和具有攻击力的Windows命令行脚本。

FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul > sessions.txt && FOR /F %a in (admins.txt) DO @type sessions.txt | @findstr /I %a

2.6.3 扫描NetBIOS信息的远程系统

某些版本的Windows操作系统允许用户通过NetBIOS查询已登录用户,下面这个命令就用于扫描远程系统中的管理会话。将目标域内主机ip保存为ips.txt文件,域管理员保存为admins.txt文件。

for /F %i in (ips.txt) do @echo [+] Checking %i && nbt

stat -A %i 2>NUL >res.txt && FOR /F %n in (admins.txt) DO @type res.txt | findst

r /I %n > NUL && echo [!] %n w

2.6.4 查询远程系统中运行的任务

如果目标机器在域系统中是通过共享的本地管理员账号运行的,就可以使用下列脚本来查询系统中的域管理任务。将目标域内主机ip保存为ips.txt文件,域管理员保存为admins.txt文件。

FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /v /S %i /U user /P password 2 > NUL > output.txt && FOR /F %n in (admins.txt) Do @Type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i && pause

2.7 通过PowerView模块

PowerView是由Will Schroeder开发的PowerShell脚本,属于PowerSploit框架和Empire的一部分。该脚本完全依赖于PowerShell和WMI(Windows Management Instrumentation)查询。

下载地址:

PowerTools/PowerView at master · PowerShellEmpire/PowerTools · GitHub

使用前需要进行导入,命令如下:

powershell-import

导入以后就可以执行命令进行域内信息收集了,常用命令如下表所示,具体命令使用可以查阅官方手册。

下面演示其中几个命令的使用,其他命令的使用方式与之类似,大家可以自行尝试。

2.7.1 Get-Domain

该命令可以获取域的信息。

2.7.2 Get-DomainController

该命令可以查看域控信息。

2.7.3 Get-DomainComputer

该命令可以查看域内主机。

2.7.4 Get-NetLocalGroup

该命令可以查看本地组。

2.7.5 Invoke-ShareFinder

该命令可以查看域内共享。

2.8 判断当前用户

2.8.1 判断当前域用户是否是域内主机的超管

因为普通域用户在进行一些高级别操作的配置时通常是需要域管理员的账号和密码,这是很不方便的。因此有的时候就会将普通的域用户增加到目标主机的超级管理员组,那么再做配置的时候就不需要域的超级管理员账号和密码。

可以通过下面的方式进行判断:

1、通过net view 查看域内主机。

2、通过shell dir \目标机器名\C$查看是否能够成功访问。

这里以WIN7-SP为例。

shell dir \\WIN7-SP\C$

可以看到成功访问到了WIN7-SP的C盘。

现在再来看看能不能成功访问域控DC的C盘。

可以看到权限不够,说明本机用户是WIN7-SP的本地超级管理员。

我们也可以通过powershell脚本查询WIN7-SP的信息,命令如下。

powershell Get-NetLocalGroup -HostName WIN7-SP

也可以通过如下命令查看登录过目标主机的用户。

shell dir /S /B \\WIN7-SP\c$\Users\ > user.txt

2.8.2 判断当前域用户是否是域管理员名

1、查看enterprise admins组内用户,命令如下:

shell net group "enterprise admins" /domain

2、查看domain admins组内用户,命令如下:

shell net group "domain admins" /domain

3、查看本地管理员组内用户,命令如下:

shell net localgroup "administrators" /domain

三、总结

在本篇文章中,斗哥为大家介绍了内网信息收集的一些方式,在下一篇文章中,斗哥将继续为大家介绍在进行信息收集后,我们该如何获取用户的凭证信息进行横向渗透。

四、参考

1、《内网安全攻防渗透测试实战指南》
2、CobaltStrike的使用

标签:教程,shell,登录,主机,用户,Cobalt,domain,Strike,net
From: https://www.cnblogs.com/o-O-oO/p/18637136

相关文章

  • 我用壁纸样机神器+即梦ai爆单了!这个AI壁纸项目,零成本项目(附保姆级教程)
    重点:项目零成本,不需要你花一分钱!准备工作1、小红书账号(免费注册+免费开店)2、即梦ai(每天60点免费额度,可白嫖60张图)3、壁纸样机神器(免费生成壁纸展示图)第一步:账号搭建是制作和销售壁纸的第一步。以下是详细的步骤和建议:账号搭建:账号名称:选择一个有吸引力的账号名称,如@XX......
  • JMeter JSR223 Sampler 教程:性能测试的魔法棒
    JMeterJSR223Sampler教程:性能测试的魔法棒宝子们,今天咱要深入探索JMeter里超厉害的JSR223Sampler,它就像是一把万能钥匙,能打开性能测试的各种奇妙大门,让咱的测试变得超厉害!一、简介JSR223Sampler可是JMeter中的一个宝藏组件哦!它是基于JSR223规范打造的,这就......
  • Vscode安装使用小白教程(深度学习前置工具2024.12.27)
    这里是Vscode的下载安装和前期工作配置教程,基础讲解。首先我们直接在浏览器搜索Vscode点击下载点击是电脑window系统酒店这个点击这个,就可以下载。下载完成后双击安装不必改动直接安装即可。安装好之后右键快捷方式查看兼容性,勾选以管理员身份运行此程序。双击打开......
  • SwiftUI 简单时间线视图开发教程
    SwiftUI简单时间线视图开发教程本教程详细介绍了如何实现一个时间线视图,并逐步分析代码的设计思路。我们会特别分析时间线中连接线的实现,探讨其连续性如何保持以及偏移量计算的原因。简单时间线视图1.整体视图结构TimeLineView是整个时间线组件的入口,包含以下......
  • 超实用 JMeter BeanShell Sampler 教程
    超实用JMeterBeanShellSampler教程宝子们,今天咱继续深挖JMeter里超厉害的BeanShellSampler,这次多来点实际工作中的例子,让你彻底搞懂它!一、这是个啥玩意儿?BeanShellSampler就像是JMeter的一个秘密武器,能让你用Java代码给测试计划“开外挂”。当JMeter自带的功......
  • 9.4-14域横向-CobaltStrike&SDN&RDP
    域横向RDP-mimikatz1、RDP明文密码链接2、RDP密文hash链接域横向SPN服务-探针,请求,导出,破解,重写SPN扫描当计算机加入域时,主SPN会自动添加到域的计算机账号的ServicePrincipalName属性中。在安装新的服务后,SPN也会被记录在计算机账号的相应属性中。SPN扫描也称为“扫描Kerber......
  • 使用 Astra DB 作为向量存储的快速入门教程
    老铁们,今天我们聊聊如何使用AstraDB作为一个向量存储。这玩意儿是基于ApacheCassandra®打造的无服务器数据库,支持向量存储,并且通过一个简易的JSONAPI提供服务。说白了,就是让你的数据库能更智能化地处理数据分析。技术背景介绍AstraDB提供了一个名为langchain......
  • Claude订阅使用教程:2025年国内如何充值购买Claude
    ​  Claude是一款功能强大的AI对话模型,其最新版本ClaudeSonnet3.5在处理复杂指令、理解上下文以及生成自然文本方面表现尤为出色。许多人认为ClaudePro是ChatGPTPlus的最佳替代品,甚至在某些场景下表现更优。以下将为你详细介绍如何快速订阅ClaudePro会员,包括准备......
  • 私募数据中心(数据解密,解密代码和教程)
    ==请帮忙点点赞,点个关注,谢谢!!==官网地址:私募数据中心本文发布的技术与代码仅供技术交流和学习使用,严禁用于数据采集等任何违法活动。请确保合法使用,并独立承担不当使用带来的法律责任。一、逆向教程1.我们先来看看返回的数据点下一页,有个请求返回了数据,data应该是我们想要......
  • 财联社加密参数(解密教程、纯算代码)
    ==请帮忙点点赞,点个关注,谢谢!!==官网地址:财联社本文发布的技术与代码仅供技术交流和学习使用,严禁用于数据采集等任何违法活动。请确保合法使用,并独立承担不当使用带来的法律责任。一、逆向教程1.我们先来看看请求参数有个加密参数“sign”,多个翻页结果来对比,似乎是通过last......