介绍
Go加载shellcode的学习之路……
本次思路也采用了shellcode和加载器分离以及对shellcode进行加密的思路,但是在这之上添加了一些新的想法。
构成
处理器
处理器其实是前期对shellcode的一个aes加密处理,并且aes加密的密钥是自行输入,加密密钥未写入到代码中,这样也使加密过程更加灵活,可以采用不同的加密密钥对shellcode进行加密。
处理过程:
接收用户输入的shellcode原始路径,即生成的二进制bin文件或者raw文件。
接受用户输入的aes加密后shellcode的保存位置,文件名以及后缀可随意。
接受用户输入的aes加解密密钥,只支持16/24/32位的字符串。
采用的aes加密代码和之前文章采用的是一样的代码。
处理器下载地址:[点击下载](https://blog.axzzsec.com/upload/LoadR.zip)
加载器
加载器也是和之前大同小异,但是运行方式有所变化,在运行的时候需要输入aes加密后的shellcode位置信息,以及aes加解密密钥,还有就是自定义在程序内部的一个运行判断语句,只有三者都输入正确,加载器才会正常运行并加载shellcode上线。
加载过程:
接收aes加密后的shellcode位置。
接收aes解密密钥。
接收程序内部自定义的运行密码。(我自定义为了whoami)
加载代码和上篇也一样。
加载器下载地址:[点击下载](https://blog.axzzsec.com/upload/LoadL.zip)
结果
最终这样的免杀性还是不怎么样,可能和上篇的特征相似太多,加上上篇已经送样本了,所以这个上传到VT效果不如上篇第一次传上去后的效果好。