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大小对比
好像都差不多,能上线就成。。。
还有就是,本文图中的注入程序,是基本注入那边文章的代码,添加了解密的操作从而进行进程注入的。