免杀理论基础

本文主要为免杀入门的基础理论笔记,前几年写下的找到正好发出来,因审核需要删除部分内容,有免杀基础和一定实操经验人士可以跳过本文

概念

免杀全称为反杀毒技术Anti Anti- Virus简称“免杀”,是能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

Mimikatz

渗透中抓取明文密码和提权等各种操作,非常好用,之后有对其的免杀学习

免杀用处

远程控制和工具上的免杀

免杀难点

杀软检测

静态免杀:文件下载完成、文件开始运行、开机自检

动态免杀:文件运行时,文件执行操作时

特征检测:是否包含已知恶意代码的特征

行为检测:对文件要执行的操作目的和危险性检测判断

主动防御检测:杀毒软件发现危险后告知用户并选择下一步操作

机器学习检测:识别文件整个执行过程并自行判断危险性

免杀成本

时间,代码量,方法的代价

注:自己研究构建代码框架时间和精力耗费更多,但免杀效果更好,但是被杀软发现后加入特征库,方法也会完全失效这就是代价

【很难有永远有效的免杀方法】都是实现短期或长期的免杀效果

//world宏木马是由VBA语言编写,学会免杀思路和VBA语言后同样可以做到免杀、

小知识:把木马文件名改为 XXX.docx.exe (实际为exe文件)如果目标用户电脑不显示文件后缀则显示为 XXX.docx 就有上钩打开的可能性。

在免杀和病毒分析中,学习掌握汇编语言非常重要

权限维持方法:修改注册表、修改计划任务、劫持正常权限的文件(但直接进行这些方法都容易被监控到)

免杀大致方法

改特征,劫持Windows信任软件执行恶意代码,反射加载,利用语言复杂性绕过

汇编语言

基本算法

加:INC EAX

减:DEC EAX

乘:MUL EAX

除:DIV EAX

进制换算

掌握 二、八、十、十六进制 的换算方式

逻辑运算

与 & :同真为真 1&0=0,0&1=0,1&1=1,0&0=0

或 | :有真为真 1|0=1,0&1=1,1&1=1,0&0=0

非 ! : 真假反转 101011 ! > 010100

亦或 ^ :仅互异为真 10=1,01=1,1^1=0,0&0=0

数字或字符串通过 亦或 和 再亦或 可以看作最简单的加密和解密

二进制解析

注意:二进制算法中1+1=0时要向前一位进位,

同一段二进制表示的数可以有无符号有符号两种读取方式;是由程序中变量定义函数决定的最高位是否标识符号意义。

假如定义变量为:
_int8 var; 则var所对应的二进制的最高位,0标识是正数,1标识为负数。
相应的取值范围为:从-127到127

假如你定义变量为:
unsigned _int8 var;则var所对应的最高位是1或者0,都标识正数。
相应的取值范围为:从0到255

一般如果是有符号数,负数最高位为1,为了方便计算,一般用补码标识,不仅仅把最高位变成1。

无符号数

无符号的二进制数按正常运算,所有数字都纳入正常数值,不计符号位

有符号数

二进制中首位统一为符号位,1为负号,代表负数;0为默认的正号;除首位外数字纳入数值

引入源码、反码、补码概念

例:10110100 //无符号数记为180,在有符号数中记为-52

原码:除负号位外,其余转换为十进制,结果为-52

反码:除负号位外,其余进行非运算(11001011),结果为-75

补码:除负号位外,其余进行非运算(11001011),末位加1(有进位),最终为(11001100),即为-76

二进制数正数变负只需要首位加1(正数在二进制标准格式中首位必为0,0+1=1)

100的二进制表示为01100100

100的二进制首位加一为11100100

作为有符号数读为-100,作为无符号数为228

通用寄存器

概况:用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。

32位cpu通用寄存器共有8个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI

•EAX:一般用作累加器

•EBX:一般用作基址寄存器(Base)

•ECX:一般用来计数(Count)

•EDX:一般用来存放数据(Data)

ESP:一般用作堆栈指针(Stack Pointer)

EBP:一般用作基址指针(Base Pointer) //不是必须,有的程序手动设置EBP

•ESI:一般用作源变址(Source Index)

•EDI:一般用作目标变址(Destinatin Index)

注:16位cpu通用寄存器也有8个,名称就是上面所有去掉E

赋值和端序

汇编中的赋值语句

MOV语句

mov eax,0x1234

mov byte ptr ds:[0x233],0x12

mov dword ptr ds:[0x233],eax

mov ecx,eax

大端序和小端序:大端序为正序,小端序为逆序

比如

数字 12345678

大端序排列为12 34 56 78,

小端序排列为78 56 34 12,

但数组不受大小端序影响

数字小端序排列

数组不受大小端序影响,按顺序储存 //这里为admin字符串构成的数组

堆栈

堆(heap) 栈(stack)

栈的增长

栈:存储程序临时数据

计算机加载程序的大体结构

•ESP与EBP

程序可以根据EBP和ESP区分

ESP:一般用作 堆栈指针(Stack Pointer)

EBP:一般用作 基址指针(Base Pointer) //不是必须,有的程序手动设置EBP

栈的结构

详细图

栈一般靠EBP和ESP区分,EBP为栈底,ESP为栈顶,这里没标出栈顶的ESP,temp为临时数据

变量数据和地址(图中为a,b,c)的增长由高到低,向上增长

堆栈平衡

通过汇编语言操作压栈(push)和弹栈(pop)使ESP和EBP位置达到平衡

第三课 55min左右

标志寄存器及跳转

汇编当中非常常见,通俗来说就是其他语言if语句中的判断条件,在汇编里为标志寄存器里的标志位作为判断条件

一.影响标志位的指令

比如CMP、TEST、ADD、SUB等

CMP指令

cmp oprd1,oprd2,为第一个操作减去第二个操作数,但不影响两个操作数的值,它影响flag的CF,ZF,OF,AF,PF。若执行指令后,ZF=1 则说明两个数相等,因为zero为1说明结果为0。当无符号时,CF=1 则说明了有进位或借位,cmp是进行的减操作,故可以看出为借位,所以,oprd1<oprd2。

TEST指令

TEST AX,BX 命令将两个操作数的二进制进行逻辑 《与》 运算,并根据运算结果设置相关的标志位。

Test命令的两个操作数不会被改变(TEST AX,BX 与 AND AX,BX 命令有相同效果,只是Test指令不改变AX和BX的内容,而AND指令会把结果保存到AX中)运算结果在设置过相关标记位后会被丢弃。

ADD指令

格式:ADD OPRD1,OPRD2

功能:两数相加(不带进位)

SUB指令

sub ax,bx
就是用ax的值减去bx。

指令对标志位的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零。CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同

二、跳转指令

比如:JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP等

这里举例 JE 跳转指令就是根据ZF位是否为1,只有ZF为1才跳转

执行语句后跳转

EIP:指向目前CPU指令的地址,可以通过jump或call(会自动把返回值压到栈里面,在用return语句就会把栈里面的地址弹到EIP里)指令跳转当前地址修改

普通情况

call语句分析

执行call指令后会自动把返回值压进栈里面

如果接着使用return操作,就会把栈里面的内容(刚压进的地址)弹到EIP里面

执行完return指令

举例一:

把EAX和EBX用mov语句赋值为不同值(这里C为12,D为13)并执行

cmp命令这里用作减法比较EAX和EBX,执行后标志位变化如下图

比如ZF标志位判断 两数相等即为1,不等即为0

同理反之

栈里参数的索引调用

栈的结构是从高到低,而且EBP的参数调用是以4为单位,ESP的参数调用是以1为单位

比如这里的参数

PE文件结构

概念:PE文件意为可移植的可执行的文件,全称是Portable Executable,常见的.exe、.dll、OCX、SYS、COM都是PE文件,

​ PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。

读PE文件头,找到Machine,014C是32位的

免杀入门(基础理论)相关推荐

  1. 免杀入门---shellcode免杀

    前言 本文仅用于技术学习和交流,严禁用于非法用途,否则产生的一切后果自行承担. 基础概念 免杀 免杀技术全称为反杀毒技术Anti Anti- Virus简称"免杀",它指的是一种能 ...

  2. 【黑客免杀攻防】读书笔记6 - PE文件知识在免杀中的应用

    0x1 PE文件与免杀思路 基于PE文件结构知识的免杀技术主要用于对抗启发式扫描. 通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的. 修改区段名 1.1 移动PE文件头位置免杀 工具:PeC ...

  3. Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结...

    Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结 1. ,免杀技术的用途2 1.1. 病毒木马的编写2 1.2. 软件保护所用的加密产品(比如壳)中,有 ...

  4. 利用INF安装服务启动 及 浅析瑞星行为检测、360主动防御

    序 2010年,反病毒(AntiVirus)与反-反病毒(Anti-AntiVirus)不论是从技术的深度.涉及的方方面面,又上升了一个层次. 行为防御.云安全技术等一些新技术不断的加入反病毒的行列, ...

  5. 利用INF写注册表启动 及 浅析瑞星行为防御、360主动防御

    序 2010年,反病毒(AntiVirus)与反-反病毒(Anti-AntiVirus)不论是从技术的深度.涉及的方方面面,又上升了一个层次. 行为防御.云安全技术等一些新技术不断的加入反病毒的行列, ...

  6. 套装门安装_室内套装门-油漆工艺

    上一期我们分享了套装门的分类和区别,主要从门芯和门皮的结构,主要分为纯实木门.实木复合门.模压门三种.也分享了三种类型的门的区别和基本定义,其中最为关键的是实木复合门,四层结构,其中门芯的填充料可操作 ...

  7. 市面上有哪几种门_市面上常见的木门种类有哪些呢?

    随着家居的物质生活提高,装修建材等与生活息息相关的东西也不甘示弱,同样东西可分为许多的种类,木门作为家装中的重要元素,不断与时俱进地发展,也诞生了多种产品类别.那么,现在市面上常见的木门种类有哪些呢? ...

  8. 市面上有哪几种门_实木门、原木门、模压门,各有门道不怕坑!

    装修该选门啦,走进家装市场 有实木门 原木门 实木复合门 模压门 --- 长的好像都差不多 被商家一顿介绍,还是傻傻分不清 到底该选哪个好? 需要花多少钱? 为此, 特意为大家整理了一些干货 一套木门 ...

  9. 市面上有哪几种门_卧室门怎么选?市面上5种常见房门大揭秘

    门,是我们家里必不可少的家具之一.对于卧室而言,选对一扇好门分分钟决定这居住品质以及睡眠质量,再也不怕客厅活动的杂音传到卧室里. 进入一个房间,首当其冲的就是门,就像是脸面一样,古代的门都是相当的有讲 ...

最新文章

  1. linux mysql5.7.9下载_关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
  2. 安装keras and theano于google colab上
  3. 求组合数的算法 java,求一个整数的组合数算法(java)
  4. Shell(5)——(())、let、array的查看方式
  5. pycharm无法识别css,PyCharm中HTML页面CSS class名称自动完成功能失效的问题
  6. 玩转博客园的5个小技巧
  7. MATLAB中排序函数sort()的用法
  8. sql 存储过程返回值 变量名
  9. Python使用类来创建对象
  10. apache的开源项目-模板引擎(Velocity)(转)
  11. C#的set 和 get 方法
  12. 扇贝有道180923每日一句
  13. maven配置时报错NB: JAVA_HOME should point to a JDK not a JRE**解决方法
  14. android 驱动移植方法
  15. AI论文中 ACKNOWLEDGMENT的写法
  16. 如何用后视镜判断车距
  17. 国产操作系统Deepin的安装
  18. 1.488Mpps是如何计算出来的?
  19. UNIX网络编程卷1 回射客户程序 TCP客户程序设计范式
  20. 连通图 P3387 缩点 模板

热门文章

  1. 六、 进程的三种基本状态
  2. python星星排列代码怎么写_【读码】python中的小星星*用法示例
  3. Pjsip信令超时机制修改
  4. 大数据环境中的系统磁盘的常见问题
  5. Java深度学习系列——对象流和序列化
  6. 数算实习+数算 机考总结……
  7. Webug-SSRF
  8. WampServer 搭建本地服务器及 XSS 基本原理和初步实践(一)
  9. Bosun安装、配置、部署
  10. 语音合成(speech synthesis)方向六:歌唱合成(singing voice synthesis)