常驻型计算机病毒工作原理,复习计算机病毒分析与防范

常驻型计算机病毒工作原理,复习计算机病毒分析与防范

复习计算机病毒分析与防范

2016-04-25

引导型病毒的工作原理

在BIOS后,操作系统前,通过中断服务程序(向量表 INT 13H),占据物理位置(常驻内存高端),替换、截获系统中断从而伺机传染发作。

主引导扇区BS的结构

MBR主引导记录、DPT(Disk Partition Table)分区信息、结束标志(AA55H)。

DPT结构(16字节)一字节:分区状态、活动分区判定

一字节:开始磁头

.75字节(00 0001):右边六位为起始扇区号

1.25字节 上面左边两位加上这里八位:起始柱面号

一字节:分区类型,0B为FAT32,83为Linux,07为ntfs,05是扩展分区

三字节:分区结束的磁头,扇区,柱面号

四字节:线性寻址方式下的分区相对扇区地址

四字节:该分区占用的 总扇区数

PE文件结构

MZ文件头(4D5A),DOS插桩程序,NT映像头(Signature、FileHeader、OptionalHeader),节表,节(包含引入引出节)。

为什么要重定位技术

病毒要用到变量,但依附到程序上时位置变化就不能正常使用,这里需要用到重定位。

如何实现重定位call跳到下一条指令,使下一条指令感染后的实际地址进栈。

用pop或mov exx,[esp] 去除栈顶内容,这样就得到了感染后下一条指令的实际地址。

令V_start为感染前call的下一条指令地址。Var_lable为感染前变量地址。于是变量Var的实际地址为Base + (OffSet(Var_Lable) – OffSet(V_start))

蠕虫和普通病毒的对比

病毒:寄生存在、插入宿主复制、宿主运行时传染、针对本地、user触发、影响文件系统、user水平决定传播、摘除还原

蠕虫:独立存在、拷贝自身复制、系统漏洞传染、针对网络、自身触发、影响网络系统性能、user水平不影响、补丁还原

判断PE文件的方法

mz头4d5a,pe头(nt映像头signature)50450000。

感染PE文件的方法/如何实现添加新节判断MZ、PE、感染标记

获得数据目录Directory个数(每个8字节)

获得节表起始位置(Directory偏移地址+目录字节数)、最后节表的末尾偏移(节表起始位置+节个数*28H)

新节写入节表节名8

节的实际字节数4

本节开始偏移地址(上一节开始偏移地址+(上节大小/节对齐+1)*节对齐)

本节对齐后大小

本节在文件中的开始位置(上节文件开始位置+上节对齐后大小)

修改nt映像头节表数

替换AddressOfEntryPoint为病毒入口

更新pe映像尺寸SizeOfImage(原SizeOfImage+病毒节对齐后大小)

写入感染标记,病毒代码,设置当前位置为文件末尾

系统引导过程开机

BIOS加电自检,电源稳定后,CPU从内存地址ffff:0000处开始执行

BS读入 0000:7c00

检查0000:7def 是否为0xaa55

跳转到0000:7c00处执行MBR

以下由MBR程序执行

MBR将自己复制到0000:0600处

在主分区表中搜索是否有活动分区

将活动分区的第一个扇区读入0000:7c00

检查0000:7def 是否为0xaa55

跳转到0000:7c00处继续执行启动程序

病毒如何常驻内存

将自身复制到内存高端(10 0000H之后),修改内存容量标志单元(0000:0413处),减去病毒长度,使得常驻内存;然后将原int 13h磁盘中断服务程序的中断向量保存,并修改其指向病毒代码

引导型病毒特点在操作系统之前进入内存

减少操作系统所掌管的内存大小

修改int 13h 的中断向量,指向内存高端

必定驻留硬盘的主引导扇区或引导扇区,并且只驻留一次

把感染的主引导扇区或引导扇区和未感染的进行比较,若不一样,有毒。

节表

储存了每个节(数目由NumberOfSection决定)的具体信息,每个节信息大小为28H/40。

引入引出节

引入表exe:是用来描述可执行文件需要调用的外部函数(API)。

引出表dll:DLL向PE提供的导出函数信息的列表,通常这些信息包含了导出的函数名和函数的地址。

动态获取api

LoadLibrary加载一个DLL,返回DLL地址。

GetProcAddress通过DLL地址和API函数名获得API函数的地址。

木马结构

木马软件一般由木马配置程序、控制端程序和被控端程序三部分组成。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111266.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 风控模型–Odds含义

    风控模型–Odds含义Odds(几率):指该事件发生的概率与该事件不发生概率的比值。若一个客户违约概率为p,则其正常的概率为1-p,由此可得:<center></center>

    2022年5月25日
    46
  • 阿里面试官问我,你们的需求研发/开发流程是怎样的?我???

    阿里面试官问我,你们的需求研发/开发流程是怎样的?我???这可能是全网第一篇揭秘阿里,腾讯,字节这样的大厂研发流程的文章。

    2022年6月16日
    37
  • DP和HDMI区别「建议收藏」

    转自:https://www.toutiao.com/i6877677362054595080在目前市面上显示器接口中,VGA和DVI已经逐渐退出了历史舞台,Type-C还算是小众,而DP(DisplayPort)与HDMI则成为了主流产品的标配,目前的主流级显卡也是以这两个输出接口为主,而新的问题也随之诞生了:当这两个接口都可以使用的时候,选择哪个会更好?对于大部分普通的消费者来说,显示器能跟主机正常连接就行,随便哪个接口都无所谓,反正能正常使用,但是对于DIY玩家来说,这个问题就显得非常重要

    2022年4月16日
    171
  • MySQL中tinytext、text、mediumtext和longtext详解

    MySQL中tinytext、text、mediumtext和longtext详解一、字符串类型 类型 范围 说明 Char(N)[binary] N=1~255个字节(4.1以下版本) N=1~65535个字节(4.1以下版本) binary:分辨大小写 固定长度 std_namecahr(32)notnull VarChar(N)…

    2022年4月30日
    217
  • RT-thread —- FinSH 控制台

    RT-thread —- FinSH 控制台一、介绍FinSH是RT-Thread的命令行组件(shell),有了shell,就像在开发者和计算机之间架起了一座沟通的桥梁,开发者能很方便的获取系统的运行情况,并通过命令控制系统的运行。特别是在调试阶段,有了shell,开发者除了能更快的定位到问题之外,也能利用shell调用测试函数,改变测试函数的参数,减少代码的烧录次数,缩短项目的开发时间。FinSH支持两种输入模式…

    2022年5月22日
    54
  • 基于Tensorflow + yolo3的安全帽识别系统[通俗易懂]

    基于Tensorflow + yolo3的安全帽识别系统[通俗易懂]最近做了一个新的项目,需要将图片或者视频中的人员是否戴安全帽识别出来,并且在网站上进行显示.首先是正常的登录注册目前登录注册有很多方式,这个比较常规,用户名密码登录,也没有写的很复杂.接下来就是主要功能页面了如上图所示,可以进行图片及视频识别图片上传,正在进行识别…

    2022年5月12日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号