恶意代码分析实战 6 OllyDbg

这篇具有很好参考价值的文章主要介绍了恶意代码分析实战 6 OllyDbg。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

6.1 Lab 9-1

程序分析
首先,进行静态分析,使用strings。

CreateFileA
RegQueryValueExA
RegOpenKeyExA
RegSetValueExA
RegCreateKeyExA
RegDeleteValueA
WideCharToMultiByte
GetModuleHandleA
GetEnvironmentVariableA
SetEnvironmentVariableA
SOFTWARE\Microsoft \XPS
HTTP/1.0
GET
SLEEP
cmd.exe
>> NUL
http://www.practicalmalwareanalysis.com
%SYSTEMROOT%\system32\

这里有一些东西我们比较在意,我们可以看到该程序对注册表和环境变量进行了一些操作,并且具有网络特征;出现了cmd.exe可能具有远程shell的功能;创建了文件,可能下载了什么东西。
接下来进行动态分析,将程序拖入IDA和OllyDbg中,在IDA中查找该函数的起点,然后在OllyDbg中定位到起点,进行分析。
首先,在地址0x402AFD查看命令行参数的数量是否等于1,等于1,ZF等于1,此时jnz无法跳转,cal了函数 0x401000,我们在IDA中查看一下该函数是什么。
恶意代码分析实战 6 OllyDbg
发现函数 RegOpenKeyExA ,打开指定的注册表,RegQueryValueExA 检索与打开的注册表项关联的指定值名称的类型和数据。该函数综合功能是查找是否存在它指定的注册表。
恶意代码分析实战 6 OllyDbg
没有查找到指定的注册表,反返回了0.进入了0x402410,我们打开IDA查看一下这个函数是干啥的。
恶意代码分析实战 6 OllyDbg
GetModuleFileName 函数获取当前可执行文件的路径,shellExeute函数对指定文件进行操作,我们看得到有“cmd.exe”“>> NUL”“/c del”字符串,可能是对自身进行了删除,在OllyDbg中跟进。
恶意代码分析实战 6 OllyDbg
恶意代码分析实战 6 OllyDbg
可以看到字符串"/c del C:\DOCUME1\ADMINI1\Lab09-01.exe >> NUL",对可执行文件进行了删除,然后结束了程序。
问题

  1. 如何让这个恶意代码安装自身?

首先需要跳过__alloca_probe函数,通过加入一个参数跳过。
恶意代码分析实战 6 OllyDbg
还需要跳过0x402510函数,进入这个函数分析可以得知,需要的参数为“abcd”。

  1. 这个恶意代码的命令行选项是什么?它要求的密码是什么?

恶意代码分析实战 6 OllyDbg
可以对几个函数进行依次分析。
参数-in
(1)若带的参数是-in,则安装服务。
恶意代码分析实战 6 OllyDbg
(2) 参数-re
若带的参数是-re,则卸载服务
恶意代码分析实战 6 OllyDbg
(4) 参数-c
若带的参数是-c,则删除自身并设置注册表配置键
恶意代码分析实战 6 OllyDbg
(5) 参数-cc
若带的参数是-cc,则打印注册表配置键
恶意代码分析实战 6 OllyDbg
该恶意程序还能能执行多种指令 ‘-in’ 进行安装,‘-re’ 进行恶意程序的彻底清除,‘-cc’ 进行注册表打印,‘-c’ 进行恶意代码更新配置;要求的密码是 ‘abcd’

  1. 如何利用OllyDbg永久修补这个恶意代码,使其不需要指定的命令行密码?

可以通过修改跳转条件。
恶意代码分析实战 6 OllyDbg
将此处改为je,既可在密码错误时跳转。

  1. 这个恶意代码基于系统的特征是什么?

会创建一个指定注册表项 “HKLM\SOFTWARE\Microsoft \XPS” 的 “configuration”键”;同时会创建一个服务,该服务的名称由安转时传入的参数决定;另外,该程序还会自我赋值到Windows系统目录下。

  1. 这个恶意代码是否有网络特征?

恶意代码分析实战 6 OllyDbg
会向指定的站点发出http (HTTP/1.0 GET) 请求,默认的站点是“http://www.practicaolmalwareanalysis.com”

6.2 Lab 9-2

用OllyDbg分析恶意代码文件Lab09-02.cxe,回答下列问题。
问题

  1. 在二进制文件中,你看到的静态字符串是什么?

使用Strings进行分析。
恶意代码分析实战 6 OllyDbg

  1. 当你运行这个二进制文件时,会发生什么?

没有发生什么就终止了。

  1. 怎样让恶意代码的攻击负载(payload)获得运行?

使用OllyDbg进行分析,首先定位到程序入口。
恶意代码分析实战 6 OllyDbg
可以发现这里将很多字符转移到了栈上,我们可以通过IDA来查看一下是什么字符串。
恶意代码分析实战 6 OllyDbg
或者使用OllyDbg进行跟随。
恶意代码分析实战 6 OllyDbg
继续运行,发现调用了GetMoudleFileName函数
恶意代码分析实战 6 OllyDbg
运行到恶意代码分析实战 6 OllyDbg这个位置。
调用了一个函数,有两个参数,其中一个是上面所返回的路径,另一个是‘\’,这个函数的作用是将当前可执行文件的文件名找出来。
运行到下一个call调用函数的地址。
恶意代码分析实战 6 OllyDbg
可以看到栈上有两个参数。
恶意代码分析实战 6 OllyDbg
结合IDA我们可以得知这就是一个字符串比较函数。如果这个函数发现两个字符串不一样,那么就会退出程序。
将该可执行文件名称改为ocl.exe就可以运行该样本。

  1. 在地址0x00401133处发生了什么?

恶意代码分析实战 6 OllyDbg
将两个字符串压入了栈中。

  1. 传递给子例程(函数)0x00401089的参数是什么?

恶意代码分析实战 6 OllyDbg
参数是字符串和一个数据缓冲区。

  1. 恶意代码使用的域名是什么?

进入(函数)0x00401089。

char *__cdecl sub_401089(char *a1, int a2)
{
  signed int i; // [sp+4h] [bp-108h]@1
  signed int v4; // [sp+8h] [bp-104h]@1
  char v5; // [sp+Ch] [bp-100h]@1
  char v6; // [sp+Dh] [bp-FFh]@1
  __int16 v7; // [sp+109h] [bp-3h]@1
  char v8; // [sp+10Bh] [bp-1h]@1

  v5 = 0;
  memset(&v6, 0, 0xFCu);
  v7 = 0;
  v8 = 0;
  v4 = strlen(a1);
  for ( i = 0; i < 32; ++i )
    *(&v5 + i) = a1[i % v4] ^ *(_BYTE *)(i + a2);
  return &v5;
}

类似于一个解密函数。
运行看看结果。
恶意代码分析实战 6 OllyDbg

  1. 恶意代码使用什么编码函数来混域名?

恶意代码用字符串 1qaz2wsx3edc 异或加密的 DNS 名来解密域名。

  1. 恶意代码在0x0040106E处调用CreateProcessA函数的意义是什么?

书上的解答是

恶意代码设置stdout、stderr和stdin的句柄到socket(被用在CreateProcessA的STARTUPINFO结构中)。由于cmd作为CreateProcessA的参数调用,因此通过绑定一个套接字与命令shell来创建逆向shell

大概意思就是说这个shell是通过这个CreateProcessA的STARTUPINFO来绑定stdou,stderr,stdin在cmd上的,只有这样才能把这些东西绑定在cmd上

6.3 Lab 9-3

使用OllyDbg和IDAPro分析恶意代码文件Lab09-03.exe。这个恶意代码加载3个自带的DLL
(DLLI.d、DLL2.dI、DLL3.dI),它们在编译时请求相同的内存加载位置。因此,在OllyDbg中对照IDAPro浏览这些DLL可以发现,相同代码可能会出现在不同的内存位置。这个实验的目的是让你在使用OllyDbg看代码时可以轻松地在IDAPro里找到它对应的位置。
问题

  1. Lab09-03.cxe导入了哪些DLL?

首先查看静态导入的DLL;
恶意代码分析实战 6 OllyDbg
然后打开IDA查看导入函数LoadLibrary函数导入了什么DLL;
恶意代码分析实战 6 OllyDbg
恶意代码分析实战 6 OllyDbg
一共是导入了6个DLL。

  1. DLL.dll、DLL2.dll、DLL3.dll 要求的基地址是多少

查看要求的基地址。
恶意代码分析实战 6 OllyDbg
恶意代码分析实战 6 OllyDbg
恶意代码分析实战 6 OllyDbg

  1. 当使用OllyDbg调试Lab09-03.exe时,为DLL.d、DLL2.d、DLL3.du分配的基地址是什么?

因为 DLL3.dll 库需要在程序运行时才能导入,所以先运行到导入dll的地址。
恶意代码分析实战 6 OllyDbg
查看导入的基地址。
恶意代码分析实战 6 OllyDbg

  1. 当Lab09-03.exe调用DLL1.dll中的一个导入函数时,这个导入函数都做了些什么

恶意代码分析实战 6 OllyDbg
OllyDbg中也给出了一段字符串。DLL1.exe的导入函数是:
恶意代码分析实战 6 OllyDbg
使用 IDA 打开 DLL1.dll,
恶意代码分析实战 6 OllyDbg
sub_10001038应该是一个printf函数,dword_10008030中的数据是GetCurrentProcessId的返回值。
恶意代码分析实战 6 OllyDbg
所以这个函数的功能就是打印出dll的进程ID。

  1. 当Lab09-03.exe调用WriteFile函数时,它写入的文件名是什么?

文件名称是DLL2中的函数返回的。
恶意代码分析实战 6 OllyDbg
所以我们有必要查看一下DLL2中的这个函数是干什么的。
恶意代码分析实战 6 OllyDbg
看来是“text.txt”。

  1. 当Lab09-03.cxe使用NetScheduleobAdd创建一个job时,从哪里获取第二个参数的数据?

分析dll3getstructure。
恶意代码分析实战 6 OllyDbg
可以看到这个函数有一个参数,将其赋给eax结合分析exe时看到的调用
恶意代码分析实战 6 OllyDbg
传入的参数是edx而edx的值是buffer的内容
而这个buffer其实就是一个局部变量也就是说在调用dll3strcture时其参数就是局部变量的地址回到dll3.dll的分析在获取到地址之后
恶意代码分析实战 6 OllyDbg
把dword的值赋给eax指向的地址中,也就是前面说的buffer我们跟进,查看交叉引用
恶意代码分析实战 6 OllyDbg
可以看到是一系列的move赋值的操作这些数据的地址会保存在buffer里,而buffer保存在ecx,而之后ecx是作为netschedulejobadd的第二个参数
恶意代码分析实战 6 OllyDbg
Lab09-03.exe 从DLL3GetStructure中获取NetScheduleJobAdd调用的缓冲区,它动态地解析获得第二个参数的数据

  1. 在运行或调试Lab09-03.exe时,你会看到Lab09-03.exe打印出三块神秘数据。DLL1的神秘数据DLL2的神秘数据,DLL3的神秘数据分别是什么?

DLL1的神秘数据是进程ID,DLL2的神秘数据是打开temp.txt文件的句柄,DLL3的神秘数据是字符串“ping www.malwareanalysisbook.com”。

  1. 如何将DLL2.d加载到IDAPro中,使得它与OlyDbg使用的加地址匹配

恶意代码分析实战 6 OllyDbg
恶意代码分析实战 6 OllyDbg
恶意代码分析实战 6 OllyDbg+
恶意代码分析实战 6 OllyDbg
成功。文章来源地址https://www.toymoban.com/news/detail-468734.html

到了这里,关于恶意代码分析实战 6 OllyDbg的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是恶意代码分析中的动态分析基础技术?

    你知道如何使用动态分析基础技术来分析Lab03-01.exe文件中的恶意代码吗?Lab03-02.dll中的恶意代码如何自行安装?Lab03-03.exe的恶意代码在主机上的感染迹象是什么?Lab03-04.exe的恶意代码运行时会发生什么?动态分析为何无法有效实施?

    2024年02月06日
    浏览(48)
  • Android端恶意代码检测学习之路——(2)静态分析(apk数据集的获取)

    上次只是搞了一个apk进行测试,那必是不得行啊!那不得需要良性以及恶意数据集吗? 在网上找了很久,没有找到合适的,况且就算找到了,不能确定到底是不是良性,所以!我决定!写一个爬虫爬取豌豆荚apk(按照排行榜来顺序下载)。 可是我不会写爬虫啊!怎么办,学

    2023年04月11日
    浏览(38)
  • 阿里云天池大赛赛题(机器学习)——阿里云安全恶意程序检测(完整代码)

    阿里云作为国内最大的云服务提供商,每天都面临着网络上海量的恶意攻击。 本题目提供的一堆恶意文件数据,包括感染性病毒、木马程序、挖矿程序、DDoS木马、勒索病毒等等,总计6亿条数据,每个文件数据会有对API调用顺序及线程等相关信息,我们需要训练模型,将测试

    2024年02月07日
    浏览(72)
  • 网络安全|渗透测试入门学习,从零基础入门到精通—动态分析技术工具OllyDbg界面介绍

    目录 动态分析技术调试器 什么是OllyDbg OllyDbg能干什么 OllyDbg窗口介绍 1、反汇编面板窗口 2、信息面板窗口 3、数据面板窗口 4、寄存器面板窗口 5、栈面板窗口 动态分析技术中最重要的工具是调试器,分为用户模式和内核模式两种类型。用户模式调试器是指用来调试用户模式

    2024年02月11日
    浏览(38)
  • 恶意代码防范技术原理-恶意代码概述

    恶意代码 (Malicious Code):是一种 违背目标系统安全策略的程序代码 ,会造成目标系统 信息泄露、资源滥用 , 破坏系统的 完整性 及 可用性 。它能够经过存储介质或网络进行传播,从一台计算机系统传到另外一台计算机系统, 未经授权认证访问或破坏计算机系统 恶意代

    2024年02月08日
    浏览(32)
  • 【免费】win7 所有.net framework框架集合,免费下载,若要运行此应用程序,您必须首先安装net framework如何解决

    运行软件缺失框架: 那天我看见网上下载一个框架都要收费还要100大洋,现在真的是干啥都要钱,索性就整理了一个全库供大家下载,做点好事 .net 框架所有的 .net官网下载地址, 所有框架向下兼容,安装报错,就往上一个新版本下载装 微软官网:.net framework 3.5- 4.8框架 下

    2024年02月05日
    浏览(85)
  • 恶意代码之逻辑炸弹

    目录 概念 逻辑炸弹攻击迹象 举例1 举例2  逻辑炸弹是在满足特定逻辑条件时能改变运行方式,对目标计算机系统实施破坏的计算机程序。 这种程序通常隐藏在具有正常功能的程序中,在不具备触发条件的情况下,逻辑炸弹深藏不露,系统运行情况良好,用户也察觉不到任何

    2024年02月05日
    浏览(24)
  • 安全防御 --- 恶意代码、防病毒

    (1)病毒 概念: 病毒是一种基于硬件和操作系统的程序,具有感染和破坏能力,这与病毒程序的结构有关。病毒攻击的宿主程序是病毒的栖身地,它是病毒传播的目的地,又是下一次感染的出发点。 病毒感染过程: 计算机病毒运行染毒的宿主程序,病毒夺取控制权;寻找

    2023年04月08日
    浏览(29)
  • 【Python数据分析实战】豆瓣读书分析(含代码和数据集)

    @[TOC]豆瓣 数据集: 链接:douban.csv 提取码:pmls 从数据集中可以发现出版时间的数据格式多样,有1999,2012/12,1923-4,2019年六月,因此需要提取出其年份 结果: False 46173 True 7 Name: 页数, dtype: int64 结果: False 42813 True 2073 Name: 书名, dtype: int64

    2023年04月09日
    浏览(27)
  • 安全防御之恶意代码与防护技术

    恶意代码是指没有作用却会带来危险的代码。通常把未经授权便干扰或破坏计算机系统、网络功能的程序或代码(一组指令)称之为恶意程序。恶意程序包括计算机病毒、木马、蠕虫等。详见《网络安全之恶意代码》 恶意代码的防范,不是单靠一种或几种技术就能解决的,而

    2024年02月01日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包