以下为涅普计划的课程笔记,建议搭配课程视频理解。
流量分析:
利用流量分析工具,抓取网络请求中的各种流量数据包,
分析其中的信息,并得到自己所需要的有用信息(如flag)。
0x00 课程视频
课程视频
0x01 所需工具
- Burp Suite
- Nmap
- Packet Tracer
- Wireshark
0x02 互联网五层模型
基本介绍:
实际上互联网应该是七层模型,但因为具体实现上大部分只实现了五层,所以这里只介绍五层模型。
这五层并不是层次关系,而是一种包含关系,
也就是说:物理层中包含了一个数据链路层、数据链路层包含了一个网络层,以此类推。
当信号传导对应层时,该层的信息就会被切去。
e.g.
当信息通过物理层传输完成后,其物理层的信息就会被切去,
这之后信息通过数据链路层,其数据链路层的信息就会被切去。
个人没有详细去了解以下部分(互联网五层模型),
只是大致写了课程中所讲到的内容。
但其知识点又较为复杂,
如需更深入了解可自行查阅相关资料。
物理层
物理层就是在现实世界中数据的传输方式。
其有很多传输方式,不同方式的原理不同。
比如:
- Wi-Fi无线通信——通过电磁波来进行传输。
- 千兆网线——通过其中八根金属芯进行传输。
- 百兆网线——通过其中四根金属芯进行传输。
物理层在传输到一个信息后,
会被计算机将其中的物理信号,调制解调成数据链路层的一个信号,
也就是一个以太网帧格式的信号。
数据链路层
在数据链路层中,每台设备都被分配了对应的且独一无二的MAC地址(物理地址)。
MAC地址:
每个网卡都有个独一无二的MAC地址,
当网卡被厂家生产出来的时候,就已经有一个确定的MAC地址。
以太网协议属于数据链路层,
其协议主要体现在以太帧上。
以太帧中的网络数据包分为两个主要地址:
一个是源地址的MAC地址,
一个是目的地址的MAC地址。
当某台计算机想给另外一台计算机发送消息时,
需要在以太帧头中指明发送方和接收方的MAC地址。
网络层
当我们计算机的网络较为大且复杂的时候,
我们使用简单的MAC地址并不能很好的管理网络。
因为MAC地址是和硬件绑定的,
因为假如我们更换了计算机设备,那么就需要重新配置网络的信息。
这个时候IP地址网络协议就诞生了。
在网络层中,每台设备都被分配了一个虚拟的且独一无二的IP地址(网络地址)。
IP地址与MAC地址的关系:
可以是一对多,也可以是多对一。
也就是说一个MAC地址可以分配给多个IP,
同一个IP也可以被多个网卡(MAC地址)所使用。
根据ARP协议,可以将物理地址和网络地址相互转换。
子网与网段的概念
通过与子网掩码的与运算,可以从逻辑上把一个大网络划分成一些小网络。
子网掩码:
是由一系列的1和0构成,通过将其同IP地址做“与”运算来指出一个IP地址的网络号是什么。
对于传统IP地址分类来说:
A类地址的子网掩码是255.0.0.0;
B类地址的子网掩码是255.255.0.0;
C类地址的子网掩码是255.255.255.0。
e.g.
将一个B类网络
166.111.0.0
划分为多个C类子网来用的话,
只要将其子网掩码设置为255.255.255.0即可。这样
166.111.1.1
和166.111.2.1
就分属于不同的网络了。
像这样,通过较长的子网掩码将一个网络划分为多个网络的方法就叫做划分子网。
一般来说,对于192.168.1.x
与192.168.2.x
,其属于不同的网段,
要通过路由器,使得不同网段能相互访问。
传输层
在网络层的基础上,我们完成了数据通过IP地址的传送,
但是我们仍然要确保数据传输的可靠性。
这里便产生了许多协议,如:
- UDP协议
- TCP协议
UDP协议
是不可靠连接。
因为不能确定对方是否收到数据包。
QQ通讯使用的OICQ协议,也是基于UDP协议。
TCP协议
要点为三次握手和四次挥手。
总览图:
三次握手
流程:
- SYN
客户端向服务端发送一个请求连接包,
标识符为SYN J。 - SYN, ACK
服务端收到请求连接包,并对SYN J进行确认,
然后发送一个回复包,标识符为SYN K, ACK J+1。 - ACK
客户端向服务端发一个确认收到回复包,
标识符为ACK K+1
抓包如图:
四次挥手
流程:
- FIN M
- ACK M+1
- FIN N
- ACK N+1
应用层
基本协议:
- HTTP
- SSH
- SFTP
都是基于UDP或TCP等传输层的协议来实现的。
HTTP报文
请求报文:
响应报文:
HTTP与HTTPS协议区别
HTTP是未加密的,可以直接被Wireshark截获;
而HTTPS是加密的,请求的路径和内容是不能被直接截获的。
将这些加密的协议统一称为"TLS"或"SSL"加密协议。
0x03 流量分析工具
Wireshark
用于流量数据包的抓包、记录、分析等。
开始界面
其中显示的是捕获到的各种本地接口。
- 以太网:表示的是用网线进行上网的物理接口。
- WLAN:表示的是用Wi-Fi进行上网的物理接口。
- VMware:虚拟机上网使用的虚拟接口。
- VPN:使用VPN上网的网络接口。
- USBPacp:USB的接口。
当同时连接以太网和WLAN时,
决定使用哪个接口的是跃点数。
跃点数越低,优先级越高。
对于计算机来说,默认情况下:
物理网口往往比无限网口跃点数低。
所以默认使用以太网接口。
打开网络接口
可以在这里截获这个接口上传输的流量包。
例一——HTTP
以国家企业信用信息公示系统网页为例:
刚访问网站时,我们会向网站服务器发送一个GET
类型的request数据包,
作用是得到刚进入网站的首页index.html
这个网页文本。
根据这个request数据包,网站服务器会返回一个response数据包,
当前这个请求的response数据,包就是网页的内容。
使用浏览器访问页面后,发现其使用的是不安全的HTTP协议。
因此用过滤器过滤出HTTP,然后寻找GET /index.html
。
这个数据包就是网络中负责请求的request数据包。
其必然对应于一个返回的response数据包,
查看下方"Hypertext Transfer Protocol"中的"Response in frame",
可以得到返回的数据包在所截获数据包中的编号"No."。(双击即可跳转到该response数据包)
e.g.
上面GET的request数据包中,
发现在编号No.174处。即对应这一数据包
查看response数据包中的"Line-based text data: text/html",
可以看到相同的HTML内容。
例二——HTTPS
以国家税务总局四川省税务局网页为例:
可以发现其使用的是安全的HTTPS协议。
此时单纯过滤HTTP数据包,
无论怎么刷新网页,都是无法过滤出这个网站所产生的数据包的。
此时数据包采用了TLS协议加密,
所以我们无法直接截获。
数据导出
可以使用如下方法导出Wireshark中所有的HTTP包的数据。
- 选择"File - Export Objects - HTTP…"
- 也可以在某个TCP包上面选择"右键 - Follow - TCP Stream",从而获取一整个TCP连接的数据。
保存
点击菜单栏中的“文件 - 保存”,
能将所有截获的流量包,保存为pcapng格式文件。
以供今后分析使用。
CTF应用
- 给个流量包,从中找到flag。
简单的题目可以直接字符串查找flag
。
Cisco Packet Tracer
网络拓扑模拟的软件。
网络连线
- 不同设备用直连线(实线)
- 相同设备用交叉线(虚线)
当两台计算机直接连接通信的时候,发挥主要作用的是物理层。
计算机将信号发送到网线上,另外一台计算机负责接收。
网络设备
集线器 Hub
应用于物理层。
集线器对接收到的信号进行再生整形放大,以扩大网络的传输距离,
同时将所有结点集中在以它为中心的节点上。
采取广播式发送,而不是针对式发送。
会将数据包发送至与集线器相连的所有节点。
相当于多台计算机同时连接在一根导线上。
优点:
- 便宜。
缺陷:
- 不安全。
如果有黑客成功将自己电脑接线于集线器上,
那么其就能监听截获其他设备所发送给另外设备的数据包。 - 可能信号冲突。
交换机 Switch
应用于数据链路层。
利用以太网协议,
主要体现在以太帧上。
交换机在接收到信号之后,
会告知交换机要发送的设备的网卡的MAC地址是多少。
于是交换机会根据这个地址正确将信号转发至某一端口(即网线),
从而避免了网络内所有计算机都能收到信号。
起到了信号隔离的作用,也成为隔离冲突域。
同时支持分别发送和广播式发送。
将目的地址写为0.0.0.0,便能广播式发送。
优点:
- 安全性高。
缺点:
- 如果网卡坏了,MAC地址需要更改,则不能用之前的MAC地址。
需要刷新记录的MAC表。
路由器
路由器能使设备之间跨网段访问。
相当于一个网关。
如图所示网络
两个网段分别是192.168.0.0/24
和192.168.1.0/24
。
网关则是路由器连接每个网段的接口。
e.g.
192.168.0.2
想与192.168.1.4
跨网段通信,
则需要把消息转发给路由器上的网关,
路由器再根据IP地址转发。
Nmap/NetCat
有关这两个工具师傅并未很详细讲到具体作用和与CTF有关联系,
于是个人写的很简略,并且可能存在错误。
但稍微查询感觉这两个工具作用很大,
需要深入了解可以自我查询相关资料。
基于TCP协议的监听或发送数据的命令。
NetCat用netcat
或nc
;
Nmap用ncat
。
两者使用方法差不多。
输入ncat (地址) (端口)
,
可以连接上该地址,并发送简单的TCP数据包。
参数
-lk (端口)
:监听某一端口。--chat
:在服务器中启动聊天服务。e.g.
ncat -lk (端口) --chat
。
0x04 课堂练习与个人解析
1. 上课认真听了吗
题目描述
flag在三种不同的流量中。
附件:
udphttptcp.pcapng
本题所需分析的流量包
解题方法
三种流量分别对应今天所学的TCP、HTTP、UDP。
下载流量包后用Wireshark打开。
首先尝试直接搜索关键字flag{
。
按Ctrl+F打开搜索栏,
第一个选项栏选择“分组字节流”,
有关第一个选项栏中三个选项的解释:
- 分组列表:代表的是最上面的窗口,在Info栏中进行搜索。
- 分组详细:代表的是中间的窗口。
- 分组字节流:代表的是最下面的窗口,在十六进制文件中搜索。 第三个选项栏选择“字符串”,
搜索框中填写flag{
。
一直搜索,会分别搜索到三个flag。
UDP帧:
flag内容:
TCP帧:
flag内容:
HTTP帧:
flag内容:
之前提到过,HTTP协议也是基于TCP协议实现的,
所以这里现实的类别也是TCP协议。在详细窗口中,可以发现"Reassembled PDU in frame: …“这样一个超链接字段,
双击后,便可以找到最开始的HTTP数据包。
对这三个flag排列组合测试,得到最终的flag:flag{25434026}
。
2. 我是间谍
题目描述
我是间谍,我在干什么呢?
附件:
imaspy.exe
需要分析的“恶意软件”,分析其发送流量的数据包。
解题方法
首先需要注意的是:
对于恶意软件,我们应该在一个隔离的环境中运行,
也就是应该在一台虚拟机或沙盒中运行该软件。
【虽然这道题中的程序并不是真的恶意程序……
并且由于宿主机中流量很多,不好轻易找出恶意软件的流量,
所以更应该在虚拟机中运行。
但这里还是直接在宿主机中运行并抓取流量的。
虽然流量很多不好直接找到,
但我们仍可以用万能的搜索。
启动Wireshark监听并运行程序。
待程序执行完成并关闭窗口后,
跟上道题一样,直接在分组字节流中搜索字符串flag{
。
可以直接得到flag。
这里只写了课堂上的两道习题。
有关课后的两道习题,在视频最后部分师傅有所解答,
可以去视频中查看。
0x05 写在最后
因为个人水平原因,这篇笔记可能写的很简略不清晰或存在很多错误,请见谅!……
这部分有点不知道怎么做笔记……
只可意会不可言传的那种感觉_(:з」∠)_……
而且很多知识(比如网络方面)如果要真去弄懂,又要学很多方面的东西……
想了好久才最终把这个整理完成orzzz……
写得好乱【……
以上大部分为个人总结,由于这里也刚入门,很多地方可能存在错误。如发现错误请及时指出,谢谢!……
由于目前博客不支持附件上传下载,所以如果需要上述中的文件,可以联系我分享文件【联系方式在关于页面中有……
如对以上内容存在疑惑不解的地方,也可以询问我。如果我了解的话会尽力解答;不了解的话可以一起努力弄明白hhh……
感谢fjh1997师傅的辛勤付出!……
以上……