330 likes | 516 Views
第2章 网络攻击技术. 指导教师 : 杨建国. 2013年8月10日. 第2章 网络攻击技术. 2 .1 信息收集技术 2 .2 口令攻击 2 .3 缓冲区溢出攻击 2 .4 拒绝服务攻击 2.5 web应用安全攻击 2.6 恶意代码攻击 2.7 病毒蠕虫与木马攻击. 2.8 网络欺骗攻击 2 . 9 网络钓鱼攻击 2 . 10 假消息攻击 2 . 11 网络协议攻击 2 . 12 操作系统攻击 2.13 远程控制攻击. 什么是恶意代码?
E N D
第2章 网络攻击技术 指导教师:杨建国 2013年8月10日
第2章 网络攻击技术 • 2.1 信息收集技术 • 2.2 口令攻击 • 2.3 缓冲区溢出攻击 • 2.4 拒绝服务攻击 • 2.5 web应用安全攻击 • 2.6 恶意代码攻击 • 2.7 病毒蠕虫与木马攻击 • 2.8 网络欺骗攻击 • 2.9网络钓鱼攻击 • 2.10假消息攻击 • 2.11网络协议攻击 • 2.12操作系统攻击 • 2.13 远程控制攻击
什么是恶意代码? 恶意代码是指独立的程序或者嵌入到其它程序中的代码,它在不被用户察觉的情况下启动,达到破坏电脑安全性和完整性的目的。 恶意代码的分类 木马、rootkit、病毒、蠕虫和网页恶意代码 2.6恶意代码攻击 1 概述
恶意代码传播方式 1. 利用操作系统漏洞或者软件漏洞; 2. 通过浏览器; 3. 利用用户的信任关系;
2.1 木马的发展 第一代木马:利用目标的安全意识不强来运行,在启动、通信和隐藏方面都没有特别的东西,功能上只是简单的实现了密码的获取、发送,或者是进行一些恶意的行为,比如实现机器的重启、删除文件等。 第二代木马:以文件关联的方式启动,通过电子邮件传播。实现了木马发展质的跨越。以前的木马就是一个简单的程序,毫无隐蔽性可言,而这恰恰是木马最重要的一点。第二代木马通过文件关联方式启动,隐蔽性比较强,大大提高了木马的存活率。 2木马技术
第三代木马:通过修改注册表或者修改系统文件启动,使用ICMP、UDP等协议,利用隐蔽通道技术进行通信,隐蔽性更强。第三代木马:通过修改注册表或者修改系统文件启动,使用ICMP、UDP等协议,利用隐蔽通道技术进行通信,隐蔽性更强。 第四代木马:采用线程注入的方式实现进程的隐藏,通信上使用反弹端口技术和代理技术来突破主机防火墙限制。目前很多木马都属于这一类。 第五代木马:这一代木马的特点是与系统内核紧密结合,结合了rootkit技术。通过修改系统内核的相关信息来实现文件、进程和通信的隐藏。普通的安全工具根本就查看不到这种木马,因为它工作得更底层,这种木马必须使用内核级的安全工具才能彻底查杀。
注册表启动 注册表简介 HKEY_CLASSES_ROOT:包含了启动应用程序所需的全部信息。 HKEY_CURRENT_USER:这个根键用于管理当前登陆用户的信息,包括用户的桌面配置、网络设备资源和安全权限等信息。 HKEY_LOCAL_MACHINE:这里保存了控制系统和软件的相关设置,包括硬件信息、驱动程序和应用程序等。 HKEY_USER:它包含了所有用户配置文件的当前活动用户信息,包括用户的环境信息、键盘配置信息、系统中安装的软件信息等等 。 HKEY_CURRENT_CONFIG:这个根键存放的是当前配置文件的所有信息,其实就是HKEY_LOCAL_MACHINE中内容的影射。 2.2 启动技术
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键 这个键值只有windows XP和windows 2003才有,也可以实现自启动: 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\Services HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services HKEY_LOCAL_MACHINE\SYSTEM\ ControlSet002\Services
自启动目录是用来启动一些应用软件的,它是windows系统中最基本的启动方式,windows系统有两个启动目录,分别是第一启动目录和第二启动目录。自启动目录是用来启动一些应用软件的,它是windows系统中最基本的启动方式,windows系统有两个启动目录,分别是第一启动目录和第二启动目录。 第一启动目录默认位置为: C:\Documents and Setttings\用户名\[开始]菜单\程序\启动\ 对应的注册表位置为: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders; “startup” = “要启动的程序的路径”; 第二启动目录默认位置为: C:\Documents and Settings\All Users\[开始]菜单\程序\启动\ 对应的注册表位置为: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\User Shell Folders; “Common Startup”=“要启动的程序的路径”; 自启动目录启动
系统配置文件其实是系统留给用户的一个接口,用户可以通过修改系统配置文件达到更改系统相关设置的目的。 WIN.INI启动 win.ini文件记录了windows系统启动后加载用户界面的相关信息,包括程序的启动、用户桌面设置和文件关联等信息,主要完成GUI下相关的环境配置。 格式如下: [windows] Run=test.exe Load=test.exe 系统配置文件启动
SYSTEM.INI启动 system.ini最初是win 16的系统配置文件,后来又增加了一些新的设置,通过system.ini也可以启动文件。 格式如下: [boot] Shell=Explorer.exe test.exe
WININIT.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.inf Autorun.inf文件是windows系统提供的,主要是用来帮助驱动器启动某些程序,比如光盘自动运行时的图标显示。Autorun.inf不仅支持光盘,也支持硬盘和U盘等各类存储设备。我们可以把木马路径写入autorun.inf文件,在用户打开驱动器时,autorun.inf就会运行,从而加载我们的木马程序。 文件格式如下: [AutoRun] open=test.exe
概念 源于古希腊战争。 属于客户/服务模式。 客户端:主控端,向服务器发送连接请求。 服务端:被控端,提供服务,一般会打开一个默认端口进行监听,当侦听到客户端的连接请求,便自动运行相应程序。 2.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的第三方存储设备来进行传递,如一个固定的网址。 (4)使用基于嗅探原理的原始套接字木马 服务端是一个发包器和嗅探器,它将捕获指定特征的数据包。 优点:完全基于非连接状态,使用原始包进行通信,可使用任意协议,可采用任意制定的数据包形式,可实现部分的隐藏地址,可实现无连接反向通信,可突破一些防火墙的监视。
1. 检查网络通信流量 首先关闭所有访问网络的程序; 然后查看本地连接的属性,看是否有数据流动,如果“发送”和“收到”的数据包在不停地变化,而且变化比较大,那主机很有可能运行了木马程序。 2.4 木马的检测
2.查看进程与网络连接 通过任务查看器,查看当前运行的进程 ; 查看网络连接有很多工具,系统自带的netstat、foundstone出的fport以及sysinternals出的Tcpview工具,都可以查看当前的网络连接。 3. 检查启动项 系统自带的msconfig命令也可以查看注册表的启动项。
4. 检查系统帐户 通过”net user 用户名”这个命令查看用户所在的组,正常情况下只有一个用户在administrators组下面,如果有其它用户名也在这个组下面的话,那电脑极有可能被入侵过。 5.查看进程加载的服务 进程插入是木马启动和隐藏的主要方式,我们可以通过”tasklist –svc”命令查看当前运行的进程加载的服务名称,可以通过对比系统原有的服务来查找异常服务。
6. 抓包分析 7. 使用安全工具 主要是针对驱动层木马。 这里要介绍的工具是IceSword,是一款基于内核的安全工具,能查看当前运行的进程(包括进行驱动隐藏的),对异常的进程会以红色标记;查看当前的网络连接、SSDT、服务、启动项等等
木马的清除的一般分为三个步骤: 杀掉木马进程以及是停止相关的服务。杀掉进程才可能删除木马文件,有的木马是以服务的方式启动的,对这种木马就需要停止服务,再进行后面的操作。 清除木马相关文件。成功的杀掉了活动的木马后,我们就需要清除木马文件了,有的木马可能有守护进程,这个可以利用IceSword提供的禁“止进线程创建”功能来删除木马。对于驱动层木马,建议在查找出木马文件和启动方式后,再进入安全模式进行清除。 清除木马的启动。如果木马是从注册表启动的,则删除相应注册表项和值。如果是系统配置文件,则需要修改这些配置文件,不能简单地删除,还要注意保留系统自身的启动信息;如果是winsock2 SPI(服务提供商接口)木马,则需要注意清除的顺序。 2.5 木马的清除
使用实时监控软件(防火墙和杀毒软件) 及时升级病毒库 及时升级系统漏洞补丁 关闭不必要的服务 注意邮件附件 不随意运行可疑的软件 2.6 木马的防范
3.1 网页恶意代码的特点 跨平台性,脚本程序是通过脚本解释器来执行的,不同的操作系统,只要有对应的脚本解释器,那就可以运行脚本。在通常情况下,很多系统都支持web中的脚本解释,这也为脚本程序的执行奠定了基础。 隐藏性,脚本程序一般都是在后台运行的,不需要与用户交互,用户点开网页就可能运行恶意代码,这也正式网页恶意代码盛行的重要原因。 穿透性,因为IE进程通常是访问服务器的80端口,而一般防火墙是不会阻止这个端口的通信的,恶意代码通过嵌套在网页的页面里,可以很轻松的穿透防火墙,直接在目标机器里运行。 3 网页恶意代码
网页恶意代码一般是由JavaScript、VBScript、asp、ActiveX和Flash等脚本编写,另外网页恶意代码也可以通过系统或者应用程序的漏洞来对目标进行攻击。网页恶意代码一般是由JavaScript、VBScript、asp、ActiveX和Flash等脚本编写,另外网页恶意代码也可以通过系统或者应用程序的漏洞来对目标进行攻击。 网页恶意代码一般是修改系统的个人主页、锁定注册表、格式化硬盘、屏蔽鼠标右键、弹出窗口以及下载木马执行等。 3.2 网页恶意代码的攻击形式
第一种是破坏脚本的执行链,禁止浏览器自动执行脚本程序,禁止系统自动解释脚本程序并运行。第一种是破坏脚本的执行链,禁止浏览器自动执行脚本程序,禁止系统自动解释脚本程序并运行。 第二种是使用安全工具监控系统的活动,防止非法程序修改系统的注册表等信息。 3.3 网页恶意代码的防范