某金融内部CTF比赛 冰蝎3.0JSP木马流量分析题wp
Wireshark打开流量包,发现了一堆恶意流量,但重点是这个webshell.html
直觉告诉我这个文件是触发webshell的或者是一个上传点,既然有了提示,那就直接过滤http的包就行了呗。
追踪流量,这里http和tcp都行,目的是看看捕获的流量里的内容
注意这里是通过webshell上传的内容,里面捕获了AES加密的关键KEY,注意里面是没有iv向量的。(更多AES加密解密知识参考:AES和RSA加密 或 AES加解密)
包里是冰蝎jsp马,而且是3.0的,好家伙先把key留下,一会儿肯定用得着。
这个流量POST包就是冰蝎发送的数据,我们进行一下解密,对里面所有的进行逐一解密。
在捕获的其他流量包里找到了加密后的包,按理说我们知道冰蝎是base64,key+AES异或加密,所以直接拿AES和key就能解密,但这里我试了下没反应,于是就去找文献和脚本了。
代码参考:
# coding:utf-8
import base64
from Crypto.Cipher import AES
import binascii
import json # 注:python3 安装 Crypto 是 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pycryptodome
# 解密
def aes_decode(data, key):
try:
aes = AES.new(str.encode(key), AES.MODE_ECB) # 初始化加密器
decrypted_text = aes.decrypt(data) # 解密
decrypted_text = decrypted_text[:-(decrypted_text[-1])]
except Exception as e:
print(e)
return decrypted_text
if __name__ == '__main__':
key = '关键KEY' # 密钥长度必须为16、24或32位,分别对应AES-128、AES-192和AES-256
data = "要解密的POST内容"
data = base64.b64decode(data)
# mi = aes_encode(data,key)
# print("加密值:",mi)
# s=aes_decode(data,key)
# print("解密值:",s)
a = aes_decode(data, key)
print (a)
open('3.class', 'wb').write(a)
把key和AES加密内容直接填进去,python3跑一跑。
结果是一个class文件,再进行一下反编译,这里我反编译用的在线工具。针对电脑工具推荐:
其中一个class文件引起了我的注意,如下:
反编译出来的伪代码里有一串base64,直接解。
解出来了一个html,保存下来直接打开。
看到了杀马特的黑页,仿佛回到了童年?同时flag也显现出来了呵呵。
三、总结
论坛里相关的文章里提供的解密脚本不太好用,特别是那个php的脚本,我就从(狗哥,因为度娘搜出来的信息差太大)网上搜刮了一个python的 = =。
感兴趣的可以自己下载玩玩:
https://wws.lanzoui.com/iR7o5r9g1sb
class在线反编译:
http://www.javadecompilers.com/
参考文献:
https://cloud.tencent.com/developer/article/1755928
https://blog.csdn.net/weixin_34314939/article/details/112325020
https://www.freebuf.com/articles/web/213905.html
以上文章来源:https://www.t00ls.net/thread-61851-1-1.html
作者:playbyte
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏