NSE Week 2: TCP/IP protocol architecture, sniffing and traffic analysis

NSE Week 2: TCP/IP protocol architecture, sniffing and traffic analysis

TCP/IP protocol architecture

什么是网络协议?

Protocol 就是一组相同通信层上的通信规则

主要的内容:

  • Syntax:通信信息的格式
  • Semantics:如何控制信息以及错误
  • Timing:传输以及数据交换的速度,以及次序

TCP/IP 模型

每一个协议都作为Alice & Bob在相同层上面的通信规则

我们用一个例子来简单概述一下每一层的作用

  • 比如Alice想要发一个快递给Bob,那么快递里的货物就是Application,是Bob需要使用的物品;
  • 那么Transport layer就是是否需要给快递上保险,TCP就是上保险,UDP就是不上保险,如果东西贵重,那么就要TCP,如果丢了也没关系就用UDP
  • 接下来快递发出来了,快递单上面要写地址,地址就是IP地址也就是Internet layer的header的双方的IP地址,xx省xx市xx小区这些就是一个个网络,Internet layer就负责进行routing路由,来找到发往这些区域的路径
  • Network access就是邮编,在中国没有很大的体现,但是在英国,每一幢楼都对应了一个邮编,且是全英唯一的,也就是网络层的MAC地址
  • 最后Physical物理层就是用飞机,高铁,轮船等方式送货,也就对应了,光纤,双绞线这些传输方式

接着我们用一个具体的HTTP通信的例子来描述一些细节

HTTP是一个应用层的协议,那么通信的双方都将是应用层,而实际传输到对方应用层的应用上,就需要层层封装信息,然后由路上的路由器,交换机进行拆包之后一步步传递。

网关和路由器会根据IP header进行路由

Sniffing

Sniffing 嗅探,attacker通过监听网络中的流量来获取他们想要的信息,甚至做出修改。

当然也可以用于网络的debug和诊断。

Network interface card (NIC 网卡)必须设置在 promiscuous mode 来获取所有的包

可以用来

  • 偷听数据包中没有加密的信息
  • 捕捉信息进而使用relay attack

Promiscuous mode

我们的网卡network interface card (NIC) 有两种模式:

  • Promiscuous 不加选择的模式:获取所有网络中的数据包
  • Non-promiscuous:丢弃所有不经过自己的数据包

如果要实现嗅探,就必须设置为 Promiscuous mode

同时我们必须处于Hubs或者WiFi的网络条件下,因为这样才能收到因为广播而接受到的所有数据包

如交换机这种拥有单独的广播域的就不行,无法捕捉到信息

Active Interception - port mirroring

Port Mirroring 也被称作 SPAN (Switch Port Analyser)

通过配置交换机,使其将一对port(或者整个VLAN)所交换的信息,拷贝一份传输到SPAN ports,进而加以分析利用

好的用途:网络诊断,入侵检测分析 恶意的用途:当攻击者可以通过物理连接这台交换机,他们就可以看到所有的传输流量

Active Interception: network tapping

Network tapping就是将原本直连的两台设备,连入TAP后,可以访问他们之间的通信,从而加以分析与利用

TAP = Traffic Access Point or Test Access Point 是物理层的一个设备

原本的连接方式:直连

连在Network TAP上之后,就可以用Wireshark来进行监听了

其具体的原理就是通过RJ45线上的引脚进行连接,Pins1 & Pins2 用于转发数据;Pins3 & Pins6 用于接收数据

  • TAP A 接口的Pins3 and Pins6 (接受数据)分别来与Host A & Host B 的Pins1 和 Pins2 (传输数据)相连接,使HostA传输给HostB的数据都由TAP A所接受

    • HostA_pins1 -> TapA_pins3 -> HostB_pins1
    • HostA_pins2 -> TapA_pins6 -> HostB_pins2
  • TAP B 接口的Pins3 and Pins6 (接受数据)分别来与Host A & Host B 的Pins3 和 Pins6(接收数据)相连接,使HostB传输给HostA的数据都由TAP B所接受

    • HostA_pins3 -> TapB_pins3 -> HostB_pins3
    • HostA_pins6 -> TapB_pins6 -> HostB_pins6

从而使TAP_A来接收所有发出的数据,TAP_B则会接收所有接收的数据,一切都会被捕捉

从而使所有AB之间的数据都可以被我们的分析软件所捕捉和利用

不过也可以使用Bypass mode绕过模式来停止复制转发

Vampire taps

所谓的“顺着”网线,如下图所示,直接用RJ-45的线实现TAP,海底电缆也可以如此TAP

WarXing

使用多种设备进行捕捉

Rouge Access Point

Access point一般是用于创造WLAN供其他设备进行无线连接的设备,一般用于企业,因为其覆盖面积较广,与家用的无线路由器不同的是,其一般没有什么管理功能(e.g., Access control),只是单纯为了连接

那么Route Access Point就是一个attacker创造的伪装成合法的WiFi来引诱用户连接,从而可以获取用户之间的通信。一般来说attacker会模仿WFi的SSID以及BSSID来进行伪造

Traffic Analysis

Data Acquisition

经过Sniffing之后,我们收集了大量的数据,接下来我们就需要分析与理解这些数据:

Who is talking to whom about what?

Libpcap:Library of packet capture

Libpcap 就是用来分析获取数据的API

虽然名字中带有packet,实际上是用来capture frames,包括所有的数据链路层到应用层的数据

Network sniffers可以分析捕捉的网络流量,并保存在 .pcap 文件当中

其核心是BPF:

BPF, Berkeley packet filter

之前存在的问题:我们之前提到过,sniffer在网卡开启了 promiscuous mode之后,会捕获所有的包,但是其中充斥着大量的我们不想要的数据包,那么接下来进行分析的时候,我们就会花费大量的CPU资源在这些不想要的数据包上

BPF解决了这个效率问题,通过:

  1. 在Buffer缓存指定的部分之前就进行过滤
  2. Filter可以由用户自定义
  3. 比之前的packet capture tool快了100倍
  • BPF的实现

    主要由两个部分:

    • Network tap 用来sniffer获取数据
    • Packet filter 用来对数据包进行提前过滤,越早越好

  • BPF filter model

    BPF的过滤器适用directed acyclic control flow graph

    通过上图我们可以看到filter是如何通过各种用户自定义的条件来进行筛选,从而决定是buffer还是丢弃

Tcpdump

大家耳熟能详的工具Tcpdump就是基于BPF来进行开发的,其提供了强大的功能来进行数据包分析

Wireshark

Wireshark则提供了更加利于使用的GUI界面

Traffic analysis

有三种traffic analysis的方法

  • Protocol analysis: 分析数据包中的协议信息
  • Packet analysis: 综合分析数据包中的多层协议
  • Flow analysis: 分析一系列连贯的数据包:Flow
  • Protocol analysis

    我们为什么要进行协议分析:

    1. 了解数据是如何传输的,以及其中协议需要设置的参数是如何的
    2. 解析其中的信息
  • Packet analysis 数据包分析

    我们为什么需要数据包分析

    • 通过一系列传输的数据包来观察协议
    • 使用数据包以及过滤器来识别感兴趣的数据包

    数据包分析需要做些什么?

    • 对于网络专家来说:

      • 检测网络是否健康
    • 对于安全专家来说:

      • 被动的进行漏洞测试(被动地等着漏洞或者攻击出现)
    • 对于攻击者来说

      • 被动的攻击工具

      • 窃取信息(密码)

    实现上和之前说的一样,我们分析的实质上是Frame,其作为链路层的数据封装形式,包含了所有向上的header,能够更好的反应更多的信息

    用于分析的技术 : - Pattern matching - 通过匹配特定参数的值来分析检测特定的数据包,例如 if source IP address = foo - Parsing protocol fields - 从不同layers的header中获取信息,例如Wireshark可以看到整一个IP header的信息 - Packet filtering - 通过protocol来筛选想要分析的数据,比如只查看ICMP包的信息

  • Flow analysis 流量分析

    流量分析顾名思义就是对于一组的数据包进行分析

    为什么我们要进行流量分析

    • 寻找特征流量(重复的通信)
    • 单独隔离可疑的活动并且丢弃不相关的信息
    • 分析更高层的协议,比如HTTP,SSL
    • 从流量提取整体数据(比如提取出整一个传输的二进制文件)

    在Wireshark中我们可以选择HTTP/UDP/TCP Stream进行分析

    其他流量分析技术

    1. 罗列通信以及流量

      • 可以根据特征信息对数据流进行分类提取
    2. 数据流导出

      • 导出之后在未来用作他用
    3. 文件以及数据挖掘

      • 从数据流分析中拼接挖掘出有用的文件以及信息
    4. List conversations and flows

      • List all conversations and/or flows within a packet capture or only specific flows based on their characteristics
    5. Export a flow

      • Isolate a flow or multiple flows, and store the flow(s) of interest to disk for further analysis
    6. File and data carving

      • Extract files or other data of interest from the reassembled flow
Licensed under CC BY-NC-SA 4.0
Last updated on May 28, 2022 00:22 +0100
comments powered by Disqus
Cogito, ergo sum
Built with Hugo
Theme Stack designed by Jimmy