学习笔记-第七章 恶意代码分析实战

时间:2024-05-20 18:35:53

第七章

1.Windows API 广泛的功能集合,管理恶意代码与微软程序库之间的交互方式。
	<1> 类型,表达方法。 dw表示 double word。w表示word。H表示Handles
	<2> 句柄 比如一个窗口,模块,菜单,文件等等
	<3> 文件系统函数
	<4> 特殊文件
2.Windows 注册表 注册表用来保存操作系统与程序的配置信息,比如设置和选项。和文件系统一样,它是基于主机感染的很好来源,并且能够揭示出关于恶意代码功能的有用信息。
	<1> 根键	HKLM HKEY_LOCAL_MACHINE 保存本机机器全局设置
	<2>			HKCU HKEY_CURRENT_USER 保存当前配置
	<3>			HKEY_CLASSES_ROOT 保存定义的类型信息
	<4>			HKEY_CURRENT_CONFIG 保存关于当前硬件的配置设置,特别是与当前和配置标准之间不同的部分。
	<5>			HKEY_USERS 定义默认用户,新用户和当前用户的配置
	自启动程序。向run子键写入项。常见的注册表函数。RegOpenKeyEx,RegSetValueEx,RegGetValue
	使用.reg文件的注册脚本,很少有病毒使用

3.网络API
	伯克利兼容套接字。Windows网络选项中最普遍使用的是伯克利兼容套接字,它们的功能在Windows和
	Unix系统上几乎是一样的。
	伯克利兼容套接字在网络功能和Windows系统中是由winsock库实现的,主要在ws2_32.dll中。在所有
	库函数中,socket,connect,bind,listen,accept,send,recv函数是最常用的。
	socket	创建一个套接字
	bind		将一个套接字绑定到特定端口
	listen	预示一个套接字将进入监听,等待入站连接
	accept	向一个远程套接字打开一个连接,并接受连接
	connect 	向一个远程套接字打开一个连接,远程套接字必须在等待连接
	recv		从远程套接字接受数据
	send 		发送数据到远程套接字

网络的服务器和客户端。客户端常见有connect,send,recv
					服务器常见 socket,bind,listen,accept
			
4.跟踪恶意代码运行
 	<1> dll,动态链接库。 恶意代码作者以3中方式使用dll, 保存恶意代码,通过使用Windows dll,
 	通过使用第三方的dll
 	基本dll结构 基本上,dll文件看起来几乎和.exe文件一模一样,dll使用pe文件格式,并且只有一个单一标志,
 	dll的主函数是dllmain。没有标记,而且并不是一个dll的导出函数,但它在pe头中被指定为文件的入口点。
 	<2> 进程。 恶意代码通过创建一个进程,或修改一个已存在的进程,并执行当前程序之外的代码。操作系
 	统中多个进程间共享的一个尤其重要的资源是系统内存,为了达到这个目的,每一个进程被给予一块与所
 	有其他进程隔离的内存空间。 	
 	创建一个新的进程。 恶意diam最常使用的创建新进程的函数是 createProcess。这个函数有许多参数,并
 	且调用者有很多控制它如何被创建的方法

	<3>线程,线程是Windows操作系统真正要执行的内容。createThread,用来创建一个线程。

	<4>使用互斥量。 操作系统中的信号量,来保证线程安全,控制对共享资源的访问。

	<5>服务 恶意代码附加代码的另一种方式是将它作为服务安装。

	<6>组件对象模型 com是一个接口标准。 CLSID分类标识符 GUID全局唯一表示符 IID接口标识符
	
	<7>异常 异常允许一个程序在普通执行流程之外处理事件。 如:除0异常,自定义异常。

5.内核与用户模式
	内核调试 windbg,几乎所有代码都允许在用户模式,除了操作系统和硬件驱动,它们运行在内核模式。
	通常,用户模式不可以执行访问硬件,必须使用Windows api来调用
	当你调用一个Windows api函数操作内核结构时,会通过一个调用进入内核。

6.原生API

Lab 7-1

分析在文件Lab07-01.exe中发现的恶意代码。

问题

1.当计算机重启后,这个程序如何确保它继续运行(达到持久化驻留)?
  存放在服务管理器中,随着系统启动 运行
学习笔记-第七章 恶意代码分析实战
2.为什么这个程序会使用一个互斥量?
  控制线程安全,保证只有一个实例运行
3.可以用来检测这个程序的基于主机特征是什么?
  创建HGL345互斥量, malservice
4.检测这个恶意代码的基于网络特征是什么?
  使用ie8.0打开http://www.malwareanalysisbook.com
5.这个程序的目的是什么?
  创建20个线程,访问网站。 ddos
6.这个程序什么时候完成执行?
  不会执行完成,死循环。
学习笔记-第七章 恶意代码分析实战

Lab 7-2

分析在文件Lab07-02.exe中发现的恶意代码。

问题

1.这个程序如何完成持久化驻留?
  没有实现持久化驻留
2.这个程序的目的是什么?
  显示一个网页
3.这个程序什么时候完成执行?
  显示之后就关闭了
学习笔记-第七章 恶意代码分析实战
.rdata:00402068 riid dd D30C1661h ; Data1 ; DATA XREF: _main+14o
.rdata:00402068 dw CDAFh ; Data2
.rdata:00402068 dw 11D0h ; Data3
.rdata:00402068 db 8Ah, 3Eh, 0,0, C0h, 4Fh, C9h, E2h, 6Eh; Data4
riid D30C1661-CDAF11D0-8A3E-00C0-4FC9-E26E
rclsid 0002DF01-0000-0000-C000-0000-0000-0046 注册表可以查看为 ie

Lab 7-3

对于这个实验,我们在执行前获取到恶意的可执行程序,Lab07-03.exe,已经DLL,Lab07-03.dll。声明这一点很重要,这是因为恶意代码一旦运行可能发生改变。俩个文件在受害者机器上的同一个目录下被发现。如果你运行这个程序,你应该确保俩个文件在分析机器上的同一个目录中。一个以127开始的IP字符串(回环地址)连接到了本地机器。(在这个恶意代码的实际版本中,这个地址会链接到一台远程机器,但是我们已经将它设置成连接本地主机来保护你。)
(warning:这个实验可能对你的计算机引起某些损坏,并且可能一旦安装就很难清除。不要在一个没有事先做快照的虚拟机中运行这个文件。)
这个实验可能比前面的那些有更大的挑战。你将需要使用静态和动态方法的组合,并聚焦在全局视图中,避免陷入细节。
问题:

1.这个程序如何完成持久化驻留,来确保在计算机被重启后它能继续运行?
  把自己伪装成kene132.dll,修改c盘所有可执行文件的kenel32.dll。
2.这个恶意代码的俩个明显的基于主机特征是什么?
  系统目录下多个kene132.dll,c盘可执行文件的exe改为kenel132.dll
3.这个程序的目的是什么?
  创建后门,执行程序
4.一旦这个恶意代码被安装,你如何移除它?
  编写程序使得c盘的所有可执行文件的导入表恢复正常,将kene132.dll恢复正常
学习笔记-第七章 恶意代码分析实战