4.2使用IDA Pro分析实战--《恶意代码分析实战》
使用 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分析实战--《恶意代码分析实战》的更多相关文章
- 2018-2019-2 网络对抗技术 20165333 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165333 Exp4 恶意代码分析 原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或E ...
- 恶意代码分析实战四:IDA Pro神器的使用
目录 恶意代码分析实战四:IDA Pro神器的使用 实验: 题目1:利用IDA Pro分析dll的入口点并显示地址 空格切换文本视图: 带地址显示图形界面 题目2:IDA Pro导入表窗口 题目3:交 ...
- 恶意代码分析实战五:OllyDebug动态结合
目录 恶意代码分析实战五:OllyDebug动态结合 OllyDebug界面介绍 OllyDebug载入程序方法 OllyDebug地址跳转 OllyDebug下断点 OllyDebug单步执行 Ol ...
- Exp4 恶意代码分析 20154320 李超
恶意代码 概述 恶意代码是指故意编制或设置的.对网络或系统会产生威胁或潜在威胁的计算机代码.最常见的恶意代码有计算机病毒(简称病毒).特洛伊木马(简称木马).计算机蠕虫(简称蠕虫).后门.逻辑炸弹等. ...
- 2017-2018-2 20155314《网络对抗技术》Exp4 恶意代码分析
2017-2018-2 20155314<网络对抗技术>Exp4 恶意代码分析 目录 实验要求 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 静态分析 1.1 使用virsca ...
- 20165310 NetSec2019 Week6 Exp4 恶意代码分析
20165310 NetSec2019 Week6 Exp4 恶意代码分析 一.实验要求 1.系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间 ...
- 《网络对抗》Exp4 恶意代码分析
20155336<网络对抗>Exp4 恶意代码分析 问题回答 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监 ...
- 2015306 白皎 《网络攻防》Exp4 恶意代码分析
2015306 白皎 <网络攻防>Exp4 恶意代码分析 netstat [Mac.Linux.Win] sysinteral [MS]:1 2 3 一.系统监控--Windows计划任务 ...
- 20165223《网络对抗技术》Exp4 恶意代码分析
目录 -- 恶意代码分析 恶意代码分析说明 实验任务目标 实验内容概述 schtasks命令使用 实验内容 系统运行监控 恶意软件分析 静态分析 virscan分析和VirusTotal分析 PEiD ...
- Exp4 恶意代码分析
一.原理与实践说明 1. 实践目标 1.1 监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysin ...
随机推荐
- freeswitch的ACL规则
概述 freeswitch是一款好用的VOIP开源软交换平台. VOIP公共网络中的安全问题是最重要的问题,我们必须对网络端口的访问权限做出限制. ACL全称Access Control List,意 ...
- spring启动流程 (2) Bean实例化流程
本文通过阅读Spring源码,分析Bean实例化流程. Bean实例化入口 上一篇文章已经介绍,Bean实例化入口在AbstractApplicationContext类的finishBeanFact ...
- springboot启动流程 (3) 自动装配
在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能. 本文将详细分析该注解的工作流程. EnableAutoConfiguration注解 启用Sprin ...
- Manjaro Linux永久修改主机名
技术背景 Linux系统中默认的主机名可以通过hostname指令进行查询,一般默认的是一串的随机字符串: [dechin@dechin-20n2s01200 numba]$ hostname dec ...
- 数字IC设计全流程介绍
数字IC设计全流程设计 掌握数字集成电路设计的流程 数字设计流程中每个阶段主要做哪些工作? 数字设计流程中每个阶段使用的主要EDA工具? 数字电路常用软件公司Mentor(questasim),Syn ...
- 配置Maven项目的pom.xml时遇到input contained no data问题
1.问题 2.解决 我发现每次当我修改一些部分之后,就会遇到这个问题 我遵循了他的建议重新排列标记属性,然后重新加载就解决了报错 个人怀疑是修改后并没有识别之类的? 最终原因:是我在Maven项目中的 ...
- 【MicroPython】生成Q(string)符号表文件 - py\makeqstrdefs.py
脚本使用格式 python py/makeqstrdefs.py [command] [mode] [input-file] [output-directory] [output-file] comm ...
- CSS - 正确解决 float 高度坍塌的问题
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta cha ...
- [转帖]oracle查询表变化量
根据变化量,可确定表的繁忙度,以及作为判断可能数据增长的对象. select obj.owner, obj.object_name, to_char(sn.BEGIN_INTERVAL_TIME,'y ...
- [转帖]15.1. 插件dblink简介
https://help.kingbase.com.cn/v8.6.7.12/development/sql-plsql/ref-extended-plug-in/dblink.html dblink ...