静态恶意代码逃逸(第一课)

倾旋
倾旋
技术分享|2019-11-10|最后更新: 2023-6-22|
type
status
date
slug
summary
tags
category
icon
password
URL

0x00 前言

前五课的代码将会上传至Github,方便读者下载研究 : https://github.com/Rvn0xsy/BadCode
在此之前,我分享过《高级后渗透C2免杀与对抗》,其中对于一些原理铺垫上稍有欠缺,因此准备分成几篇文章来展开。

0X01 恶意代码的定义

以下文章中的所有关于恶意代码的定义都以Cobaltstrike的载荷为例。

0x02 Shellcode定义

Shellcode是一段机器指令的集合,通常会被压缩至很小的长度,达到为后续恶意代码铺垫的作用。当然你可以通过msfvenom生成各种用于测试的shellcode。

0x03 RAW文件

RAW 中文意思是原始的、未经加工的,通常使用Cobaltstrike生成的BIN文件。
notion image
RAW文件是可以直接进行字节操作读取的,因此加载到内存较为方便,通常我一般使用混淆的方式再生成一遍。

0x04 C文件

notion image
C文件给出的是一个C语言中的字符数组,也是可以通过以字节单位操作的。

0x05 组合

由于反病毒软件对于默认生成的文件查杀较为严格,我通常会采用混淆、加密解密的方式把载荷还原。
上面这个脚本是我在去年写的,用于把raw文件混淆,生成C语言数组,在后面的文章中,我们也以c/c++语言为主,探究其本质。

混淆方案

先生成bin文件,然后运行python脚本:
在payload.c中会看到raw文件里的每一个字节与10的异或运算出的C语言数组。
notion image
这个数组的内容,将由下一篇文章用到,实践一下Shellcode混淆免杀。
注:-r 参数输出的是混淆过的二进制版本shellcode,-d 参数输出的是C语言格式的shellcode
©2021-2024 倾旋. All rights reserved.