您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第7章 恶意代码攻击和防御
第7章恶意代码攻击和防御1概述什么是恶意代码?恶意代码是指独立的程序或者嵌入到其它程序中的代码,它在不被用户察觉的情况下启动,达到破坏电脑安全性和完整性的目的。恶意代码的分类木马、rootkit、病毒、蠕虫和网页恶意代码恶意代码传播方式1.利用操作系统漏洞或者软件漏洞;2.通过浏览器;3.利用用户的信任关系;2木马技术2.1木马的发展第一代木马:利用目标的安全意识不强来运行,在启动、通信和隐藏方面都没有特别的东西,功能上只是简单的实现了密码的获取、发送,或者是进行一些恶意的行为,比如实现机器的重启、删除文件等。第二代木马:以文件关联的方式启动,通过电子邮件传播。实现了木马发展质的跨越。以前的木马就是一个简单的程序,毫无隐蔽性可言,而这恰恰是木马最重要的一点。第二代木马通过文件关联方式启动,隐蔽性比较强,大大提高了木马的存活率。第三代木马:通过修改注册表或者修改系统文件启动,使用ICMP、UDP等协议,利用隐蔽通道技术进行通信,隐蔽性更强。第四代木马:采用线程注入的方式实现进程的隐藏,通信上使用反弹端口技术和代理技术来突破主机防火墙限制。目前很多木马都属于这一类。第五代木马:这一代木马的特点是与系统内核紧密结合,结合了rootkit技术。通过修改系统内核的相关信息来实现文件、进程和通信的隐藏。普通的安全工具根本就查看不到这种木马,因为它工作得更底层,这种木马必须使用内核级的安全工具才能彻底查杀。2.2启动技术注册表启动注册表简介HKEY_CLASSES_ROOT:包含了启动应用程序所需的全部信息。HKEY_CURRENT_USER:这个根键用于管理当前登陆用户的信息,包括用户的桌面配置、网络设备资源和安全权限等信息。HKEY_LOCAL_MACHINE:这里保存了控制系统和软件的相关设置,包括硬件信息、驱动程序和应用程序等。HKEY_USER:它包含了所有用户配置文件的当前活动用户信息,包括用户的环境信息、键盘配置信息、系统中安装的软件信息等等。HKEY_CURRENT_CONFIG:这个根键存放的是当前配置文件的所有信息,其实就是HKEY_LOCAL_MACHINE中内容的影射。注册表启动Run键这是最常用的注册表启动方法,在Run键下面的所有程序在用户每次登陆后都会自动执行,其键位置如下:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run;RunOnce键RunOnce键只在用户首次登陆时才运行,其键位置如下:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce;RunOnceEx键这个键值只有windowsXP和windows2003才有,也可以实现自启动:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx;RunServices键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices;键利用这个键可以实现多个程序的自启动,键位置如下:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon;HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon;Load键Load键也可以实现自启动:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows;其它键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler;系统服务什么是Windows服务?Windows服务是指实现系统功能的一段程序,它在后台运行,为本地系统和远程网络提供特定的服务。包括4个部分:服务控制管理器:在系统启动的早期由Winlogon进程启动,可执行文件名是“Admin$\System32\Services.exe”,它是系统中的一个RPC服务器,包括了已安装服务数据库、自动启动服务、服务记录列表和服务控制管理器句柄等信息。服务控制程序:用于实现服务的开启、控制和查询。服务程序:服务程序指明了服务的执行代码,一个服务程序可以有多个执行代码,这由服务的类型决定(SERVICE_WIN32_OWN_PROCESS类型和SERVICE_WIN32_SHARE_PROCESS类型)。服务配置程序:用于修改、查询已经安装了的服务信息。利用系统服务来启动木马采用手动修改注册表添加服务。系统服务与以下几个注册表项相关:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\ServicesHKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services自启动目录启动自启动目录是用来启动一些应用软件的,它是windows系统中最基本的启动方式,windows系统有两个启动目录,分别是第一启动目录和第二启动目录。第一启动目录默认位置为:C:\DocumentsandSetttings\用户名\[开始]菜单\程序\启动\对应的注册表位置为:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders;“startup”=“要启动的程序的路径”;第二启动目录默认位置为:C:\DocumentsandSettings\AllUsers\[开始]菜单\程序\启动\对应的注册表位置为:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\UserShellFolders;“CommonStartup”=“要启动的程序的路径”;系统配置文件启动系统配置文件其实是系统留给用户的一个接口,用户可以通过修改系统配置文件达到更改系统相关设置的目的。WIN.INI启动win.ini文件记录了windows系统启动后加载用户界面的相关信息,包括程序的启动、用户桌面设置和文件关联等信息,主要完成GUI下相关的环境配置。格式如下:[windows]Run=test.exeLoad=test.exeSYSTEM.INI启动system.ini最初是win16的系统配置文件,后来又增加了一些新的设置,通过system.ini也可以启动文件。格式如下:[boot]Shell=Explorer.exetest.exeWININIT.INI启动wininit.ini主要是用于在windows图形界面启动后不能更新、重命名或删除的文件。当系统重启后会在进入windows前查找windows.ini文件,再按照文件中指定的命令格式更新或者删除文件,在完成这写工作后,windows.ini文件本身也会被自动删除,因此正常情况下在windows系统目录下没有wininit.ini这个文件。格式如下:[rename]c:\windows\orig.exe=c:\test.exe这个命令的意思是用test.exe更新orig.exe,然后删除test.exe文件,之后加载orig.exe这个程序。WINSTART.BAT启动winstart.bat是一个系统自启动的批处理文件,也是用于系统重启后的复制、删除等任务。它也是在系统启动时运行。AUTOEXEC.BAT启动和winstart.bat一样,autoexec.bat批处理文件也会在系统启动时执行。AutoRun.infAutorun.inf文件是windows系统提供的,主要是用来帮助驱动器启动某些程序,比如光盘自动运行时的图标显示。Autorun.inf不仅支持光盘,也支持硬盘和U盘等各类存储设备。我们可以把木马路径写入autorun.inf文件,在用户打开驱动器时,autorun.inf就会运行,从而加载我们的木马程序。文件格式如下:[AutoRun]open=test.exe2.3特洛依木马概念源于古希腊战争。属于客户/服务模式。客户端:主控端,向服务器发送连接请求。服务端:被控端,提供服务,一般会打开一个默认端口进行监听,当侦听到客户端的连接请求,便自动运行相应程序。特点隐蔽性:即使服务端被发现,也不容易确定客户端的位置。非授权性:用户在不知情的情况下被安装了服务端,伴随系统启动而自动运行,监听客户端的连接请求。一旦建立连接之后,客户端将享有服务端的大部分操作权限。木马伪装的方式冒充图像文件首先改变文件名。如把.exe改变成.jpg.exe。其次更改文件图标。一般木马本身没有图标,系统会显示一个windows预设的图标。合并程序欺骗将木马与一个正常的文件捆绑为一个文件。例如WinRAR可实现。伪装成应用程序扩展组件此类属于最难识别的木马。如伪装成.dll,.ocx等,挂在一个知名的软件中。木马的工作原理木马隐藏技术a、在任务管理器中隐藏:一般会把木马进程设为“系统服务”,在任务管理器中便看不到了。或者把木马做成其他应用程序的一个线程,把木马注入其他应用程序的地址空间。b、在任务栏里隐藏c、在端口中隐藏d、在通信中隐藏:客户端和服务端通过直接或间接的途径通信。f、在加载文件中隐藏g、修改虚拟设备驱动程序(.vxd)或修改动态链接库(.dll)来加载木马,改变了原有采用监听端口的模式。木马建立连接技术利用winsock,服务端和客户端在制定端口建立连接,使用send和recv等API进行数据的传递。早期的木马一般采用TCP、UDP连接,易被发现,用netstat命令。下面介绍几种典型的木马。(1)合并端口木马这是最新的隐藏方式。修改虚拟设备驱动程序(vxd)或修改动态链接库(dll),在一个端口上同时绑定两个TCP或者UDP连接,如木马端口与http的80端口绑定,达到隐藏端口的目的。工作原理:木马会将修改后的dll替代系统原有的dll,并对所有的函数调用进行过滤,对于常用的调用,使用函数转发器转发到系统原有的dll。木马只使用dll进行监听,一旦发现客户端的连接请求就激活自身,绑在一个进程上进行正常的木马操作。优点:摆脱了原有的监听端口模式,采用替代系统功能的方法。没有新增文件,没有打开新的端口,没有新的进程。(2)使用ICMP协议进行数据的发送由于ICMP由内核或进程直接处理而不需要通过端口。可以修改ICMP头的构造,加入木马的控制字段,木马将自己伪装成一个Ping的进程,系统就会将ICMP_ECHOREPLY的监听、处理权交给木马进程。优点:ICMP_ECHOREPLY包对防火墙和网关有穿透能力,因为一旦不允许ICMP_ECHOREPLY报文通过就意味着主机没有办法对外进行ping操作。(3)反弹端口型木马服务端使用主动端口,客户端使用被动端口,木马定时监测客户端的存在,发现客户端上线立即弹出端口主动连接客户端打开的主动端口,一般客户端的主动端口设为80。而客户端的IP则一般使用固定IP的
本文标题:第7章 恶意代码攻击和防御
链接地址:https://www.777doc.com/doc-5322188 .html