恶意代码分析实战 5 分析恶意Windows程序

news2025/1/18 3:20:02

1 Lab07-01

本次实验分析lab07-01.exe,lab07-02.exe,先来看lab07-01.exe的问题
问题

  1. 计算机重启后,这个程序如何确保它继续运行(达到持久化驻留)

首先,查看导入函数。
vmware_rxArff1ORt.png
vmware_yCHgkko6gV.png
OpenSCManagerA和CreateServiceA函数暗示着这个恶意代码可能创建一个服务,来保证它在系统被重启后运行,StartServiceCtrlDispatcherA导入函数提示了这个文件是一个服务。
vmware_7gjZ8LVnBN.png
调用了StartServiceCtrlDispatcherA函数,这个函数被程序用来实现一个服务,并且它通常立立即被调用。
创建了一服务,这个程序创建服务MarlService,来保证它每次在系统启动后运行。

  1. 为什么这个程序会使用一个互斥量?

vmware_Hnzr6w58Px.png
在此处的函数调创建了互斥量。
vmware_mNhZoK57El.png
这段代码创建了一个名为“HGL345”的互斥量。这两对互斥量组合调用,被设计来保证这个可执行程序任意给定时刻只有一份实例在系统上运行。如果有一个实例已经在运行了。,则对OpenMuteA的第一次调用成功,并且这个程序就会退出。
接下来,这段代码调用OpenSCManager,它打开一个服务控制管理器的句柄,以便这个程序可以添加或者修改服务。下一个调用的是GetModuleFileName函数,它返回当前正在运行的可执行程序或一个被夹在DLL的全路径名。第一个参数是要获取路径名的模块句柄,或者将它设置为NULL来获取这个可执行体的全路径名。
这个程序使用一个互斥量,来保证在同一时间这个程序只有一份实例在运行。

  1. 可以用来检测这个程序的基于主机特征是什么?

主机特征是一个名为HGL345的互斥量,以及MalService服务。

  1. 检测这个恶意代码的基于网络的特征是什么

再之后是调用createserviceA来创建一个新的服务。Createservicea调用有许多参数,关键的参数如binarypathname,dwstarttype,dwservicetype.Dwstarttype这里是0x02,对应的是service_auto_start,说明这个服务在系统启动时自动运行。
vmware_0QsokDGSii.png
chrome_mwaF4qXSAv.png
ida标记了systemtime结构体,是windows多个结构体之一。由xor edx,edx及之后的指令可知,程序中该结构体的所有值首先被设置为0然后表示年yaer的值被设置为834h,10进制的2100,该事件表示2100年1月1日的午夜,之后通过systemtimetofieltime,在不同时间格式之间转换。
vmware_140BnZsuJM.png
可以看到调用了setwaitabletimer,关键参数为lpduetime,这个参数是systemtofiletime返回的filetime,然后通过waitforsingleobject进入等待,直到2100年1月1日。接下来看到了一个循环。
vmware_B8yF8Iwb2s.png
vmware_UZG5XwrpAO.png
这个恶意代码使用用户代理 “Internet Explorer 8.0”,并不断的访问 “http://www.malwareanalysisbook.com”。

  1. 这个程序的目的是什么

这个程序等待到2100年1月1日的半夜,那时发送许多请求到 “http://www.malwareanalysisbook.com” ,带盖是为了对这个网站进行一次分布式拒绝服务(DDoS)攻击。

  1. 这个程序什么时候完成执行

这个程序永远不会完成。它在-一个定时器上等待直到2100年,到时候创建20个线程,每一个运行一个无限循环。

2 Lab07-02

分析在文件Lab 07-02.exe 中发现的恶意代码。
问题
分析:
查看导入表
17790459-28ea4b41109873e8.webp
从ole32库中导入了OleInitialize函数,这个程序可能使用了COM功能。
继续查看strings,存在可疑URLhttp://www.malwareanalysisbook.com/ad.html
Tips:这里需要设置让strings页面可以读取unicode编码的字符串。
17790459-4a59a7384694bd3b.webp
跟进main函数,按下F5,查看
17790459-fbdacbc79ac74f75.webp
CLSID是0002DF01-0000-0000-C000-000000000046 (表示Internet Explorer)
IID是D30C1661-CDAF-11D0-8A3E-00C04FC9E26E (表示IWebBrowser2)
vmware_RTDsZfi12Z.png
CoCreateInstance执行结果保存在ppv,一旦结构体从调用返回,一旦结构体从 CoCreateInstance处返回,COM客户端调用位于这个结构体某处偏移的一个函数,见下图。

1处拿到返回的结构体指针,2处将eax解引用并赋给edx,3处通过偏移调用IWebBrowser2Vtbl中的第12个函数Navigate,可以在struct页面尝试添加一个结构体(快捷键Insert)。每个函数4字节,第一个函数在0位置。
vmware_FGXB1GAP6n.png
vmware_UgphXhnv2E.png
嗲用Navigate函数之后,会执行一些清理函数,然后程序终止。这个程序不会持久化自己,也不会修改系统。只是简单的显示一次广告。当遇到如此简单的一个程序时,要考虑它是可疑的,他可能只是随额外的恶意代码一起打包,只是其中的一个组件。
该函数被调用后,Internet Explorer将导航至http://www.malwareanalysisbook.com/ad.html。该函数执行一些清理函数,但是没有持久化驻留,仅简单显示一个广告页面。

  1. 这个程序如何完成持久化驻留?

这个程序没有完成持久化驻留,运行一次然后退出了。

  1. 这个程序的目的是什么?

这个程序的目的是显示一个页面,ad.html,可能是一个广告页面。

  1. 这个程序什么时候完成执行?

这个程序在显示这个广告页面后完成执行。

3 Lab07-03

问题
分析:
首先分析Lab07-03.exe文件,查看导入表,有很多文件操作。
vmware_NEXTNVTZDt.png
查看strings视图
vmware_0idmtnTayY.png
.data:0040304C 00000021 C C:\windows\system32\kerne132.dll 是仿冒的dll,说明该文件存在仿冒系统关键dll的可能,.data:0040307C 0000000D C Lab07-03.dll 说明可能调用了Lab07-03.dll,用IDA Pro打开查看代码。
vmware_a8Z23vNk7s.png
首先用eax保存命令行参数的格式,如果参数的个数不是2,会直接退出,并且比较了argv[1]是不是WARNING_THIS_WILL_DESTROY_YOUR_MACHINE这样保证了恶意代码不会在虚拟机中被自动执行,属于反动态检测的一种手段。
打开两个文件C:\Windows\System32\Kernel32.dll 和Lab07-03.dll映射到内存中。
17790459-de13e7f2928931d1.webp
接下来就是将C:\Windows\System32\Kernel32.dll 的导出表部分复制到Lab07-03.dll的导出表。
vmware_1wqkh7wnEn.png
然后将Lab07-03.dll 复制到C:\windows\system32\kerne132.dll将文件命名为和关键系统库相似的名称,进一步进行恶意行为。并跳转到loc_401806位置。先将参数C:\*压栈,调用函数sub_4011E0。
该函数如下,主要是遍历C盘文件,第29行找到.exe结尾的文件,调用函数sub_4010A0。
判断文件是不是以.exe结尾的逻辑主要在0x004013F6处。在0x004011E0和0x004013F6处设置断点,F9执行,查看栈上数据变化。可以看到这部分的执行逻辑和静态分析的结论一致。
17790459-cd7f8b820daa96b9.webp
至此,程序功能清晰,就是将对kernel32.dll的调用,转换为kerne132.dll的调用,这样很多程序都会受到影响,很难清除
分析Lab07-03.dll,查看导入表,有创建互斥体以及网络相关函数。
17790459-5b318b753e97dc7d.webp
查看strings,发现疑似恶意IP127.26.152.13还有几个其他可疑的字符串。
17790459-fa45ef848f3380a8.webp
跟进SADFHUHF字符串,可以看到这是一个互斥量名称硬编码,保证同一时刻只有一个恶意代码进程在执行。
17790459-f1958e2e4e679793.webp
跟进127.26.152.13结构体sockaddr.data保存了host信息和端口信息。IP是127.26.152.13,端口是0x50(十进制80)
17790459-90ad621289b516d2.webp
17790459-31b91df1a39784e7.webp buf中保存的是hello,发送这个字符串给C2,受害者已经上线,然后接收C2发送的命令,继续保存在buf中,检查buf的前五个字节是不是sleep如果是,跳出循环sleep60s,检查前四个字节是不是exec,如果是,使用CreateProcessA创建新的进程。关于此函数文档如下,lpCommandLine参数可以执行命令。说明此DLL文件带有后门功能。

  1. 这个程序如何完成持久化驻留,来确保在计算机被重启后它能继续运行?

这个程序将自己复制到C:\windows\System32,并伪装成重要dll库,实际名称为kerna132.dll来执行持久化。

  1. 这个恶意代码的两个明显的基于主机特征是什么?

基于主机的特征是互斥量硬编码SADFHUHF,文件名kerna132.dll。

  1. 这个程序的目的是什么?

目的是执行持久化操作,并留下后门,可以执行sleep和exec命令。

  1. 一旦这个恶意代码被安装,你如何移除它?

这个程序很难被删除,是因它感染系统上每一个.exe文件。可能在这个例子中,最好的方法是从一个备份恢复系统。可以留下kernel132.dll文件,删除其中的恶意代码,或者复制kernell32.dll文件,并将它命名为kernel132.dll。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/178151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝队-HTTP协议的分析

文章目录应用层的协议→HTTP协议访问地址web网站的正确访问姿势请求协议https访问的密钥文件网站的部署通过https协议访问请求报文响应报文请求方法http头协议cookiesRefererUser-AgentX-Forwarded-ForHTTP 状态码HTTP content-type抓包分析HTTP抓包代理插件的下载代理第一种方…

电商项目之同一笔单多次收款成功

1 问题背景 有个收单系统(简称S系统),作用是收单,相当于支付渠道,能够作为第三方服务对接其他支付平台。电商系统(简称A系统)与S系统是隔离的。A系统发起支付请求给S系统,S系统包装一…

Java高效率复习-坦克大战[Java基础合集]

目录 前言 该文章会从零开始制作一个坦克大战的游戏,该游戏使用Java的AWT和Swing作为窗体和容器,使用面向对象、线程等技术来丰富游戏,本文章相等于Java前期和中期技术的一个合集(对于IO、网络、反射并没有涉及到)。 …

高级Spring之Bean 生命周期

老样子,话不多说,直接上代码: 准备容器: SpringBootApplication public class A03 {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(A03.class, args);context.close(…

【价格型需求响应】基于Logistic函数的负荷转移率模型需求响应研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

前端学习——CSS

文章目录1.CSS1.1什么是CSS1.2快速入门1.3.三种CSS导入方式2.选择器2.1基本选择器2.1.1标签选择器2.1.2类选择器2.1.3id选择器2.2层次选择器2.2.1后代选择器2.2.2子选择器2.2.3相邻兄弟选择器2.2.4通用选择器2.3结构伪类选择器2.4属性选择器3.美化网页元素3.1span标签3.2字体样…

swagger测试Restful API

swagger出现背景 我们构建Restful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端,不同端由不同的团队或者小组负责,为了减少与其他团队平时开发…

LabVIEW将台式电脑转换为 Phar Lap ETS 实时目标

LabVIEW将台式电脑转换为 Phar Lap ETS 实时目标注意:NI将在NI2020软件版本中删除对cRIO的Pharlap和NI2022软件版本中对PXI的支持。更多信息,请参阅PharLapRTOSEOL路线图。您可能已经拥有一台台式PC,可以作为下一个可靠的确定性测试或控制系统…

初识 Express(基于 NodeJS http 模块封装的 Web 框架)

初识 Express(基于 NodeJS http 模块封装的 Web 框架)参考描述Express获取nodemon获取使用使用创建一个基本的服务器基本路由对客户端的 GET 请求进行响应获取通过 GET 方式提交的 URL 参数静态 URL 参数动态 URL 参数静态资源托管服务器public前缀参考 …

steam搬砖,蓝海信息差副业项目

今天就给大家分享下这个steam搬砖项目的玩法,看完你收藏执行,学不会你可以随便骂我!! 首先我们讲一下项目原理: 我们需要利用国外steam平台来赚取差价,简单点就是在游戏里面搬砖购买一些道具,然…

零基础学Python(全彩版)

ISBN: 978-7-5692-2225-8 编著:明日科技 页数:448页 阅读时间:2022-08-14 推荐指数:★★★★★ 一本非常适合入门的Python 3编程教程书籍, 不仅有视频教程还有很多的代码示例, 让你在一步步学习中掌握Pytho…

力扣刷题记录——645. 错误的集合、657. 机器人能否返回原点、674. 最长连续递增序列

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——645. 错误的集合、657. 机器人能否返回…

【vue2】对路由的理解

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:vue路由概念、路由写法、路由模式、路由重定向、路由跳转传参方式 目录 一、vue路由概念…

Tkinter的Checkbutton控件

Tkinter的Checkbutton是一个有着许多选项的控件,可以一次选择几个选项 使用方法 var1tk.IntVar() var2tk.IntVar() def printf():if (var1.get()1)&(var2.get()0):L.config(text1)elif (var1.get()0)&(var2.get()1):L.config(text2)elif (var1.get()0)&am…

【docker实践遗留问题】解决个人制作镜像在 dockerhub 上拉取缓慢的问题

目录背景正文1. 创建阿里云docker仓库2. 修改本地 pom 文件尾声背景 通过不断实践,发现了一个问题:dockerHub服务器在国外,虽然拉取一些常用依赖时,可以通过更改镜像源的方式来解决,但倘若是自己制作的docker镜像&…

Python3 条件控制

Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。 IF-ELSE判断 常用的if-else语句,通常用于二分支结构的条件语句代码。 Python 中用 elif 代替了else if,所以if语句的关键字为&#xff1a…

【机器学习】(西瓜书习题8.5)编程实现Bagging模型,以决策树桩为基学习器,在西瓜数据集3.0a上训练一个Bagging集成,并与教材图8.6进行比较。

(1)问题理解与分析 编程实现Bagging模型,以决策树桩为基学习器,在西瓜数据集3.0a上训练一个Bagging集成,并与教材图8.6进行比较。 (2)Bagging算法原理阐述 若想得到泛化性能强的集成&#xf…

6、算术运算符与算术表达式

目录 一、算术运算符 二、算术表达式 三、优先级与结合性 1. 算术运算符的优先级 2. 算术运算符的结合性 四、自增/自减运算符 一、算术运算符 算术运算符包括两个单目运算符(正和负)和5个双目运算符(即乘法、除法、取模、…

ARP渗透与攻防(六)之限制网速攻击

系列文章 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 ARP渗透与攻防(三)之流量分析 ARP渗透与攻防(四)之WireShark截获用户数据 ARP渗透与攻防(五)之Ettercap劫持用户流量 ARP限制网速攻击 大家没想到吧,ARP还能限制对方网速。当kali欺骗了网关和受…

Linux-Ubuntu入门到精通之常用终端指令之操作文件目录和文件内容(2)

常用的终端命令 ctrl shift 放大终端窗口的字体显示 ctrl - 缩小终端窗口的字体显示 按 上/下 光标键可以在曾经使用过的命令之间来回切换 如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl c . ls 常用选项(白色…