一、前言
1. 简介
shellcode是用于利用软件漏洞而执行的代码,一般是机器码,由于作用一般是让攻击者获得shell而得名。由于是机器码,在寄存器eip溢出后,塞入机器码来执行。
2. 基础知识
2.1. eip寄存器
存放cpu下次要执行的指令地址,只需要修改eip寄存器的值,即可执行shellcode。
3. 免杀
3.1. 杀软原理
目前的杀软手段一般由两种
- 基于特征
- 基于行为
云查杀本质基于特征查杀;沙箱则需要做反沙箱
1) 基于特征
杀软一般会定义一个阈值,当文件内部的特征数量达到一定程度就会判断为恶意程序。一般判断文件的md5、sha1hash、匹配文件中的字符串、程序入口点、IAT导入表等。查杀依赖厂商的病毒库更新
2) 基于行为
对多个系统api进行hook,如:注册表操作、添加启动项、添加服务、添加用户、注入、创建进程、创建线程、加载DLL等。除了hookapi还会对api调用链进行监控,如申请内存,将shellcode加载进内存,再执行内存区域的shellcode
3.2. 如何进行免杀
1) 静态免杀
加壳改壳、添加/替换资源文件、修改特征码、加密shellcode等。
加密的方式有很多,直接使用aes、des、xor、base64、hex等方法进行加密或字写加密,将shellcode的特征去除即可
2) 行为免杀
一般使用api替换、直接系统调用、替换操作方式采用白加黑的手段
二、windows
1. 示例
1 |