01.网络转发图
集线器(基本没了)
计算机A发送数据,所有计算机都可以接收到
计算机A发送给数据计算机B时,作为计算机C是怎么知道不是发给自己呢?
引入了MAC地址
交换机
通过mac找到计算机
路由器
02.数据包的封包与解包
一.封包
对计算机来说,如何把一个数据打包成数据包
-
应用层
-
把文字图片视频音频等等转成二进制,就成为了数据包里核心的数据内容
-
-
传输层(数据段)
-
选择一种传输协议TCP协议,标识是端口号(使用端口来标识哪个程序)
-
-
网络层(数据包)
-
写入发送方的IP地址与接收方的IP地址
-
-
数据链路层(数据帧)
-
写入发送方的MAC地址与接收方的MAC地址
-
-
物理层
-
把二进制数据转换成光电信号
-
二.拆包
如何把一个数据包拆成计算机数据
三.交换机参与
-
交换机会接收到A发送过来的流量
-
由物理层转成数据帧,交换机是可以看到MAC头部,其他的内容交换机是看不到,查看源MAC地址,维护自身 的MAC表,如果源MAC地址不在自身的MAC表,就把源MAC地址与接收的接口编号写入自身MAC表
-
如果在自身的MAC表里,就查看目的MAC地址,查看目的MAC地址,比对自身的MAC表
-
如果目的MAC地址在自身的MAC表里,进行对应的接口单播转发出去
-
如果目的MAC地址不在自身的MAC表里,会进行广播发送出去
-
计算机B就会收到光电信号,计算机B就会进行拆包
四.路由器参与
-
计算机A发送数据给计算机B
-
计算机A进行应用层—->传输层—->网络层—->数据链路层—->物理层封包
-
交换机会维护自身MAC表进行对应的接口转发,数据给到路由器
-
路由器把光电信号转成数据帧,查看目的MAC是不是自己
-
如果不是,就丢弃数据帧
-
如果是,会把MAC头拆掉,能看到IP头里的目的IP地址,比对自身的路由表
-
-
如果路由表上有目的IP地址及对应的接口,先重新封装MAC头,转成光电信号转发出去
-
如果路由表上没有目的IP地址,会回送一个ICMP报文,目标不可达,给到主机A,主机A就知道
-
路由表可以手动添加,让路由器自动学习
总结:跨网段发送数据,不变的是IP地址,会变化的是MAC地址
03.抓包工具
wireshark抓包工具
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
科莱网络分析系统
科来网络全流量安全分析系统(TSA),是基于网络全流量分析技术,旁路采集、分析和存储所有网络流量,通过威胁情报系统检测已知威胁,通过回溯分析数据包特征、异常网络行为,发现潜伏已久的高级未知攻击。TSA具备多维的数据分析及深度挖掘能力,能够实现数据包级的追踪取证。网络全流量分析技术是发现APT网络攻击的重要技术手段,帮助用户建立自适应网络安全架构
04.数据链路层.以太网协议
01.概述
以太网协议是什么?
-
以太网协议(Ethernet Protocol)是一种广泛应用于局域网(LAN)和广域网(WAN)的计算机网络通信协议。它是一种基于共享介质的局域网技术,最早由Xerox、Intel和Digital Equipment Corporation(DEC)于1970年代开发,并在1980年代初由IEEE标准化为IEEE 802.3。以太网根据最大传输速率的不同可以分为标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)、千兆以太网 (1000Mbit/s)和万兆以太网(10Gbit/s)。
02.以太网协议报文
Destination——->目的MAC地址,占六字节 |
---|
Source: ——->源MAC地址,占六字节 |
type:——->上层协议类型 |
05.网络层.arp协议
01.概述
什么是arp协议?
02.windows系统查看命令
-
arp -a
查看本机上MAC地址与IP地址对应的关系
03.arp报文分析
Hardware type: Ethernet (1) ——>硬件类型:以太网 |
---|
Protocol type: IPv4 (0x0800) ———>协议类型:IPv4 |
Hardware size: 6 ———>硬件大小:6 |
Protocol size: 4 ———>协议大小:4 |
Opcode: request (1) /reply(2) ———>操作码:1是请求 2是响应 |
Sender MAC address: Chongqin_0f:92:a7 (5c:3a:45:0f:92:a7)———>源mac地址 |
Sender IP address: 192.168.2.48———>源IP地址:192.168.2.48 |
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)———>目的mac地址 |
Target IP address: 192.168.2.1 ———>目的IP地址:是你写的那个网关IP |
04.arp攻击
原理
-
某台主机访问网址,发现访问的网址与自己的IP不是一个网段,会把数据交给路由器,但是自身的mac表没有路由器mac地址
-
于是就会发送arp向交换机请求路由器的mac地址
-
交换机会以广播的形式进行转发,此时同网段的黑客也能收到arp请求
-
路由器进行arp响应,与此同时,黑客伪造arp响应数据包多次响应
-
主机收到路由器的arp响应,记录在自身的mac表里,然后又收到黑客的arp响应,会把之前的路由器响应覆盖掉,最终主机里的mac表记录内容路由器对应的mac地址是假mac地址,但是主机不知道,后续会把该MAC地址作为以太网协议的mac地址进行封包,由交换机进行转发给黑客电脑上
-
就是arp攻击的原理
实施arp攻击
实验准备
一台win10充当靶机 win10 ip地址:192.168.159.135
一台kali充当攻击主机 kali ip地址:192.168.159.132 mac地址:00:0c:29:32:36:06
开始操作
kali上安装攻击模块dsniff
一般需要更新源
1.安装:apt-get update 2.安装:apt-get install libc6-dev 3.安装:apt-get install dsniff
开始使用
arpspoof [-i interface]选择接口 [-c own|host|both] [-t target]攻击ip [-r] host 主机ip(交换机) arpspoof -i eth0 -t 192.168.159.135 192.168.159.2
查看攻击前后网关与mac地址对应关系
05.arp欺骗
原理
通过转发,arp欺骗可以让靶机无任何异常并且靶机所有的流量都要经过kali
实施arp欺骗
kali上开启转发功能
echo 1 >> /proc/sys/net/ipv4/ip_forward
实施 ARP 欺骗
arpspoof -i eth0 -t 192.168.159.135 192.168.159.2#可实施正向和反向两种欺骗方式,主机在前网关在后,主机在后网关在前
使用 driftnet 工具
-
在 kali 上安装 driftnet 工具对 win 10 主机访问外网流量捕获图像并显示
apt-get -y install driftnet
-
在 kali 上检测 win 10 访问的图片并显示(使用 win 10 访问网站)
driftnet -i eth0
06.arp攻击与欺骗研判
-
1.最明显的特征就是无法访问外界网络(攻击)
-
2.网络不好,慢等现象
-
3.使用命令
tracert 某地址
下一跳路由一定是网关,如果不是就遭受arp欺骗 -
4.使用命令
arp -a
查看网关的mac与局域网中的某台主机mac一致
07.arp攻击与欺骗防御
1.手动添加IP与MAC对应关系到mac表里
arp -s IP地址 mac地址netsh interface ipv4 set neighbors 接口名称 IP地址 mac地址
2.防火墙软件
-
路由器自带的安全设置项
-
360arp防火墙
06网络层.ip协议
01.概述
-
IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
-
IP规范了网络层的标准
-
IP:32位二进制组成,每8位二进制使用
.
隔开,最终以十进制的方式表示,点分十进制,如192.168.2.44
-
通过IP地址不能单独存在,需要配置子网掩码一起使用,子网掩码也是32位二进制组成,点分十进制表示,如
255.255.255.0
,Linux里使用/24
表示,子网掩码的1对应的IP位置就是网络位,0对应的就是主机位 -
网络位:区分不同的网段(子网),主机位:具体分配给哪个主机
-
以太网数据帧里上层数据最大传输单元是1500字节,如果网络层的数据(包含IP头)超过了1500字节,网络层会自动进行分片,会在接收端进行组合,传输层也会进行分段操作,两种都是对数据进行拆分,只是应用的场合不一样
02.ip报文
0100 .... = Version: 4 当前IP协议的版本号是4,还有一种是IPv6 |
---|
.... 0101 = Header Length: 20 bytes (5) 头部长度20字节 |
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) 服务质量,做流量控制,标记优先级或阻塞,一般不使用这个字段 |
Total Length: 1500 总长度1500字节,包含有IP头20字节 |
Identification: 0xb9c8 (47560) id号,用来鉴别是否分片,如果分片,下个包该值是一样 |
Flags: 0x20b9, More fragments/Don't fragment 是否进行分片 |
Fragment offset: 0 偏移量(通俗说就是每个包的起始值,这样在接收端才好把所有的包进行组合) |
Time to live: 64 生命周期(TTL),路过一个路由器TTL就会减1,Windows默认128,Linux默认64 |
netsh interface ipv4 show global 查看当前系统的默认TTL值 |
netsh interface ipv4 set global defaultcurhoplimit = 1 修改默认TTL值为1 |
Protocol: ICMP (1) 上层协议,icmp |
Header checksum: 0xb1d6 [validation disabled] 头部检验:会校验IP头部数据,上层数据是不检验 |
[Header checksum status: Unverified] 校验状态 |
Source: 192.168.159.135 源IP地址 |
Destination: 192.168.159.130 目标IP地址 |
07.网络层.icmp协议
01.概述
Windows中使用ping命令底层其实就是发送ICMP协议包
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,作用:用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP协议传送时是带有数据,只是这个数据无意义
02.icmp协议报文字段
Type: 8 (Echo (ping) request) Code: 0 type+code组合起来代表了不同的含义 Checksum: 0x4d4a [correct] 校验Identifier (BE): 1 (0x0001)Identifier (LE): 256 (0x0100) Sequence number (BE): 17 (0x0011) Sequence number (LE): 4352 (0x1100) 以上4个值在icmp响应报文中原封不动带回来data 传输的数据,无任意实际意义
03.响应类型
type | code | 表示类型 |
---|---|---|
0 | 0 | ping回显(回显应答) |
3 | 0 | 网络不可达 |
3 | 1 | 主机不可达 |
3 | 2 | 协议不可达 |
3 | 3 | 端口不可达 |
5 | 0 | 网络重定向 |
5 | 1 | 主机重定向 |
8 | 0 | 回显请求 |
04.icmp泛洪攻击
原理
短时间内向目标系统发送大量的虚假请求
实施icmp泛洪攻击
实验准备
1.1台windows server (目标主机,192.168.159.130)
2.1台kali(攻击主机)
kali需要运行命令
hping3 --flood -1 -d 1500 192.168.159.130 --flood:泛洪攻击-1:icmp模式-d 1500:一个数据包的大小是1500字节
泛洪攻击的缺陷:伤敌1千自损八百
防御手段
开启防火墙/包过滤防火墙,下一代防火墙
icmp重定向
1.主机A输入ping 192.168.1.1 2.主机A发现访问的IP与自己不是一个网段,所有会把数据交给路由器1处理 3.主机A发送arp请求路由器1的mac地址 4.路由器1相应arp请求,把自己的mac给主机A `` 5.主机A发送ICMP请求给路由器1 `` `` 6.路由器1发现路由器2比自己近,把ICMP请求转发给路由器2,同时发送一个ICMP重定向报文,告诉主机A,你需要把网关设置为路由器2 `` `` 7.路由器2接收到icmp请求,发送arp请求,请求主机A和主机B的mac地址 `` `` 8.收到相应后把icmp请求转发给主机B `` `` 9.主机B进行ICMP相应给路由器2 `` `` 10.路由器2把ICMP相应转发给主机A `` `` 后续主机A就会把主机的网关设置为路由器2的192.168.0.253IP,把数据交给路由器2处理,这就是icmp重定向目的 ``
05.icmp重定向攻击
原理
黑客发送icmp报文,冒充网关响应重定向,后续主机发送的信息,就会交给黑客。
实验操作
1.一台win server:作为靶机
2.一台kali:作为攻击者
kali安装netwox模块apt-get install -y netwox netwox 86 -g 伪造的网关IP(new gateway) -i 默认网关
06.ICMP攻击防御
-
防火墙工作在网络层,会对IP协议里的源IP,目的IP进行过滤
08.传输层.tcp协议
01.概述
TCP:传输控制协议,定义了传输层的标准,目的,选择传输层的端口,对整个数据进行差错校验
常见的端口
端口号:21 FTP:文件传输协议,用于上传和下载。 端口号:22 SSH:安全外壳协议,为网络或远程登陆会话等提供的安全协议。 端口号:23 Telnet:远程登陆协议,是常用的远程控制web服务器的方法。 端口号:25 SMTP:简单的邮件传输协议,可指定收信人的服务器。 端口号:69 TFTP:简单文件传输协议,进行简单/开销不大的文件传输。 端口号:80 HTTP:超文本传输,用于浏览网页。 ! 端口号:110 POP3:邮件协议,简化了用户操作,不需参与邮件的读取过程,可离线处理。 端口号:143 IMAP4 : 邮件协议,在线查看邮件。 端口号:161 SNMP:简单网络管理协议 端口号:443 HTTPS:加密的HTTP协议 。 ! 端口号:53 DNS:域名解析。 ! 端口号:3306 MySQL数据库。 端口号:3389 远程桌面协议。
02.三次握手,四次挥手
这个可以理解成:
客户:你好啊,我们连接吧
服务器:好的,那请你同意一下申请
客户:我同意你了,我们开始通话吧
大概意思是,
客户:你好,我们要说再见了
服务器:好的
服务器:我东西传完了,我们断开连接吧
客户:好的,结束连接
03.SYN泛洪攻击(tcp半连接泛洪攻击)
-
WIN10:靶机:192.168.159.135
-
kali:攻击者:192.168.159.132
-
nmap命令扫描该网段的主机开放的TCP端口
namp 192.168.159.0/24 nmap命令扫描该网段的主机开放的TCP端口 hping3 --flood -d 数据包大小 -c 数据包个数 --syn -p 目的端口 --rand-source随机生成攻击者信息 目标主机IP地址 hping3 --flood -d 1000 -syn --rand-source -p 443 192.168.159.135
04.TCP泛洪防御
09.传输层.udp协议
01.概念
用户数据报协议
udp是无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
02.tcp与udp的区别
-
连接上 TCP:先建立连接,在传数据,在断开连接 UDP:不会建立连接,直接传输数据
-
可靠性传输 TCP:可靠的 UDP:不可靠
-
传输方式 TCP:基于字节流 UDP:基于数据
-
适应场景 TCP:传输文件 UDP:视频会议
-
速度 TCP:慢 UDP:快
03.udp泛洪攻击
原理
大量的向目标主机发送UDP报文,目标主机会分配一定的资源处理这些报文(攻击者将UDP数据包发送到受害系统的端口,受害系统接收到数据包,确定shi是否有程序正在端口上等待。当它意识到没有应用程序在端口上等待时,生成一个目标不可达的ICMP数据包,发送到伪造的源地址),当资源不够用时,目标主机就无法处理正常的请求,从而拒绝服务
顺带一提,这种就是拒绝服务攻击简称DOS攻击
实施攻击
实验准备
1.靶机(win10)
2.攻击主机(kali)
hping3 --flood -p 500 --rand-source -2 192.168.159.135
04.udp泛洪防御
-
限制每秒解多少包
-
写一些路由策略将保丢掉
-
部署安全产品比如抗DDOS、防火墙、IPS等.....
10.应用层.http协议
01.概念
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
02.搭一个项目
01.win10安装xampp
02.开启Apache和MySQL
03.项目拖到对应路径
04.数据库注入语句
05.重启Apache和MySQL,项目部署完成
11.应用层.https协议
01.概述
-
是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL(TLS)
-
HTTP协议最开始的目的就是传输数据和共享资源,没有考虑安全
-
想要http传输的内容安全,就需要加密技术
02.加密算法
对称加密
-
目的:用来对明文加密
-
把明文通过密钥进行加密产生一个新的内容(密文)
-
把密文通过密钥进行解密产生的内容就是明文
-
常见商业的对称加密算法:AES,DES,国密(SM1,SM4,SM7)
-
优点:加解密速度快,缺点:密钥传输的过程中会泄露
应用常景:要求速度的加密通信,如vpn
非对称加密
-
目的:对明文加密
-
加密的密钥和解密的密钥不是同一个,是一对,称为公钥(公开)和私钥(自己保留)
-
常见的商业非对称加密算法:RSA,DSA,ECC,国密(SM2,SM9)
-
优点:安全性高 缺点:速度慢
应用场景:密钥交换,数字证书
摘要算法(数字签名)
-
目的:用来验证明文没有被人篡改
-
常见的摘要算法:hash(哈希),sha128,MD5
-
明文经过摘要算法加密后的密文是无法通过解密手段解出来的
应用场景:主要应用于各类完整性校验
03.tls加密https过程
-
客户机向服务器发送
Client Hello(客户机hello)客户机产生一个随机数发给服务器 radom客户机告诉服务器自己所支持的加密套件 Cipher Suites
-
服务器向客户机发送
Server Hello(服务器hello)服务器产生一个随机数发给客户机 radom根据客户机提供的加密套件选择一个安全性高的加密套件 Cipher SuiteCertificate(证书)服务器将自己的证书发给客户机:证书的签名算法和使用者的信息,使用者的公钥Server Key Exchange(服务器密钥交换)服务器开始进行密钥交换去生成对称密钥,会产生一个pubkey发给客户机(此时服务器还没有得出对称密钥)Server Hello Done(服务器hello结束)服务器告诉客户机握手报文结束
-
客户机向服务器发送
Client Key Exchange(客户机密钥交换)客户机开始进行密钥交换去生成对称密钥,会产生一个pubkey发给服务器Change Cipher Spec(改变密钥规范)根据服务器发来的pubkey生成了对称密钥从而可以改变密码规范Encrypted Handshake Message(加密握手消息)
-
服务器向客户机发送
Change Cipher Spec(改变密钥规范)收到客户机的pubkey之后生成了对称密钥从而可以改变密码规范Encrypted Handshake Message(加密握手消息)
-
开始传输加密报文
application data(应用程序数据)
12.应用层.dns协议
01.概述
-
DNS:域名解析协议,把域名解析成IP地址
说白话,就是ip太难记了,那么人们想到了可以用字母来代替ip进行访问,dns孕育而生
02.dns服务器的划分
-
域名服务器分类
-
根域
.
-
全球只有13台根域服务器
-
-
顶级域
-
.com 商业
-
.edu 教育
-
.org 公益组织..... 网龄多的话应该见过很多
-
-
二级域
-
有个人或者公司去申请 以知乎为例,及zhihu.com
-
-
主机域
-
www 万维网
-
ftp 文件
-
e-mail 邮箱
-
-
03.dns的解析过程
-
递归查询 客户机请求自己的首选DNS服务器,首选DNS服务器上有对应的域名记录信息,直接回应
-
迭代查询 首选DNS服务器上没有对应的域名记录信息,通过从上往下,请求根域服务器,请求顶级域域服务器,请求二级域服务器,最终找到对应的域名记录信息
04.浅浅的配个域名
05.dns的主从复制
01.让我们先在server-1和server-2上创建dns服务器
02.在server-2上新建辅助域
同时对主服务器进行设置
03.在server-1上进行主dns服务器授权
06.dns欺骗
原理
arp攻击,让目标主机认为黑客mac是DNS服务器的mac,黑客响应域名解析,发送一个恶意的IP回去,目标主机就会访问恶意主机上(恶意主机上会存在钓鱼网站,木马网站….)
07.dns欺骗防御手段
本质就是防御arp攻击
13.应用层.dhcp协议
01.概念
动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是 RFC 1541(已被 RFC 2131 取代)定义的标准协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。
02.报文类型
Discover Offer Request ACK
03.dhcp饿死攻击
原理
DHCP服务器收到discover报文时,会响应一个offer报文,该报文里携带一个可用IP地址,该IP地址不可在被其他主机使用,相当于是一个预定状态,当该网段里发送了大量的discover请求,会导致DHCP服务器把所有的可用IP变成预定状态,正常主机没有IP可用,这种攻击称为DHCP服务器饿死攻击
实施攻击
apt-get install yersinia 安装yersinia模块 需要把kali切换到和DHCP服务器一个网卡上 yersinia dhcp -interface eth0 -attack 1 实施欺骗
04.dhcp欺骗攻击
原理
没dhcp服务器响应(已经实施了饿死攻击),主机发送广播discover报文,黑客可以自己伪装dhcp服务器,位该局域网提供dhcp服务,(同时黑客主机可以开启路由转发模式,确保受害主机正常通讯)达到,窃取、破坏和瘫痪网络的目的。
实施欺骗
kali使用命令yersinia -I 打开面板 按任意键继续 按g键,鼠标没用了,移动键盘上下键,选择dhcp模式 按x键,移动光标选择编号为2号 配置相应的欺骗信息
14.应用层-ftp协议
01.概述
ftp是文件传输协议,使用tcp的20和21号端口
关于ftp传输过程
使用第三方软件serv-u搭建ftp服务器
访问ftp://192.168.159.130并抓包观察报文
被动数据传输模式
主动数据模式
将被动禁用掉就会使用主动传输模式
可以抓包看看
ftp爆破攻击
原理
ftp莫有密码策略,运用工具,直接一个一个试,随便爆破。
实施ftp爆破
hybra工具具体使用
hydra -L 用户库 -P 密码库 ftp服务器 kali实施爆破
15.应用层.邮件协议
01.概述
邮件:email
IMAP是Internet Message Access Protocol的缩写,顾名思义,主要提供的是通过Internet获取信息的一种协议。IMAP象POP那样提供了方便的邮件下载服务,让用户能进行离线阅读,但IMAP能完成的却远远不只这些。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。
POP的全称是Post Office Protocol,即邮局协议,用于电子邮件的接收,它使用TCP的110端口,常用的是第三版 ,所以简称为POP3。POP3仍采用Client/Server工作模式,。当客户机需要服务时,客户端的软件(OutlookExpress或FoxMail)将与POP3服务器建立TCP连接,此后要经过POP3协议的三种工作状态,首先是认证过程,确认客户机提供的用户名和密码,在认证通过后便转入处理状态,在此状态下用户可收取自己的邮件或做邮件的删除,在完成响应的操作后客户机便发出quit命令,此后便进入更新状态,将做删除标记的邮件从服务器端删除掉。到此为止整个POP过程完成。
SMTP称为简单Mail传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。SMTP的一个重要特点是它能够在传送中接力传送邮件,即邮 件可以通过不同网络上的主机接力式传送。工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。
:用于在线查看邮件的是(IMAP )协议,用于发送邮件的是(SMTP )协议,用于下载邮件的是(POP )协议