【C2架构】

C2架构

C2 架构也就可以理解为,恶意软件通过什么样的方式获取资源和命令,以及通过什么样的方式将数据回传给攻击者

使用的通信方式:
传输协议层 TCP、UDP
网络协议层 icmp(ping)
应用协议层 HTTP/HTTPS、FTP、DNS、SMTP
应用服务层 社交平台,网盘,消息推送服务

传输协议层

使用这层协议的恶意软件,不打个人终端,主要目标是关键基础设施的服务器,尤以 linux 为甚。原因有两个:

  1. 设备必须暴露在公网,传输协议层的恶意软件,都是被动监听。为了隐蔽性,往往不进行主动链接。
  2. 个人终端上有更好的C2方案。

其实不只是TCP、UDP,自数据链路层上,都可用户进行C2命令传输,处于内网渗透通信,使用 ARP 也不是不可能。但是如果网际数据传输,必须要传输层以上协议才可以。

基于 TCP/UDP 自定义协议网络通信分析

上线数据包:上线数据包中 一般会包含受害主机的一些基本信息,例如计算机名称,硬件 ID,计 算机版本信息等等内容,在传输之前,可能使用一些比较简单的自定 义算法,或者 RSA、AES 这类成熟的算法进行加密。

对于加密数据的处理,需要确定的是是否有采用已知的算法,定 位一些关键函数是非常快速的方法,以 Windows 程序为例:需要确 定是否导入了 Crypt*系列的函数。如果有,查看 CryptGenKey、 CryptImportKey 函数来截获加密类型及加密密钥信息,查看 CryptEncrypt 函数来截获要加密的内容。如果没有导入这类函数,很有可能是采用了自定义的加密算法,最快的跟踪方法是定位到发送部 分的函数,向前追溯,找到加密函数。

当发现无法连接到僵尸网络的主控服务器上(即 C&C 服务 器),为了让程序正常执行,并且捕获数据包,你需要对 C&C 服务器 进行模拟

在分析恶意软件时,如果该恶意软件使用了域名作为连接的 途径,我们可以在调试的过程中发现 gethostbyname 函数,我们可以 修改其返回值为我们自己虚拟机的 IP 地址。在虚拟机 上,我们可以运行 TCP 监听软件或者是 netcat,监听恶意程序需要连接的端口,直到其连接即可获取上线数 据包中的内容。

根据 IDA 中解析命令数据包的代码来对整个命令包的数据格式进 行分析,是了解功能的最佳途径,采用这种方法能够获取完 整的指令表。

网络协议层

ICMP通信

应用协议层

C2 架构比较常用的:http/https、FTP、DNS、SMTP等等。
使用应用层协议进行C2通信最重要的是隐蔽性、其次才是传输效率和适用场景。
传输文件:
如果进行文件下发和数据上传,最常见的选择是http、ftp。为了增加隐蔽性,某些样本加上DGA.
指令下发:
指令下发,不需要太多的流量载荷。一些样本追求隐蔽性,使用DNS隧道技术。

网际通信:在一些隔离环境中,邮件服务器常常被列为白名单。可以使用SMTP协议,进行内外网的通讯。
局域网内通信:局域网内一般会有IDS进行检测,动作太大会被发现,除了常规使用的通信方法外,LPR、RAW网络打印协议也是比较好的选择。

以office 钓鱼为例,攻击者通过恶意宏或者漏洞利用,使用cscript、wscript或者powershell 从远端 HTTP 服务器拉取后门,进行安装执行。

HTTP是明文传输,恶意软件进行数据上传时,往往会对内容进行处理时,简单的如base64,xor;强度大一点的会使用非对称加密算法进行处理。

但是HTTP通信需要IP或者域名,如果资产被拉入黑名单,很容易被IDS检测出来。所以,某些APT 恶意软件使用了DGA生成算法。动态变化的域名。

应用服务层

社交平台,网盘,消息推送服务:
这些应用的域名和IP都被标注了白名单,并且多数都有 API 可以使用。针对特定平台,
其实实际运用也有一定的局限,社交平台和消息服务往往都有数据限制,因此常被用于指令下发。而网盘之类的服务,自带文件属性,常被用于数据上传、资源下发。

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

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

相关文章

[深度学习] 常见名称概念

SOTA SOTA是指"State-of-the-art"的缩写,意为"最先进的技术"。SOTA是指在某个领域或任务中,当前被认为是最好的技术或模型。随着技术的不断发展和进步,SOTA会随之变化。对于机器学习和人工智能领域而言,SOTA…

20.Ubuntu下安装GCC

文章目录 Ubuntu下安装GCC查看官方安装指导错误缺少gmp库缺少32位开发库libcg: error: gengtype-lex.c: No such file or directoryreference 欢迎访问个人网络日志🌹🌹知行空间🌹🌹 Ubuntu下安装GCC 为了支持新的c标准&#xff…

深入了解 Vue 组件

在 Vue.js 中,组件是构建用户界面的核心概念之一。通过组件,我们可以将界面分割成独立、可复用的模块,使得代码更加清晰、灵活,并且更易于维护。在本文中,我们将深入探讨 Vue 组件的基本概念、创建方法以及常见用法。 …

STM32微控制器中,如何处理多个同时触发的中断请求?

在STM32微控制器中,处理多个同时触发的中断请求需要一个明确的中断优先级策略,以确保关键任务能够及时得到响应。STM32的中断控制器(NVIC)支持优先级分组,允许开发者为不同的中断设置抢占优先级和子优先级。本文将详细…

uniapp 打包后缺少maps模块和share模块的解决方案

缺失maps模块 我的应用 | 高德控制台 缺失share模块 QQ互联管理中心 微信开放平台

星云小窝项目1.0——项目介绍(一)

星云小窝项目1.0——项目介绍(一) 文章目录 前言1. 介绍页面2. 首页2.1. 游客模式2.2. 注册用户后 3. 星云笔记3.1. 星云笔记首页3.2. 星云笔记 个人中心3.2. 星云笔记 系统管理3.3. 星云笔记 文章展示3.3. 星云笔记 新建文章 4. 数据中心5. 交流评论6. …

Linux cp、mv命令显示进度条

1.advcpmv 平常使用cp 拷贝大文件时,看不到多久可以完成,虽然加上-v参数也只能看到正在拷贝文件,那就使用以下方法实现 git clone https://github.com/jarun/advcpmv.git cd advcpmv/ bash install.shmv ./advcp /usr/local/bin/ mv ./advmv …

SpringBoot3+Vue3项目的阿里云部署--将后端以及前端项目打包

一、后端:在服务器上制作成镜像 1.准备Dockerfile文件 # 基础镜像 FROM openjdk:17-jdk-alpine # 作者 MAINTAINER lixuan # 工作目录 WORKDIR /usr/local/lixuan # 同步docker内部的时间 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ…

HCIP【PPP协议CHAP验证】

目录 实验目的: 实验拓扑图: 实验过程: 一:按照图示配置所有设备的IP地址 (1)R1和R2使用PPP链路直连 (2)R2和R3把2条PPP链路捆绑为PPP MP直连 二:PPP协议的CHAP验证 (3)R2 对 R1 的 PPP 进行单向 c…

代码随想录Day57:回文子串、最长回文子序列

回文子串 class Solution { public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int res 0;for(int i s.size() - 1; i > 0; i--){for(int j i; j < s.size(); j){if(i j || (s[i] s[j] …

LeetCode——贪心算法

贪心思想 保证每次操作都是局部最优的&#xff0c;并且最后得到的结果是全局最优的——减少遍历的次数 1.买卖股票的最佳时机 121简单 这里的贪心思想是更新股票的最低价和最大利润&#xff0c;规则是先买后卖 class Solution {public int maxProfit(int[] prices) {// 记录…

C#执行命令行

效果图 主要代码方法 private Process p;public List<string> ExecuteCmd(string args){System.Diagnostics.Process p new System.Diagnostics.Process();p.StartInfo.FileName "cmd.exe";p.StartInfo.RedirectStandardInput true;p.StartInfo.RedirectSta…

权限提升-Windows权限提升篇数据库篇MYSQLMSSQLORACLE自动化项目

知识点 1、Web到Win-数据库提权-MSSQL 2、Web到Win-数据库提权-MYSQL 3、Web到Win-数据库提权-Oracle 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 基础点 0、为什么我们要学习权限提升转移技术&#xff1…

108、3D Gaussian Splatting for Real-Time Radiance Field Rendering

简介 官网 更少训练时间的同时实现最先进的视觉质量&#xff0c;能在1080p分辨率下实现高质量的实时(≥30 fps)新视图合成 NeRF使用隐式场景表示&#xff0c;体素&#xff0c;点云等属于显示建模方法&#xff0c;3DGS就是显示辐射场。它用3D高斯作为灵活高效的表示方法&…

vscode使用Runner插件将.exe文件统一放到一个目录下

找到右下角管理&#xff0c;点击扩展。 找到Code Runner插件&#xff0c;打开扩展设置。 向下翻&#xff0c;找到Executor Map&#xff0c;点击在settings.json中编辑。 在c和c的配置命令栏中增加\\\output\\即可。&#xff08;增加的目录不能自动创建&#xff0c;需要手动创建…

FPGA时钟资源详解——Clock-Capable Inputs

目录 一、概述 1.1 为什么使用CC 1.2 如何使用CC 二、Clock-Capable Inputs 2.1 SRCC 2.2 MRCC 2.3 其他用途 2.3.1 作为普通I/O使用 2.3.2 连接到CMT 一、概述 在 FPGA 设计中&#xff0c;将外部用户时钟引入 FPGA 是一项重要的任务&#xff0c;对整个系统的性能和稳…

常用ES标准

ES2015&#xff1a; 1.块级作用域const、let const声明对象可修改属性&#xff0c;但不能重新赋值对象。 2.解构赋值 const arr [a1, a2, a3]; const [a1, ...rest] arr; // rest [a2, a3];3.模板字符串 const date "星期一"; console.log(今天是${date};);4…

MCGS学习——用户管理

用户管理介绍 用户管理主要是为了实现触摸屏的安全操作&#xff0c;工业过程控制中&#xff0c;应该尽量避免由于人为的误操作所引发的故障或事故&#xff0c;而某些失误带来的后果是致命的&#xff1b;通过用户管理严格限制各类操作的权限&#xff0c;使不具备操作资格的人员…

【云开发笔记No.14】持续交付、持续部署、持续交付流水线

一、持续交付 持续交付&#xff08;Continuous Delivery&#xff09;是一种软件开发方法论&#xff0c;它强调在开发过程中&#xff0c;软件可以在任何时间以最小的努力被部署到生产环境。其核心是确保代码更改在经过一系列自动化测试后&#xff0c;能够快速、安全地集成到主代…

快速入门go语言

环境搭建 编译器安装 1、编译器下载地址 2、打开命令行模式&#xff0c;输入go version ide安装 ide下载地址 依赖管理 goproxy 1、goproxy代理地址 // 阿里云 https://mirrors.aliyun.com/goproxy // 微软 https://goproxy.io // 七牛 https://goproxy.cn 2、ide配置g…