冰蝎&哥斯拉流量分析
字数 1219 2025-08-23 18:31:18

冰蝎与哥斯拉流量分析教学文档

1. 对称密码AES基础

1.1 AES基本概念

  • 明文和密文长度可选:128bit、192bit、256bit(最常见的是128bit)
  • 分组密码工作模式:
    • ECB(电子密码本)模式:
      • 每次密钥相同
      • 相同明文加密产生相同密文
      • 不需要初始向量(IV)
    • CBC(密码分组链接)模式:
      • 使用前一个块的密文与当前块明文异或后再加密
      • 需要初始化向量(IV)来避免加密结果重复
      • 第一块使用IV,后续块使用前一块的密文

2. 冰蝎流量分析

2.1 冰蝎3

  • 加密方式:openssl_decrypt($post, "AES128", $key)
  • 默认使用AES-128-CBC模式
  • CyberChef解密配方:
    URL_Decode()
    From_Base64('A-Za-z0-9+/=',true,false)
    AES_Decrypt({'option':'UTF8','string':'密钥'},{'option':'Hex','string':''},'CBC','Raw','Raw',{'option':'Hex','string':'00000000000000000000000000000000'},{'option':'Hex','string':''})
    Gunzip()
    
    • 注意:初始向量通常设置为全0

2.2 冰蝎4

  • 加密方式变为可选:
    • aesaes_with_magic使用ECB模式
    • 其他加密方式可通过"传输协议"功能查看加解密函数
  • 解密方法:
    1. 确定使用的加密方式
    2. 对于AES加密:
    • ECB模式CyberChef配方:
      URL_Decode()
      From_Base64('A-Za-z0-9+/=',true,false)
      AES_Decrypt({'option':'UTF8','string':'密钥'},{'option':'Hex','string':''},'ECB','Raw','Raw',{'option':'Hex','string':''},{'option':'Hex','string':''})
      Gunzip()
      
    1. 对于xor_base64等非AES加密:
    • 使用冰蝎4的"传输协议"功能直接解密

3. 哥斯拉流量分析

3.1 JAVA_AES_BASE64

  1. 流量分析步骤:

    • 过滤http流,查找压缩包文件头(foremost提取)
    • 从jsp马中获取密钥和连接密码信息
    • 密钥通常为16字节(128bit)
    • 服务器返回格式:MD5前16位 + 密文 + MD5后16位
  2. CyberChef解密配方:

    • 请求包解密:
      URL_Decode()
      From_Base64('A-Za-z0-9+/=',true,false)
      AES_Decrypt({'option':'UTF8','string':'密钥'},{'option':'Hex','string':''},'ECB','Raw','Raw',{'option':'Hex','string':''},{'option':'Hex','string':''})
      Gunzip()
      
    • 响应包解密:
      • 先手动删除前16位和后16位
      From_Base64('A-Za-z0-9+/=',true,false)
      AES_Decrypt({'option':'UTF8','string':'密钥'},{'option':'Hex','string':''},'ECB','Raw','Raw',{'option':'Hex','string':''},{'option':'Hex','string':''})
      Gunzip()
      

3.2 JAVA_AES_RAW

  1. 特点:

    • 不需要去除前后16位
    • 密文为十六进制格式
  2. CyberChef解密配方:

    From_Hex('Auto')
    AES_Decrypt({'option':'UTF8','string':'密钥'},{'option':'Hex','string':''},'ECB','Raw','Raw',{'option':'Hex','string':''},{'option':'Hex','string':''})
    Gunzip()
    

3.3 端口扫描分析

  • 识别nmap的TCP SYN扫描(-sS):
    • 攻击者发送SYN包
    • 端口开放:受害者返回SYN,ACK
    • 端口关闭:返回RST
    • 端口被过滤:无响应
  • 过滤SYN,ACK包可确定开放端口

4. 密钥爆破技巧

  • 当无法找到密钥时:
    1. 冰蝎密钥生成规则:密码的32位MD5值的前16位
    2. 爆破步骤:
    • 猜测可能的密码
    • 计算其MD5值并取前16位作为测试密钥
    • 尝试解密,成功则确定密码

5. 实用工具

  • CyberChef:用于加解密操作
  • B神工具:自动分析工具(B站账号:https://space.bilibili.com/183379727/dynamic)
  • Wireshark:流量分析
  • Foremost:文件提取

6. 解题流程总结

  1. 确定webshell类型(冰蝎/哥斯拉)
  2. 识别加密方式(查看jsp马或尝试不同方式)
  3. 获取密钥(从流量或爆破)
  4. 选择正确的解密配方
  5. 解密流量获取flag或所需信息

7. 常见问题

  • 冰蝎3使用CBC模式,初始向量常为全0
  • 哥斯拉BASE64类型需要去除前后16位MD5值
  • RAW类型直接使用十六进制密文
  • 端口扫描通过SYN,ACK响应判断开放端口
冰蝎与哥斯拉流量分析教学文档 1. 对称密码AES基础 1.1 AES基本概念 明文和密文长度可选:128bit、192bit、256bit(最常见的是128bit) 分组密码工作模式: ECB(电子密码本)模式: 每次密钥相同 相同明文加密产生相同密文 不需要初始向量(IV) CBC(密码分组链接)模式: 使用前一个块的密文与当前块明文异或后再加密 需要初始化向量(IV)来避免加密结果重复 第一块使用IV,后续块使用前一块的密文 2. 冰蝎流量分析 2.1 冰蝎3 加密方式: openssl_decrypt($post, "AES128", $key) 默认使用AES-128-CBC模式 CyberChef解密配方: 注意:初始向量通常设置为全0 2.2 冰蝎4 加密方式变为可选: aes 和 aes_with_magic 使用ECB模式 其他加密方式可通过"传输协议"功能查看加解密函数 解密方法: 确定使用的加密方式 对于AES加密: ECB模式CyberChef配方: 对于xor_ base64等非AES加密: 使用冰蝎4的"传输协议"功能直接解密 3. 哥斯拉流量分析 3.1 JAVA_ AES_ BASE64 流量分析步骤: 过滤http流,查找压缩包文件头(foremost提取) 从jsp马中获取密钥和连接密码信息 密钥通常为16字节(128bit) 服务器返回格式:MD5前16位 + 密文 + MD5后16位 CyberChef解密配方: 请求包解密: 响应包解密: 先手动删除前16位和后16位 3.2 JAVA_ AES_ RAW 特点: 不需要去除前后16位 密文为十六进制格式 CyberChef解密配方: 3.3 端口扫描分析 识别nmap的TCP SYN扫描(-sS): 攻击者发送SYN包 端口开放:受害者返回SYN,ACK 端口关闭:返回RST 端口被过滤:无响应 过滤SYN,ACK包可确定开放端口 4. 密钥爆破技巧 当无法找到密钥时: 冰蝎密钥生成规则:密码的32位MD5值的前16位 爆破步骤: 猜测可能的密码 计算其MD5值并取前16位作为测试密钥 尝试解密,成功则确定密码 5. 实用工具 CyberChef:用于加解密操作 B神工具:自动分析工具(B站账号:https://space.bilibili.com/183379727/dynamic) Wireshark:流量分析 Foremost:文件提取 6. 解题流程总结 确定webshell类型(冰蝎/哥斯拉) 识别加密方式(查看jsp马或尝试不同方式) 获取密钥(从流量或爆破) 选择正确的解密配方 解密流量获取flag或所需信息 7. 常见问题 冰蝎3使用CBC模式,初始向量常为全0 哥斯拉BASE64类型需要去除前后16位MD5值 RAW类型直接使用十六进制密文 端口扫描通过SYN,ACK响应判断开放端口