恶意代码分析实战 – Lab 5

0x00 前言

​ 因为工作中遇到僵木蠕比较多,所以打算学习一下恶意代码、样本分析。最近在看《恶意代码分析实战》发现内容都挺不错的,为了让自己印象深刻点所以就把课后作业做一下,正好学习一下 IDA Pro 的一些操作

0x01 实验

本次实验分析的是一个恶意 dll 文件

1、DllMain 的地址是什么

dllmain 函数是 dll 文件的入口文件,ida 打开文件,直接在左侧边栏通过 command + shift + f 搜索函数名,可以看到 dllmain 的入口地址为 .1000D02E

image-20230123095140621

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

通过 ida 的 import 来查看导入函数,并进行搜索可以快速定位到 gethostbyname 函数的地址 100163CC

image-20230123095629162

3、有多少函数调用了gethostbyname

可以在函数名上按 x 来查看交叉引用(当前函数在其他地方的调用&引用)

image-20230123095822320

这里可以看到窗口种有一个 type 属性

type:p 就代表函数调用

type:r 代表读取权限

https://hex-rays.com/products/ida/support/idadoc/1305.shtml

所以就是 9 处调用

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

在 IDA pro 中可以通过按 g 来对特定地址进行跳转,同时也可以在上个问题中的交叉引用种找到该地址

可以看到在 10001757 处调用了 gethostbyname 这个函数

image-20230126144302651

gethostbyname 需要传入 char 类型的变量,所以往上看

image-20230126144432345

在上方可以看到将 off_10019040 变量存到寄存器 eax 种并通过 push 进行入栈,跟进查看 off_10019040

image-20230126144517097

发现变量为 pics.praticalmalwareanalysis.com ,所以该恶意 dll 会向该域名发起 DNS 请求

image-20230126144612848

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

通过 g 跳转到该地址,带负号的就是局部变量,一共 23 个

image-20230126145245156

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

偏移为正的是参数

image-20230126150144689

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

利用 ida pro 的 strings 配合搜索可以定位到字符串常量

image-20230126150337918

地址为 10095B34

image-20230126150956557

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

按 x 查看交叉引用,点击之后可以直接来到 cmd.exe 的调用代码

image-20230126151115151

切换到图视角先查看一下大概的逻辑,可以看到大致的流程是先进行命令的构造,然后会通过一些函数来判断,并且根据判断的结果选择对应的执行程序

image-20230126151520151

直接 f5 进行反编译

可以看到在开头部分进行了一些基础变量的获取,通过调用 windows api 的一些函数来获取时间、目录等信息

image-20230127104501976

接下来通过调用 sprintf 来进行字符串格式化

image-20230127104833978

查看字符串变量发现该段信息疑似为与 C&C 通信的心跳包

image-20230127104923825

然后通过调用了windows api 的 CreatePipe 建立了一个与父进程通信的管道(个人感觉类似 python 中的 subprocess)应该是通过创建子进程来进行命令执行

然后通过调用了 GetSystemDirectoryA 获取系统目录并将结果追加到 Destination 变量,然后 while 一直循环读取,并对数据进行解析处理

image-20230127105520337

然后会根据解析的结果跳转到 LABEL_21 处,这里主要是处理 C&C 的不同类型的命令

image-20230127155820653

通过 memcmp 函数来进行比较根据对应的字符串来调用对应的函数,其实就是各种恶意模块

image-20230127155954330

最后

本文其实并没有将题目做完 8/21 不过之前目的主要是通过题目来学习一下 ida 的使用所以暂时就先做这些题目,后续感觉有需要了我再进行完善

参考链接

https://bbs.kanxue.com/thread-266849.htm

评论

  1. 11121
    1 年前
    2023-4-19 14:15:16

    图片加载不出来呀

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇