本文通过 Google 翻译 Manual Enumeration – Windows Privilege Escalation 这篇文章所产生,本人仅是对呆板翻译中部分表达别扭的字词进行了校正及个别注释补充。
导航
0、媒介
在这篇文章中,我们将探讨手动枚举技能,该技能可资助我们在目标建立立足点后快速获取目标的“地形”(即当前系统情况)。
手动枚举是攻击者必要具备的一项重要技能,因为它能更深入的洞悉目标系统中的现场清况,从而让攻击者发现可能存在的权限提升路径。
自动化工具很棒,它们对攻击者来说确实可以或许起到很大的作用。但是,熟练的攻击者绝不会只依赖工具,因为工具很轻易就会错过一些重要的东西。【假如不可以或许真正了解这些工具实际上在做什么,那我们很轻易就会错过一些东西。】
这篇文章并不会涵盖所有的枚举点,只对主要的枚举点进行了介绍,这些枚举点包罗用户枚举、系统枚举、软件枚举、网络枚举、防病毒/防火墙枚举。另外还会展示,当我首次得到立足点时,我个人在使用自动枚举工具之前使用的一个手动下令集。
请记住,这些手动技能是非常高级的枚举技能,它能资助我们快速了解当前正在处理的内容。
在这个例子中,假设我们以用户 bob 的身份在目标呆板上取得了立足点。
1、用户枚举
一旦在目标呆板上站稳脚跟,我们首先要做的就是枚举当前用户相关的信息,然后再枚举系统上其它用户的信息。
1.1、当前用户
首先,使用 whoami 下令查察自己是谁。
【特权:】确定了自己是谁之后,再看看当前用户所拥有的系统特权有哪些,下令如下:
可以看到,当前用户拥有 SeShutdownPrivilege 特权,而该特权在使用弱服务获取 SYSTEM shell 时很有资助。
另外,SeImpersonatePrivilege 和 SeBackupPrivilege 特权也都可以被用来轻松获取 SYSTEM shell。
想了解怎样滥用各种特权的更多信息,可查察此页面。
【所属组:】whoami 下令的另一个用途是检查当前用户所属的组。
上面的输出又告诉了我们以下几点信息:
- 箭头指示的四个组是所有尺度用户所归属的组。了解这一点对于使用 icacls 或 accesschk 检查差别文件/目录的权限很重要。
- 第一个方框圈起来的组是远程桌面用户组。这意味着假如我们找到了用户的密码,那么就可以获取该受害者的 GUI 会话。【注:此时密码搜寻部分的内容就值得关注。】
- 第二个方框圈起来的组是逼迫级别组。当您使用 BeEF 等工具挂接 IE 或 Edge 浏览器,然后使用 Metasploit 使用浏览器获取 shell 时,这一点非常重要。当您这样做时,您将处于低逼迫级别 shell 中,这意味着您无法写入任何通例文件夹。【但可以在用户的 %USERPROFILE%\AppData\LocalLow 目录下写入文件。】
最后,也可以使用 whoami /all 下令一次性列出当前用户的所有信息。
1.2、其他用户
【查察用户:】可以使用 net user 下令查察系统上所有的用户,以了解还有哪些用户比较有用。因为我们的权限提升路径并不总是直接就被垂直提升到了管理员或 SYSTEM 级别,有时也必要先水平提升到另一个尺度用户,然后再进一步进行提升。
可以看到,有 5 个账户存在,而每个帐户都应该进一步被枚举。
Guest 账户几乎总是处于禁用状态。
要查察特定用户的信息,可使用以下下令:
这里提供了该帐户的大量信息,此中包罗该帐户是否处于活动状态、帐户是否有密码、群组信息、以及Comment 备注阐明等。
在群组信息中可以看到, alice 是远程桌面用户组和远程管理用户组的成员。这意味着只要我们能找到 alice 的密码,就可以通过 RDP (3389) 或 WinRM (5985) 的方式进行登录。
【查察组:】最后,我们也应该检查下哪些用户属于当地管理员组。为此,可以使用以下下令查察:- net localgroup administrators
复制代码
Great!我们发现,除了内置管理员 administrator 外,john 也是该系统的当地管理员。
上述下令中的“administrators”也可以替换为您想要枚举的任何其它组。
既然我们知道了与“谁”合作,接下来就该把注意力转向与“什么”合作,就从系统本身的高层开始吧。
2、系统枚举
系统枚举就是查察像如 操作系统名称/版本、架构、主机名、已安装的补丁、驱动器等信息。
【系统信息:】要查察系统相关的信息,只需使用 systeminfo 下令。
上面列出了大量的信息。当然也可以使用以下下令只筛选我们感兴趣的内容输出:- systeminfo | findstr /B /C:"Host Name" /C:"OS Name" /C:"OS Version" /C:"System Type" /C:"Network Card(s)" /C:"Hotfix(s)"
复制代码
从上面可以看到,当前受害者的呆板是 Windows 10 – Build 18362(version 1903)– 64 位操作系统;同时它只安装了 2 个补丁,这很有可能会存在内核漏洞;并且还有两张网卡,这表明有机会转向差别的网络!
【补丁步伐:】上面这些信息太棒了!现在我们可以进一步调查这些补丁步伐,看看它们的安装时间。别的,还需留意第二张网卡的信息。
为了深入了解补丁步伐,我们可以使用 wmic 下令从当地系统提取信息:- wmic qfe get Caption,Description,HotFixID,InstalledOn
复制代码
可以看到,这些补丁都是在 2019 年 4 月 1 日安装的。这也告诉我们,这台呆板很轻易受到 2019 年 4 月 1 日之后的发现的任何内核漏洞攻击!
关于内核漏洞的使用可以查察这篇文章。
【驱动器:】另一件值得检查的事情是系统上的其它驱动器(D、E、F?)。
要检查驱动器,我们可以使用 wmic 下令或等效的 PowerShell 下令:- wmic logicaldisk get caption,description,providername
- Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root
复制代码
现在我们已经了解了系统相关的信息,接下来就可以检查系统上安装或运行的软件。
3、软件枚举
【方法1:】检查已安装软件的最简单但不是很可靠的方法是枚举安装软件时默认使用的目录位置,如 C:\、C:\Program Files、C:\Program Files (x86),可依据里边的文件名称来判断可能安装了些什么软件。
【方法2:】检查已安装软件的另一种方法是使用以下 wmic 下令:- wmic product get name,version | findstr /i /v "Microsoft"
复制代码
此搜索将检查系统上安装的所有软件。在末尾添加 findstr 过滤器,是为了删除所有包含“Microsoft”的匹配项,因为我们只对第三方软件感兴趣。在这里,可以看到安装了一个第三方软件:Python 2.7.16。
要向 findstr 下令添加更多过滤项,请用空格分隔。比方:“Microsoft Windows SQL”将会过滤掉带 Microsoft 或 Windows 或 SQL 这样的字符串的行。
【方法3:】也可以使用 tasklist 下令查察正在运行的进程,根据正在运行的进程,判断主机上安装了哪些软件。
可以看到,Firefox 正在运行,这表明它已安装在主机上。
现在我们了解了怎样枚举系统上安装的软件,接下来可以继续进行网络的枚举。
4、网络枚举
当评论网络枚举时,我们最感兴趣的是受害机怎样与其它主机通讯、与哪些主机通讯、正在通讯什么。
首先我们要了解系统有几个 IP 地点,这取决于呆板上安装的 NIC 数量。
NIC 全称 Network Interface Card,通俗讲就是主机网卡或网络适配器。【注:NIC 就是指网卡硬件,而网络适配器则可以是网卡硬件,也可以是软件驱动的假造网卡。】
【IP 信息:】要查察当前受害呆板的 IP 地点,可以使用 ipconfig 下令。
可以看到,这台呆板有两个 IP 地点,这意味着这台呆板很可能可以或许进入 10.0.3.0/24 网段的门户!
要查察包罗 MAC 地点、DNS 服务器等信息,可以使用以下下令:
【ARP 表:】获取 IP 信息后,我们要查察的另一个地方是 ARP 表。因为每当同网段的两台呆板进行通讯时,两边呆板都会将对方的 IP/MAC 地点记载在各自的 ARP 表中。
因此,通过查询该表中的信息,我们可能会发现受害者正在与另一台呆板通讯,而这有可能也是一个线索。
注:这种方法仅限于查察同网段之间通讯的主机,假如是跨网段通讯,那么 ARP 中只能看到网关的 IP/MAC 记载。
可以看到,攻击者呆板 172.16.1.30 此时正在与受害者呆板进行通讯。【请注意,动态范例的记载对我们来说才最有趣,因为这些都是当下正在活动所产生的自动学习记载。】
【路由表:】另一个必要检查的地方是路由表。通过路由表,我们可以知道是否还有其它可以通讯的网络。
可以看到,当前这台呆板可以或许通往两个差别的网络,分别是 10.0.3.0/24 和 172.16.1.0/24 网络。
【网络状态:】在网络枚举过程中要查找的最后一件事是检查正在运行的服务以及分配给它们的端口。
从上面的结果中,我们主要关注监听范例的端口。这将向我们显示在 nmap 扫描期间能看到的所有端口,同时它还能显示仅在主机当地开放的端口。
假如我们发现当地有服务正在运行,那么这会是一个关键的发现,因为它很有可能会资助我们进行权限的提升。当发现服务仅在 localhost 运行时,可通过端口转发技能去建立攻击者呆板与受害者当地服务的连接。这可以使用 Chisel、Plink 或 Meterpreter 工具来实现。
关于端口转发相关的技能,可查察这篇文章。
5、防病毒/防火墙枚举
在当今的环境中,我们几乎总是要应对额外的防御层:防病毒(AV)和防火墙。作为攻击者,最好找出系统使用的 AV,这样才能想办法去绕过系统的防护措施。
注:由于作者提供的查询方法不是太有效,此处补充的是我个人以为比较方便的查询办法。
【防病毒:】通过谷歌搜索“杀软在线识别”,即可找到一些在线辨别杀毒软件的网站,通过将以下下令的结果粘贴就可以查询到比较准确的杀毒软件的名称了。
值得一提的是,AV 绕过技能不停在不停变化,今天有效的技能可能明天就失效了。
枚举完系统上的 AV 之后,我们将把精神转向防火墙。
【防火墙:】我们希望查察防火墙设置,以便确定哪些端口是开放的且可以从外部访问。
我们的目标是弄清晰为什么在访问某些端口时被阻止,以及可以使用哪些端口来掩盖我们的流量(比方,受害机运行反向 shell 载荷时,假如访问攻击机的 4444 端口被阻止,但访问 443 端口是开放的,那么就制作 443 端口的反向 shell 载荷)。
请注意,防火墙通常只允许特定端口上的出站访问。假如您尝试从漏洞中获取反向 shell,而您确信该漏洞使用确实有效,但由于某些缘故原由却没有得到反向 shell,那么您可能就必要调整反连端口了。经验告诉我们,假如所有其它方法都失败了,那么把反连端口换成 80 就可能就让您通过。除了80 端口以外,其它值得思量的端口是:21、443 和 445。
(1)在现代 Windows 操作系统(win10+)上,查察防火墙状态的下令如下:- netsh advfirewall show allprofiles | findstr -i "profile state policy"
复制代码注:由于中文的缘故原由,以上下令在国内呆板上不会有输出结果。建议直接使用 netsh advfirewall show allprofiles 下令即可。
从以上结果可以看到,当前主机的 域网络、公共网络、私有网络 的防火墙状态都是开启的,并且它们的出入站计谋都是:阻止所有入站,放行所有出站。
(2)而在较旧的 Windows 操作系统( win7-)上,我们必要使用差别的下令来收集这些信息:- netsh firewall show state
复制代码 现在已经确定防火墙正在运行,接下来就是检查它的规则设置,以确认哪些端口是被指定放行的。- netsh firewall show config
复制代码
注:通常输出的内容中会包含许多基于应用步伐的规则,但这不是我们感兴趣的东西,我们只需关注输出内容最下面和端口相关的信息。
最后,假设我们设法得到了 SYSTEM 或管理员 shell。凭借提升的权限,我们可以完全关闭防火墙,这在我们尝试切换到另一台主机时可能会有所资助。为此,可以使用以下下令进行关闭:- netsh advfirewall set allprofiles state off
复制代码 6、我的手动下令集
通常我不会手动进行以上所介绍的所有枚举,而是会让工具为我完成网络和 AV/防火墙部分的枚举,但我们也必须了解工具能为我们做些什么。别的,假如发现自己出于某种缘故原由无法使用工具,此时就必要知道上面所介绍的这些枚举手段了。
在本小节,我要展示的只是一组快速下令,我喜欢在第一次登录主机时使用这些下令,待了解了主机基本情况之后,然后就会依照特定顺序加载一些工具。
【下令1:】当我第一次登录主机时,喜欢立刻运行以下 5 个下令:- whoami
- whoami /priv
- whoami /groups
- systeminfo | findstr /B /C:"Host Name" /C:"OS Name" /C:"OS Version" /C:"System Type" /C:"Hotfix(s)"
- cmdkey /list
复制代码
- 首先,使用 whoami 查察我是在哪个帐户上得到了立足点(尺度用户?服务帐户?管理员帐户?)
- 接着,使用 whoami /priv 查察用户是否拥有任何特殊权限(包罗关机的权限)。
- 之后,使用 whoami /groups 来资助我确定该用户还拥有哪些组的访问权限。
- 然后,使用 systeminfo 来确定所在主机以及我将怎样进行下一步(32 位照旧 64 位?旧操作系统照旧新操作系统?补丁步伐?)— 当发现旧操作系统或几乎没有安装补丁步伐时,我们必要思量内核漏洞。系统架构对于工具和漏洞使用很重要,请确保您为这项工作使用了对应架构版本的工具。
- 最后,使用 cmdkey 检查存储的密码,以期望可以或许快速取得胜利。
运行上述下令之后,我喜欢快速实行用户和组枚举,检查系统上所有的用户以及哪些用户属于管理员组。- net user
- net localgroup administrators
复制代码 假如发现这台呆板上除了当前用户之外还有其它用户,我会把它们都记下来,然后就会根据搜寻密码这篇文章中介绍到的地方,在这台呆板上的一些位置去搜寻可能存在这个用户的密码。别的,我还喜欢记下当地管理员组中的任何用户,因为它们是高代价目标。
当我找到其它用户时,我都会使用 net user 下令以了解它们都加入了哪些组。
【下令2:】接下来,我将手动检查有趣的文件/目录。
下面的下令是基于 PowerShell 会话编写的。
- Get-ChildItem -Recurse -Depth 4 C:\users | Select FullName
- cmd.exe /c dir /a C:\
- ls "C:\Program Files"
- ls "C:\Program Files (x86)"
复制代码
- 第 1 条下令以递归的方式检查系统上每个用户的设置文件,且最大深度为 4。这意味着它将检查 C:\Users\x\x\x\x 路径中的内容。 此中第一个“x”是用户帐户;第二个“x”代表用户家目录下的目录,比方桌面、文档、下载等;第三/四个“x”则依次继续向下遍历。
- 第 2 条下令只是简单地显示 C:\ 目录下的所有文件/目录(包罗隐藏的)。注意,任何非默认或隐藏的文件/目录都应该更深入地探索。
- 第 3/4 条下令用于枚举 Program Files 目录中的所有子目录。在这里可以或许寻找可能实行弱服务漏洞的非尺度步伐(这时关机权限就派上用场了)。
【下令3:】最后,在将工具带到受害者身上之前,我还喜欢使用一个下令,那就是:这是为了快速查找在 nmap 扫描期间没有发现的开放端口。
此时,在经历上述这 4 组下令的洗礼之后,要么我已经找到了权限提升的路径,并已开始动手研究。要么我会带一些自动工具来资助我进一步枚举主机。
【工具:】以下便是我将要带来的四种工具,我将按照以下顺序分别使用它们:
假如通过上述工具的枚举之后,我照旧没有找到权限提升路径,那么我会思量使用 SeatBelt.exe,但通常在手动枚举和 PowerUp/WinPEAS 之间我可以或许找到权限提升的路径。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |