selph
selph
发布于 2021-11-03 / 696 阅读
0
0

恶意代码分析实战Lab06-识别汇编中的C代码结构

笔记

作业

Lab 6-1

目标:在lab06-01.exe中发现恶意代码

  1. main函数调用的第一个子过程中发现的主要代码结构式什么?

    image-20211004153929985

    if-else结构,执行完call,进行判断,满足条件就跳转,不跳转的话,执行完jmp再跳下去,二选一的结构

  2. 位于0x40105F的子过程是什么?

    这个子过程在调用前都会压栈一个字符串,而且都是以\n结尾的,进去后看到__stbuf__ftbuf函数,这是printf里会用到的,这里基本上可以认为这就是printf函数:

    image-20211004154736496

  3. 这个程序的目的是什么?

    检查当前联网状态,根据检查结果返回不同返回值,并打印相关说明信息

lab 6-2

目标:在lab06-02.exe中发现恶意代码

  1. main函数调用的第一个子过程执行了什么操作?

    检查网络状态,和lab6-1(1)的那个图相同

  2. 位于0x40117F的子过程是什么?

    分析同上题,是printf函数

  3. 被main调用的第二个子过程做了什么?

    打开URL,读取内容,读取成功后,判断读取的内容:读取的内容正确后,就正常返回,某一个环节出错了,就跳出了

    image-20211004155951921

  4. 这个子过程中使用了什么代码结构?

    if-else嵌套结构:(if-(if-else)-else结构):

    image-20211004160428489

  5. 这个程序有基于网络的提示吗?

    有的,程序会连接网址:http://www.practicalmalwareanalysis.com/cc.htm

  6. 这个恶意代码的目的是什么?

    目的是从URL里读取命令,然后拿到本地执行

    image-20211004160723686

lab 6-3

目标:在lab06-03.exe中发现恶意代码

  1. 与6-2的题相比,main调用的新的函数是什么?

    image-20211004161950795

  2. 新的函数的参数是什么?

    参数是从url返回的字符和命令行参数的文件名

  3. 这个函数的代码结构是什么?

    switch-case结构,有5个case情况:

    image-20211004162115090

  4. 这个函数能做什么?

    根据输入的参数的不同,执行不同的操作:

    • a:创建目录C:\temp
    • b:复制指定文件到c:\temp\cc.exe
    • c:删除文件
    • d:把该文件添加到注册表Software\Microsoft\Windows\CurrentVersion\Run中,键的名称是Malware
    • default:打印输入错误的信息

    image-20211004162153601

  5. 这个恶意代码有本地特征吗?

    会创建文件C:\temp\cc.exe,并且添加到注册表Run键值中去

  6. 这个恶意代码的目的是什么?

    根据网络连接的结果来进行程序的下一步操作,包括创建目录,创建文件,删除文件,将文件添加到注册表Run键值中去和睡眠等功能

lab 6-4

目标:在lab06-04.exe中发现恶意代码

  1. 和上一题main函数调用有什么区别?

    这次变成for循环结构(for循环开始前会jmp跳三行)了,循环1440次,每次都获取HTML,然后解析命令进行执行

  2. 什么新的代码结构添加到了main函数中?

    for循环

  3. 这个实验解析HTML的函数和前面实验的有什么区别?

    多传入了一个参数:

    image-20211004164643632

    参数被用于拼接user-agent了:

    image-20211004164712077

  4. 这个程序会运行多久?

    60s*1440 = 24小时:

    image-20211004164856290

  5. 有什么基于网络的迹象吗?

    会连接网址:http://www.practicalmalwareanalysis.com/cc.htm

  6. 这个恶意代码的目的是什么?

    与上题功能相同,不过不同的是本样本会每分钟获取一次HTML来解析执行命令


评论