0x00 简介
Gh0st由红狼组成的优秀的开源远程控制软件Cooldiyer开发。开源3.6发布一段时间后,作者重写并发布了很多1.0 Alpha,有这个版本VIP的,我也有幸收集到一套。当你拿到一个别人的免杀木马你想做什么,学习免杀方法?而你由发现你拿到的样本你手头的控制端可以***兼容,你想修改配置信息并写一个特殊版本的生成器吗?想想吗?那就跟我来吧!(事实上,你读完文章后不会写,我也没有写)

0x01 分析过程
本文用到的Ollydbg快捷键:
F9 操作程序/继续操作
F8 走过代码,遇见CALL建议少用易跑
F7 跟进,跑程序不容易。
F2 下断点,然后F9跳过一些代码段。
F4 执行到所选行,常用。
想写生成器吗?先解决配置信息加密解密算法的前提。在这里,我从服务端exe从生成器开始,我们不会开始。毕竟,在大多数情况下,我们只有服务端exe样本。

注意生成器下方“GH0STC 用户配置信息 GH0STC”,这就是我们要解密的字符串。假如我们现在才抓到服务端exe如何找到配置?一般情况下,可以直观快速地找到。1.写在资源文件中 2。exe、dll尾部附加数据。(我写的。DRAT两者都试过),我们用C32ASM工具16进制编辑。***发现文件尾部有配置信息。你觉得有点简单吗?…… 难度太大,不在本文的考虑范围内。

让我们使用动态调试工具Ollydbg打开,设置CreateFileW函数断点,这里我直接用工具设置,你也可以用bp CreateFileW命令设置。为什么要这样做?它必须读取自己的配置“打开自己”因此,断点设置在此函数中是最合适的。当然,本文没有讨论其他方法,然后按下F9操作程序。


如上图所示(如果没有,继续按下)F9),我们按ALT F9返回程序,按几次F8向下走ReadFile函数还有CloseHandle、字符GH0STC,这个时候说明程序已经把了“配置”阅读后,正常情况下应准备进入解密。所以下面出现了CALL非常注意调用(一般要按)F7不要再按了F8可能会跳过关键)

看到这个CALL,我们用F7跟进,然后按多个F8直到下一个CALL。
004015F3 |. E8 88FEFFFF CALL server.00401480n………………

看关键算法CALL(00401527,至于怎么判断,我只能说我提前做了功课,实践中大家要多试试),我们还是用的F7跟进(你可以使用其他无用的部分)F2 F9或F4跳过)。
00401527 |. E8 B4FEFFFF CALL server.004013E0
在F7可以看到跟进

00401404 |> /8A1401 /MOV DL,BYTE PTR DS:[ECX EAX]
00401407 |. |80EA 08 |SUB DL,8
0040140A |. |80F2 20 |XOR DL,20
0040140D |. |881401 |MOV BYTE PTR DS:[ECX EAX],DL
00401410 |. |41 |INC ECX
00401411 |. |3BCE |CMP ECX,ESI
00401413 |.^\7C EF \JL SHORT server.00401404
这是解密算法的关键部分键部分,我们在这里换工具IDA看看这个函数(004013E0)。提示:IDA快速跳转地址快捷键”G”,

以后喜欢用F5插件(Hex-Rays Decompiler),我直接按这里F5看C代码(这部分操作没有截图B事实上,没什么好截的)。

对比下OD内部汇编代码慢慢品尝,你会发现关键代码只有两行。
00401407 |. 80EA 08 |SUB DL,8
0040140A |. 80F2 20 |XOR DL,20
有一个字符,减8和异或20的操作。
for (i = 0; i < len; i )
{
data[i] -= 0x8;
data[i] ^= 0x20;
}
在这里,我们找到了关键算法部分。你可能不明白或不知道该怎么办。看看下图中的现成工具。如果你真的很懒,你可以在百度上找到它,或者你可以找到它gh0st 3.6开源代码,然后几乎更改可以用来解密。
0x02 课后作业
给喜欢折腾的同学留三个作业: 1。004010D0函数功能(看不懂3.6代码)
2、对比一下gh0st 3.6加密解密字符和1.0有什么区别(其实我已经说过最关键的部分了,除了头尾。“GH0STC”其他没有变化的不同)
3、写一个配套生成器或参考3.6只需更改代码即可。
我不会在这里发送样本和其他附件。如果有必要,我会来的“暗组”论坛。这里有你想要的一切!
下面在附上1.0解密核心代码的字符串decode.h
gh0st附件