首页 > 代码库 > 201303-lnk文件格式分析以及木马利用-willj[4st TeAm]

201303-lnk文件格式分析以及木马利用-willj[4st TeAm]

前不久在卡饭爆出各种木马利用快捷方式启动绕过杀毒软件的主动防御,随分析下。

0x01. Lnk文件介绍

lnk文件是用于指向其他文件的一种文件。 这些文件通常称为快捷方式文件.通常它以快捷方式放在硬盘上.以方便使用者快速的调用,其扩展名为.lnk。

0x02. Lnk文件格式解析

Lnk文件头

Shell Item Id List段(可选)

文件本地信息段

描述字符串段(可选)

相对路径段(可选)

工作目录段(可选)

命令行段(可选)

图标文件段(可选)

附加信息段(可选)

@Lnk文件头结构

偏移

大小/类型

描述

00h

1 DWORD

常被设置为0000004CH

04h

16 BYTES

GUID,.link文件的唯一标识符

14h

1 DWORD

标志位,用于标识哪些段是可选(重要字段)

18h

1 DWORD

目标文件属性(可读,可写,隐藏……)

1ch

1 QWORD

文件创建时间

24h

1 QWORD

文件修改时间

2ch

1 DWORD

文件最后一次访问时间

34h

1 DWORD

目标文件长度

38h

1 DWORD

自定义图标个数

3ch

1 DWORD

目标文件执行窗口显示方式(正常,Q最大,最小)

40h

1 DWORD

热键

44h

2 DWORD

未知

Lnk文件头偏移14H的标志位说明

Bit位

为1时表示存在

0

Shell Item Id List

1

指向文件或者文件夹,为0表示指向其它

2

描述字符串

3

相对路径

4

工作路径

5

命令行参数

6

自定义图标

Lnk文件头偏移18H处目标文件属性说明

Bit位

为1时表示

0

只读属性

1

隐藏属性

2

系统文件属性

3

卷标属性

4

文件夹属性

5

上次存档后被修改过

6

加密属性

7

文件属性

8

临时属性

9

稀疏文件属性

10

Reparse point

11

压缩属性

12

文件脱机属性

Lnk文件还是算比较简单的,下面对利用lnk方式启动的木马作为例子分析

Lnk文件头

偏移

数据

说明

0x00

4C000000

常常为这个值

0x04

0114020000000000C000000000000046

lnk文件GUID

0x14

E1000000

flag标志(存在Shell Item ID List,命令参数,自定义图标)

0x18

00000000

目标文件属性

0x1c

0000000000000000

文件创建时间

0x24

0000000000000000

文件修改时间

0x2c

0000000000000000

文件最后一次访问时间

0x34

00000000

目标文件长度

0x38

00000000

自定义文件图标个数

0x3c

01000000

窗口显示方式(正常显示)

0x40

59060000

热键(Ctrl+Alt+Y)

0x44

0000000000000000

未知(0)

Shell Item ID List段说明

此段为数据结构

typedef struct _SHITEMID {

USHORT cb;

BYTE abID[0];

} SHITEMID, * LPSHITEMID;

cb表示SHITEMID结构体大小,abID[0]为可变长度值。

Shell Item ID List段开始为整个Shell Item ID List段的大小值

偏移

数据

说明

0x4c

3901

总大小,结束位置,0x4e+0x139=0x187

0x4e

14001F50E04FD020EA3A6910A2D808002B30309D

第一个

0x62

19002F433A5C00000000000000000000000000000000000000

第二个

0x7b

520031000000000000000000100057696E646F7773003C0008000400EFBE00000000000000002A00000000000000000000000000000000000000000000000000570069006E0064006F007700730000001600

第三个

0xcd

560031000000000000000000100073797374656D333200003E0008000400EFBE00000000000000002A00000000000000000000000000000000000000000000000000730079007300740065006D003300320000001800

第四个

0x123

6200320000AE0000EE3AD009200872756E646C6C33322E6578650000460008000400EFBEED3A36BDED3A36BD2A000000517B0000000001000000000000000000000000000000720075006E0064006C006C00330032002E0065007800650000001C00

第五个

0x186

0000

结束

       

Shell Item ID List可以猜测到这里存储了目标文件路径的ASCII以及UNICODE,木马的目标文件为C:\windows\system32\rundll32.exe。

接下来是命名参数:

“MemDraw.dll MemDrawPic”

最后是自定义图标,这个不会解析了,感觉这方面的资料也很少,好多未知的地方。

上一张图片1.lnk属性图

属性和我们解析的lnk文件格式相同。意思是调用rundll32.exe去执行MemDraw.dll的导出函数MemDrawpic。这样做的原因可能是为了突破杀毒软件的主动防御吧。

简单看了下木马是一个远控,更新服务器在微博链接:http://t.qq.com/testlogin1280

代码中有明显的键盘记录等后门操作

木马作者能想到这里还是很不错的,木马也写得很有质量,隐藏性很高,打开快捷方式首先会打开一张图片,关于游戏装备的,猜想这个样本主要用于游戏交易中发送过去控制对方盗取对方的游戏装备。

通过了解lnk文件格式可以进一步解析lnk,找出可疑点,写出批量处理异常lnk文件。