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解决了这个效率问题,通过:
- 在Buffer缓存指定的部分之前就进行过滤
- Filter可以由用户自定义
- 比之前的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
我们为什么要进行协议分析:
- 了解数据是如何传输的,以及其中协议需要设置的参数是如何的
- 解析其中的信息
-
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进行分析
其他流量分析技术
-
罗列通信以及流量
- 可以根据特征信息对数据流进行分类提取
-
数据流导出
- 导出之后在未来用作他用
-
文件以及数据挖掘
- 从数据流分析中拼接挖掘出有用的文件以及信息
-
List conversations and flows
- List all conversations and/or flows within a packet capture or only specific flows based on their characteristics
-
Export a flow
- Isolate a flow or multiple flows, and store the flow(s) of interest to disk for further analysis
-
File and data carving
- Extract files or other data of interest from the reassembled flow