常用注册表函数

RegOpenKeyEx:打开一个注册表进行编辑和查询
RegSetValueEx:添加一个新的值到注册表,并设置它的值
RegGetValue:返回注册表中一个值项的数值
**

组件对象模型

微软组件对象模型(COM)是一个标准接口,它使得不同软件组件在不知道其他组件代码的接口规范时相互之间可以调用
每一个使用 COM 的线程,必须在第暗涌任何其他 COM 库函数之前至少调用一次 OleInitialize 或 OleInitializeEx

CoCreateInstance 函数用来获取对 COM 功能的访问

Lab7-1

首先看一下程序的导入函数,其中有个 CreateServiceA,可以用来创建服务保证能够重启系统后运行
通过 IDA 查看,创建的服务应该是叫 MalService,同时指定了要调用的服务控制函数 sub_401040

image.png

再去看一下 sub_401040,他打开一个叫 HGL345 的互斥量,如果打开了就说明存在这个互斥量,下面跳转就不成功,如果不存在这个互斥量就跳转到 loc_401064

image.png

loc_401064 是创建上面那个 HGL345 互斥量,这两处对互斥量的操作用来保证只有一个实例在运行

image.png

再往下,首先打开一个服务控制管理器的句柄,方便添加或修改服务,然后获取当前路径,CreateServiceA创建服务

image.png

之后就进入了等待状态,直到 2100 年

image.png

会继续往下 CreateThread,创建 20 个线程

image.png

每个线程做的事是:访问一个网址 http://www.malwareanalysisbook.com 形成 DDOS 的效果

image.png

Lab7-2

根据 OleInitialize 和 CoCreateInstance 可以判断是 COM 相关的
程序打开了一个广告页面
(咋分析啊)

Lab7-3

检查 lab7-3.exe 的导入函数,其中有个 CreateFileMappingA、MapViewOfFile 可能会用来把一个文件映射到内存中,FindFirstFileA、FindNextFileA 等函数表示可能会查找目录,然后 CopyFileA 可能用来复制文件

再来看字符串,程序有明显的硬编码的特征比如:kerne132.dll

因为一开始有一个 if 的判断 argc == 2 && !strcmp(argv[1], aWarningThisWil),所以要在命令行给他一个参数:WARNING_THIS_WILL_DESTROY_YOUR_MACHINE 才能正常的运行,然后来到这一块

image.png

最终实现的就是把目录下的那个 Lab07-03.dll 复制到了 C:\windows\system32\kerne132.dll

image.png

再看一下 lab07-03.dll 的,一开始检查了有没有一个叫 SADFHUHF 的互斥量,有就退出,没有就创建一个,来保证只有一个在运行

image.png

下面有一个对 127.26.152.13 的访问

image.png