引入
appa 阿帕
...(相关计算机大学)
A:001100110011
B:111111111111
APAANET 阿帕网
...
INTERNET 英特网
协议(约定):对数字信号以一种统一格式(长度和含义)来解读
111001|001101|0100110011|001111000111000011001
网络协议:为了解决特定需求,提出一系列对比特位的约定
进制
二进制:01
十进制:0-9
进制与信息量
表示数值:
0000 0000 ->0
表示字母:
0000 0000 ->A
...
hello?
多种协议的集合:协议栈、协议簇
协议栈:OSI、tcp/ip、osx、ipx...
协议栈可能由不同的组织、机构、企业提出
生活:完成某个特定的动作,需要有众多节点共同协作
网络:完成某个服务,需要有众多的协议共同协作、提供保障
网络模型:服务端与客户端
微信1<>腾讯即时通讯服务器<>微信2
浏览器<>百度web服务器(nginx)
windows ssh<远程登录>kali sshd
...
协议栈:分层思想
网络:将计算机(电脑、手机、路由器、交换机、防火墙、IPS/IDS、平板、智能手表)节点连接起来
网络:通信子网+资源子网
网络规模:局域网、城域网、广域网
数据包封装与解封装
OSI七层结构
每层均屏蔽下层通信细节,向上输出统一接口
应用层:
应用程序(人机交互接口解决人机交互问题)
http、https、smtp、pop3、QQ、OICQ、p2p、ssh、rdp、telnet、vnc...
表示层:
定义:编码
“你好”、"hello"、“こんにちは”... 通过对应的转换方式,转换为0和1
进制:表达同样数值的情况下,进制的不同只是数学叙述方式(表示方式)不同,数值大小相同!
编码:ASCII
eg:A:65(十)-->0100 0001(二)
GBK:
八:1643(十)-->011001101011(二)
utf-8(万国码)
加解密
编解码
压缩解压
微信、QQ、浏览器、SSH、p2p
会话层
一个程序标识着多个会话
半双工、单工和全双工
一根网线(双绞线)有八根支线
定义:会话(端口和端口间通过网络连接起来)
传输层
定义:端口、可靠性
可靠性TCP
UDP
网络层
定义:路由(查表转发)、网路、IP地址(点分十进制,转二进制后32位)、路由选择算法(ospf、eigrp、isis、bgp...)
路由器:连接不同的网络(重点:不同)
路由表(路牌):说明要去的方向,接下来往哪走
路牌:目的:北京 当前:广州 下一站:江西赣州
路由:目的地址 当前地址 下一跳地址
数据链路层(两个节点之间的事情)
定义:mac地址(十六进制、转二进制后48位),是网卡出厂的唯一标识。前一半是前缀,标识厂商
交换机:连接不同设备,形成一个网络(重点:一个)
物理层
定义:物理设备、网卡、型号、信号、介质、材质
注意
七层所有打包工作均在数据从发送者网卡发送出去之前
总结
下四层完成通信子网功能,上三层完成资源子网功能
七层->一层:封装
一层->七层:解封装
TCP/IP协议栈
wireshark
可视化抓包工具:wireshark
命令行抓包工具:tcpdump
场景:数据包分析、流量分析 1.确认网卡 2.产生流量(发生指定网络动作) 3.分析流量 所有的抓包都是奔着网络行为去的 作业:wireshark抓取浏览器访问百度时的数据包
Ethernet协议
学习协议:对应长度的比特位,用特定的数值,表示官方(RFC)约定的功能或内容
-
RFC1024、RFC894
-
报文格式
流量分析(流量特征、魔改):从有序的众多数据包中,阅读、提炼、抽象网络动作特征
魔改:去除流量上或源代码上的特征、指纹
Ethernet的主要作用:局域网通信中,定义了mac地址在二层链路中的寻址、数据帧的差错检验
0x86dd //16进制以0x开头 34525 o103335 //8进制以o开头 1000011011011101 载波监听多次访问 星型拓扑 环形 局域网通信 通信方式: 一对一 一对组 一对所有 广播帧 以太网地址: 普通mac地址:局域网中通信所需要的地址 广播帧地址:ff:ff:ff:ff:ff:ff
ARP协议
地址解析协议,将IP地址解析为mac地址
工作在数据链路层(二层),不通过三层的路由转发
-
衍生话题:关注某些工具的协议工作的层级
-
arp-scan
-
解决的问题:局域网第一次通信时,通过目标IP地址获得目标mac地址
arp缓存表
arp -a arp -d 1.1.1.1
网关:网络关口(出口)
虚拟网络:
通讯过程:请求包+响应包:
ARP扫描
扫描:
-
目录扫描
-
漏洞扫描
-
主机扫描
-
综合扫描
-
...
存活主机扫描(网络信息搜集)
同一个网络:没有路由器参与的情况下,链路上可以互相通信
-
连接在同一个交换机上的所有终端默认情况下属于同一个网络
-
路由器的一个接口下的所有终端默认属于同一个网络
-
192.168.0.1-192.168.0.254,前缀相似
sudo arp-scan --interface=eth0 192.168.1.0/24
流量特征:
-
大量的arp广播帧
-
arp广播帧中遍历所有的target IP
ARP欺骗攻击(实验)
sudo arpspoof -i eth1 -t 100.10.10.146 100.10.10.254 echo 1 > /proc/sys/net/ipv4/ip_forward //将数字1写入系统文件/proc/sys/net/ipv4/ip_forward,表示启用ip转发功能 sudo sysctl -w net.ipv4.ip_forward=1 //和第一条命令效果相同,用于临时启用 IP 转发功能,但设置在系统重启后会丢失 sudo sysctl -p //使用sysctl命令重新加载/etc/sysctl.conf文件中的系统参数配置
流量特征:
-
大量的单播帧
-
错误的ip与mac的映射关系
网关:局域网网络关口,计算机的数据无条件相信网关,路由最高优先级(静态路由)
arp攻击:
-
攻击原理:攻击方充当了局域网中的网关的角色
-
攻击结果:导致局域网中的所有流量都经过攻击方
IP协议
因特网协议
IP地址:
-
一个IP用于标识网络中的一个网卡(节点)
-
格式:点分十进制(x.x.x.x),32位
-
每个十进制数的取值范围:0-255
-
为什么最大是255?
-
0000 0000|0000 0000|0000 0000|0000 0000
-
1111 1111|1111 1111|1111 1111|1111 1111
-
-
-
进制:数学公式
有一个问题:为什么用这些符号来表示某个具体的数值? 十进制:371 1*10^0+7*10^1+1*10^2 二进制:1011 1001 1*2^0+1*2^3+1*2^4+1*2^5+1*2^7
-
因特网中的IP地址是不能冲突的
-
IP地址结构
-
网络号+主机号
-
用于标识一个网络范围
-
不同网络不能够直接通信
-
网络号相同,称为同一个网络,可以互相通信
-
同一个网络中,主机号不能冲突,主机号个数有限
-
-
-
IP地址分类
-
分类是为了对地址划分默认的网络号长度
-
分类直接导致的现象:不同类的网络中,单个网络中可用IP(可用主机)个数不同
-
A:0.0.0.0->127.255.255.255
-
0.0.0.0:表示所有、任意
-
127.x.x.x:回环地址(计算机自称,但其他计算机无法通过这个地址找到本计算机)
-
0.0.0.0/8
-
1.0.0.0->126.255.255.255(有效地址)
-
-
B:128.0.0.0->191.255.255.255(有效地址)
-
0.0.0.0/16
-
-
C:192.0.0.0->223.255.255.255(有效地址)
-
0.0.0.0/24
-
-
-
子网掩码
-
点分十进制
-
由连续的1和连续的0组成
-
0.0.0.0/24
-
255.255.255.0
-
1111 1111|1111 1111|1111 1111|0000 0000
-
子网掩码是用来标识IP地址的网络位和主机位的分界
192.168.10.101/24 IP地址:192.168.10.101 它的子网掩码:255.255.255.0
-
-
关于“一个网络”
网络号、主机号、网络地址、广播地址、最大可用主机数
192.168.10.100/24、192.168.10.150/24、192.168.10.200/24 网络号、网络地址(主机位全为0用来标识一个网络范围):192.168.10.0/24 主机号(同一个网络中每一个可在网卡中使用的具体IP地址):192.168.10.100/24、192.168.10.150/24、192.168.10.200/24 广播地址(主机位全为1,用于广播通信时标识网络中的所有目标):192.168.10.255/24 最大可用主机数:1-254,254个(0-255,减去一个网络地址和一个广播地址)
sudo dhclient -r eth0 //释放地址 sudo dhclient -d eth0 //获取地址 网卡配置文件位置:/etc/network/interfaces //对该文件的配置是永久生效的 静态自定义配置: #The eth0 network interface auto eth0 iface eth0 inet static address 172.16.100.200 netmask 255.255.255.0 gateway 172.16.100.254 动态获取 #The eth0 network interface auto eth0 iface eth0 inet dhcp sudo ifconfig eth0 172.16.100.200 netmask 255.255.0.0 //临时修改网卡配置
VLSM子网划分
不能通信 kali:172.16.100.200/24 win:172.16.101.103/24 可以通信 kali:172.16.100.200/16 win:172.16.101.103/16
VMware虚拟网络
-
虚拟机的网卡模式
-
桥接模式:使用虚拟网桥VMware0(不是网卡,只是一个虚拟网桥,体现在某些系统服务或者是进程当中)。虚拟机和物理机的物理网络是同一个网络(虚拟机用的是我物理机WiFi的IP)
-
NAT模式:虚拟机IP经NAT地址转换后才能和主机通信(三层:外网、局域网、虚拟机)
-
仅主机模式:用VMware1网卡,只能和宿主主机或宿主主机里的其他虚拟机通信,无法和同局域网内其他主机或外网通信
-
NAT网络地址转换协议
-
内网地址<----出口路由器做NAT转换---->公网地址
-
内网IP可以自发访问外网IP
-
外网IP可以访问外网IP
-
外网地址不能够自发访问内网地址。数据包中的目标IP是内网IP的情况是不存在的
-
有无攻击方式?有:内网渗透
-
-
-
内网IP地址分类
-
A:10.0.0.0-10.255.255.255
-
B:172.16.0.0-172.31.255.255
-
C:192.168.0.0-192.168.255.255
-
以上也称为内网地址
-
从内网到外网,数据包的源地址要经过NAT地址转换,转换为公网地址
-
外网中通信是不会使用内网地址的,内网地址都会先转换为一个外网的IP地址然后再在外网进行通信
-
ICMP互联网控制信息协议
ping
tracert
发送UDP包
返回ICMP包
UDP协议
特点
-
无连接
-
不可靠
-
不分片
基于UDP的应用层协议:DNS、DHCP、SNMP、TFTP、OICQ...
通常发包频率低,内容少的应用层协议,传输层基于UDP
DHCP动态主机配置协议
类似租赁
-
IP(房子)
-
DHCP服务器(房东)
-
pc(租客)
-
合同、续租
出现背景:人工培植IP地址,量大、易出错
DHCP配置过程
-
DHCP discover
-
DHCP offer
-
DHCP request
-
DHCP ack
某些异常情况:
续约:
DHCP地址流量消耗特征:
DHCP泛洪攻击(实验)
sudo yersinia dhcp -attack 1 -i eth0 -attack 1表示执行攻击模式1。根据Yersinia的文档,模式1通常是DHCP伪造攻击,模拟多个伪造的DHCP服务器,试图在网络中制造混乱 isc-dhcp-server sudo service isc-dhcp-server start
DNS域名解析协议
域名服务器:domain name server
所有通信都是跟IP通信,只不过人们对具体名字会更敏感
kali的DNS服务器所在文件:/etc/resolv.conf
主机名解析:host
hostname /etc/hosts
-
弊端:无法记录如此庞大数量的主机名
DNS域名解析
-
域名解析系统
-
企业管理-->老板不可能认识企业中所有员工的名字
-
员工之间有层级关系,可利用分层思想进行管理
-
-
分层管理的思想
-
域名
-
根域
-
.
-
-
顶级域
-
.com.、.cn.、...
-
-
二级域
-
.baidu.com.
-
-
三级域
-
tec.baidu.com.
-
www.tec.baidu.com.、file.tec.baidu.com.
-
-
-
-
相关概念
-
域:计算机群在逻辑范围当中的标识
-
域名:标识一个范围的名称
-
域名服务器:管理(注册)区域中的下级域名服务器和下级域名服务器的IP
-
完全限定域名FQDN
-
通过层级关系最终能找到指定主机的完整层级
-
-
-
主机名-->IP
目标-->IP:域名解析
相关命令
nslookup、dig
DNS劫持攻击
流量特征:
sudo service apache2 start sudo netstat -tunlp sudo vim/etc/ettercap/etter.dns -->www.baidu.com(想要欺骗的网站) A kali的IP sudo ettercap -G
TCP协议
特点
-
可靠性
-
面向连接
-
流量控制
-
多路复用
-
套接字:IP+端口的绑定形式
-
机制
-
三次握手
-
四次挥手
TCP有限状态机
Hping3
dos:拒绝服务攻击
ddos:分布式拒绝服务攻击
icmp dos
udp dos
TCP SYN Dos
Telnet协议
远程登录服务:telnet、ssh、vnc、rdp...
CS/BS
banner信息
SSH协议
HTTP协议
https://developer.mozilla.org/zh-CN/docs/Web/HTTP //HTTP参考教程
超文本传输协议
文本传输
超链接
B/S架构
浏览器/Web服务
-
请求/响应
http版本
-
1991:http/0.9
-
仅支持GET方法、HTML文本
-
-
1996:http/1.0
-
支持富文本,GET、POST、PUT、HEAD
-
-
1999:http/1.1
-
丰富全面的请求方法
-
-
2015:http/2.0
-
多路复用
-
服务端推送
-
二进制格式
-
HTTP请求
请求格式
-
请求行
-
请求方法
-
网站资源路径(.html、.css、.js、.png、.mp4...)
-
协议版本
-
-
请求头(难点)
-
Key:value
-
-
请求数据
HTTP响应
响应格式
-
响应行
-
协议版本、状态码(响应码,重点)、状态描述
-
-
响应头(难点)
-
Key:value
-
-
响应数据
请求方法
-
GET方法
-
请求指定页面信息,一般浏览网页采用GET
-
-
POST方法
-
用于请求并提交内容到指定页面,提交表单/上传文件,采用POST方法
-
-
PUT
-
从客户端向服务器传送指定的内容,更多体现为传输文件
-
-
DELETE
-
请求服务器删除指定内容
-
-
HEAD
-
不需要返回响应数据、只返回响应行+响应头的请求方法,大多用于扫描场景
-
-
CONNECT
-
OPTIONS
-
检测服务器支持的请求方法、探测请求资源是否可访问
-
-
TRACE
响应状态码
状态码分类
-
1xx 正在处理
-
2xx 成功处理
-
200 OK:请求成功
-
-
3xx 重定向
-
301 永久重定向
-
302 临时重定向
-
304 从缓存读取
-
-
4xx 客户端错误
-
401 http身份认证失败
-
403 防火墙等策略拦截
-
404 页面不存在
-
-
5xx 服务端错误
-
500 服务器内部错误,无法提供服务
-
503 服务器暂时无法提供服务,通常需要等待一段时间回复
-
头部字段
重要头部字段
-
cookie:用户在网站上的身份标识
-
如果能掌握cookie,则可通过修改cookie的方式绕过用户名密码的验证
-
-
host
-
Authtication:认证相关
-
User-agent:客户端指纹
-
server:服务器信息
-
Set-cookie:cookie设置时需要的参数
-
referer:当前请求页面的来源页面的地址
-
Origin:与浏览器同源策略有关
其他需要关注的字段,这些字段会记录客户端和IP相关的信息
X-Forwarded-For
X-Remote-Ip
...
前端、接口与后台总结
-
url格式:协议://主机:端口/目录名/文件
-
http请求任何地方都可能作为输入点,自己测
-
接口通常是一个url,指向后端提供的资源或服务
-
前端发送http请求(一般通过javascript),使用接口url,其中可能带有参数;访问到后端的资源或服务
-
后端代码根据业务逻辑,选择性取下http请求中的参数,执行后端业务逻辑
-
后端通过接口,反馈http响应给前端
-
前端根据反馈的结果更新界面
网络问题排查
由近到远:ping自己、ping同局域网、ping网关、ping外网