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 ...
随机推荐
- SetFitABSA: 基于 SetFit 的少样本、方面级情感分析
SetFitABSA 是一种可以有效从文本中检测方面级情感的技术. 方面级情感分析 (Aspect-Based Sentiment Analysis,ABSA) 是一种检测文本中特定方面的情感的任务. ...
- 【QtJson】用Qt自带的QJson,直接一步到位封装和解析一个类的实例对象!
之前貌似没有看过类似的代码 我们现在的要求就是直接在不知道类成员的情况下,把一个类丢进去就能生成一个Json字符串,也可以把一个字符串和一个类成员丢进去就能根据成员变量名匹配到元素并赋值,大概就这样 ...
- NodeJS开发服务端实现文件上传下载和数据增删改查
本文主要讲解已NodeJS作为服务器完成文件的上传下载和数据增删改查,前端框架为Vue3,UI框架为element-plus,Node版本为V16.14.2. 项目场景模拟是开发一个项目管理的系统,支 ...
- zookeeper 集群环境搭建及集群选举及数据同步机制
本文为博主原创,未经允许不得转载: 目录: 1. 分别创建3个data目录用于存储各节点数据 2. 编写myid文件 3. 编写配置文件 4.分别启动 5.分别查看状态 6. 检查集群复制情况 ...
- 【开源分享】基于Html开发的房贷计算器,模仿新浪财经
房贷计算器是一种房贷计算的在线计算Web应用,按用户选择的贷款类型.贷款金额.期限.利率可计算得出每月月供参考.支付利息.还款总额这些信息.本文模仿新浪财经开发的房贷计算器. 作品预览 https:/ ...
- springboot - 解决使用pagehelper 报 SQL语句异常
原因: mapper.xml 中的sql加上了分号. <select id="search" resultType="***.Table"> sel ...
- AspNetCore在docker里访问Oracle数据库的坑:ORA-01882: timezone region not found
哦吼 之前刚说了尝试了使用docker来部署AspNetCore应用,结果这才刚上班就遇到问题了= =- 我这项目用的数据库是Oracle,之前直接运行没啥问题,但放在docker里运行就报了这个错误 ...
- [转帖]可能是最完整的 TCP 连接健康指标工具 ss 的说明
https://blog.mygraphql.com/zh/notes/low-tec/network/tcp-inspect/ 写在前面 TCP 连接健康的重要性 如何查看 TCP 连接健康 容器化 ...
- Harbor的逻辑备份与学习
Harbor的逻辑备份与学习 背景 一直想处理一下一个有网络冲突的Harbor镜像服务器 但是因为网络层自己水平一直是不是非常自信 加上Harbor容器使用的compose的玩法, 自己不敢直接处理. ...
- [转帖]configure 各种配置
https://api.dandelioncloud.cn/article/details/1487329970564485121 -build=编译该软件所使用的平台 -host=该软件将运行的平台 ...