• 20145326蔡馨熤《计算机病毒》——高级静态分析(2)


    20145326蔡馨熤《计算机病毒》——高级静态分析(2)

    尝试使用IDA PRO分析文件lab05-01.dll,回答如下问题:

    1.PSLIST导出函数做了什么?

    • 首先在view中选择exports窗口,然后找到PSLIST导出函数。

    • 双击PSLIST,然后按空格键,转换为图形模式,这样的话,观察更直观。

    • 双击第一个call语句。看看有什么发现。如图所示。

    • dwplatformid与2进行比较,看现在是不是处于WIN32-NT的这个平台。
    • majorversion与5进行比较, majorversion的值如果大于5的话,那说明它是Vista及以上的操作系统。 majorversion的值如果小于等于5的话,那说明它是Vista以下的操作系统。(根据MSDN得知)

    • 《Microsoft Developer Network》(简称MSDN),是微软的一个期刊产品,专门介绍各种编程技巧。同时它也是独立于Microsoft Visual Studio制作的唯一帮助。目前大部分文章存放在MSDN的网站上,任何人可以免费参阅。

    • 再往下看,点击左边那个call语句。

    • 发现里面有个叫CreateToolhelp32Snapshot的API函数。这个API函数可以获取我们系统中的进程列表。它一般是与Process32First和Process32Next这样不断的循环,从而获取我们系统中的进程信息。

    • 再看看右边的call,我们同样也发现了这样一个API函数,用于获取我们系统中的进程信息。

    • 分析到这里呢,我们可以得知这个PSLIST导出函数,可能会通过网络,发送我们的进程列表,或者寻找我们这个列表中某一个特定的进程名,然后进行下一步操作。

    2.使用图模式绘制出sub_10004E79的交叉引用图。当进入这个函数时,哪个API可能被调用?仅仅基于这些api函数,你可以如何重命名这个函数?

    • 在Function name栏中找到sub_10004E79。

    • 然后进行如下操作:

    • 得到sub_10004E79的交叉引用图。

    • 我觉得获得系统默认语言的这个函数很重要吧。
    • send这个函数也很重要吧。像打印等的函数就不那么重要了。
    • 于是进行如下修改:

    • 修改后,我们可以非常直观的了解到这个函数的功能是什么。

    3.DLLMAIN直接调用了多少个WINDOWS API?多少个深度为2时被调用?

    • 先找到DLLMAIN。然后进行如下操作,将深度设为2。

    • 它的交叉引用图很复杂啊。DllMain直接调用了4个API,有31个深度为2时被调用。

    4.尝试使用MSDN页面的socket和IDA中的命名符号常量,使得0x10001701处对socket调用的参数更有意义。

    • 先按下“G”键,跳到这个位置去。
    • 可以发现调用socket函数之前,压栈了3个参数,这里要注意,2是第一个参数,1是第二个参数,6是第三个参数。

    • 通过MSDN页面,找到每个参数代表的具体含义。

    • 然后进行如下操作,将参数转换。

    5.搜索in指令(OxED)的使用。这个指令和一个魔术字符串VMXh用来进行Vmware检测。这在这个恶意代码中被使用了吗?使用对执行in指令函数的交叉引用,能发现进一步检测vmware的证据吗?

    • 先查找“0xED”。

    • 找到in语句。然后双击。

    • 在这里我们可以发现一个字符串,564D5868h。这代表什么意思呢?我们可以用右键将它转换为一个字符。于是VMXh出现了。

    • 按一下空格,切换到图形界面。
    • 在开头可以看到一个sub_10006196,交叉引用一下。

    • 可以发现有三处交叉引用调用了这个函数。看看第一个。

    • 下面又看见了一个字符串:Found virtual machine,install cancel。

    • 于是可以说这个函数就是判断目前我们是否在VMware虚拟机中进行操作。

    在这次实践的过程中,我一直在想一个问题。就是如何在没有这些问题的提示下,使用IDAPro对一个恶意代码进行高级静态分析。必须得加强练习啊,毕竟熟能生巧,只有实践多了,思维能力和分析能力才会提高。除了这些,我认为汇编和反汇编也是很重要的,工具交互使用的能力也需要提高。在接下来的学习中,我需要查漏补缺,以此来不断提高。

  • 相关阅读:
    小公司的程序员,老想跳槽怎么办?
    阿里出品的最新版 Java 开发手册,嵩山版,扫地僧
    程序员的“三十而已”
    应届毕业生,只会抄代码,该怎么办?
    可笑,你竟然不知道 Java 如何生成 UUID
    因为不知道Java的CopyOnWriteArrayList,面试官让我回去等通知
    保姆级教程,如何发现 GitHub 上的优质项目?
    给我半首歌的时间,给你说明白Immutable List
    十分钟色彩科学:LUT 的前世今生
    无源与有源元件的区别
  • 原文地址:https://www.cnblogs.com/cxy1616/p/6886354.html
Copyright © 2020-2023  润新知