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文件中的变化主要体现在ShellLinkHeader
的LinkFlags
结构体中的HasIconLocation
标志位置为1;IconIndex
为使用的icon在目标中的下标;最后是紧接在COMMAND_LINE_ARGUMENTS
后的ICON_LOCATION
字段,lnk使用的icon所在的文件,本文中是“%systemroot%\system32\shell32.dll”。
关于工作目录
要使得修改lnk指向的应用程序工作在指定目录,可以在WORKING_DIR
字段进行修改,如果要去除该字段,可以设置sLinkInfo
字段中的HasWorkingDir
为0,并删除WORKING_DIR字段,则lnk启动的程序工作目录将在当前窗口。
本文来自博客园,作者:Bl0od
转载请注明原文链接:https://www.cnblogs.com/zUotTe0/p/13532385.html