type
status
date
slug
summary
tags
category
icon
password
😀
最近一直在忙自己学校战队招新的事情,这个样本分析已经过去好几天了,一直在拖,今天写一下这个样本分析,这个是自己比赛中没有做出来,也正好学习一下怎么分析样本了

📝 样本分析

附件

逆向分析

💡
64位go语言编写的
notion image
主要是利用path_filepath_Walk函数遍历文件路径,然后执行函数a.cap
notion image
a.cap指向的就是main_main_func1
main_main_func1函数中有多个 strings_Index 判断,用于过滤某些特定的路径前缀或目录。
notion image
主要作用就是过滤掉/proc/boot/sys/run 等系统目录
然后我们就可以在main_main_func1_1中找到main_encrypt_file,这个就是对我们非系统目录下的文件进行加密的
notion image
梳理一下main_encrypt_file里面的加密逻辑
主要是椭圆曲线curve25519加密,首先调用curve25519.ScalarBaseMult根据scalar生成公钥dst,scalar是一个随机的32字节(勒索方提供的),然后调用curve25519_ScalarMult生成共享密钥v27.并且在加密后的文件加一个’.xiran’后缀
notion image
然后得出的共享密钥v27经过两次SHA256,第一次SHA256作为ChaCha20加密的nonce,第二次SHA256作为ChaCha20加密的key.
notion image
在生成chacha20密钥流之后,对要进行加密的文件进行了大小判断.
如果文件大小小于等于0x1400000个字节,就会对整个文件进行加密,如果文件大小大于0x1400000个字节,那么就以0xa00000为一块,只加密前0x100000.
notion image
notion image
最后将dst和一个不知道啥意思的6字节写在写入文件的末尾
notion image
我们可以直接在010editor当中直接读取到dst
notion image
然后这个题给了另一个cha文件,里面求的32个字节应该是scaler
打开cha文件之后可以迅速定位到那32个字节验证的地方
notion image
首先是先进行了一个验证,这个值最后必须为0xD033A96A
notion image
主要的验证就是先经过了一个换表base64加密,之后和明文进行一个异或
这里写了一个python的脚本,只要是利用递归的思想,爆破的是按44个字节,最后验证一下前十个字节和32个字节之后的十个字节相同就是正确的scaler,再经过hash验证之后发现对了
notion image

exp

这里有个坑,就是题目中会给你一个公钥,但是那个解出来不对的
notion image
notion image

🤗 总结归纳

病毒样本是由64位编写,并且没有去除符号表还是比较友好的,主要是第一步写了那个递归脚本写了好久,还是要多接触一些这样的样本分析

📎 参考文章

💡
有关学习或者复现上的问题,欢迎您在底部评论区留言,一起交流~
周报(五)WMCTF2024-re(部分)
Loading...
5m10v3
5m10v3
目前主攻方向为Re
Announcement
🎉5m10v3のBlog已经上线啦🎉
-- 感谢各位师傅的支持 ---
👏欢迎师傅们前来交流👏