红队技巧:文件夹操作

在本文中,我提供了各种技巧来从C\Windows\System32目录中运行notepad.exe可执行文件。我还介绍一些花里胡巧的技巧

标准的DOS路径

首先,DOS路径是最熟悉的。它们以驱动器号,卷分隔符和组件分隔符(c\)开头。诸如%SystemRoot%之类的环境变量可用作路径片段的快捷方式。使用Windows命令提示符中的“set”命令,查看环境变量。

REM Fully Qualified DOS Paths (begins with a drive letter, a volume separator, and a component separator)
c:\Windows\System32\notepad.exe
REM Environment Variables
%SystemRoot%\System32\notepad.exe
%HomeDrive%Windows\System32\notepad.exe

DOS设备路径以两个反斜杠开头,比如\\.\或((\\?\)。两种表示法之间的区别是带有问号前缀的路径将跳过规范化。此外,某些应用程序可能对这些路径的处理方式有所不同,例如,我们必须在命令提示符处使用带有问号表示法的“ start”命令,但在PowerShell中使用时则不能使用。

REM DOS Device Paths (begins with \\. or \\?)
\\.\c:\Windows\System32\notepad.exe
\\.\BootPartition\Windows\System32\notepad.exe
\\.\HarddiskVolume4\Windows\System32\notepad.exe
\\.\Volume{b289d78f-d491-4f6b-a437-5c51a88fa48f}\Windows\System32\notepad.exe
\\.\Global\BootPartition\Windows\System32\notepad.exe
start \\.\GLOBALROOT\Device\HarddiskVolume4\Windows\System32\notepad.exe
\\.\UNC\LOCALHOST\c$\Windows\System32\notepad.exe
start \\?\c:\Windows\System32\notepad.exe

设备路径包含通过命名符号链接对设备和目录的引用。您可以使用 Sysinternals中WinObj工具 查看可用的命名链接。

WinObj显示到设备的命名符号链接

第2–5行中的示例引用WinObj中看到的各种名称,分别引用硬盘卷4(在我的情况下为C:驱动器)。第6行输入“ Global”,这是返回GLOBAL的符号链接。我们已经在WinObj屏幕截图中查看过的命名空间。

UNC路径

UNC路径以两个分隔符开始,然后是问号或句点以外的其他内容。在两个分隔符之后是找到共享的服务器,然后是要访问的共享名。

REM UNC Paths (begins with two separators w/o a question mark or period following)
\\127.0.0.1\c$\Windows\System32\notepad.exe
\\LOCALHOST\c$\Windows\System32\notepad.exe
\\::1\c$\Windows\System32\notepad.exe
\\0:0:0::1\c$\Windows\System32\notepad.exe
\\127.0.0.1\admin$\System32\notepad.exe
\\DESKTOP-MH8DLT1\admin$\System32\notepad.exe

这些示例在用于本地计算机(本地主机)的IP地址上使用变体,包括IPv4和IPv6。

相对路径

相对路径是相对于另一个路径指定的。如果路径以反斜杠开头,则它是相对于当前驱动器根目录的路径,例如C:。

REM Relative to root of the current drive (begins with a single component separator \ )
\Windows\System32\notepad.exe
REM Relative to current directory of the specified drive (begins with a drive letter, a volume separator, and no component separator)
c:Windows\System32\notepad.exe              REM cwd must be c:\
c:..\..\..\..\Windows\System32\notepad.exe  REM cwd must be less that 4 directories deep
REM Relative to current directory (begins with anything else)
non-existant-dir?-no-problem\..\..\..\..\Windows\System32\notepad.exe
extra-slashes-and-dots-are-fine.........\\\\\\\\.\\\\..\\\\..\\..\..\\Windows\\\System32\notepad.exe

路径归一化

在我看来,路径规范化是最酷的。路径归一化可从路径分量中删除尾随空格和单个句点。还将正斜杠更改为反斜杠。

REM Path Normalization (spaces and single trailing periods are removed, forward slashes changed to backslashes)
c:\Windows.\System32.\notepad.exe
"c:\Windows\System32    \notepad.exe"
c:/Windows/System32\notepad.exe
//.\c:\Windows/System32/notepad.exe
"c:\Windows.\System32. .   ./notepad.exe"

骚技巧

con命令历史骗局

如果您在WinObj中查看,您可能会注意到一个名为CON的特殊符号链接,该链接指向控制台。这有点令人惊讶,但是您经常可以使用与设备的符号链接相同的方式使用这些符号链接至设备。例如,您可以创造性地使用CON从命令提示符下将多行输入写入文件。

CON写入文件

在这里,我们使用copy con out.txt将接下来输入的内容写入名为out.txt的文件中。我按下Ctrl + Z的停止输入,我喜欢这种方法,而不是像执行printf “this is line 1\nthis is line 2\nnot as easy” > out.txt’。

您可能已经在对象查看器(WinObj)中注意到的另一个符号链接是NUL符号链接,它无处指向魔术。您将内容发送到NUL,然后消失了。因此,我们可以执行与上述类似的操作,然后复制键入的所有内容进行控制台,然后将其发送到NUL,然后消失。

将CON复制到NUL

但是,为什么我们要这样做呢?好吧,您永远不会知道,也许您想将一堆伪造的命令写入命令历史记录中,就好像它们已经在运行一样,但实际上并没有。

在这里,我们将防火墙命令和ping命令放入命令历史记录中,而无需实际执行它们。我们使用“ doskey / h”命令来查看命令历史记录。请注意,在我们按Ctrl-Z的位置上,您会在框中看到一个小问号。这就是命令提示符决定为放置在此处的EOF字符显示的内容。如果我们关心的话,我们可以在按Ctrl-Z之前输入足够的空格字符以滚动到屏幕之外,这样就不会在命令历史记录中轻易看到它。

Con的文件夹

所以CON很特别,这很有趣。如果我想创建一个名为con的文件夹怎么办?

谷歌搜索说我们可以使用我们从文件路径中学到的知识来做到这一点。在这种情况下,我们可以使用DOS设备路径来解决此限制。

好的,让我们现在尝试使用此文件夹进行操作。

如果我们不是那个创建此文件夹的人,我们会想“这个文件夹怎么了?” 即使拥有所有权和适当的权限,我也看不到其中的内容,也无法删除它。哦,我知道,我将在Windows文件浏览器中单击它。

让我们用rmdir \\.\c:\temp\con删除con文件夹。

名为“ ”的文件夹

名称为单个空格字符的文件夹怎么样?

在创建目录之前,我们的路径已“规范化”,并且删除了空间,从而导致尝试创建已经存在的c:\temp目录。但是,等等,我们了解了第二种方法来指定绕过规范化的设备路径。此路径以”\\?\” instead of “\\.\”开头

ok,我们有了一个名称为单个空格字符的目录。我们做了一个目录清单,发现它几乎没有引起注意。在这种情况下,文件资源管理器对我们有什么作用?

我在“ c:\temp \”文件夹中保存了一个名为“ something”的文件。我尝试在记事本中打开它,但由于两个空间文件夹异常而找不到文件。

### 创建一个名为“…”的文件夹

让我们创建一个名为“…”的文件夹,因为这似乎会造成混乱。

在这里,我们创建了一个名称为…的文件,并将该文件放置在该目录中。我们发现这确实确实导致Windows资源管理器产生很多混乱。

每次我们单击“…”文件夹时,都会在地址栏中的路径上添加一个“…”,但将我们留在原处,在该文件夹之外,这样我们就看不到该文件夹内的文件。此外,我们无法从Windows资源管理器中删除此文件夹或其任何父文件夹。

结论

如已演示的那样,我们可以使用Windows中文件路径处理的这些功能来绕过控件或隐藏信息,或者使文件发现和恢复变得困难。

保留这些小窍门,因为您永远不知道它们何时会在将来实现您的目标时派上用场。

*参考来源: medium ,FB小编周大涛编译,转载请注明来自FreeBuf.COM