这篇文章给大家分享的是有关redress软件是一款什么工具的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
我们要分析的样本是一个从恶意软件中单独剥离出来的ELF可执行文件,剥离出来的可执行文件会增加逆向分析的难度,因为我们还需要做很多额外的工作来还原二进制文件中的符号。不过还好有redress工具可以帮助到我们,redress软件是一款专门用来分析Go代码的工具,它可以从代码中提取出数据,然后利用这些数据来重构符号并执行分析。
下面是我们使用该工具和参数“-src”分析后得到的输出结果:
从上图中我们可以看到,恶意软件的源代码包含了三个Go文件,里面都是代码所实现的功能函数以及对应的代码行数。通过对比某些函数名称,我们可以知道这个恶意软件大概率是一个勒索软件。但是,源代码的行数大概只有300行,所以这个勒索软件应该不是很复杂,而且很有可能还处于初始开发阶段。
接下来,我们在调试器中进行动态调试。这里我使用了Radare2作为调试器,Radare2可以分析Go源码,并通过分析命令来恢复代码中的符号,这也是我选择Radare2作为调试器而不选择GDB的原因。
Radare2中的命令“aaa”可以执行一次自动化分析任务,从下图中我们可以看到,Radare2恢复并识别出了函数名称以及符号名称:
我们可以看到,函数init()会在main函数前执行,int()会调用函数check()。在check()中,恶意软件首先会通过向hxxps://ipapi.co/json/发送一个http请求来获取受感染设备的信息。接下来,它会过滤掉白俄罗斯(BY), 俄罗斯(RU)和乌克兰(UA)这三个国家来避免恶意软件在这三个国家的用户设备上运行。
在main()函数中,首先会删除掉Go代码,然后调用函数randSeq()来生成一个大小为0x20字节的随机AES秘钥:
接下来,它会调用函数makesecret(),它主要用来利用代码中硬编码的RSA公钥来加密AES秘钥。在这个函数中,代码会调用函数EncryptPKCS1v15()并使用RSA加密算法来加密给定的AES秘钥。
下面就是RSA算法加密后的秘钥数据:
然后,它会调用函数EncodeToString()来对之前的加密数据进行Base64编码:
接下来,它会为解密后的READEME文件分配一个缓冲区:
加密后的AES秘钥已经以Base64编码格式写入到了解密后的README文件中。
在勒索软件加密文件之前,它会使用“service stop [pname]”或“systemctl stop [pname]”命令来终止下列进程的运行:
当它尝试终止apache2.service时,会弹出一个标题为“Authentication Required”的对话框,此时需要用户输入系统密码来完成操作。
最后,恶意软件会调用函数Walk(root string, walkFn WalkFunc)来从根目录“/”处开始遍历文件,并对这些文件进行加密处理。
这款恶意软件使用了AES-256-CFB算法来加密目标文件,加密后的文件后缀会添加一个“.encrypted”字符串。README文件内容如下:
EncFile()函数主要负责对文件进行加密,它首先会获取待加密文件的大小,如果文件大小不超过0x986880(1,000,000)字节,它就会选择使用AES-256-CFB算法来对全部的文件数据进行加密。否则,它会读取目标文件的前0x986880(1,000,000)个字节的数据进行加密,然后将源文件中剩下的数据追加到加密文件数据的结尾处。
根据我们的分析,这款恶意软件其实并不复杂,而且很可能仍处于前期开发阶段。在将来,我们可能会看到越来越多采用Go语言开发的恶意软件,我们也会持续监控和过滤采用Go语言开发的恶意软件。
SHA256: 50470f94e7d65***bf00d7416a9634d9e4141c5109a78f5769e4204906ab5f0bIoC: fullofdeep<at>protonmail.com
感谢各位的阅读!关于“redress软件是一款什么工具”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。