冰蝎3.0流量包简单分析

本文介绍了如何通过编写Python脚本,利用tshark工具捕获和分析冰蝎流量,通过URL解码、Base64解码获取AES密钥,进而对传输数据进行多次解码,最终恢复出一些命令执行的内容。
摘要由CSDN通过智能技术生成

About

碍于流量比较多所以编写一个脚本来提取数据包中的冰蝎流量进行解密

思路

工具编写思路
配合系统tshark将冰蝎的POST流量进行导出,
对shell文件进行url解码和base解码,得到aes的key密钥

赛题下载

链接:https://pan.baidu.com/s/1xSNiDSb5zlAAxSQnWDqOyA?pwd=q1hw
提取码:q1hw

实践

tshark -r behinder.pcap -Y "http.request.method==POST" -T fields -e http.file_data -E quote=d > output.txt

导出冰蝎传输数据,使用tshark配合,对POST传输进行过滤 ,再导出file_data的数据
在这里插入图片描述

得到最原始的传输数据,需要进行多次解码
使用正则的方式进行筛选加密数据

def kkey():
    file = open('output.txt', 'r', encoding='utf-8')
    F = file.read()
    try:
        for i in range(0,1):
            x = r'"(.*?)"'
            flag = re.findall(x, F)[i]
            nt = urllib.parse.unquote(flag)
            l = r'e\("(.*?)"\)'
            flag2 = re.findall(l,nt)[0]
            b64 = base64.b64decode(flag2)
            m = r'key="(.*?)";'
            global flag3
            flag3 = re.findall(m,str(b64))[0]
    except IndexError:
        print("exit")

进行多次正则筛选出key的值

def ddencode():
    AES_key = flag3.encode('utf-8')
    file = open('output.txt','r',encoding='utf-8')
    F = file.read()
    try:
        for i in range(1,300000000000000):
            x = r'"(.*?)"'
            flag = re.findall(x,F)[i]
            encrypted_bytes = base64.b64decode(flag)
            aes = AES.new(AES_key, AES.MODE_CBC)
            decrypted_bytes = aes.decrypt(encrypted_bytes)
            decrypted_text = decrypted_bytes.rstrip(b'\0').decode('latin-1')
            l = r"e\('(.*?)'\)"
            flag2 = re.findall(l, decrypted_text)[0]
            b64 = base64.b64decode(flag2)
            out = open('flag.txt','a')
            out.write('\n'+str(b64)+'\n')
    except IndexError:
        print("exit")

再使用key对数据进行解密,值得关注的是数据转换的格式很有趣,转为utf-8则乱码

def bcmd():
    file = open('flag.txt', 'r', encoding='utf-8')
    F = file.read()
    try:
        for i in range(0,10000000000):
            lm = r'cmd="(.*?)";'
            op = re.findall(lm,F)[i]
            ab = base64.b64decode(op)
            print(ab)
            out = open('cmdflag.txt', 'a')
            out.write('\n' + str(ab) + '\n')
    except IndexError:
        print("exit")

在这里插入图片描述
得到原始的数据,可以看到一些命令的执行,
贴一份完整代码

攻击端数据恢复
# -*- coding: utf-8 -*-
import re
import urllib
import base64
from Crypto.Cipher import AES

def ddencode():
    AES_key = flag3.encode('utf-8')
    file = open('output.txt','r',encoding='utf-8')
    F = file.read()
    try:
        for i in range(1,300000000000000):
            x = r'"(.*?)"'
            flag = re.findall(x,F)[i]
            encrypted_bytes = base64.b64decode(flag)
            aes = AES.new(AES_key, AES.MODE_CBC)
            decrypted_bytes = aes.decrypt(encrypted_bytes)
            decrypted_text = decrypted_bytes.rstrip(b'\0').decode('latin-1')
            l = r"e\('(.*?)'\)"
            flag2 = re.findall(l, decrypted_text)[0]
            b64 = base64.b64decode(flag2)
            out = open('flag.txt','a')
            out.write('\n'+str(b64)+'\n')
    except IndexError:
        print("exit")

def kkey():
    file = open('output.txt', 'r', encoding='utf-8')
    F = file.read()
    try:
        for i in range(0,1):
            x = r'"(.*?)"'
            flag = re.findall(x, F)[i]
            nt = urllib.parse.unquote(flag)
            l = r'e\("(.*?)"\)'
            flag2 = re.findall(l,nt)[0]
            b64 = base64.b64decode(flag2)
            m = r'key="(.*?)";'
            global flag3
            flag3 = re.findall(m,str(b64))[0]
    except IndexError:
        print("exit")
def bcmd():
    file = open('flag.txt', 'r', encoding='utf-8')
    F = file.read()
    try:
        for i in range(0,10000000000):
            lm = r'cmd="(.*?)";'
            op = re.findall(lm,F)[i]
            ab = base64.b64decode(op)
            print(ab)
            out = open('cmdflag.txt', 'a')
            out.write('\n' + str(ab) + '\n')
    except IndexError:
        print("exit")


if __name__ == '__main__':
    kkey()
    print("key is "+flag3)
    ddencode()
    bcmd()

现阶段困难点

由于无法过滤出原始的数据流导致无法最终服务器回显的数据
本来是想写成自动化的,有时间的话后期应该会完善

结语

写的代码比较烂如果有不懂的请私信我,博主正在努力中…
在这里插入图片描述

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
冰蝎3.0和4.0的流量特征有一些显著的不同。首先,在加密方式方面,冰蝎4.0引入了更多的加密方式,括xor、xor_base64、aes、json和image等五种加密方式,并且每种加密方式都支持自定义加解密代码。而冰蝎3.0则没有这么多加密方式的选择。\[1\] 其次,在传输方式方面,冰蝎4.0引入了okhttp3客户端,因此与3.0版相比,HTTP协议交互和TLS协议交互都有显著的不同。这意味着在TLS未解密(TLS协议流量)和TLS解密(HTTP协议流量)两种场景下,冰蝎4.0的流量特征也会有所不同。\[1\]\[2\] 此外,冰蝎4.0版本提供了传输协议自定义功能,让用户可以对流量的加密和解密进行自定义,实现流量解密协议的去中心化。这意味着冰蝎4.0的流量特征可以根据用户的自定义传输协议而变化,不再有固定的连接密码的概念。\[3\] 综上所述,冰蝎3.0和4.0的流量特征在加密方式和传输方式方面有明显的差异,并且冰蝎4.0版本提供了更多的自定义功能,使得流量特征更加灵活和多样化。 #### 引用[.reference_title] - *1* *2* [攻防演练 | 观成瞰云有效检出冰蝎4.0加密流量](https://blog.csdn.net/GCKJ_0824/article/details/125987480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [冰蝎Behinder_v4.0](https://blog.csdn.net/m0_55793759/article/details/127250968)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D@nZ0N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值