恶意代码分析实战 3 IDA Pro

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

利用IDA PRO分析Lab05-01.dll
实验目的
利用IDA Pro分析Lab05-01.dll中发现的恶意代码,回答以下问题:

  1. DLLMain的地址是什么?

恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
可以空格转入反汇编查看DLLMain地址,或者
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
DLLMain的地址是.text:0x1000D02E。

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

这样的三步来寻找地址。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
地址是.idata:100163CC。

  1. 有多少函数调用了gethostbyname?

光标滑到函数所在位置,按下+开启交叉引用。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
数一数发现不同地址的函数共有5个,所以gethostbyname被5个不同的函数调用了9次。
类型p是被调用的引用,类型r是被读取的引用。

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

按下G,快速跳转。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
调用了函数,32位汇编通常把参数存在eax中,查看一下什么东西导入了eax。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
后面正好有一句eax+0xD,所以解析的是后面这一部分的网址。

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

按G定位到函数,后面是负数的是局部变量。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
一共23个。

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

后面是正数的是参数,所以共有一个参数。

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

+ 打开Strings窗口,搜索该字符串。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
它的位置是 xdoors_d:10095B34 。

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

跳转到它的调用部分。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
看起来像是远程攻击者开启了一个远程shell对话。

  1. 在同样的区域,在0x100101C8处,看起来dword_1008E5C4好像是一个全局变量,它帮助决定走哪条路径。那恶意代码是如何设置dword_1008E5C4的呢?(提示:使用交叉引用)

双击进入data处,查看交叉引用,发现只有一处是对它进行了修改。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft

.text:10001673 call sub_10003695
.text:10001678 mov dword_1008E5C4, eax

进入该函数看一看,

.text:10003695 VersionInformation= _OSVERSIONINFOA ptr -94h
.text:10003695
.text:10003695 push ebp
.text:10003696 mov ebp, esp
.text:10003698 sub esp, 94h
.text:1000369E lea eax, [ebp+VersionInformation]
.text:100036A4 mov [ebp+VersionInformation.dwOSVersionInfoSize], 94h
.text:100036AE push eax ; lpVersionInformation
.text:100036AF call ds:GetVersionExA
.text:100036B5 xor eax, eax
.text:100036B7 cmp [ebp+VersionInformation.dwPlatformId], 2
.text:100036BE setz al
.text:100036C1 leave
.text:100036C2 retn
.text:100036C2 sub_10003695 endp

调用了GetVersionEx,用于获取操作系统版本的信息,其中将dwOSVersionInfoSize与数字2进行比较,来确定如何设置AL寄存器。如果PlatformId为VER_PLATFORM_WIN32_NT,AL会被置位,只是简单的判断当前操作系统是否Windows 2000或更高版本,我们可以得出结论,该全局变量通常会被置为1.

  1. 在位于0x1000FF58处的子过程中的几百行指令中,一系列使用memcmp来比较字符串的比较。如果对robotwork的字符串比较是成功的(当memcmp返回0),会发生什么?

.text:10010444 loc_10010444: ; CODE XREF: sub_1000FF58+4E0j
.text:10010444 push 9 ; Size
.text:10010446 lea eax, [ebp+Dst]
.text:1001044C push offset aRobotwork ; “robotwork”
.text:10010451 push eax ; Buf1
.text:10010452 call memcmp
.text:10010457 add esp, 0Ch
.text:1001045A test eax, eax
.text:1001045C jnz short loc_10010468
.text:1001045E push [ebp+s] ; s
.text:10010461 call sub_100052A2
.text:10010466 jmp short loc_100103F6

如果memcmp返回0,jnz是不是零的时候就跳转,会执行sub_100052A2函数,进入函数内部看看。

.text:100052DF push eax ; phkResult
.text:100052E0 push 0F003Fh ; samDesired
.text:100052E5 push 0 ; ulOptions
.text:100052E7 push offset aSoftwareMicros ; “SOFTWARE\Microsoft\Windows\CurrentVe”…
.text:100052EC push 80000002h ; hKey
.text:100052F1 call ds:RegOpenKeyExA

发现首先用RegOpenKeyExA函数打开了注册表HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,然后查询了aWorktime和aWorktimes键也就是worktime和worktimes键的值,然后调用了sub_100038EE函数,
双击进入sub_100038EE函数查看,发现其调用了了malloc函数创建了内存空间,然后又调用了send函数,最后调用了free函数释放内存空间,所以猜测可能是对注册表SOFTWARE\Microsoft\Windows\CurrentVersion进行了修改或查询操作,然后再将结构发送出去。

  1. PSLIST导出函数做了什么?

恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
通过菜单View->Open Subview->Exports,查看该DLL的导出表。在其中可以看到PSLIST,双击它,光标来到0x10007025处,也就是导出项代码的起始处。这个函数选择两条路径之一执行,这个选择取决于sub_100036C3的结果。sub_100036C3函数检查操作系统的版本是Windows Vista/7,或是 Windows XP/2003/2000。这两条路径都使用CreateToolhelp32Snapshot函数,从相关字符串和API调用来看,用于获得一个进程列表。这两条代码路径都通过send将进程列表通过socket发送。

  1. 使用图模式来绘制出对sub_10004E79的交叉引用图。当进入这个函数时,哪个API函数可能被调用?仅仅基于这些API函数,你会如何重命名这个函数?

首先定位到0x10004E79,然后将光标移动到感兴趣的函数名上,通过菜单的View->Graphs->User Xrefs Chart,我们可以得到函数的交叉引用图。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
该函数调用了GetSystemDefaultLangID和send,该信息告诉我们,该函数可能通过socket发送语音标志,因此,右击函数名,给他一个更有意义的名字,例如send_languageID

  1. DllMain直接调用了多少个Windows API?多少个在深度为2时被调用?

恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
DLLMain直接嗲用了strncpy,strnicmp、CreateThread 和 strlen这些API。进一步地,调用了非常多的API,包括Sleep、WinExec、getthostbyname,以及许多其他网络函数调用。

  1. 在0x10001358处,有一个对Sleep(一个使用一个包含要睡眠的毫秒数的参数的API函数)的调用。顺着代码向后看,如果这段代码执行,这个程序会睡眠多久?

恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
查看一下什么进了eax。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
是个30。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
乘了1000。
所以恶意代码会休眠30秒。

  1. 在0x10001701处是一个对socket的调用,它的3个参数是什么?

2,1,6

  1. 使用MSDN页面的socket和IDA Pro中的命名符号常量,你能使参数更有意义吗?修改后,参数是什么?

Winsock2.h

SOCKET WSAAPI socket(
  [in] int af,
  [in] int type,
  [in] int protocol
);

https://learn.microsoft.com/zh-cn/windows/win32/api/Winsock2/nf-winsock2-socket
它的每个值的含义都在这里面。
我找了找,分别对应:
AF_INET
SOCK_STREAM
IPPROTO_TCP
可以这样进行修改。
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft

  1. 搜索in指令(opcode 0xED)的使用。这个指令和一个魔术字符串VMXh用来进行Vmware检测。在这个恶意代码中被使用了吗?使用对执行in指令函数的交叉引用,能发现进一步检测Vmware的证据吗?

恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
有“VMXh”样式字符串,可能有检测虚拟机的行为。

  1. 将你的光标跳转到0x1001D988处,你发现了什么?

在0x1001D988处可以看到一些看起来随机的数据。

  1. 如果你安装了IDA Python插件(包括IDA Pro的商业版本插件),运行Lab05-01.py,一个IDA Pro Python脚本(确定光标是在0x1001D988处),在运行该脚本后发生了什么?

首先安装IDAPython,参考链接如下:
https://blog.csdn.net/betabin/article/details/7318233
https://www.cnblogs.com/afublog/p/11228771.html
恶意代码分析实战 3 IDA Pro,恶意代码分析实战,c++,java,microsoft
运行之后,不再是乱码了。

  1. 将光标放于同一位置,你如何将这个数据转成一个单一的ASCII字符串?

按下A键,就可以将其变为一个可读字符串了:

xdoor is this backdoor, string decoded for Practical Malware Analysis Lab :)1234

  1. 使用一个文本编辑器打开这个脚本。它是如何工作的?
sea = ScreenEA()

for i in range(0x00,0x50):
        b = Byte(sea+i)
        decoded_byte = b ^ 0x55
        PatchByte(sea+i,decoded_byte)

该脚本的工作原理是,对长度为0x50字节的数据,用0x55字节的数据,用0x55分别与其进行异或,然后用PatchByte函数在IDA中修改这些字节。文章来源地址https://www.toymoban.com/news/detail-654490.html

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

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

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

相关文章

  • [系统安全] 五十五.恶意软件分析 (7)IDA Python基础用法及CFG控制流图提取详解[上]

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更

    2024年01月23日
    浏览(43)
  • 二进制代码反汇编逆向工具:IDA Pro(Win&Mac)v7.7 汉化版

    IDA Pro是一款交互式的、可编程的、可扩展的、多处理器的、交叉Windows或Linux WinCE MacOS平台主机来分析程序。它被公认为最好的花钱可以买到的逆向工程利器,已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。 功能丰富:IDA Pro提供了诸多功

    2024年02月20日
    浏览(46)
  • 3.1 IDA Pro编写IDC脚本入门

    IDA Pro内置的IDC脚本语言是一种灵活的、C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析。IDC脚本语言支持变量、表达式、循环、分支、函数等C语言中的常见语法结构,并且还提供了许多特定于反汇编和静态分析的函数和操作符。由于其灵活性和可

    2024年02月05日
    浏览(53)
  • 使用IDA查看汇编代码,结合安卓系统生成的Tombstone文件,分析安卓app程序崩溃问题

    目录 1、IDA工具介绍 2、产品及问题场景描述 3、查看Tombstone文件

    2024年02月13日
    浏览(49)
  • 什么是恶意代码分析中的动态分析基础技术?

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

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

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

    2023年04月11日
    浏览(60)
  • IDA-逆向分析-工具教程-IDA简介-反汇编工具-功能窗口

    介绍了IDA反汇编原理分为, 线性扫描反汇编和递归下降反汇编 。比较了两者的优点和缺点。线性扫描反汇编算法采用一种非常简单的方法来确定需要反汇编的指令的位置:一条指令结束、另一条指令开始的地方。因此,确定起始位置最为困难。常用的解决办法是,假设程序

    2024年02月10日
    浏览(43)
  • 解决microsoft windows 恶意软件删除工具 占用内存高

    1、win+R快捷键,输入regedit,按回车键进入注册表编辑器 2、定位到 HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoft 并创建新项 MRT   3、 新建DWORD(32)值,命名为 DontOffer ThroughWUAU ,数值数据为1; 4、以管理员身份运行命令提示符,执行如下命令卸载MRT: wusa /uninstall /kb:890830 /quiet /norestart  

    2024年02月15日
    浏览(36)
  • 解决浏览器 Microsoft Edge主页被hao123恶意篡改

    联想笔记本电脑,Microsoft Edge主页被恶意篡改为hao123,解决问题的过程中参考了以下方法: win+R,输入regedit,修改注册表; 进入联想电脑管家检查是否开启浏览器主页保护; 进入Edge设置空白初始页; 以上方法均没有效果,浏览器仍然会在第一次开启后自动打开hao123,甚至在

    2024年02月11日
    浏览(83)
  • 【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】

    课程作业要求使用反编译技术,在游戏中实现无碰撞。正常情况下碰撞后角色死亡,修改为直接穿过物体不死亡。 il2CppDumper。 DnSpy。 IDA Pro。 AndroidKiller。 一、使用il2CppDumper导出程序集 将{my_game}.apk后缀修改为{my_game}.zip,使用解压工具解压至文件夹{my_game}。(my_game为apk的文件

    2024年02月05日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包