开发者社区> 玄学酱> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

快捷方式文件的参数隐藏技巧

简介: 本文讲的是快捷方式文件的参数隐藏技巧,最近,phrozensoft在博客中介绍了关于快捷方式的利用技巧,实现了将应用程序存储在快捷方式当中,当用户打开快捷方式时,通过vbs脚本释放应用程序并运行。
+关注继续查看
本文讲的是快捷方式文件的参数隐藏技巧

0x00 前言

最近,phrozensoft在博客中介绍了关于快捷方式的利用技巧,实现了将应用程序存储在快捷方式当中,当用户打开快捷方式时,通过vbs脚本释放应用程序并运行。

我对此很感兴趣,因为快捷方式的参数默认存在长度限制,最大为260,并且我在研究jsrat的过程也遇到过这个问题(最后通过调用sct文件解决了长度限制问题)

phrozensoft分享了Delphi格式的POC代码,本文将要对其进行测试,研究lnk的文件格式,开发出对应powershell实现的POC代码,简单分析该技术的利用和防御方法

phrozensoft博客地址:

https://www.phrozensoft.com/2016/12/shortcuts-as-entry-points-for-malware-poc-part-2-19

0x01 简介

Delphi

是Windows平台下著名的快速应用程序开发工具

Borland公司研发

也可以在LINUX平台上开发应用,其在LINUX上的对应产品Kylix

常用版本:

Borland Delphi 7
Delphi 2010

0x02 Delphi POC测试

phrozensoft博客中也分享了其他功能的poc,如生成lnk文件的python脚本,本文暂不介绍,只测试其中的Delphi POC

环境搭建:

测试系统:Win7 x86

Delphi版本:Delphi 2010

注:使用Delphi 7会存在编译不通过的错误,提示“File not found System.sysutils.dcu” 

换用Delphi 2010后,poc作细微修改编译通过

1.新建工程

打开Delphi 2010

选择File-New-Other-Console Application

直接复制poc代码,提示错误,如图

快捷方式文件的参数隐藏技巧

2.修改poc

经测试,System.SysUtils需要更改为SysUtils

编译通过,如图

快捷方式文件的参数隐藏技巧

3.编译

选择Project-Build All Projects

如图,编译成功,生成Project1.exe

快捷方式文件的参数隐藏技巧

4.测试

新建test.txt,填入超过260个字符的数据:

echo
123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678

cmd下执行如下命令:

Project1.exe test.txt test.lnk

生成test.lnk

查看命令行参数,只能看到长度为260的字符串,如图

快捷方式文件的参数隐藏技巧

然而,lnk文件的大小为2.45kb,如图

快捷方式文件的参数隐藏技巧

(看起来我们发现了有趣的地方)

cmd下打开test.lnk,lnk文件的参数正常执行,显示的字符超过超过260个,没有被截断,如图

快捷方式文件的参数隐藏技巧

使用16进制编辑器Hex Editor查看lnk文件格式,如图

快捷方式文件的参数隐藏技巧

注:无法使用UltraEdit,UltraEdit打开lnk文件默认会打开lnk指向的文件 

实例如图,指向cmd.exe

快捷方式文件的参数隐藏技巧

0x03 Lnk文件格式介绍

1、整体结构

文件头
Shell Item Id List段
文件位置信息段
描述字符段
相对路径段
工作目录段
命令行段
图标文件段
附加信息段

2、文件头结构

1.

快捷方式文件的参数隐藏技巧

如图

快捷方式文件的参数隐藏技巧

2.

快捷方式文件的参数隐藏技巧

如图

快捷方式文件的参数隐藏技巧

3.

快捷方式文件的参数隐藏技巧

0位 有shell item id list 将该四字节以二进制表示,如果0-6位为1,分别代表该lnk文件包含以下属性:

1位 指向文件或文件夹 
2位 存在描述字符串 
3位 存在相对路径 
4位 存在工作路径 
5位 存在命令行参数 
6位 存在自定义图标

如图

快捷方式文件的参数隐藏技巧

偏移14h,取4字节为000000f5,二进制表示为11110101

0、2、4、5、6位为1,对应包含如下属性:

有shell item id list
存在描述字符串
存在工作路径
存在命令行参数
存在自定义图标

4.

快捷方式文件的参数隐藏技巧

3、shell item id list

由14h位置得出test.lnk存在shell item id list,所以从4ch开始的第一个段为shell item id list3、shell item id list

快捷方式文件的参数隐藏技巧

如图

快捷方式文件的参数隐藏技巧

shell item id list总长度为0129

下一段(描述字符串)的起始地址为004e+0129=0177h

4、描述字符串

快捷方式文件的参数隐藏技巧

如图

快捷方式文件的参数隐藏技巧

描述字符串长度为000c(Unicode)

下一段(工作路径)的起始地址为0177+2+000c×2=0191h

5、工作路径

快捷方式文件的参数隐藏技巧

如图

快捷方式文件的参数隐藏技巧

工作路径长度为0012(Unicode)

下一段(命令行参数)的起始地址为0191+2+0012×2=01b7h

6、命令行参数

快捷方式文件的参数隐藏技巧

如图

快捷方式文件的参数隐藏技巧

命令行参数长度为039f(Unicode)

下一段(自定义图标)的起始地址为01b7+2+039f×2=08f7h

7、自定义图标

快捷方式文件的参数隐藏技巧

如图

快捷方式文件的参数隐藏技巧

自定义图标长度为000bf(Unicode)

下一段(自定义图标)的起始地址为08f7+2+000b×2=090fh

0x04 实现原理

结合Delphi的POC代码和Lnk文件格式,对比正常lnk文件和poc文件差异,发现只有命令行参数长度不同

故推断出原理:

只要命令行参数长度超过260即可!

测试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,21"
$Shortcut.Arguments = '                                                                                                                                                                                                                                      '+ $file
$Shortcut.Save()

test.txt中写入如下内容:

/c start calc.exe

执行命令后生成的test.lnk文件格式如图,260个空格字符后面接着为payload代码

快捷方式文件的参数隐藏技巧

查看文件参数,显示如图,均被空格字符填充,payload成功隐藏

快捷方式文件的参数隐藏技巧

运行test.lnk,弹出计算器,payload成功执行

完整过程如下图

快捷方式文件的参数隐藏技巧

gif在线地址:

https://raw.githubusercontent.com/3gstudent/BlogPic/master/2016-12-31/5-1.gif

0x05 利用思路

可将payload放置在260个空字符之后 
这样无法在文件属性查看payload,只能通过文件格式去分析 
payload加密后分析难度也会变大

0x06 防御

注意lnk文件大小

必要情况下,直接分析16进制lnk文件格式

0x07 小结

对于lnk文件,虽然通过查看文件属性无法看到lnk文件的命令行参数,但不代表其不存在,在此提醒用户注意。




原文发布时间为:2017年1月31日
本文作者:3gstudent
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
IDEA常用快捷键展示说明
可以查询当前元素在当前文件中的引用,然后按。符号时,可以使用通配符,也可以使用缩写。,逐个往下查找相同文本,并高亮显示。可以将正在编辑的元素在各个面板中定位。可以选择单词继而语句继而行继而函数。可以高亮当前元素在当前文件中的使用。,可以显示最近编辑的文件列表。可以把代码包在一块内,例如。可以选择父类的方法进行重写。接着在右边的树型框中选择。,高亮显示所有该文本,按。可以跳到大括号的开头结尾。可以跳转到上次编辑的地方。,可以显示当前文件的结构。可以选择剪贴板内容并插入。可以跳转到抽象方法的实现。......
17 0
IDEA快捷键拆解系列(十五):经验篇
  这是IDEA快捷键拆解系列的第十五篇。   本文整理了一些博主本人在学习工作中比较常用到的快捷键,有需要的可以参考一下,也欢迎留言补充。 类型 快捷键 描述 1.
951 0
IDEA快捷键拆解系列(十六):插件篇
  这是IDEA快捷键拆解系列的第十六篇。   本文整理了博主用过的一些IDEA插件。其中,五星是强烈推荐,四星是比较推荐,三星仅供参考,两星的就不多说了,一星是炫酷型的插件,一般帮助也不大。
1307 0
IDEA快捷键
Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关闭文件 Ctrl+[ OR ],可以跑到大括号的开头与结尾 ...
745 0
Idea 的两个快捷键不能用的解决过程
早上来重启电脑后,Idea 的Ctrl+Alt+V还能用,但中间不知道那个时间点开始就不好用了(中间有启动有道词典查词) 度娘上没找到答案,hot key这种软件被win10提示有病毒,没敢用 然后尝试在idea中keymap中删除Ctrl+Alt+V这个快捷键再添加,但fail了,因为删除再添加时,根本无法选用这个快捷键(这种情况下,是否就可以认为这个快捷键被占用了) 后来发现Ctrl+Alt+M也不能用了。
1255 0
vc 创建桌面快捷方式
BOOL CDlg::CreateDesktopShotCut(CString strName, CString strSourcePath) { if (FAILED(CoInitialize(NULL))) return FALSE; BOOL bRet = FALSE...
550 0
合并BIN文件的两种方法
在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一个文件,方便烧写和生产。下面结合STM32的IAP Bootloader Code和Application Code的合并,介绍两种合并BIN文件的方法。
2379 0
隐藏文件失效
前几天帮别人解决电脑问题,发现无法访问隐含文件。google看了一下,发现解决方法: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHO...
484 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载