使用 IDA Pro 分析 Lab05-01.dll

1、DllMain的地址是什么?

2、使用Imports窗口并浏览到的gethostbyname,导入函数定位到什么地址?

3、有多少函数调用了gethostbyname?

4、将精力集中在位于0x10001757处的对gethostbyname的调用,你能找出哪个DNS请求将被触发吗?

5、IDA Pro识别了在0x10001656处的子过程中的多少个局部变量?

6、IDA Pro识别了在0x10001656处的子过程中的多少个参数?

7、使用Strings窗口,来在反汇编中定位字符串\cmd.exe /c 。它位于哪?

8、在引用\cmd.exe /c的代码所在的区域发生了什么?

9、在同一的区域,在0x100101C8处,看起来好像是dword_1008E5C4是一个全局变量,它帮助决定走哪条路径。那恶意代码是如何设置dword_1008E5C4的呢?(提示:使用dword_1008E5C4的交叉引用。)

10、在位于0x1009FF58处的子过程中的几百行指令中,一系列使用memcmp来比较字符串的比较。如果对robotwork的字符串比较是成功的(当memcmp返回0) ,会发生什么?
11、PSLIST导出函数做了什么?
12、使用图模式来绘制出对sub_10004E79的交叉引用图。当进入这个函数时,哪个API函数可能被调用?仅仅基于这些API函数,你会如何重命名这个函数?
13、D11Main直接调用了多少个Windows API?多少个在深度为2时被调用?
14、在0x10001358处,有一个对Sleep (一个使用一个包含要睡眠的毫秒数的参数的API函数)的调用。顺着代码向后看,如果这段代码执行,这个程序会睡眠多久?
15、在0x10001701处是一个对socket的调用。它的3个参数是什么?
16、使用MSDN页面的socket和IDA Pro中的命名符号常量,你能使参数更加有意义吗?在你应用了修改以后,参数是什么?
17、搜索in指令(opcode 0xED)的使用。这个指令和一个魔术字符串VMXh用来进行VMware检测。这在这个恶意代码中被使用了吗?使用对执行in指令函数的交叉引用,能发现进一步检测VMware的证据吗?


1.分析DllMain地址

设置图像显示地址位置:Options->General->选择Line Prefixex(内存位置显示)并设置Number of Opcode Bytes为6(显示代码清单中每条指令的操作码值)
DllMain地址如图。


2.查看导入表

view -> Open Subviews -> Imports
使用Imports窗口并浏览到的gethostbyname,导入函数定位到函数地址


3.交叉引用 - 查看谁调用了这个函数

X - 查看交叉引用

Type:p代表的被调用的引用,r代表的是“读取”引用(因为是对一个导入项call dword ptr[...],所以CPU必须先读取这个导入项,再调用它)

这里9个p并不能代码是9个函数调用了,我们在仔细来看图2,其中他有很多地址重复的,所以我们按照地址来分一共可以分析出是5处函数调用了gethostbyname。


4、将精力集中在位于0x10001757处的对gethostbyname的调用,你能找出哪个DNS请求将被触发吗?

G(Jump to address)输入0x10001757地址

F5 反汇编(Tab切换回汇编)


对于参数off_10019040 + 13,即 pics.praticalmalwareanalys,这个域名将被解析。


5、IDA Pro识别了在0x10001656处的子过程中的多少个局部变量?

6、IDA Pro识别了在0x10001656处的子过程中的多少个参数?

G跳转到 0x10001656,
带符号的都是局部变量,共有23个。
带正好的是参数,这里只有lpThreadParameter


7、使用Strings窗口,来在反汇编中定位字符串\cmd.exe /c 。它位于哪?

8、在引用\cmd.exe /c的代码所在的区域发生了什么?

View -> Open SubView -> String
找到\cmd.exe /c后,双击查看,X交叉引用

在调用这个字符串的函数中,发现了这样的一个字符Remote Shell Session,所以这个程序应该是一个恶意远程Shell程序。

详细过程:


9、在同一的区域,在0x100101C8处,看起来好像是dword_1008E5C4是一个全局变量,它帮助决定走哪条路径。那恶意代码是如何设置dword_1008E5C4的呢?(提示:使用dword_1008E5C4的交叉引用。)

交叉引用 dword_1008E5C4 变量发现有读、写,因为这个变量的比较涉及到走哪条路径,因此我们看写的就好。

看到是eax赋值给了 dword_1008E5C4 变量,eax一般是上个函数的返回值。

sub_10003695函数获取系统版本信息,之后判断是否为NT系统,是返回true,否返回false。


因此,dword_1008E5C4 就是指示了系统版本是否是NT系统,如果是,不会跳转,会去执行之后"\cmd.exe /c",也就是上面我们分析的流程。


10、在位于0x1000FF58处的子过程中的几百行指令中,一系列使用memcmp来比较字符串的比较。如果对robotwork的字符串比较是成功的(当memcmp返回0) ,会发生什么?

对比成功,会调用sub_100052a2函数


sub_100052a2函数详细如下:查询了两个注册表值,并调用加密和发送的函数sub_100038EE


sub_100038EE函数详细如下,将字符串中每个字符+一个全局变量值,可能是加密操作,并进行发送


而这个全局变量通过交叉引用,可以看到是在这里进行赋值的


11、PSLIST导出函数做了什么?

打开导出函数


导出函数如下
一开始不知道PName_Str是什么,后面函数调用,发现用于对比枚举出进程的名称,才知道PName_Str是传入用对比的进程名


sub_1000664函数如下:
进行目标进程信息的枚举,并写入到xinstall.dll中,还进行数据的send发送
(另一个sub_10006518函数也差不,只不过是枚举所有进程的信息,且最后没有发送数据)


数据发送:


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

选中函数名称,如下操作打开交叉引用图


13、D11Main直接调用了多少个Windows API?多少个在深度为2时被调用?

选中DllMain名称,如下操作打开交叉引用图


设置递归深度Recursion depth为1时:


Cross references to:显示被那些函数调用,相当于Xrefs to
Cross references from:显示调用那些函数,相当于Xrefs from
Recursive:递归显示, 若取消则仅显示上下直接调用函数
Follow only current direction:仅当前函数,若取消就变成了显示全部的函数调用
Recursion depth:显示调用的深度
Externals:是否忽略外部Windows API函数
Data:是否忽略数据
From Library Functions:是否忽略库函数内部的交叉参考
To Library functions:是否忽略外部的交叉参考
Print Comment:是否对外部函数打印注释

设置递归深度为2时,会看到是一个非常大的图:


15、在0x10001701处是一个对socket的调用。它的3个参数是什么?
16、使用MSDN页面的socket和IDA Pro中的命名符号常量,你能使参数更加有意义吗?在你应用了修改以后,参数是什么?

查询MSDN发现,三参数对应IPPROTO_TCP、SOCK_STREAM、AF_INET

选中数字,右键使用符号常量

搜索上面查询出的符号常量,选择


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

我们需要搜索in指令,这可以通过选择菜单的Search→Text,然后输入in来做到(还可以选择Search→Sequence of Bytes,然后搜索in指令的opcode,也就是ED),这里选择Find All Occurrences,搜索所有。



这段代码有VMXh字样,表明这段恶意代码可能会有反虚拟机的技巧,在17章我们会详细讨论。

4.2使用IDA Pro分析实战--《恶意代码分析实战》的更多相关文章

  1. 2018-2019-2 网络对抗技术 20165333 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165333 Exp4 恶意代码分析 原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或E ...

  2. 恶意代码分析实战四:IDA Pro神器的使用

    目录 恶意代码分析实战四:IDA Pro神器的使用 实验: 题目1:利用IDA Pro分析dll的入口点并显示地址 空格切换文本视图: 带地址显示图形界面 题目2:IDA Pro导入表窗口 题目3:交 ...

  3. 恶意代码分析实战五:OllyDebug动态结合

    目录 恶意代码分析实战五:OllyDebug动态结合 OllyDebug界面介绍 OllyDebug载入程序方法 OllyDebug地址跳转 OllyDebug下断点 OllyDebug单步执行 Ol ...

  4. Exp4 恶意代码分析 20154320 李超

    恶意代码 概述 恶意代码是指故意编制或设置的.对网络或系统会产生威胁或潜在威胁的计算机代码.最常见的恶意代码有计算机病毒(简称病毒).特洛伊木马(简称木马).计算机蠕虫(简称蠕虫).后门.逻辑炸弹等. ...

  5. 2017-2018-2 20155314《网络对抗技术》Exp4 恶意代码分析

    2017-2018-2 20155314<网络对抗技术>Exp4 恶意代码分析 目录 实验要求 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 静态分析 1.1 使用virsca ...

  6. 20165310 NetSec2019 Week6 Exp4 恶意代码分析

    20165310 NetSec2019 Week6 Exp4 恶意代码分析 一.实验要求 1.系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间 ...

  7. 《网络对抗》Exp4 恶意代码分析

    20155336<网络对抗>Exp4 恶意代码分析 问题回答 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监 ...

  8. 2015306 白皎 《网络攻防》Exp4 恶意代码分析

    2015306 白皎 <网络攻防>Exp4 恶意代码分析 netstat [Mac.Linux.Win] sysinteral [MS]:1 2 3 一.系统监控--Windows计划任务 ...

  9. 20165223《网络对抗技术》Exp4 恶意代码分析

    目录 -- 恶意代码分析 恶意代码分析说明 实验任务目标 实验内容概述 schtasks命令使用 实验内容 系统运行监控 恶意软件分析 静态分析 virscan分析和VirusTotal分析 PEiD ...

  10. Exp4 恶意代码分析

    一.原理与实践说明 1. 实践目标 1.1 监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysin ...

随机推荐

  1. C语言哈希表uthash的使用方法详解(附下载链接)

    uthash简介   由于C语言本身不存在哈希,但是当需要使用哈希表的时候自己构建哈希会异常复杂.因此,我们可以调用开源的第三方头文件,这只是一个头文件:uthash.h.我们需要做的就是将头文件复制 ...

  2. vue实现文件上传功能

    https://www.jb51.net/article/145500.htm Element中的el-upload使用过程中踩的坑 https://www.jianshu.com/p/c837224 ...

  3. 如何实现纯网页语音视频聊天和桌面分享?(附源码,PC版+手机版)

    在网页里实现文字聊天是比较容易的,但若要实现视频聊天,就比较麻烦了.本文将实现一个纯网页版的视频聊天和桌面分享的Demo,可直接在浏览器中运行,不需要安装任何插件. 一. 主要功能及支持平台 1.本D ...

  4. C#实现斐波拉切数列求和

    C#实现斐波拉切数列求和 private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear();//清空Lis ...

  5. C#使用迭代器显示公交车站点

    public static IList<object> items = new List<object>();//定义一个泛型对象,用于存储对象 /// <summary ...

  6. 2. 成功使用SQL Plus完成连接,但在使用Oracle SQL Developer连接时,发生报错ORA-12526: TNS:listener: all appropriate instances are in restricted mode

    经了解后得知,错误原因:ORA-12526: TNS: 监听程序: 所有适用例程都处于受限模式. 解决办法:使用系统管理员身份运行以下一段代码 ALTER SYSTEM DISABLE RESTRIC ...

  7. CSS - 工具类 tool.css

    /* flex */ .flex{     display: flex; } .f1{     flex:1 } .flex-center{     align-items: center;      ...

  8. [转帖]七. PostgreSQL逻辑结构(1)—数据库和模式

    https://www.jianshu.com/p/ee8b1bdfdb19 在PostgreSQL里,逻辑结构从高到底依次是:数据库.模式(又叫架构).表.行.当我们打开PostgreSQL官方自带 ...

  9. [转帖]hex,base64,urlencode编码方案对比

    https://www.jianshu.com/p/4d701c09d44e 原创:打码日记,欢迎分享,转载请保留出处. 简介 在工作过程中,我们慢慢会了解到hex.base64.urlencode这 ...

  10. 【转帖】linux环境下使用route指令设置多个网络连接的优先级(通过修改路由表的默认网关条目)

    1. 背景 在生活中的会经常遇见一台PC同时连接多个网络的场景.最典型的,一台笔记本可以同时连接一个无线网(手机热点)和一个有线网(以太网).linux和window操作系统在默认情况都会使用最早连接 ...