NSE Week 3: Spoofing, flooding and amplification

Spoofing, flooding and amplification

Spoofing

ARP spoofing

  • ARP

    • Layer identifiers

      Routing是network communication中重要的一环,computer node在通信之前,需要知道自己在与谁联系,要通过什么路径去联系

      那么layer identifier 就代表着每一个computer node

      • Internet Layer identifier: IP address (assigned by users or by software, such as DHCP)
      • Link Layer Identifier: MAC Address (hardware address, physical address)
    • ARP (Address Resolution Protocol)

      aims to translate from IP address to MAC address

      • ARP request message generation

        1. 当有IP packet需要发出的时候,ARP就会被hardware driver 所调用
        2. 首先获取IP destination address
        3. 然后在ARP本地的 translation table 中查找是否有对应得IP address : MAC address entry
          • 有的话,就把48-bits的MAC address发送给 hardware driver
          • 没有的话,就准备发送ARP请求,填充相关信息
            • sender MAC address
            • sender IP address
            • target IP address
            • target MAC address (broadcast address: 00:00:00:00:00:00)
        4. ARP request message在link layer被封装成frame 然后发送出去
      • ARP request message reception

        1. 目标节点将会回复其所包含的MAC address, (如果通信的是其他网络的节点,那么此处寻找的就是网关的MAC address)
        2. 其他收到请求的节点会更新他们的 translation table (IP address : MAC address entry) 然后丢弃这个包
      • ARP rely message reception

        1. ARP rely 是单播,会直接发送回发送者
      • ARP translation table (ARP table, ARP cache)

        • 通过ARP cache 来保存IP address : MAC address entry 来节省空间
        • 表内的entry会 ageing
        • ARP 是无状态协议,因此只要收到了request/reply 他们就会自动更新
    • RARP (Reverse ARP)

      aims to translate from MAC address to IP address

  • ARP spoofing attack

    ARP spoofing主要的目的就是污染原本的ARP cache,将Computer A存放的关于 Computer B的信息,改为attacker的,这样A在给B发frame的时候,就会发给attacker

    • countermeasure

      • 设置 Arp cache 的过期时间, expire
      • 一些系统通过unicast 来更新cache 表,而不是像之前那样无状态的更新
      • Against countermeasure
        • Attacker可以通过定期发送 ARP spoof packet (every ~40s) 来避免以上方法
      • Static ARP table 静态ARP表
        • 每次启动加载到RAM中
        • 没有ARP request主动发送
  • Man-in-the-middle attack with ARP spoofing

    通过ARP spoofing 污染两/多台电脑的 ARP cache ,使他们的通信destination都指向attacker,从而截取通信内容(attacker node 进而转发通信,因为它知道IP address所对应的正确的MAC address)

  • MAC flooding

    每个switch 会内置一个 CAM (Content Addressable memory) 表,用于记录不同的MAC address所对应的port number 每当有frame 经过 switches, switch就会通过这个 table 来实现转发

    MAC flooding就是使用大量的spoofed frame来填充switch 的转发表,从而占满 switch 所有的内存空间,使正常的frame的转发策略无法加入table,最终就会导致正常的frame 通信因为没有对应的port而 被迫广播 ,使attacker可以利用sniffer所监听到。

DHCP spoofing

  • DHCP (Dynamic Host Configuration Protocol)

    DHCP是用来自动的给其他的用户分配IP地址以及其他相关配置的(网关,DNS服务器等)协议

    Protocol operations : 1. Discovery - client 广播 DHCP Discovery message 来寻找server 2. Offer server单播提供IP给client 3. Request client 发送接收IP的message 4. Acknowledge server确认client愿意接受并发送IP以及其他的配置信息

         
    <br/>
  • DHCP spoofing attack

    DHCP spoofing 主要是通过向DHCP server发送大量的 Spoofed DHCP request message占用 IP池里的所有可分配的IP,然后再使用一台假的DHCP server来回复client所发出的DHCP discovery message,进而控制这些client的IP以及其他配置(网关,DNS server地址)。

    正常的DHCP request message:

    Spoofed DHCP discovery message: 利用大量虚假的MAC地址来占用可分配的IP地址

    DHCP starvation :

    通过发送大量的带有伪造MAC Address的DHCP request message来占用所有的IP池中的IP地址,进而使用假的DHCP server给其他client分配地址和其他配置信息,对他们进行控制

Flooding and Amplification

ICMP Smurfing

  • ICMP

    Ping : 提到ICMP协议,就不得不提到ping,ping就类似于一个声纳系统,通过向特定的电脑发送 ICMP ECHO_REQUEST ,来使他们通过返回 ECHO_REPLY_REQUEST 来验证是否可以通信

  • ICMP Smurfing

    Attacker通过向一个局域网的广播域中发送大量的 spoofed ICMP ECHO_REQUEST 来诱导大量的clients发送 ICMP ECHO_REPLY_REQUEST 到指定的一台client进而使其崩溃

    Amplification : 我们从上面的例子可以看到,通过一个简单的广播,就可以让这么多的client进而产生巨大的流量,进而就催生出一个新的技术就是 Amplification ,可以通过多层的amplifiers来实现巨大的DDoS流量

     
    <br/>

NTP Amplification DDoS Attack

  • NTP

    • Network time protocol
    • UDP protocol
    • port 123

    NTP用来用来各个主机的时钟

    NTP是一个分层的,中间层的时间资源系统

    每一层我们称为 stratum ,由最上层的clock一层层同步到不同 stratum 的NTP server

    • NTP如何工作

      1. Client首先发出NTP message,并且在上面记录当前的时间戳: T1=9:00:00am

      1. NTP server 收到后马上打上时间戳: T2=10:00:01am

      1. NTP sever返回一条NTP message,然后在发出之前打上时间戳: T3=10:00:02am

      1. NTP message到达用户的时候马上打上时间戳: T4=9:00:03am

      用这四个时间戳,我们就足以同步client的时间

      Timestamp Value Description
      T1 09:00:00 Client发出的时间
      T2 10:00:01 Server收到的时间
      T3 10:00:02 Server发出的时间
      T4 09:00:03 Client收到的时间
      1. 计算所有的Message在传输中delay的时间

        delay = D1 - D2 = (T4-T1) - (T3-T2) = 通信花费的总时长 - 在server上的处理时间 = 3 - 1 = 2 seconds
        
      2. 计算 NTP client 与NTP server 之间的时间差

        O1 = T2 - T1 = 1h 1s

        O2 = T3 - T4 = 59min

        T2 = T1 + offset + delay/2 T4 = T3 - offset + delay/2

        因此Offset = (O1 + O2)/2 = [(T2 - T1 - delay/2) + (T3 - T4 + delay/2)] / 2 = 1 hour 总之就是 (=服务端的两个时间 - 客户端的两个时间 =)/2 = offset

  • NTP amplification attack

    NTP amplification attack 依赖于利用公共可以访问的 NTP server 来发出NTP RESPONSE实现对victim host的DDoS攻击

    补充知识 : NTP 服务支持管理员向NTP server查询其所管理同步的clients信息,NTP servers通过向client发送monlist命令来获得所有最近连接过的hosts的列表

    ntpd : NTP daemon是一个操作系统的后台驻留程序,用来设置和维护系统时间并与NTP server交互实现时钟同步 在Ntpd在4.2.7之前的版本都是存在漏洞的。 在老的机器中,monlist command是默认开启的,它将会返回最近600个通信过的client的IP地址(也就是说一条monlist command,可以返回比原本大的多的数据)

    • How NTP amplification attack works?

      1. Attacker使用bot来伪造NTP request packets,使用victim的IP地址

      1. Botnet 发送这些伪造的NTP请求,来诱使NTP servers调用他们的monlist命令,返回大量的response

      1. Client收到了每一个NTP server所返回的600个IP地址的信息,相当于收到了一次DoS攻击。我们根据上面Wireshark的截图可以观察到,一条的spoofed NTP request只需要234bytes,但是却要受到100个482 bytes的数据包,可见其攻击力度。

Botnet

我们之前在NTP amplification attack已经提到过了bot的使用,在这一章节中,我们来稍微展开讲一讲Botnet的内容

Botnet,僵尸网络,简单来说就是黑客通过控制一系列的设备(主机,手机,IoT设备等),实现对于本机信息的获取以及控制权,可以利用所感染的bot或者僵尸来实现各种攻击,并通过C&C(command and control) server来实现通信与指令下发

  • 如何搭建一个Botnet?

    1. 黑客首先需要得到一群受感染的用户设备,他们可以自己想办法去感染,也可以从地下市场购买别人感染的
    2. 然后,让这些被感染的bots去连接上 C&C server,实现通信与管理
    3. 接着,黑客就可以通过C&C server来下达指令,要求Bot去偷取本机的信息,亦或者是配合实现攻击

TCP SYN Flooding

  • TCP

    • TCP 是一个传输层的协议,用于很多我们耳熟能详的协议例如HTTP, SMTP 还有 ftp

    • TCP 提供了可靠的点对点的基于连接的通信,如果说网络层的IP地址是提供了快递从揽货到送达的路径,那么传输层的TCP和UDP相当于是提供了传输路上的保险

    • 其可靠性主要是通过 segment sequencing, re-trasmission and loss detection 来实现的

    • 同时TCP提供了流量控制和拥塞管理的功能,只要是通过滑动窗口算法以及丢包检测实现的

    • TCP connection

      每一个 TCP connection 的标识符就是:

      1. Source IP address + port number
      2. Destination IP address + port number
      3. 其中Port number指代的就是所跑的服务所对应的number
    • Three-way handshake 三次握手协议

      之前我们提到过TCP协议是基于连接的协议,那么三次握手协议,就是其内置的,用于建立连接的协议

      首先我们先来认识一下一个用于三次握手协议的TCP header应该包含什么信息

      其应该包括:

      • Port numbers (16 bits each)
      • SYN flag (1 bit)
      • ACK flag (1 bit)
      • Sequence number (32 bits)
      • Acknowledgement number (32 bits)

      然后看一个具体的例子

      1. Source首先发起第一次握手请求,名为 SYN 发出其所定义的一个sequence number为 x
      2. 接着Destination返回第二次握手请求,名为 SYN+ACK ,将sequence number改为其所定义的值 y ,并将acknowledge number设为 x+1
      3. 最后Source发起第三次握手请求,名为 ACK , 返回acknowledgement number为 y+1 , 同时递增自己的 sequence number为 x+1
      4. 至此三次握手连接成功,接下来就可以正常的进行通信,并且Source 和 Destination 将逐渐递增其自己的 sequence number 以及 acknowledge number

  • TCP SYN flooding

    TCP SYN flooding attack本质上是一个DoS attack, 其目的是为了通过向目标服务器发送大量的无效 SYN, 来诱使服务器发送对等数量的 SYN+ACK 请求, 继而等待 ACK 请求回复,同时利用本地缓存这个连接,最终导致本地的缓存空间被占满。

    我们最后通过一个具体的例子来复现一下这个过程

    1. 首先黑客向服务器发送大量的 SYN 请求,用的是伪造过的IP地址

    1. 接着服务器在收到了 SYN 请求之后,便会发出对应的 SYN+ACK 回复请求到之前伪造的IP地址

    1. 被伪造的IP地址的主机收到由服务器发来的大量 SYN+ACK 请求,可发现没有记录显示自己之前有发送过 SYN 请求到该服务器,因此不会回复 ACK 请求。同时,每维护一个等待 ACK 的连接,服务器都要开设一个新的端口,同时用缓存保存这些信息,一旦超出上限,那么就会使服务器瘫痪

Mitigation

MAC flooding mitigation

  • 使用port security,限制从端口可以获取的MAC地址数量
  • 对安全的MAC地址进行长时间的使用(不可替代),只要这些地址还存在于第三层的设备的ARP table当中(例如路由器,表示信任路由器的安全措施)
  • 使用AAA(Authentication, authorisation and accounting)服务器来验证所有MAC地址

DHCP starvation mitigation

  • 使用Port security, 只有可以信任的端口所连接的DHCP请求才被允许通过
  • DHCP snooping, 只接受信任的DHCP服务器所发送的配置

DHCP spoofing mitigation

  • 使用入侵检测系统,并审核数字签名来避免伪造的DHCP服务器
  • DHCP snooping, 只接受信任的DHCP服务器所发送的配置

ICMP smurfing mitigation

  • 单独配置每一个主机和路由器,拒接相应ICMP请求和广播信息
  • 配置路由器不要转发ICMP到广播域当中
  • 入站流量检查,拒绝伪造源地址的数据

NTP amplification DDoS mitigation

  • 禁止 monlist 的使用,一次来避免NTP返回非常大的信息
  • 入站流量检查,拒绝伪造源地址的数据
  • Firewall

TCP SYN flooding attack mitigation

  • 使用防火墙来进行filtering,对那些很明显的spoofed的IP address进行丢弃
  • 减少SYN接受的时间,将那些黑客建立的半连接尽早关闭来防止崩溃
  • 使用防火墙对于TCP connection来进行审查
Licensed under CC BY-NC-SA 4.0
Last updated on May 30, 2022 22:13 +0100
comments powered by Disqus
Cogito, ergo sum
Built with Hugo
Theme Stack designed by Jimmy