文件前20字节固定不变:

HeaderSize(4 bytes, offset 0x00
):0x0000004C
LinkCLSID(16 bytes, offset 0x04
):00021401-0000-0000-C000-000000000046
由offset 0x14
起始4字节为LinkFlags(下图来自微软官方文档):

由图片2可以看到,该文件LinkFlags为0x000802DB(Bin:0000 0000 0000 1000 0000 0010 1101 1011),这表示以下Flag被设置:
上述Flag会在下文解释,故此处先不做展开。
由offset 0x18
起始4字节为FileAttributes, 0x00000020表示FILE_ATTRIBUTE_ARCHIVE
。
由offset 0x1C
开始,每个字段各占8字节:

由图4可以看到,FileSize为0x000E0400(占4个字节)。
IconIndex为0x00000001(占4个字节)。

由offset 0x3C
开始,ShowCommand占4字节,0x00000001表示SW_SHOWNORMAL;Hotkey占2字节;余下10个字节均为保留位。
由于LinkFlags中HasLinkTargetIDList
设为1,故文件包含LinkTargetIDList结构。LinkTargetIDList构成如下:

而IDList由ItemID构成,以2字节全为0的TerminalID作为结束:

下面来看示例文件中的LinkTargetIDList:

上图红色部分为IDListSize,绿色部分为TerminalID,中间蓝色部分则为IDList。下面来看IDList,第一个ItemID如下:
第二个ItemID:

第三个ItemID:

不再赘述,其含义为Windows。
第四个ItemID:

其含义为System32。
第五个ItemID:

由于LinkFlags中HasLinkInfo
设为1,故文件包含LinkInfo结构。LinkInfo构成如下:

下面来看下示例文件中的LinkInfo:

每个String Data结构如下:

由于LinkFlags中HasRelativePath
设为1,故文件包含RELATIVE_PATH字符串:

红色部分是CountCharacters(Unicode字符串长度,故应该为0x22*2=0x44),蓝色部分则为String。
之后是WORKING_DIR字符串:

ICON_LOCATION字符串:

由于LinkFlags中HasExpString
设为1,故文件包含EnvironmentVariableDataBlock:



由零个或多个下列数据块与TERMINAL_BLOCK组成:

示例文件中的EXTRA_DATA包含SpecialFolderDataBlock:

KnownFolderDataBlock:

PropertyStoreDataBlock:

PropertryStore(492 bytes)
TrackerDataBlock:

我们首先生成一个正常的LNK文件:

之后更改其图标为%SystemRoot%\System32\SHELL32.dll中任意一个:

用010 Editor打开该LNK文件,找到String Data部分ICON_LOCATION字符串:

我们要将其修改为.\1.pdf
(Unicode),其长度0x07:

其效果如下所示(左边机器打开PDF文件的默认程序是XODO PDF Reader,中间是Adobe Reader,右边是谷歌浏览器):

原始目标如下所示:

现在我们修改EnvironmentVariableDataBlock中的TargetAnsi及TargetUnicode:


将其修改为%windir%\system32
目录不存在的一个EXE文件名。
效果展示:

但这时双击该文件会报错:

所以我们需要再修改LinkTargetIDList中第五个ItemID:

如此一来,打开该文件便会弹出计算器:

首先新建一指向%windir%\System32\mshta.exe
的快捷方式(文件名尽量带有迷惑性),并更改其图标为%SystemRoot%\System32\SHELL32.dll中任意一个:

之后更改其参数为HTA下载地址:

注:笔者是使用Cobalt Strike生成HTA文件:

于其执行payload前增加如下 语句:
这样一来,在受害者打开LNK文件后会从远程下载一正常PDF文档并打开。
接下来按照0x02部分所述方法修改即可,此处加一个Tip——在其WORKING_DIR字符串前面添加大量空格字符,使其目标长度超过260个字符:

使用copy \B
命令将其与正常PDF文档捆绑,使其文件大小看起来更具有迷惑性:

之后双击该LNK文件,主机便会上线,而受害者会看到一正常的PDF文档:

效果展示:

[培训]科锐逆向工程师培训第53期2025年7月8日开班!
最后于 2020-7-29 22:34
被erfze编辑
,原因: 某张图片错误