一种Bypassing Windows Attachment Manager的有趣姿势

本文讲的是一种Bypassing Windows Attachment Manager的有趣姿势


0x00 前言

最近看到了一篇文章《Bypassing Windows Attachment Manager》,作者rvrsh3ll@424f424f,文中介绍了他绕过Windows Attachment Manager的思路,很有趣。 

恰好我对文中涉及到的ADS和lnk文件利用有过研究,所以,本文将结合我的一些心得,对该绕过方法做拓展介绍,并分享一个我在实际测试过程中发现的有趣问题

0x01 简介

本文将要介绍以下内容:

  • Windows Attachment Manager作用
  • Windows Attachment Manager实现方式
  • Windows Attachment Manager的绕过思路
  • 特殊文件的构造
  • 实际测试过程中发现的有趣问题

0x02 Windows Attachment Manager

简介

  • 自WinXp SP2开始,微软推出的新功能
  • 用来防止文件从非信任的途径下载后可以直接执行
  • 非信任的途径包括邮件和互联网下载

如果发现文件来自于非信任的途径,那么该文件在打开时会弹框提示用户,需要用户确认才能执行,如图

被标记为High-risk的文件格式如下:

.ade,.adp,.app,.asp,.bas,.bat,.cer,.chm,.cmd,.com,.cpl,.crt,.csh,.exe,.fxp,.hlp,.hta,.inf,.ins,.isp,.its,.js,.jse,.ksh,.lnk,.mad,.maf,.mag,.mam,.maq,.mar,.mas,.mat,.mau,.mav,.maw,.mda,.mdb,.mde,.mdt,.mdw,.mdz,.msc,.msi,.msp,.mst,.ops,.pcd,.pif,.prf,.prg,.pst,.reg,.scf,.scr,.sct,.shb,.shs,.tmp,.url,.vb,.vbe,.vbs,.vsmacros,.vss,.vst,.vsw,.ws,.wsc,.wsf,.wsh

实现方式

不可信的文件在下载时会被添加ADS:Zone.Identifier:$DATA

ADS详细内容如下:

[ZoneTransfer]
ZoneId=3

也就是说,只要包含ADS:Zone.Identifier:$DATA,那么该文件在打开时就会弹框提示用户,需要用户确认才能执行

绕过思路

1、删除文件的ADS,那么在打开该文件的时候就不会弹框

对于小文件,可以使用Windows默认命令more

对于大文件,可使用工具Streams

注:细节可参考《Hidden Alternative Data Streams的进阶利用技巧》,也可通过界面操作,如下图,选择Unblock

2、改变传输途径

如果将文件复制到另一操作系统,原文件的ADS不会保存

也就是说,将之前下载的非信任文件通过可信方式复制到另一操作系统,那么该文件在新系统是不会被标记为“不可信”的

例如:

从互联网下载的文件python-2.7.12.msi,默认被添加ADS:Zone.Identifier:$DATA,打开时会弹框

现在将该文件拖到虚拟机中(该操作被认为是可信方式,不会被添加ADS),而且原ADS不会保存,所以在打开该文件的过程不会弹框

0x03 特殊文件的构造

既然不可信的文件在下载时会被添加ADS:Zone.Identifier:$DATA,那么如果是压缩后的文件呢?解压缩后是否还会包含ADS?

测试系统: Win10x64

HTTP服务器: Kali Linux

开启HTTP服务器功能:

python -m SimpleHTTPServer 80

1、尝试.exe+.rar

使用WinRAR将putty.exe压缩成putty.rar,上传至HTTP服务器

注:

Win10系统默认无法解压缩.rar文件,需要手动安装WinRAR

测试系统通过Chrome下载putty.rar,如图

使用WinRAR解压缩并打开文件,未弹框

结论1:

.rar内的压缩文件不会被添加ADS

2、尝试.lnk+.rar

压缩lnk文件时会直接对lnk指向的源文件压缩,无法压缩lnk文件本身,测试失败

3、尝试.exe+zip

使用WinRAR将putty.exe压缩成putty.zip,上传至HTTP服务器

测试系统通过Chrome下载putty.zip

通过Windows Explorer打开zip文件,如下图

打开后弹框,提示用户,如下图

而使用WinRAR解压缩并打开文件,并未弹框

结论2:

Windows Attachment Manager不支持WinRAR这类第三方软件

4、尝试.exe+cab

接下来没必要测试需要第三方软件才能使用的压缩格式,应该继续寻找Windows系统默认支持的格式

比如.cab文件

注:

cab文件可通过makecab.exe生成,系统默认包含

压缩类型包括:none,mszip,lzx

使用makecab将putty.exe压缩成putty.cab,压缩类型选择lzx,命令如下:

makecab /d compressiontype=lzx putty.exe putty.cab

如图

上传至HTTP服务器

测试系统通过Chrome下载

解压缩,保存文件,打开,弹框

将文件拖至任一路径,打开,不弹框

完整测试过程如图

gif在线地址:

https://raw.githubusercontent.com/3gstudent/BlogPic/master/2017-5-10/2.gif

使用Procmon监控两种操作,区别如下图,此处需要继续研究,做更多的测试

注:

Win10 Build 14393(1607)及之前版本均存在这个问题,Win10 Build 15063(1703)已经修复该问题

结论3:

使用cab压缩文件,接着拖动文件保存,能够绕过Windows Attachment Manager

5、尝试.lnk+cab

注:

该方法来自rvrsh3ll@424f424f的文章,但我在测试的时候发现了另外一个有趣的问题

使用makecab将test.lnk压缩成test.cab,压缩类型选择lzx,命令如下:

makecab /d compressiontype=lzx test.lnk test.cab

注:

cab文件能够压缩lnk文件本身,为了增加迷惑性,可以使用以下测试代码:

test.txt中写入如下内容:

/c start calc.exe

powershell代码:

$file = Get-Content "c:testtest.txt"
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("c:testtest.lnk")
$Shortcut.TargetPath = "%SystemRoot%system32cmd.exe"
$Shortcut.IconLocation = "%SystemRoot%System32Shell32.dll,3"
$Shortcut.Arguments = $file
$Shortcut.Save()

生成的lnk文件参数被空格字符填充,实际payload被隐藏,如下图

更多细节可参考:渗透技巧——快捷方式文件的参数隐藏技巧

将test.cab上传至HTTP服务器

测试系统通过Chrome下载

解压缩,保存文件,打开,弹框(同测试4)

将文件拖至任一路径,打开,不弹框(同测试4)

一个有趣的问题:

将lnk文件解压缩,保存文件,打开,弹框

接着右键查看lnk文件属性,再次打开lnk文件,不弹框,ADS被清除

完整测试过程如图

gif在线地址:

https://raw.githubusercontent.com/3gstudent/BlogPic/master/2017-5-10/1.gif

结论4:

在某些特殊情况下(Win10 Build 14393(1607)之前的版本),ADS会清除,导致能够绕过Windows Attachment Manager

注:

Win10 Build 10586存在该问题,Win10 Build 14393(1607)修复了该问题

0x04 补充

Win7系统不存在以上问题,原因:

打开cab文件后,在保存文件时会弹框提示用户(该特性Win10不存在)

如图

0x05 小结

  • 不可信的文件在下载时会被添加ADS:Zone.Identifier:$DATA
  • 如果将文件复制到另一操作系统,原文件的ADS不会保存
  • 相比于rar和zip格式,使用cab格式压缩lnk文件更为合适
  • lnk文件欺骗性更高
  • Win10 Build 15063(1703)已经修复以上bug

原文发布时间为:2017年5月25日

本文作者:3gstudent

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-08-03 23:16:34

一种Bypassing Windows Attachment Manager的有趣姿势的相关文章

9种忘记Windows XP登录密码的解决办法

  Windows XP的使用过程中如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复Windows XP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼. 从"控制面板"中找到"用户账户"项,选中自己的账户进入如图所示的控制界面,我们可以看到左侧任务列表中有一项"阻止一个已忘记的密码",点击后便可打开"忘记密码向导",向导会提示插入一张格式化过的空白磁盘,操作过程中会让你输入该账户所使用的

9种破解Windows XP登录密码的方法

WindowsXP的使用过程中如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复WindowsXP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼. 从"控制面板"中找到"用户账户"项,选中自己的账户进入如图所示的控制界面,我们可以看到左侧任务列表中有一项"阻止一个已忘记的密码",点击后便可打开"忘记密码向导",向导会提示插入一张格式化过的空白磁盘,操作过程中会让你输入该账户所使用的密码,很

Windows 8系统关机的5种方法

  Windows8的关机位置"太隐蔽",导致很多初次使用新系统的用户都不知道Windows 8如何关机.另外,Windows 8关机的操作也比较繁琐,整个过程需要使用多次滑动且进入两层界面才能完成. 第一种:原始关机 首先,我们来看一下最原始.但也最繁琐的Windows 8关机方法,向右侧角落滑动出现超级按钮. 点击"设置"---"电源"---"关机",即可. 第二种:快捷键关机 用户在Windows界面下按"Al

Windows操作系统十三种安装小技巧

  我使用Windows 98,请问如何设置启动方式? 在Windows 98安装时,会在C:根目录下生成一个Msdos.sys文件,这个文件是文本文件,你可以使用文件编辑器打开它,其中有一些相关的设置参数.如下边所示的样子: ... [Options] BootMulti=1 BootGUI=1 DoubleBuffer=1 AutoScan=1 WinVer=4.10.2222 ... 其中"BootMulti"表示是否允许多引导."BootGUI"表示是否启动

面向 Windows 系统管理员的 Linux: 使用 GNOME 桌面工具管理 Linux

简介: 使用 Linux 并不意味着您的工作仅局限于命令行工具.当然,大多数经验丰富的 Linux 管理员使用命令行工具更为方便,并且管理更为高效.然而,GNOME 项目提供一些卓越的工具,可使用图形用户界面 (GUI) 管理 Linux 服务器.使用您的 Microsoft Windows 背景经验,您或许会发现这些工具的过渡并不那么明显. 概述 在本文中,了解桌面上有关 Linux 的以下概念: 使用用户和组帐户 管理文件和文件夹 使用服务 监控系统 查看日志文件 先决条件 要充分理解本系列

安装Windows Server 2003 SP1的10大理由

server|window|server|window Top 10 Reasons to Install Windows Server 2003 SP1 Reduce your servers attack surface. Security Configuration Wizard (SCW), one of the new features added to Windows Server 2003 in Service Pack 1 (SP1), uses an intuitive, ro

Windows 2008 BCD改变系统启动方式

Windows Server 2008里面引入了很多新的特性,其中就包括新的引导模式.对于一台计算机来说,操作系统的启动是很关键的一 个步骤,对于目前占据了大量桌面计算机市场领域的Microsoft Windows操作系统来说,其能否正常的启动会影响所有使用Microsoft Windows操作系统的用户.众所周知, Windows 的引导方式前前后后经历过多次的变动,基本上是每换一代Windows操作系统,Windows的启动方式均要发生一次变动.Windows Server 2008作为第6

如何制作Windows Vista和Dos双系统

Windows Vista的到来,系统玩家们是不是还是希望玩转双系统呢?你知道其实即使是Vista环境下我们也能安装最原始的MS-DOS喔. 在Vista中,微软引入了一种全新的boot loader架构,Windows boot manager(bootmgr.exe).Vista的启动/引导过程具有快速与安全的特点. WindowsXP双系统通过boot.ini管理启动设置, Windows Vista则通过新的boot configuration data(BCD:启动设置数据),及启动选

Windows Server 2003 启动中常见错误的解决方法_win服务器

摘要:在Windows Server 2003启动过程中,会出现各种各样的问题,本文介绍了操作系统启动过程的几个阶段,收集了一些经常出现的错误,并结合 Windows 操作系统启动过程,针对这些错误提出了解决方法. 当诊断一个系统启动错误时,判断系统是在哪一阶段出现错误非常关键,系统启动过程根据 CPU 架构不同略微有些差异,下面我们简单介绍一下 x86-based 系统启动过程的几个阶段: 1. Pre-Boot Sequence 2. Boot Sequence 3. Kernel Load