Serverless扫描技术研究及应用
字数 1086 2025-08-07 08:21:50

Serverless扫描技术研究及应用

一、技术概述

Serverless扫描技术是一种利用云函数(Serverless)服务实现隐匿扫描的技术,通过云函数平台提供的随机出口IP和弹性资源,可以绕过传统安全设备的检测,降低被溯源的风险。

主要优势:

  1. 使用云服务商的随机IP作为出口,增大溯源难度
  2. 绕过态势感知、WAF等安全设备的检测
  3. 实现"封无可封,查无可查"的效果
  4. 可扩展性强,可结合多地域、多厂商云服务

二、基础实现

1. 云函数配置(以腾讯云为例)

创建步骤:

  1. 选择"自定义创建"
  2. 运行环境选择Python 3.6
  3. 设置函数名称
  4. 选择地域(不同地域对应不同IP池)

核心代码实现:

# -*- coding: utf8 -*-
import requests

def main_handler(event, context):
    headers = event["headers"]
    url = event["queryString"]["url"]
    path = event["queryString"]["path"]
    crake_url = str(url+path)
    
    try:
        r = requests.get(crake_url, timeout=5, headers=headers, verify=False)
        status = r.status_code
    except Exception:
        status = None
        pass
    
    return status, crake_url

触发器配置:

  1. 进入"触发管理"选项
  2. 配置API网关触发器
  3. 取消勾选"集成响应"
  4. 编辑API配置,将路径设置为"/"

2. 本地控制代码

基本功能:

  1. 通过API网关公网域名触发云函数
  2. 传递扫描参数(目标URL和路径字典)
  3. 接收并处理扫描结果

随机User-Agent实现:

# get_ua-header.py
import random

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    # 更多UA...
]

def get_random_ua():
    return random.choice(USER_AGENTS)

三、进阶技术实现

1. 多地域部署

原因:

  • 单个用户在某个地域只能有5个随机出口IP
  • 多地域部署可扩展可用IP数量

实现方式:

  1. 创建相同功能的云函数,但选择不同地域
  2. 本地控制代码将扫描任务分配给不同地域的API网关
  3. 可通过端口或字典内容进行任务分配

2. 端口扫描实现

云函数代码:

# -*- coding: utf8 -*-
from socket import *

def main_handler(event, context):
    IP = event["queryString"]["ip"]
    port = event["queryString"]["port"]
    
    try:
        conn = socket(AF_INET, SOCK_STREAM)
        res = conn.connect_ex((str(IP), int(port)))
        conn.send('Hello,World!'.encode("utf8"))
        results = conn.recv(25)
        
        if res == 0:
            conn.close()
            return port
    except Exception as err:
        print(err)
    finally:
        print("")
        conn.close()
        return None

本地控制优化:

  1. 使用协程提高扫描速度(如grequests模块)
  2. 多地域API网关并行扫描
  3. 随机延时避免频率检测

四、对抗与防御

1. 攻击方优势

  • IP随机性强,难以封禁
  • 请求分散,不易被关联
  • 可自定义请求头,模拟合法流量
  • 多地域部署增加IP池规模

2. 防御方对策

  1. 封禁可疑IP(但效果有限)
  2. 分析请求模式特征
  3. 关注云服务商IP段
  4. 利用威胁情报(如IP历史记录)

3. 溯源关键点

  • 检查IP是否为云服务商IP
  • 分析IP的历史记录(如Kunyu工具)
  • 关注请求时间与IP分配时间的差异

五、扩展应用

1. 大规模扫描优化

  1. 多厂商云服务组合使用(AWS、阿里云等)
  2. 动态调整扫描速率
  3. 任务分片与结果聚合

2. 其他应用场景

  1. 漏洞探测
  2. 信息收集
  3. 隐蔽C2通信

六、实现思维导图

Serverless扫描技术
├─ 云函数部署
│  ├─ 多地域
│  ├─ 多厂商
│  └─ 多实例
├─ 本地控制
│  ├─ 任务分配
│  ├─ 结果处理
│  └─ 速率控制
├─ 隐匿技术
│  ├─ 随机UA
│  ├─ 自定义Header
│  └─ 随机延时
└─ 对抗升级
   ├─ IP池扩展
   └─ 扫描策略优化

七、注意事项

  1. 遵守云服务商的使用条款
  2. 注意扫描行为的法律边界
  3. 合理控制扫描频率
  4. 测试前获取授权

八、工具推荐

  1. Kunyu - 空间测绘数据分析工具
  2. 微步情报 - IP情报分析
  3. 各云服务商API工具

通过以上技术实现,Serverless扫描可以成为一种高度隐匿的探测手段,在红队评估中具有重要价值,同时也提醒蓝队需要更新防御策略以应对此类新型攻击方式。

Serverless扫描技术研究及应用 一、技术概述 Serverless扫描技术是一种利用云函数(Serverless)服务实现隐匿扫描的技术,通过云函数平台提供的随机出口IP和弹性资源,可以绕过传统安全设备的检测,降低被溯源的风险。 主要优势: 使用云服务商的随机IP作为出口,增大溯源难度 绕过态势感知、WAF等安全设备的检测 实现"封无可封,查无可查"的效果 可扩展性强,可结合多地域、多厂商云服务 二、基础实现 1. 云函数配置(以腾讯云为例) 创建步骤: 选择"自定义创建" 运行环境选择Python 3.6 设置函数名称 选择地域(不同地域对应不同IP池) 核心代码实现: 触发器配置: 进入"触发管理"选项 配置API网关触发器 取消勾选"集成响应" 编辑API配置,将路径设置为"/" 2. 本地控制代码 基本功能: 通过API网关公网域名触发云函数 传递扫描参数(目标URL和路径字典) 接收并处理扫描结果 随机User-Agent实现: 三、进阶技术实现 1. 多地域部署 原因: 单个用户在某个地域只能有5个随机出口IP 多地域部署可扩展可用IP数量 实现方式: 创建相同功能的云函数,但选择不同地域 本地控制代码将扫描任务分配给不同地域的API网关 可通过端口或字典内容进行任务分配 2. 端口扫描实现 云函数代码: 本地控制优化: 使用协程提高扫描速度(如grequests模块) 多地域API网关并行扫描 随机延时避免频率检测 四、对抗与防御 1. 攻击方优势 IP随机性强,难以封禁 请求分散,不易被关联 可自定义请求头,模拟合法流量 多地域部署增加IP池规模 2. 防御方对策 封禁可疑IP(但效果有限) 分析请求模式特征 关注云服务商IP段 利用威胁情报(如IP历史记录) 3. 溯源关键点 检查IP是否为云服务商IP 分析IP的历史记录(如Kunyu工具) 关注请求时间与IP分配时间的差异 五、扩展应用 1. 大规模扫描优化 多厂商云服务组合使用(AWS、阿里云等) 动态调整扫描速率 任务分片与结果聚合 2. 其他应用场景 漏洞探测 信息收集 隐蔽C2通信 六、实现思维导图 七、注意事项 遵守云服务商的使用条款 注意扫描行为的法律边界 合理控制扫描频率 测试前获取授权 八、工具推荐 Kunyu - 空间测绘数据分析工具 微步情报 - IP情报分析 各云服务商API工具 通过以上技术实现,Serverless扫描可以成为一种高度隐匿的探测手段,在红队评估中具有重要价值,同时也提醒蓝队需要更新防御策略以应对此类新型攻击方式。