MBR病毒IDA逆向分析与重写内容解读
4042019032 于小涵
运行病毒

运行病毒,直接关机

重启后出现下面的页面

输入任意字符,回车后会清空

可以知道,该病毒破坏了windows的启动过程,要进入系统必须输入正确的口令,该病毒属于MBR病毒的类型
2 基础知识
硬盘的主引导区在0柱面0磁道1扇区,包括硬盘主引导记录MBR(Main Boot Record)、四个分区表DPT(Disk Partition Table)信息和主引导记录有效标志字三部分,如表所示:
0000-0088 Master Boot Record主引导程序 主引导程序 0089-01BD 出错信息数据区 数据区 01BE-01CD 分区项1(16字节) 分区表 01CE-01DD 分区项2(16字节) 01DE-01ED 分区项3(16字节) 01EE-01FD 分区项4(16字节) 01FE 55 结束标志 01FF AA
主引导记录MBR从0000H开始到00D9H结束,共218个字节。MBR的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。MBR是由分区程序(例如DOS 的Fdisk.exe)产生的,在不同的操作系统平台下,这个扇区的内容可能不完全相同。
3 猜解口令
恢复快照到运行病毒前
如果要找到开机口令那应该是非常的容易,将病毒拖入x32dbg,进行字符串搜索就可以锁定这个特殊的字符串,猜测其为口令

4 逆向分析
下面逆向分析病毒原理
首先使用Exeinfo PE查壳,发现无壳

IDA中查看汇编指令,发现并没有很多识别不出来的红色语句,所以并没有花指令,到此可以知道病毒并没有保护

既然涉及到关机,那么在windows系统下一定涉及到关机的API函数,经过查阅资料,可以找到

查找字符串

找到关机API位置

查看其反编译代码

向上找到sub_4456D0函数

查看函数内容

找到当前进程伪句柄函数GetCurrentProcess、取得程序访问标记函数OpenProcessToken、查找进程权限函数LookupPrivilegeValue、获得关机权限函数AdjustTokenPrivileges,其作用为为关机做好提权
回到关机函数sub_4455E0,交叉引用向上查询



在这个函数中我们会发现关机函数的上面有两个一样的函数,其参数不一样

结合之前字符串搜索中发现的本机电脑磁盘标识符,因此可以猜测是完成了MBR的读写操作

在病毒感染前使用winhex查看磁盘的MBR

找到关机函数的地址,在X32dbg调试中设置断点,然后运行


再次查看MBR,发现被修改

5 重写内容分析
粘贴至新文件,导出MBR被重写的数据

将其拖入IDA进行反汇编分析
注意选择no,引导程序为16位

5.1 int 10h中断——屏幕显示
首先 int 10中断,这是BIOS对系统屏幕显示器所提供的服务程序,调用int 10h中断来控制显示器的显示控制显示器的显示
其中ES:BP是字符串地址,即00C2

cx是14h,即串的长度为20字节
因此确定了开始屏幕上显示的**qq-17412666**
AH = 13,功能号,表示显示字符串
BH表示页号
DH DL表示起始行列

5.2 int 16h中断——键盘读入
等待键盘键入字符,其中al代表键盘输入的字符

5.3 第一次int 13h中断——密钥比较
下面是从扇区写入内存的中断操作,我们逐步探讨

首先涉及到字符的比较,8对应的ASCII码是退格,如果检测到退格键则会跳转到loc_46

我们看一下loc_46的内容,属于是清空操作,与退格键的功能对应

第二次比较是与0Dh对应的ASCII码回车的比较,如果用户输入完毕进行了回车的话,那么就会跳转到loc_52

我们看一下loc_52的内容,一个段寄存器的转换,然后清空bx,继续进行下面的操作

若不是退格和回车键的话,就继续存入字符,[bx]存入键盘输入的字符,然后地址+2,cx记录输入字符的个数

下面将注意力集中在回车之后的操作
loc_58这里给si写入了一个很重要的地址

其正好是以下字符串的初始地址

下面就开始字符的比较,al是键盘输入的字符,ah是上面的字符串中的逐个字符,如果不相等的话会跳转到loc_9C进行出错处理;每个字符如果比较完成,就会取下一个字符继续比较,完成循环,loop循环次数由cx决定,即我们输入的字符的数量

再往下是为中断做参数准备

所以,按照上面的分析,我们只要将输入的字符与d8h地址开始的字符逐一比较,这就是口令
5.4 第二次int 13h中断——MBR写回

从内存将MBR写入扇区
6 遇到的问题
输入我们分析的口令之后并没有进入系统,而是出现了下面的情况,卡死在下面的页面,这个问题到现在还没有解决


浙公网安备 33010602011771号