GreenVPN配置文件的解密分析

0x00 寄语

最艰难困苦时候,总想要放弃,不如就此放弃,但别忘了再回头看一次这一路艰辛坎坷,和那触手可及的梦想。

0x01 加密密文的解密思路

在GreenVPN目标样本的目录下,有很多加密的ini文件,通过试图对ini解密以获取目标服务器信息,进行取证。

从开发者角度讲,在该软件运行时,会进行对服务器的一次连接,为了方便软件维护,开发者大概率会将服务器信息写入配置文件中,通过解密其中的密文,获取服务器信息,最后进行连接;那么就针对该程序对文件的读取、解密和写入等过程进行抓取分析,还原其解密过程。

0x02 调试主程序

使用x32dbg打开主程序,将程序定位至入口点。

寻找kernel32模块中对文件操作的API,这里对文件操作的API主要定位CreateFileA、CreateFileW、ReadFile和ReadFileEx。

在这四个API处下断点。

f9让程序运行至断点处,再单步一次让程序运行至CreateFileA的实现部分,观察调用堆栈窗口,找到存储文件名的地址。

观察内存窗口,发现正在访问“system.ini”文件。

f9让程序继续运行至断点处,再单步一次让程序运行至ReadFile的实现部分,观察调用堆栈窗口,尝试查找读取数据的缓冲区。

在内存窗口中转到该地址,由于从文件中读取的数据要进行解密才能够识别,所以在该处设置访问断点。f9继续运行至访问位置。

发现加密数据已被读入缓冲区中,此时运行位置(eip)停留在循环中,观察发现当前循环体为下面解密过程统计数据字节数目。

将程序硬件访问断点去掉,防止干扰调试,F4运行至解密循环结束地址,观察内存窗口发现加密数据已被解密,由此可以进一步推断解密算法即为上方循环体中的部分。所有的ini文件可通过此法进行解密。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇