涉及到的知识点:

捆绑

PE分离

思路源于渗透测试当中图片马原理。今天要说的不是修改头来伪装成图片,而是使用cmd的copy命令来进行文件上传。然后对文件进行反向解密出PE的一个过程

首先弄一张正常图片1.png 再准备好你要投放的PE文件 server.exe

C:\>copy test.png /b + server.exe /b payload.png

这里注意一下先后顺序 这个顺序影响你剥离PE文件时候的一些操作  如果说你先写的server.exe 那么就是从头开始剥离 我们这样写  就是从图片尾部开始剥离 推荐在后

另外  注意一下/b参数  使用二进制 /a参数是 AscII文本

C:\>copy /?

将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]

[+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source       指定要复制的文件。

/A           表示一个 ASCII 文本文件。

/B           表示一个二进位文件。

/D           允许解密要创建的目标文件

destination  为新文件指定目录和/或文件名。

/V           验证新文件写入是否正确。

/N           复制带有非 8dot3 名称的文件时,

尽可能使用短文件名。

/Y           不使用确认是否要覆盖现有目标文件

的提示。

/-Y          使用确认是否要覆盖现有目标文件

的提示。

/Z           用可重新启动模式复制已联网的文件。

/L           如果源是符号链接,请将链接复制

到目标而不是源链接指向的实际文件。

命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。

这可能会被命令行上的 /-Y 替代。除非 COPY

如此 可以生成一个payload.png

此时我们就可以当成图片上传,并且该图片可以正常查看 如图:

如何利用图床进行匿名上传恶意PE文件-RadeBit瑞安全

如果你的图不能访问  那基本上是通不过上传检测的 即便是在PE头部加上十六进制的图片头也不行  当然 也可能是我操作不对  这点请师傅们指点一二

完成了图片构造 那就完成了一半 此时我也完成了图片的上传

如何利用图床进行匿名上传恶意PE文件-RadeBit瑞安全

在这里  我很庆幸 图片没有经过二次处理。另外 当我们要取回图片的时候  注意以下操作 一定一定得是原图下载

这里我们> 点击下载原图 <  可以看到  下载之后的图和原图是一模一样大小

如何利用图床进行匿名上传恶意PE文件-RadeBit瑞安全

如此便完成了 存储。 那么我们如何效验这个文件呢?我们可以使用C32Asm来查看这个PNG图片 以16进制打开

如何利用图床进行匿名上传恶意PE文件-RadeBit瑞安全

上述框起来的 是PNG图片尾端 几乎不会 变,至于我箭头指向,则是PE头。这一点想必大家都清楚。

最后的一步 则是分离出来  原理很简单。十六进制读入  字符串开始分割到变量再存储为PE文件  即可完成全部操作

你可以根据你的需求 使用PHP 或者C++ 或者其他乱七八糟的来完成这最后一步