前言
在做红蓝攻防时,常常要用到cs、msf等工具,使用工具生成shellcode或可执行程序,那么小小的shellcode为何能做这么多事情,拿到shellcode后又该怎么分析。希望这篇文章能给大家带来答案,文章中不正确的地方请及时指出。
shellcode定义shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制之机械码,以其经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 在寄存器eip溢出后,加入一段可让CPU执行的shellcode机械码,让电脑可以执行攻击者的任意指令。 --摘自维、基、百科
通俗来讲就是一串16进制的机器码,由CPU解释为操作指令 ,最后由内存加载执行。这些操作指令可以由工具生成,也可以自己编写。
例如常见的\x55\x88\xEC,经CPU解释后如下
55 push ebp
8B EC mov ebp, esp
了解一些汇编知识就能理解,这是一个简单的入栈操作
shellcode提取这里以cs生成的powershell代码举例,首先使用Cobalt Strike生成一个powershell的payload。
可以看到使用了base64和xor编码,可以使用CyberChef工具进行解码,解码后转成hex并去除空格