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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yes_butter/article/details/88657482

第十一章 恶意代码行为

//第10章是使用windbg调试内核,奈何学习精力有限,先跳过内核调试的学习
1.下载器和启动器
	下载器从互联网上下载其他的恶意代码,然后在本地上运行。下载器通常会与漏洞利用打包
	在一起。下载器常用的Windows API函数URLDownloadtoFileA和WinExec,并下载运行新
	的恶意代码。
	启动器(也称为加载器)是一类可执行文件,用来安装立即运行或者将来秘密执行的恶意代码。
	启动器通常包含一个它要加载的恶意代码。

2.后门
	backdoor是另一种类型的恶意代码,它能让攻击者远程访问一个受害的机器。后门是一种常见
	的恶意代码,它们拥有多种功能,并且以多种形式与大小存在。后门代码往往实现了全套功能,
	所以当使用一个后门时,攻击者通常不需要下载额外的恶意代码。
	
	后门程序利用互联网的通信方式是多样的,常用的方法是利用80端口使用HTTP协议。HTTP为
	恶意代码提供了和其他流量混淆的机会。
	
	后面拥有一套的通用功能,例如操作注册表,列举窗口,创建目录,搜索文件,等等
	(1)反向shell
	反向shell是从被感染机器上发起的一个链接,它提供攻击者shell访问感染机器的权限。反向
	shell或者作为一个单独的恶意代码存在,或者作为一个复杂后面程序中的组件而存在。在反向
	shell中,攻击者能够如同本地系统一样运行命令。
	
	netcat反向shell,windows反向shell
	
	(2)远程控制工具
	远程控制工具(RAT)被用来远程管理一台或多台计算机。远程控制工具经常为了特定目标,
	如窃取信息或者旁路一个网络执行针对性攻击。
	
	(3)僵尸网络
	是被感染主机的一个集合。它们由单一实体控制,通常由一个称为僵尸控制器的机器作为
	服务器。僵尸网络的目标是尽可能多的感染机器,构造更大的僵尸主机网络,从而使僵尸
	网络传播其他的恶意代码或蠕虫,或者执行分布式拒绝服务攻击。在实时DDOS时,所有
	僵尸主机会在同一时刻访问同一个站点,僵尸网络能够让这个站点挂掉。
	
	远程控制和僵尸网络比较
	- 僵尸网络感染和控制数以百万计的主机,远程控制只控制很少数量的主机
	- 僵尸网络的所有主机在统一时刻被控制,远程控制工具是以每个受害者单位进行远程控制
	- 远程控制被用来执行针对性攻击,僵尸网络用来进行大规模攻击。

3.登录凭证窃密器
	攻击者经常会不遗余力的窃取登录凭证,主要使用三种类型的恶意代码
	-等待用户登录以窃取登录凭证的程序
	-转储Windows系统中存放信息的程序,例如密码的哈希值,程序直接使用它,或者离线破解。
	-击键记录程序
	(1)GINA拦截
	在xp系统中,恶意代码使用微软图形识别和验证界面(GINA)拦截技术来窃取用户的登录凭证。
	(2)口令哈希转储
	转储Windows口令哈希是恶意代码获取系统登录凭证的一种流行方式。攻击者试图抓取这些
	口令哈希,以便离线暴力破解,或者利用它们执行pass-the-hash攻击,使用LM或者NTLM哈希
	来通过远程主机的身份认证,从而获取访问权。
	
	(3)击键记录
	是一种传统形式的窃取登录凭证的方法。当击键记录开启时,恶意代码能够记录用户击键操作,
	从而让攻击者能够观察到用户敲入的数据,如用户名,密码。Windows平台上的恶意代码使用
	多种形式的击键记录。
	
	基于内核的击键记录器
	用户空间的击键记录器

4.存活机制
	一旦恶意代码获取系统的控制权,它通常就会在系统中驻留很长一段时间,恶意代码这种行为
	成为存活。如果存活机制足够特别,它甚至能作为给定恶意代码的指纹。
	(1)Windows注册表,设置自启动
	(2)特洛伊木马化系统二进制文件。
	(3)DLL加载顺序截至
5.提权
	很多用户以管理员权限运行,这对恶意代码编写者是一个好消息。意味用户拥有访问机器管理员
	权限,并且也为恶意代码提供了相同的权限。

6.隐藏踪迹  用户态的RootKit
	恶意代码经常对用户隐藏它的生存机制和正在运行的进程。常用来隐藏恶意代码行为的工具被成为RootKit.
	(1)IAT Hook
	隐藏在本地系统文件,进程以及网络链接。挂钩方式修改导入表或导出表。修改函数的地址,替换为恶意
	RootKit代码,修改之后,返回到合法的程序。这只一种过时且容易探测的挂钩方式,下载都是用inline Hook来代替。
	
	(2)InLine HookKit
	InLine Hook是通过覆盖导入DLL中API函数代码来实现的,必须等到DLL加载后才能执行。inline hook
	将修改实际的函数代码。
	
	恶意rootkit通常用一个跳转指令来代替函数的开始来执行Inline Hook,这个跳转指令使RootKit插入
	恶意代码获取执行。另外RootKit还可以通过该百年函数的代码来破坏它或者改变它。
	

实验

Lab11-01
分析恶意代码Lab11-01.exe。
问题

1.这个恶意代码向磁盘释放了什么?
  释放了msgina.dll
2.这个恶意代码如何进行驻留?
  ‘SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon’ 在注册表上面设置信息。
在这里插入图片描述
3.这个恶意代码如何窃取用户登陆凭证?
  通过gina拦截来加载窃取信息。
4.这个恶意代码对窃取的证书做了什么处理?
  保存在msutli32.sys
在这里插入图片描述
在这里插入图片描述
5.如何在你的测试环境让这个恶意代码获得用户登录凭证?
  重启,重新输入用户密码。

Lab11-02

分析恶意代码Lab11-02.dll,假设一个名为Lab11-02.ini的可疑文件与这个恶意代码一同发现。
问题

1.这个恶意DLL导出了什么?
  安装函数

2.使用rundll32.exe安装这个恶意代码后,发生了什么?
  在注册表新建自启动项
在这里插入图片描述
3.为了使这个恶意代码正确安装,Lab11-02.ini必须放置在何处?
  存放在c盘system32当中,

4.这个安装的恶意代码如何驻留?
  
在这里插入图片描述
5.这个恶意代码采用的用户态RootKit技术是什么?
  内敛钩子,截取调用的dll然后去构造跳转指令。

6.挂钩代码做了什么?
  hook,让send函数调用恶意代码编写者写的代码

7.那个或者那些进程执行这个恶意攻击,为什么?
  outlook.exe,thebat.exe,msimn.exe 电子邮件 ,恶意代码截取这些分析是否是发送邮件,如果是就

8…ini文件的意义是什么?
  加密的邮件地址

9.你怎样用wireshark动态抓获这个恶意代码的行为?
开启wireshark,使用outlook发送邮件。

Lab 11-3

分析恶意代码Lab11-03.exe和Lab11-03.dll。确保这俩个文件在分析时位于同一个目录中。
问题

1.使用基础的静态分析过程,你可以发现什么有趣的线索?
  dll有一个名字奇怪的导出函数,在exe当中并没有调用的地方。

2.在运行这个恶意代码时,发生了什么?
  在系统把目录下创建 inet_epar32.dll,需要cisvc.exe
在这里插入图片描述
在这里插入图片描述
3.Lab11-03.exe如何安装Lab11-03.dll使其长期驻留?
  使用shellcode运行
<1>查看函数发现一个特殊地方
在这里插入图片描述
<2>打开之后发现,是shellcode。
在这里插入图片描述
按下 c进行转换。
在这里插入图片描述
4.这个恶意代码感染windows系统的那个文件?
  cisvc.exe

5.Lab11-03.dll做了什么?
  导出函数,创建线程,创建mz互斥量,创建kernel64x.dll,键盘记录器
在这里插入图片描述
6.这个恶意代码收集的数据存放在何处?
  存放在kernel64x.dll当中
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Yes_butter/article/details/88657482
今日推荐