详细内容或原文请订阅后点击阅览
自动字符串反混淆
上周,360网络安全研究实验室发布了一篇博客文章,介绍了一款用Go编写的名为Blackrota的混淆后门。他们声称Blackrota后门可用于x86/x86-64架构,考虑到Golang的交叉编译能力,这并不奇怪。在过去的4年里,我们一直在使用Golang进行内部服务,我绝对可以看到Golang对恶意软件作者的吸引力:
来源:Kryptos Logic _恶意软件上周,360网络安全研究实验室发布了一篇博文,介绍了一款用Go语言编写的混淆后门Blackrota。他们声称Blackrota后门适用于x86/x86-64架构,考虑到Golang的交叉编译能力,这并不奇怪。
用 Go 编写的混淆后门 Golang 的交叉编译在过去的 4 年里,我们一直在使用 Golang 进行内部服务,我绝对可以看到 Golang 对恶意软件作者的吸引力:
- 默认情况下静态编译的二进制文件交叉编译通常就像设置两个环境变量一样简单强大的软件包生态系统允许您从其他来源提取所需的代码没有运行时依赖项具有非标准调用约定的深奥运行时会破坏大多数反编译工具,迫使逆向工程师阅读汇编
Blackrota 使用 gobfuscate 混淆源代码,然后由 Go 工具链进行编译。Gobfuscate 为逆向工程师带来了许多挑战,但我今天要关注的是字符串混淆。
gobfuscate字符串混淆
恶意软件多年来一直在使用 XOR 编码字符串,但 Blackrota 更进一步。它为每个字符串生成一个随机 XOR 密钥,并将字符串包装在一个函数中,该函数在运行时对字符串进行 XOR 以返回正确的密钥。
gobfuscate 在编译过程之前运行,以生成代码的混淆版本,然后由 Go 编译器编译:
之前:
package mainimport "fmt"func main() {fmt.Println("Hello world!")}
package mainimport "fmt"func main() {fmt.Println("Hello world!")}
package
main
import
"fmt"
func
main
fmt
Println
之后:
fmt