0x000 前言
近几年大家都喜欢用CS来进行后渗透,所以对于ShellCode大家应该不会陌生。
但是可能很多人并不懂CS它的功能是什么,CS生成的ShellCode是一段下载者。
主要功能为下载becon.dll,然后内存加载,我们所用的相关功能都在becon里。
ShellCode可能采用汇编或VC编写后转成机器码提取关键机器码,优势在于体积小
体积小就可以直接结合漏洞使用,什么Word文档、MS17010溢出、IE漏洞挂马等
都可以直接结合CS来使用,直接CS上线,而不是非要先做其它操作再植入CS。
网上关于汇编或VC编写ShellCode的文章很多,但是.NET的"ShellCode"很少见
本文将教大家如何用操作码实现.NET版"ShellCode"的编写。
0x001 指令、操作码、字节码
在正式开始前,先给大家科普一下指令、操作码、机器码等的区别
指令: 命令cpu干什么,是由操作码字段和地址码字段(操作数字段)组成
操作码(Opcode): 就是执行某种操作的命令代码
BYTECODE(字节码):与机器代码相同,除了它主要由基于软件的解释器(如Java或CLR)使用
程序集:有两个“程序集” – 一个汇编程序是一系列的助记符和操作数,它们被馈送到“汇编程序”,
“汇编程序”将助记符和操作数“汇编成可执行的机器代码”.可选地,“链接器”链接组件并生成可执行文件.
CLR语言:(.NET语言)中的第二个“程序集”是一系列CLR代码,其中注入了元数据信息,可执行代码库,但不能直接执行.