目录
1.入侵攻击类型介绍
2.侦察/信息收集型
2.1地址扫描
2.2端口扫描
2.3系统探测
2.4漏洞扫描
3.访问类攻击
3.1口令攻击
3.2端口重定向
3.3中间人攻击
3.4Web攻击
4.Web类攻击
4.1SQL注入
4.2跨站脚本攻击
4.3CC攻击
4.4脚本攻击
5.拒绝服务攻击
5.1带宽消耗型攻击
5.2资源消耗型攻击
6.病毒类攻击
6.1特洛伊木马
6.2蠕虫病毒
6.3宏病毒
7.溢出类攻击
课程目标:这节课我们来介绍入侵攻击中的类型,了解入侵攻击中一般存在的入侵攻击类型。
任务目标:通过对这节的学习,能够了解熟悉入侵攻击类型中的常见类型,常见类型中的入侵技术。
随着计算机网络的飞速发展,网络信息的安全问题也日渐突出,它已经成为了计算机领域的一个重大课题。现阶段,网络攻击的手段花样不断更新,层出不穷,大致来说,可以分为如下六类:信息收集型攻击、访问类攻击、Web攻击、拒绝服务类攻击、病毒类攻击、溢出类攻击。
侦察是未授权的发现和扫描系统、服务或漏洞,也被称为信息收集。信息收集型攻击是一种基础的网络攻击方式,并不对目标本身造成危害,在大多数情况下,它是其他攻击方式的先导,被用来为进一步入侵提供有用的信息。通过向目标主机发送数据包。然后根据响应来收集系统信息,发现服务器的端口分配及所提供服务和软件版本,可以进一步检测远程或本机主机安全的脆弱性。此类攻击通常包括地址扫描、网络端口扫描、操作系统探测、漏洞扫描。
地址扫描指的是攻击者利用ping、tracert或firewalk等攻击或者直接利用ICMP消息发向目标网络,请求应答,如果请求和应答没有被网络边界过滤掉,攻击者就可以借此来获得目的网络地址分配信息,进而分析目的网络的拓扑结构。防御方法是在防火墙上过滤掉ICMP应答消息。
端口扫描能够用来查找目标主机已开放的端口,包括TCP和UDP端口。当前针对TCP端口的扫描技术有三种,分别为:全连接扫描,SYN扫描和FIN扫描。针对UDP端口的扫描技术一般是采用ICMP报文中端口不可达的信息来识别UDP端口是否开放。
全连接扫描
作为最基本的TCP扫描方式,它利用connect()函数,向每一个目标主机的端口发起连接,若端口处于侦听状态,则函数返回成功;否则可以判断出该端口没有开放。
SYN扫描
SYN扫描通常认为是“半开放”的扫描,这是因为扫描程序不必打开一个完全的TCP连接。扫描程序构造并发送一个SYN数据包,执行TCP三次握手的第一步,若返回一个SYN|ACK数据包,则表示端口处于侦听状态,否则返回一个RST数据包,表示端口没有开放。这种方式需要root权限,并且它不会在主机上留下记录。
FIN扫描
FIN扫描与SYN扫描类似,也是构造数据包,通过识别回应来判断端口状态。发送FIN数据包后,如果返回一个RST数据包,则表示端口没有开放,处于关闭状态,否则,开放端口会忽略这种报文。这种方式难以被发现,但是这种方式可能不准确。
UDP的ICMP端口不可到达扫描
UDP扫描的方法并不常见。虽然UDP协议相对比较简单,无论UDP端口是否开放,对于接受到的探测包,他本身默认是不会发送回应信息的。不过UDP扫描有一种方法,就是利用主机ICMP报文的回应信息来识别,当一个关闭的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH的错误。但由于UDP不可靠,ICMP报文也是不可靠,因此存在数据包中途丢失的可能
具体流程:
1.判断端口是否处于扫描范围
2.初始化套接字,发起连接
3.调用getservbyport函数,获取端口映射的TCP服务
4.输出结果
5.退出程序
具体实现
操作系统探测指的是攻击者使用具有已知相应类型的数据库的自动工具,对来自目标主机的、对坏数据包传送所做出的相应进行检查。由于每种操作系统都有其独特的响应方法(例如NT和Solaris的TCP/AP堆栈具体实现有所不同),通过将此独特的响应与数据库中的已知响应进行对比,黑客经常能够确定出目标主机所运行的操作系统:
DNS协议不对转换或信息性的更新进行身份认证,这使得该协议被人以一些不同的方式加以利用,如果你维护者一台公共的DNS服务器,黑客只需实施一次域转换操作就能得到你所有主机的名称以及内部IP地址。
网络漏洞扫描技术建立在上述三种扫描技术的基础之上,通过上述三种方法可以收集到很多目标主机的各种信息。在获得目标主机TCP/IP端口和其对应的网络访问服务相关信息后,与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。
基于上述三种扫描技术形成的漏洞扫描工具有Nmap、Nessus、X-scan。Nmap基本功能有三个,一是探测一组主机是否在线;其次是扫描主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统。
Nessus是一个功能强大而又易于使用的远程安全扫描器,它不仅免费而且更新极快。
X-scan是Xfocus小组自己写的一款扫描软件,有图形界面和命令行两种形式,运行在Windows平台。
攻击者攻击目标时常常把破译用户的口令作为攻击的开始,只要攻击者能猜测或者确定用户的口令,他就能获得机器或者网络的访问权,并能访问到用户能访问到的任何资源。
获得普通用户账号的方法很多,比如:
1)利用目标主机的Finger功能;当用Finger命令查询时,主机系统会将保存的用户资料显示在终端或计算机上。
2)从电子邮件地址中收集;有些用户电子邮件地址会透漏其在目标主机上的账号,很多系统会使用一些习惯性的账号,造成账号的泄露。
获取用户口令有三种方法:
1)利用网络监听非法得到用户口令。当前,很多协议根本就没有采用任何加密或身份认证技术,如在Telnet、FTP、HTTP、SMTP等传输协议中,用户账户和密码信息都是以明文格式传输的,攻击者利用数据包截取工具便可很容易收集到账户和密码。
2)在知道用户账户后,利用一些专门软件强行破解用户口令。例如,攻击者采用字典穷举法来破解用户的密码,这个破译过程完全可以由计算机程序来自动完成,因而几小时就可以把上万条记录的字典里所有单词都尝试一遍。
3)利用系统管理员的失误。在UNIX操作系统中,用户的基本信息存放在password文件中,而所有的口令经过DES加密方法加密后专门存放在一个叫shadow的文件中。攻击者获取口令文件后,就会使用专门的破解DES加密法的程序来破解口令。
端口重定向指的是攻击者对指定端口进行监听,把发给这个端口的数据包转发到指定的第二目标。一旦攻陷了某个关键的目标系统,比如防火墙,攻击者就可以使用端口重定向技术把数据包转发到一个指定地点去,这种攻击的潜在威胁非常大,能让攻击者访问到防火墙后面的任何一个系统。
fpipe是Foundstone公司开发的一个TCP源端口转发/重定向工具,它可以创建一个TCP数据流,并允许指定一个源端口,此种攻击可以绕过一些阻断特定通信进入内部网络的防护墙的限制。
中间人攻击是一种“间接”的入侵攻击,这种攻击模式,是通过各种技术手段将被入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,而这台计算机就称为“中间人
”,然后入侵者把这台计算机模拟成一台或两台原始计算机,使“中间人”能够与原始计算机建立活动连接,并允许其读取或修改传递的信息,两个原始计算机用户却认为他们是在互相通信。通常,这种“拦截数据-修改数据发送数据”的过程就被称为“会话劫持”。
通过中间人攻击,攻击者可以实现信息篡改、信息盗取等目的。
Web这种应用的可操作性很大,用户使用的自由度也很高,同时,此应用也非常脆弱,遭遇的攻击也非常普遍。
Web攻击会阻碍合法用户对站点的访问,或者降低站点的可靠性。根据国内某IT网站对网友和Web安全专家调查,以下是当前较“流行”和威胁排名靠前的攻击方式:SQL注入式攻击、跨站脚本攻击、CC攻击、Script/ActiveX攻击及DDos攻击。
SQL注入原理
SQL注入和缓冲区溢出都是一种依赖于开发人员没对输入数据进行测试的攻击。SQL注入攻击的基本原理是在用户输入中注入一些额外的特殊符号或SQL语句,使系统构造出来的SQL语句在执行时,改变了查询条件,或者附带执行了攻击者注入的整个SQL语句,从而让攻击者达到了非法的目的。由于SQL注入攻击利用的是SQL语法,使得这种攻击具有广泛性。
跨站脚本攻击(Cross Site Scripting,安全专家们通常将其缩写为XSS),是指攻击者利用网站程序对用户输入过滤不足、输入可以显示在页面上对其它用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行侵害的一种攻击方式。
静态站点不会受到此类攻击影响,但是动态站点往往会,这是因为动态站点的网站中包含了大量的动态内容以便来提高用户体验,所谓的动态内容,就是根据用户环境和需要,Web应用程序能够输出相应的内容。
根据XSS跨站脚本攻击存在的形式及产生的效果,可以将其分为以下三类并非别介绍实例:
一、非持久型XSS跨站脚本攻击
非持久型XSS又叫反射型XSS,它是指那些浏览器每次都要在参数中提交恶意数据才能触发的跨站脚本漏洞。该类XSS的攻击方式,只是简单地将用户输入的数据直接或未经过完善的安全过滤就在浏览器中进行输出,导致输出的数据中存在可能被浏览器执行的代码数据。由于此种类型的跨站代码存在于URL中,所以黑客通常需要通过诱骗或加密变形等方式,将存在恶意代码的链接发给用户,只有用户点击以后才能使的攻击成功实施。
二、持久型XSS脚本攻击
持久型XSS又叫存储XSS,与非持久型XSS相反,它是指通过提交恶意数据到存储器(比如数据库、文本文件等),而Web应用程序输出的时候是从存储器中读取恶意数据再输出,持久型XSS脚本攻击是指Web应用程序会将用户输入的数据信息保存在服务端的数据库或其他文件形式中,网页进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在网页中进行输出展示,因此持久型XSS具有较强的稳定性
三、DOM型XSS跨站脚本攻击
DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。客户端脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据,并且在本地执行,基于这个特性就可以利用js脚本来实现XSS漏洞的利用。
CC攻击(ChallengeCollapsar)指的是攻击者利用大量代理服务器对目标计算机发起大量连接,导致目标服务器资源枯竭造成拒绝服务。
每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,而CC就是模拟多个用户(多少线程就是多少用户),不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,如果CPU长时间处于100%,永远都有处理不完的连接,那么最后就造成网络拥塞,正常的访问被中止。相比于其他的DDos攻击,CC攻击更有技术含量,这种攻击你见不到真实的源IP,见不到特别大异常流量,但是造成服务器无法进行正常连接。这种攻击的技术含量很低,利用更换IP代理工具和一些IP代理,就可以简单地实施攻击。
Script是一种可执行的脚本,它一般由一些脚本语言写成,比如常见的JavaScript,VBscript等。
这种script的一个重要应用就是嵌入在Web页面里,执行一些静态Web页面标记语言(HTML)无法完成的功能。比如有本地的计算、数据库查询和修改、以及系统信息的提取等等。
UDP洪水攻击
UDP洪水攻击(UDP Flood)是日渐猖獗的流量型DoS攻击,这种攻击时抓住了UDP协议是一种面向无连接的传输层协议,以至于数据传送过程中,不需要建立连接和进行认证这一特点
UDP Flood易于实施,只要被攻击者开放一个UDP服务端口,即可针对该服务发动攻击。
构造UDP Flood包没有特殊的设置,只要在同一时间发送足够多数量的UDP报文就可以形成。
ICMP洪水攻击
正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMP ECHO),接受计算机收到ICMP ECHO后,会回应一个ICMP ECHO Reply报文。而这个过程是需要CPU处理的,有些情况下还可能消耗大量的资源,比如处理分片的时候。这样如果攻击者向目标计算计发送大量的ICMP ECHO报文产生(ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其他的网络数据报文,这也是一种拒绝服务攻击。
此类攻击方法也很简单,只要向被攻击主机发送大量ICMP echo request报文达到一定阈值即可。
死亡之ping
Ping of Death指的是攻击者估计发送大于65535字节的IP数据包给被攻击者,被攻击者收到全部分段并重组报文时总的长度超过了65535字节,导致内存溢出,这时主机就会出现内存分配错误而导致TCP/IP堆栈崩溃,系统死机。
不过,现在所有的标准TCP/IP都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些攻击,包括:从Windows98之后的Windows,NT(service pack3之后),Linux和MacOS都具有抵抗ping of death攻击的能力。此外,对防火墙进行配置,阻断ICMP以及任何未知协议,都能防止此类攻击。
Smurf攻击
ICMP ECHO请求包用来对网络进行诊断,当一台计算机接收到这样一个报文后,会向报文的源地址回应一个ICMP ECHO REPLY。一般情况下,计算机是不检查该ECHO请求的源地址的,因此,如果一个恶意的攻击者将ECHO的源地址设置为一个广播地址,这样计算机在回复REPLY的时候,就会以广播地址为目的地址,这样本地网络上所有的计算机都必须处理这些广播报文。如果攻击者发送的ECHO请求报文足够多,产生的REPLY广播报文就可能把整个网络淹没,这就是所谓的Smurf攻击。
除了把ECHO报文的源地址设置为广播地址外,攻击者还可能八元地址设置为一个子网广播地址,这样,该子网所在的计算机就可能受影响。
SYN洪水攻击
SYN(Synchronizc)即同步报文,同步报文会指明客户端使用的端口以及TCP连接的初始序号。SYN Flood是当前最流行的DoS与DDoS的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
Land攻击
LAND攻击方式与SYN Flood类似,不过在LAND攻击包中的源地址和目标地址都是攻击对象的IP,这种攻击会导致被攻击的机器死循环,最终耗尽资源而死机。
IP欺骗攻击
这种攻击利用RST位来实现。假设现在有一个合法用户(61.61.61.61)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为61.61.61.61,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从61.61.61.61发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户61.61.61.61再发送合法数据,服务器已经没有这样的连接了,该用户就必须重新开始建立新的连接。
攻击时,攻击者会伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务,从而实现了对受害服务器的拒绝服务攻击。
特洛伊木马
木马(Trojan)程序是比较流行的病毒文件,与一般的病毒不同,它不会自我繁殖,也并不可以去感染其他文件,它通过将自身伪装,吸引用户下载执行,向施种木马者提供打开被种者电脑的门户,用户一旦感染了木马,就会成为“僵尸”,施种者可以任意毁坏、窃取被种者的文件,甚至远程操控被种者的电脑。
蠕虫病毒是一种常见的计算机病毒。它是利用网络进行复制和传播,传染途径是通过网络和电子邮件。最初的蠕虫病毒定义是:因为在DOS环境下,病毒发作时会在屏幕上出现一条类似虫子的东西,胡乱吞吃屏幕上的字母并将其改形。蠕虫病毒是自包含的程序(或是一套程序),它能传播它自身功能的拷贝或自身(蠕虫病毒)的某些部分到其他的计算机系统中(通常是经过网络连接)。
2007年1月流行的“熊猫烧香”以及其变种就是蠕虫病毒。这一病毒利用了微软视窗操作系统的漏洞,计算机感染这一病毒后,会不断自动拨号上网,并利用文件中的地址信息或者网络共享进行传播,最终破坏用户的大部分重要数据。
宏病毒是一种寄存在文档或模板的宏中的计算机病毒,一旦打开这样的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal模板上。从此以后,所有自动保存的文档都会“感染”上这种宏病毒,而且如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。
缓冲区溢出(又称堆栈溢出)攻击是最常用的黑客技术之一,这种攻击之所以泛滥,是由于开放源代码程序的本质决定的。
Unix本身以及它的许多应用程序都是用C语言编写的,而C语言它不检查缓冲区的边界,在某些情况下,如果用户输入的数据长度超过了应用程序给定的缓冲区,它就会覆盖到其他的数据区,这个就称作为缓冲区溢出。
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。对缓冲区溢出漏洞攻击,可以导致程序运行失败、系统崩毁以及重新启动等后果。更为严重的是,可以利用缓冲区溢出执行非授权指令,甚至取得系统特权,进而进行各种非法操作。
从“缓冲区溢出攻击”的原理可以看出,要防止此类攻击,
1.我们可以关闭这样的端口或服务
2.安装厂商提供的补丁
3.在防火墙上过滤特殊的流量
4.检查关键的服务程序,查看是否有漏洞
5.需要的最小权限来运行软件
参考:网络安全培训、网络安全工程师(奇安信)收藏夹吃灰系列_哔哩哔哩_bilibili