不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

2021最新免杀入门混淆加密方法

前言

在日常的渗透测试中,我们直接将metaspolit、CS等工具直接生成的恶意程序或代码发送到目标系统时,通常会遇防病毒和入侵检测系统的查杀。这使得我们的程序被拦截或者运行不稳定。有时候IP还会直接被封杀,增加了我们的攻击难度,这篇文章中,将为大家分享一些自己免杀的学习方法论,一些常用的AV和IDS规避技术,可以用于绕过一些安全软件。

编码器

通过一定规律的编码算法,将对metaspolit、CS生成的shellcode进行编码/模糊处理/变形,从原始shellcode中删除所有无效的字符,从而逃避杀毒软件检测。

编码算法

可以使用多种算法对Shellcode进行编码,包括(但不限于):

1、在特定位置添加垃圾字节

2、使用硬编码的单字节密钥对字节进行XOR或者加减法运算

3、将字节移位某些特定位置

4、交换连续字节

或以任何一种或多种技术的复合。

第一种编码

先来一个简单的编码方法,我选择了一个名为加法和减法(ADD,SUB)这是最早的一种加密方式。

77+eb=162 是n = 77是我们加密的密码,原始字节中的的每个字符都与77相加。关于这个加密数,我们需要找从(0-255)个字节中找出一个与代码相加都不是坏字符的数,来作为我们的加密密码。这就需要我们自己去循坏计算,这里不写具体的编成实现代码。

选择它的原因很简单:

这个很容易实现,并且所有初学者都容易理解。最后,我们把解码器放在shellcode之前,每个字都将与指定的字节进行减法运算,最后得到我们的原始的code

第二个编码

在来一个相对复杂一些的,采用多种算法的复合编码。

1、进行NOT操作

2、ADD通过为0x1字节

3、在(0-255)中找一个随机字节,将字节与随机字节进行XOR,并在shellcode默认添加该字节,作为结束标记符

4、在这些字节之间插入随机字节

编写自动化编码工具

构建解码器

第一种方法来写解码器

解码器的内容很简单,解码器的下方是我们的加密后的代码。每次拿出一个字节与77字节相减,将计算结果存入ESI寄存器。

global _start

section .text

_start:

jmp short call_decoder

decoder:

pop esi

decoder_loop:

;在我们shellcode的末尾,同样放置加密字符,当解码到文件末尾的时候,可以直接跳转到shellcode地方执行

sub byte[esi],77;

jz shellcode

inc esi

jmp short decoder_loop

call_decoder:

call decoder

第二种解码方式

首先,我们需要将解码的shellcode放在某个地方,我们使用JMP指令跳转到执行解码器函数的地方,最后使用POP ESI将shellcode地址放在ESI寄存器中间。我们首先要做的就是删除shellcode每个字节中间的随机字节。先来看一下shellcode的规律

A   r   B   r   C   r   D   r   E   r   F   r   G   e

ESI    ESI+2  ESI+4

EDI EDI+1

ESI寄存器每次加2就是shellcode的位置

EDI加1就是运算后存放的位置

自动化编码过程

首先加密字节应该注意的是,加密字节和加密后的字节都不应该包含坏字符。不是每个字节都手动与指定字节进行运算的。然后处理未编码的shellcode中的每个字节-我创建了一个小的Python脚本,可以帮自动完成这些计算。

在选择加密字节的时候,我们是从0-255中随机便利选择的,这意味着两次对相同的code进行编码可能不会两次产生相同的输出。

这里只说实现方法,代码准备做以整套的

暂时不公布,有能力的可以尝试自己写一个。

测试编码器

我们使用编写器对code进行编码得到

图片

代码

\xeb\x09\x5e\x80\x2e\x9e\x74\x08\x46\xeb\xf8\xe8\xf2\xff\xff\xff\xdf\xe0\xe1\xe2\x9e

通过ollydbg进行调试,code被成功解码

图片

最后通过virScan扫描看一下效果,国内杀软都可以过。

赞(0) 打赏
未经允许不得转载:seo优化_前端开发_渗透技术 » 2021最新免杀入门混淆加密方法

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏