LNK善意利用

lnk

  lnk在Windows平台下是快捷方式,可以指向其他目录下的文件,并且可以传递参数。现在有些恶意活动会恶意利用lnk,执行恶意代码。

  关于lnk的格式,可以使用010 editor的模板功能,快速识别。

  如果鼠标右键创建快捷方式,可以在目标中输入执行的命令,但是字符串最长为260字节。

  可以将过长的命令放在其他位置去执行,也可以对lnk本身进行修改,从而去除字符数限制。

  现在的lnk启动命令很容易被拦截,不过可以了解一下。

  可以简单粗暴地右键创建一个lnk文件,拖进010 editor,用模板跑一下。

  可以看到实际上COMMAND_LINE_ARGUMENTS的长度可以支持到16-bit大小(0xffff),修改成大于260的值,之后插入增大字节数量的2倍(因为支持的是Unicode格式字符)空白空间,在其中写入命令。

  也可以在中间加大量空格,最后末尾加上恶意命令,这样限于图形窗口中的260显示大小,可以一定程度上隐藏自身。

关于图标

  假如不修改图标的话,快捷方式的图标将显示为指向的可执行程序的图标,可以在右键菜单中通过"更改图标"。

  可以选择系统dll中携带的文件图标,比如说%systemroot%\\system32\\shell32.dll

  在lnk文件中的变化主要体现在ShellLinkHeaderLinkFlags结构体中的HasIconLocation标志位置为1;IconIndex为使用的icon在目标中的下标;最后是紧接在COMMAND_LINE_ARGUMENTS后的ICON_LOCATION字段,lnk使用的icon所在的文件,本文中是“%systemroot%\system32\shell32.dll”。

关于工作目录

  要使得修改lnk指向的应用程序工作在指定目录,可以在WORKING_DIR字段进行修改,如果要去除该字段,可以设置sLinkInfo字段中的HasWorkingDir为0,并删除WORKING_DIR字段,则lnk启动的程序工作目录将在当前窗口。

posted @ 2020-08-19 22:43  Bl0od  阅读(1090)  评论(2编辑  收藏  举报