网络流量分析(NTA)可以被描述为检查网络流量的行为,以表征所使用的公共端口和协议,为我们的环境建立基线,监控和应对威胁,并确保对我们组织的网络有最大可能的了解。

备忘单

请记住,除非您使用 root,否则执行任何需要绑定网络接口或将其设置为混杂模式的应用程序都需要权限。sudo

无机连接信息

  • 目标 IP == 10.129.43.4

Tcpdump

命令 描述
tcpdump --version 打印 tcpdump 和 libpcap 版本字符串,然后退出。
tcpdump -h 打印帮助和使用信息。
tcpdump -D 打印 tcpdump 可以从中捕获的可用网络接口的列表。
tcpdump -i (interface name or #) 执行 tcpdump 并利用指定的要捕获的接口。
tcpdump -i (int) -w file.pcap 在指定的接口上运行捕获并将输出写入文件。
tcpdump -r file.pcap TCPDump 将从指定的文件中读取输出。
tcpdump -r/-w file.pcap -l | grep 'string' TCPDump 将利用来自实时捕获或文件的捕获流量,并将标准输出设置为行缓冲。然后,我们可以利用管道 (|) 将该输出发送到其他工具(如 grep)以查找字符串或特定模式。
tcpdump -i (int) host (ip) TCPDump 将在 (int) 指定的接口上启动捕获,并且仅捕获源自或发往 之后指定的 IP 地址或主机名的流量。host
tcpdump -i (int) port (#) 将筛选捕获中来自或发往端口 (#) 的任何内容,并丢弃其余内容。
tcpdump -i (int) proto (#) 将筛选捕获以查找与 (#) 匹配的任何协议流量。例如,(6) 将过滤任何 TCP 流量并丢弃其余流量。
tcpdump -i (int) (proto name) 将利用协议公用名来过滤捕获的流量。以TCP/UDP/ICMP为例。

Tcpdump 通用开关和过滤器

开关/滤波器 描述
D 将显示可从中捕获的任何接口。
i 选择要从中捕获的接口。例如 -i eth0
n 不要解析主机名。
nn 不要解析主机名或已知端口。
e 将获取以太网标头以及上层数据。
X 以十六进制和 ASCII 显示数据包的内容。
XX 与 X 相同,但也会指定以太网标头。(如使用 Xe)
v, vv, vvv 增加显示和保存的输出的详细程度。
c 获取特定数量的数据包,然后退出程序。
s 定义要抓取的数据包量。
S 将捕获显示中的相对序列号更改为绝对序列号。(13248765839而不是 101)
q 打印更少的协议信息。
r file.pcap 从文件中读取。
w file.pcap 写入文件
host 主机将过滤可见流量以显示涉及指定主机的任何内容。双向
src / dest src并且是修饰符。我们可以使用它们来指定源或目标主机或端口。dest
net net将向我们显示来自或发往指定网络的任何流量。它使用/符号。
proto 将筛选特定的协议类型。(以ether,TCP,UDP和ICMP为例)
port port是双向的。它将显示将指定端口作为源或目标的任何流量。
portrange Portrange允许我们指定端口范围。(0-1024)
less / greater "< >" less并可用于查找特定大小的数据包或协议选项。greater
and / && and &&可用于将两个不同的筛选器连接在一起。例如,SRC 主机和端口。
or or或者允许在两个条件中的任何一个上进行匹配。它不必同时满足两者。这可能很棘手。
not not是一个修饰符,表示除 x 以外的任何内容。例如,不是 UDP。

沙克

命令 描述
tshark -h 打印帮助菜单。
tshark -D 列出要从中捕获的可用接口。
tshark -i (int) 在所选接口上捕获。将 (int) 替换为接口名称或编号。
tshark -i eth0 -f "host (ip)" 使用 tshark 时应用带有 (-f) 的过滤器以查找特定主机
D 将显示可从中捕获然后退出的任何接口。
L 将列出您可以从中捕获然后退出的链接层介质。(以以太网为例)
i 选择要从中捕获的接口。(-i eth0)
f libpcap 语法中的数据包过滤器。在捕获期间使用。
c 获取特定数量的数据包,然后退出程序。定义停止条件。
a 定义自动停止条件。它可以是在持续时间、特定文件大小或一定数量的数据包之后。
r (pcap-file) 从文件中读取。
W (pcap-file) 使用 pcapng 格式写入文件。
P 写入文件时将打印数据包摘要 (-W)
x 会将十六进制和 ASCII 输出添加到捕获中。
h 查看帮助菜单

线鲨

捕获筛选器 描述
host x.x.x.x 仅捕获与特定主机相关的流量
net x.x.x.x/24 捕获进出特定网络的流量(使用斜杠表示法指定掩码)
src/dst net x.x.x.x/24 使用 src 或 dst 网络将仅捕获来自指定网络或发往目标网络的流量来源
port # 将过滤掉除您指定的端口之外的所有流量
not 将捕获除指定变量之外的所有内容。前任。not port 80
and AND 将连接您指定的端口。前任。host 192.168.1.1 and port 80
portrange x-x 端口范围将仅从范围内的所有端口获取流量
ip / ether / tcp 这些过滤器将仅从指定的协议标头中获取流量。
broadcast / multicast / unicast 获取特定类型的流量。一对一、一对多或一对全部。
显示筛选器 描述
ip.addr == x.x.x.x 仅捕获与特定主机相关的流量。这是一个 OR 语句。
ip.addr == x.x.x.x/24 捕获与特定网络相关的流量。这是一个 OR 语句。
ip.src/dst == x.x.x.x 捕获进出特定主机的流量。
dns / tcp / ftp / arp / ip 按特定协议过滤流量。还有更多选择。
tcp.port == x 按特定 TCP 端口进行筛选。
src.port / dst.port ==x 将捕获除指定端口之外的所有内容。
and / or / not AND 将连接,OR 将找到两个选项中的任何一个,NOT 将排除您的输入选项。
tcp.stream eq # 允许我们跟踪捕获整个流的 tcp 会话。将 (#) 替换为要重新组合的会话。
http 将过滤与 http 协议匹配的任何流量。
http && image-jfif 此过滤器将显示带有 jpeg 图像文件的任何数据包。
ftp FTP 协议的筛选器。
ftp.request.command 将过滤通过 ftp 控制通道发送的任何控制命令。
ftp-data 将显示通过 ftp 传输的任何对象。

杂项命令

命令 描述
sudo * Sudo 将运行以提升的权限继续执行的命令。
which (application) 利用 来确定主机上是否安装了(应用程序)。将应用程序替换为您要查找的内容。前任。which tcpdump
sudo apt install (application) 使用提升的权限安装应用程序包(如果主机上不存在应用程序包)。前任。sudo apt install wireshark
man (application) 显示应用程序的手册页。前任。。man tcpdump

Common Traffic Analysis Tools

Tool Description
tcpdump tcpdump is a command-line utility that, with the aid of LibPcap, captures and interprets network traffic from a network interface or capture file.
Tshark TShark is a network packet analyzer much like TCPDump. It will capture packets from a live network or read and decode from a file. It is the command-line variant of Wireshark.
Wireshark Wireshark is a graphical network traffic analyzer. It captures and decodes frames off the wire and allows for an in-depth look into the environment. It can run many different dissectors against the traffic to characterize the protocols and applications and provide insight into what is happening.
NGrep NGrep is a pattern-matching tool built to serve a similar function as grep for Linux distributions. The big difference is that it works with network traffic packets. NGrep understands how to read live traffic or traffic from a PCAP file and utilize regex expressions and BPF syntax. This tool shines best when used to debug traffic from protocols like HTTP and FTP.
tcpick tcpick is a command-line packet sniffer that specializes in tracking and reassembling TCP streams. The functionality to read a stream and reassemble it back to a file with tcpick is excellent.
Network Taps Taps (Gigamon, Niagra-taps) are devices capable of taking copies of network traffic and sending them to another place for analysis. These can be in-line or out of band. They can actively capture and analyze the traffic directly or passively by putting the original packet back on the wire as if nothing had changed.
Networking Span Ports Span Ports are a way to copy frames from layer two or three networking devices during egress or ingress processing and send them to a collection point. Often a port is mirrored to send those copies to a log server.
Elastic Stack The Elastic Stack is a culmination of tools that can take data from many sources, ingest the data, and visualize it, to enable searching and analysis of it.
SIEMS SIEMS (such as Splunk) are a central point in which data is analyzed and visualized. Alerting, forensic analysis, and day-to-day checks against the traffic are all use cases for a SIEM.

OSI / TCP-IP Models

image

在整个模块中,我们将研究许多不同的协议数据单元(PDU),因此需要对其在理论上和线路上的表现进行功能性理解。PDU是由控制信息和从OSI模型的每一层封装的数据组成的数据包。下面的分组显示两个模型中的层如何与PDU匹配。

PDU Example

image

在检查PDU时,我们需要牢记封装的概念。当我们的数据在协议栈中向下移动时,每一层都会将前一层的数据封装在一个新的气泡中,我们称之为封装。该气泡将该层的必要信息添加到PDU的报头中。这些信息可能因级别而异,但它包括前一层所持有的内容、操作标志、协商通信所需的任何选项、源和目标IP地址、端口、传输以及应用层协议。

PDU Packet Breakdown

image

上图显示了一个PDU的组成,与Wireshark的“数据包详细信息”窗格中的数据包分组并排。请注意,当我们在Wireshark中看到突破时,它的顺序是相反的。Wireshark以相反的方式向我们显示PDU,因为它的顺序是未封装的。