文章目录

  • 隐藏C2
    • CDN域前置
      • CDN
        • 访问流程
        • 配置CDN
        • 效果
      • 隐藏C2
        • 配置CS Profile
        • 上线CS
      • 总结
    • iptables保护C2
      • 流量转发
      • 修改默认端口
    • 推荐阅读

之前有一篇文章写过通过 CS 的重定向器来隐藏 C2 服务器, 我是链接,本文将会介绍使用域前置技术隐藏C2服务器,以及使用iptables策略来保护服务器

隐藏C2

CDN域前置

Domain Fronting 域前置指一种用于隐藏真实C2服务器IP且同时能伪装为与高信誉域名通信的技术,其通过CDN节点将流量转发到真实的C2服务器,其中CDN节点 ip 通过识别请求的 Host 头进行流量转发,首先来了解下啥是CDN

CDN

CDN的全称是Content Delivery Network,即内容分发网络,使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度

可以看一下 b 站的视频:https://www.bilibili.com/video/BV1jS4y197zi

访问流程

传统网络访问流程:

  1. 用户在浏览器中输入目标网站的 URL
  2. 浏览器向域名解析服务器(DNS,Domain Name System,域名系统,是因特网上域名和 IP 地址相互映射的一个分布式数据库)发出解析请求,获得此域名对应的 IP 地址
  3. 浏览器得到这个 IP 地址,向其对应的服务器发出访问请求
  4. 目标服务器对此作出响应,将数据回传至用户浏览器并显示出来

与传统访问方式不同,CDN 网络则是在用户和服务器之间增加 Cache 层,将用户的访问请求引导到 Cache 节点而不是目标服务器站点,要实现这一目的,主要是通过接管 DNS 实现

下图为腾讯 CDN 架构图

  1. 当用户点击网站页面上的内容 URL,经过本地 DNS 系统解析,DNS 系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器
  2. CDN 的 DNS 服务器将 CDN 的全局负载均衡设备最佳接入 IP 地址返回用户
  3. 用户向 CDN 的全局负载均衡设备最佳接入的 IP 地址发起内容URL访问请求
  4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容 URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求
  5. 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户 IP 地址,判断哪一台服务器距用户最近;根据用户所请求的 URL 中携带的内容名称(请求头中的 host 字段),判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址
  6. 全局负载均衡设备把服务器的IP地址返回给用户
  7. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地

其中需要注意的是 CDN 的工作机制中一般情况下,1台 CDN 会同时负责多个网站的加速服务,这时 CDN 通过请求流量中请求头的 host 字段来判断用户所要访问的服务器,这也是 host 请求头存在的意义

如果对于 host 使用有问题的话可以看下这篇文章:[https://www.anquanke.com/post/id/195011#h2-1]

配置CDN

首先需要有自己的域名用来配合 CDN 来隐藏C2服务器,然后再申请一个 CDN 对我们的所申请的域名进行加速,在这个过程中CDN会要求我们在域名的解析配置中设置相应的 CNAME

添加 CDN,我使用的阿里云 CDN,可以看到现在阿里云的加速域名需要验证后才可以使用,且加速区域含中国内地时,加速域名必须备案,数据在8小时左右同步,演示我就用自己的域名了,实际中用自己的域名域前置就没有意义了

验证因为方法一我用不了,是不是阿里云搞得鬼(域名是的在腾讯云买的),用的文件验证

这里需要注意的是,文件验证我这里这里使用的裸域名,在域名解析设置时主机记录选择 @

关于裸域名可以看知乎回答:https://www.zhihu.com/question/20414602

添加之后更换解析记录值

效果

1.配置完毕后,使用 nslookup 命令发现主机 IP 地址已经变化

2.测试:执行以下操作

curl 202.97.231.47  -H "Host: ocean.cn" -v

host 是配置的 CDN 加速域名

访问后可以在 CS web 日志中看到

也能说明 CDN 设置成功

3.使用 ping 检测可以发现各地 IP 地址都不相同

这里选取三个 CDN 地址进行接下来的操作

  • 140.249.61.99
  • 221.181.200.201
  • 202.97.231.47

隐藏C2

配置CS Profile

CDN 申请完成后,就可以开始编辑 Cobalt Strike 要用到的 C2 Profile 文件了,直接使用开源项目 Malleable-C2-Profiles 中的 amazon.profile,但需要把其中的 Host 头改成我们自己在 CDN 中绑定的域名

项目地址:https://github.com/rsmudge/Malleable-C2-Profiles/blob/master/normal/amazon.profile

修改以下几处

  • 19行的 host

  • 53行的 host

上线CS

服务器使用命令开启 TeamServer

./teamserver xxx.xxx.xxx.xxx password amazon.profile

配置监听器

配置HTTPS Hosts为之前获取的CDN IP,HTTP Host(Stager)为 ocean888.cn,也就是我们配置的加速域名,端口80不能换,开启监听器

生成一个后门

触发后门文件,使用 wireshark 抓取流量

可以发现这里的 host 已经变成了 CDN 域名,在实际攻击中我们需要找一个高信誉域名在 CDN 加速平台加速

目标主机可以上线

总结

  1. 找高信誉域名,申请CDN,加速域名,加速的服务器地址攻击者 VPS IP 地址
  2. 使用超级 ping 拿到 CDN 的 IP 地址
  3. 设置 CS profile,设置监听器,上线 CS,隐藏了真实 VPS 地址

利用 Domain Fronting 技术,在目标主机上只能看到系统是在和一个高信誉域名通信,并且不会产生任何与我们真实C2服务器的直接通信流量,伪装的同时还极佳地隐藏了我们的C2服务器,利用此技术,我们可以有效地躲避各种IDS,实施渗透测试

iptables保护C2

有时候使用socat进行转发的时候其稳定性以及速率可能不是那么好,对于流量比较多的情况也许可以使用iptables进行此操作,同时对cs服务器设定一些访问策略,对真实的cs服务器起到一定保护作用

流量转发

iptables中的“四表五链”及“拥堵策略”

“四表”是指,iptables的功能——filter, nat, mangle, raw

  • filter:控制数据包是否允许进出及转发(INPUT、OUTPUT、FORWARD),可以控制的链路 有input, forward, output
  • nat:控制数据包中地址转换,可以控制的链路有prerouting(路由前), input, output, postrouting
  • mangle:修改数据包中的原数据,可以控制的链路有prerouting), input, forward, output, postrouting
  • raw:控制nat表中连接追踪机制的启用状况,可以控制的链路有prerouting, output

有关iptables具体介绍可以看下面这篇文章

https://www.cnblogs.com/vathe/p/6973656.html

使用示例:

iptables –[A|I 链] [-i|o 网络接口] [-p 协议] [-s 来源ip/网域] [-d 目标ip/网域] –j[ACCEPT|DROP]

Iptables设置

首先我需要在跳板机A上使用以下命令将8081端口接收到的流量转发至CS服务器的80端口 (协议和端口可自由替换)

iptables -I INPUT -p tcp -m tcp --dport 8081 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 8081 -j DNAT --to-destination xxx.xxx.xxx.xxx:8081//这个45323是我的teamserver连接端口,我也给转发到跳板机上去了,以后都从跳板机进行登录了
iptables -I INPUT -p tcp -m tcp --dport 45323 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 45323 -j DNAT --to-destination xxx.xxx.xxx.xxx:45323 iptables -t nat -A POSTROUTING -j MASQUERADE sysctl net.ipv4.ip_forward=1
使用iptables -nL --line-number -t 表名 查看当前设置好的规则

然后我们在cs服务器上设置对8081端口,以及45323端口的访问控制,以及在cs服务器上设置 对整个服务器(全部ip)禁止9100端口

iptables -I INPUT -p tcp --dport 8081 -j DROPiptables -I INPUT -p tcp --dport 45323 -j DROP //只允许跳板机访问这些端口端口 iptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 8081 -j ACCEPTiptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 45323 -j ACCEPT
iptables -I INPUT -p tcp --dport 8081 -j DROP
iptables -I INPUT -p tcp --dport 45323 -j DROP //只允许跳板机访问这些端口端口
iptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 8081 -j ACCEPT
iptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 45323 -j ACCEPT

同意来自xxxx访问45323,8081端口,拒绝了其他地址对45323以及8081端口的访问,iptables的策略设置完成,把服务器地址改成跳板机的ip

然后我们建立一个http的监听器看看,host和stager都填写跳板机

之后简单生成一个后门,运行上线,可以看到cs的web日志显示出我的跳板机访问了 checksum8算法生成的url

一些文章通过URL的生成算法,以及对Beacon stage的解析来寻找Beacon staging server

https://mp.weixin.qq.com/s/WUf96myUi8F3X_eNWPRTdw

对于如何Bypass cs beacon的扫描,各位可以看下这篇文章

https://mp.weixin.qq.com/s/fhcTTWV4Ddz4h9KxHVRcnw

访问跳板机的此目录可下载 stage 文件,直接访问真实的cs服务器则无法下载。当然这种办法治标不治本,只能对真实的cs服务器起到那么一点保护作用,cs服务器的一些前期隐藏工作和检测规避手段网上有很多

转载链接:设置iptables规则来保护CS服务器

修改默认端口

Cs Teamserver50050端口太过瞩目,可能被蓝队溯源或者被 IDS 检测,所以需要更换成比较隐蔽的端口

vim teamserver

修改端口即可

推荐阅读

  • 域前置攻击复现 | 域前置水太深,偷学六娃来隐身
  • 域前置溯源方法思考
  • 暗度陈仓:基于国内某云的 Domain Fronting 技术实践
  • 红队攻防基础建设—C2 IP隐匿技术
  • 红队实战攻防技术(一)
  • 红队实战攻防技术(二)

隐藏你的C2(使用域前置技术隐藏C2服务器,以及使用iptables策略来保护服务器)相关推荐

  1. 黑客利用域前置技术攻击缅甸政府并隐藏恶意活动

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 思科Talos 的研究人员发现攻击者正在利用合法域名使用域名前置技术隐藏命令和控制流量,攻击缅甸政府.该合法域名是缅甸政府用于路由受攻击者控制服 ...

  2. 【红队APT】反朔源隐藏C2项目CDN域前置云函数数据中转DNS转发

    文章目录 域前置-CDN隐藏C2真实IP 防止被溯源 什么是域前置 条件 原理 ==完整复现== 域前置溯源 DNS协议-域名记录解析 云函数-腾讯云操作 云函数如何溯源 端口转发-Iptables ...

  3. 模拟攻击者利用“域前置”(Domain Fronting)技术逃避审查(重定向、CDN)

    前情提要 今年3月份,FireEye公司曾发表过一篇报道:<APT29 Domain Fronting with TOR>,里边描述了一种攻击者经常使用的逃避审查机制的技术 Domain ...

  4. 一文搞明白域前置(Domain Fronting)技术

    目录 前言 一.概述 1.简介 2.简单示例 (1)使用 curl 演示域前置 (2)使用 wget演示域前置 3.影响范围 二.原理 1.挑战与应对 (1)按内容阻塞 (2)按地址阻塞 (3)主动探 ...

  5. 域前置Cobalt Strike逃避IDS审计

    域前置Cobalt Strike逃避IDS审计 域前置简介 域前置(Domain Fronting)基于HTTPS通用规避技术,也被称为域前端网络攻击技术. 这是一种用来隐藏Metasploit.Co ...

  6. 【红队APT】反朔源流量加密CSMSF证书指纹C2项目CDN域前置

    文章目录 背景交代: 常见红蓝对抗中红队面临问题: 蓝队发现处置情况: NC-未加密&加密后-流量抓包对比 MSF-流量通讯特征修改-证书-openssl 解决HTTPS-SSL通讯证书被特征 ...

  7. 基于空间域的信息隐藏关键技术研究

    实践题目:基于空间域的信息隐藏关键技术研究 目标是实现对320x240的灰度图像(样本自选,不能是lena图像)进行信息隐藏设计,应用空间域信息隐藏方法(例如LSB替换方法等)进行实验测试.对上述技术 ...

  8. 域前置,水太深,偷学六娃来隐身

    前言 又是平静的一天,吉良吉影只想过平静的生活. 哦,对不起拿错剧本了. 重保期间,RT 使用了多种方法来攻击资产, 其中不乏低级的方法. 1. 给客服 MM 传恶意文件,威胁不运行就投诉的,伪造&l ...

  9. 信息安全之加密域可逆信息隐藏

    前面四篇文章主要介绍了图像置乱加密的安全性问题,本篇文章介绍一种图像加密算法的应用算法,图像加密域可逆信息隐藏.以文献1为例,介绍一种<基于预测误差分类置乱的图像加密域可逆信息隐藏>算法[ ...

最新文章

  1. 大厂需要这样的Java工程师
  2. js在线压缩工具 支持Base62 encode 和 Shrink variables
  3. KMeans聚类算法Hadoop实现
  4. Altium Designer中将FPGA引脚定义导出成文件
  5. Go创建赋值channel
  6. 掌握AI核心技术没有秘籍,能自己创造就是王道
  7. Pandas+Pyecharts 数据分析与可视化 3D地图+柱状图
  8. 数据结构之堆(Heap),堆的相关操作,用堆模拟优先级队列
  9. dbcp连接池配置参数
  10. C语言实现阿克曼函数
  11. 房产管理系统下载和安装步骤
  12. c 计算机操作步进器,自制AT89C2051驱动步进电机的电路
  13. 基于Binder机制之AIDL原理分析
  14. A类计算机机房温度变化,机房的温度、湿度标准值是多少 ?
  15. ps4 安卓 php,PS4遥控操作下载|PS4遥控操作 (PS4 remote play)1.0.015181官方最新版_ - 极光下载站...
  16. 基于fpga的FlexRay总线设计
  17. QSPI驱动带NV3030B的LCD屏
  18. 各种实用的音频格式转换器,解决所有转换难题
  19. 数商云家具建材行业电商平台解决方案
  20. 虚拟机配置静态ip地址(VMware,linux系统)

热门文章

  1. 谷歌浏览器中英文切换
  2. 《Linux命令行与shell脚本编程大全》(第三版)读书笔记
  3. SpringCloud之消息总线组件及微服务网关
  4. 科学与信仰水火不容吗?
  5. sparql查询mysql_Sparql查询语言基础学习(一)
  6. 写一篇 500 字的文章,主题关于 18 世纪哲学家大卫 • 休谟和恐怖悖论,即研究人们是如何从他们害怕的东西中获得乐趣的...
  7. PostgreSQL:psql 介绍
  8. 鲸选厨房APPUI设计图
  9. c语言剪刀石头布游戏程序,什么方法最简单编剪刀石头布程序
  10. Linux关闭io,文件的打开与关闭-IO