CSharp解密Shellcode并加载

下面所有加密的文件都是我上一篇 [工具传送门](https://blog.axzzsec.com/archives/csharp-encode-shellcode),工具加密后进行解密并实现调用上线的。

RSA

测试rsa加密后的shellcode能否上线。

由于是shellcode注入程序,需要保证进程列表中有注入的进程,这里注入到notepad进程中

- 启动一个记事本程序

- 在注入shellcode之前,确认shellcode注入是调用的rsa加解密函数实现上线。

- 测试能否上线

rsa解密不能上线,卒

找错误。。。。。

第一个问题是 私钥地址填成了公钥的地址,导致解密失败,因为公钥正常情况下只能用来加密,私钥才能用来解密,由于填为了公钥,所以无法解密。

第二个问题是 解密函数写错了。

新版本的解密函数

成功上线

AES

测试AES解密shellcode注入到进程中能否上线。

记事本进程暂时别关闭,然后调用aes解密函数,将shellcode注入到记事本进程中。

由于为了测试方便,key我直接定义在函数里面了,实际使用可以通过用户输入来接收。

aes解密函数

重新编译调用aes加密后的shellcode并运行

DES

测试DES解密shellcode注入到进程中能否上线。

调用des解密函数

des解密函数

重新编译并调用des加密后的shellcode

XOR

直接对shellcode进行xor加密,然后再进行xor解密的话无法正常上线,具体没有测试,有关xor加密解密shellcode的思路,大概是先进行aes、des、rsa、base64后再进行xor加密,然后最终再解密shellcode进行加载。

因为原始的shellcode机器码杂乱且无规律,导致加密后的数据在解密时无法还原。

Base64

base64就不用测试了。

总结

aes加密shellcode正常上线

des加密shellcode正常上线

rsa加密shellcode正常上线

base64编码shellcode正常上线

原始shellcode大小与加密后的shellcode大小对比

好像都差不多,能上线就成。。。

还有就是,本文图中的注入程序,是基本注入那边文章的代码,添加了解密的操作从而进行进程注入的。