使用 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. VUE里使用iframe在更改了src之后对应的网页并未刷新解决方案

    在vue 里使用iframe,在更新src后页面并未刷新, 在更改iframe src属性值之前加上这一句即可 document.getElementById(iframe的id).contentWi ...

  2. Vue项目利用axios请求接口下载excel(附前后端代码)

    https://blog.csdn.net/aSmallProgrammer/article/details/91440793?utm_medium=distribute.pc_relevant.no ...

  3. Power Designer建模之餐饮在线点评系统——概念数据模型

    企业信息管理 局部概念模型 企业 餐饮企业 食材提供商 食材 特色菜 团购活动 优惠券 促销活动 会员团购订单 优惠券下载和浏览记录表 会员信息管理 局部概念模型 会员 会员扩展信息 会员积分记录 餐 ...

  4. shell脚本(4)-格式化输入

    一.read命令 1.概念: 默认接受键盘的输入,回车符代表输入结束 2.read命令选项 -p:打印信息 -t:限定时间 -s:不回显 -n:输入字符个数 3.举例说明 (1)模拟登录 [root@ ...

  5. 操作系统OS学习总结

    操作系统OS笔记 操作系统概述 操作系统定义 操作系统,是计算机系统中最基本.最重要的系统软件,是其它软件的支撑.控制和管理计算机系统的硬件和软件资源,合理的组织计算机工作流程,并为用户使用计算机提供 ...

  6. zookeeper 集群环境搭建及集群选举及数据同步机制

    本文为博主原创,未经允许不得转载: 目录: 1. 分别创建3个data目录用于存储各节点数据 2. 编写myid文件 3. 编写配置文件     4.分别启动 5.分别查看状态 6. 检查集群复制情况 ...

  7. 2023 SHCTF-校外赛道 PWN WP

    WEEK1 nc 连接靶机直接梭 hard nc 同样是nc直接连,但是出题人利用linux命令的特性,将部分flag放在了特殊文件中 利用ls -a查看所有文件,查看.gift,可以得到前半段 然后 ...

  8. K8S_IPV6 POD与数据库联通方法以及快速网络调试的一个思路

    K8S_IPV6 POD与数据库联通方法以及快速网络调试的一个思路 背景 前端时间搭建了一套K8S only IPV6 Single Stack的测试环境 因为自己长时间不搞K8S了, 并且IPV6的 ...

  9. Grafana监控minio的极简方法

    Grafana监控minio的极简方法 背景 想监控一下minio的部分信息. 使用过程中需要关注的内容挺多的. 只看简单的node感觉已经不够了. 所以想监控易一下. 方式和方法 minio其实集成 ...

  10. [转帖]Rocksdb的优劣及应用场景分析

      研究Rocksdb已经有七个月的时间了,这期间阅读了它的大部分代码,对底层存储引擎进行了适配,同时也做了大量的测试.在正式研究之前由于对其在本地存储引擎这个江湖地位的膜拜,把它想象的很完美,深入摸 ...