网络安全-渗透基础
背景
记录一些关于网络安全相关的内容,内容源自拼客学院的公开课,全文是根据自己的需要做的简要笔记,便于后期复习,如需了解完整内容,可前往拼客学院了解,它挺好的。
全文内容从TCP/IP协议栈
说起,记录常见的网络攻击、局域网攻击、Wifi攻击,主要是对这些概念的深化理解,不拘泥于工具的使用,同时文中所涉及的内容仅用作研究所用,使用的设备也都是个人局域网设备,不侵犯任何人的利益和隐私。
提供原教学视频链接:https://www.pinginglab.net/course/430/tasks
TCP/IP协议栈
TCP/IP协议栈
本质上是一个用于网络通信的软件包,是一个通信的标准,内部包含了很多的协议。与此相对应的还有很多其它机构为此设定的通信标准,最著名的有ISO设定的标准:OSI模型
,不过它只是一个理论模型,并没有广泛用于实践中,真实投入使用的是TCP/IP协议栈
。它们的区别如下:
这些模型的区别在于将数据打包过程细分化的程度不同,没有太多需要纠结的,重点是需要理解不同层所处理的事务,以TCP/IP协议栈
为例:
- 应用层:为用户提供软件/接口。工作的协议有:
HTTP
、HTTPS
、BT/P2P
、OICQ
- 传输层:用于实现数据的可靠或不可靠传输。工作的协议有:
TCP
、UDP
、ICMP
- 网络层:提供IP地址和三层通信(路由器)功能。工作的协议有:
IP协议
- 链路层:提供MAC地址和二层通信(交换机)功能。工作的协议有:
Ethernet
我不大理解上面的内容,所以借助数据包的形成过程来理解:
- 应用层:将要传输的数据信息纳入数据包中。
- 传输层:将数据包对应的应用信息(如端口)纳入数据包中。
- 网络层:将数据通信双方
IP信息
纳入数据包中。 - 链路层:将数据通信双方的
mac地址
信息纳入数据包中。
拆解数据包的过程则相反,每拆解一层就会得到对应层的信息,然后进行处理后就将数据包中该层对应的数据信息丢弃,而将剩余的信息上传到上一层进行处理。如果处理到某一层发现数据包中对应该层的数据信息不准确,则直接将该数据包给丢弃。
如果需要查看网卡处理的数据包,则可以借助:wireshark
,关于wireshark
的使用,则可以直接百度,基本上用一遍就能了解。以其中一个数据包为例:
Ethernet协议
又名以太网协议,工作于链路层,实现对链路层的数据传输
和mac地址
封装。如下图:
其中有三个协议字段需要注意:
- Destination:目标的mac地址信息
- Source:发送者的mac地址信息
- Type:标识上层协议
关于mac地址信息,授课者给予了解答:
- 所有设备的mac地址都是全球唯一的;
- MAC地址以
16进制
表示的,长度为48bit
,采用冒号分16进制表示; - MAC地址前半部分被称为
OUI代码
,用于唯一标志一个企业/公司,例如思科、TP-LINK、华为;后半部分厂商自行分配。
IP协议
又名互联网协议,它内容中包含了IP地址
,IP地址
的存在确保了联网设备的唯一性,实现网络通信的面向无连接和不可靠传输的功能。IP地址
起作用的前提是存储在DNS服务器
中的路由表,类似于手机里的通讯录,唯一标识了用户在互联网的位置。
通过wireshark
抓包,可以查看IP协议封装的数据内容:
其中要注意的字段信息很多:
- Version(版本号):标识IP协议的版本,目前V4版本地址已经枯竭,V6慢慢成为主流。
- Header Length(头部长度):默认为20字节,最大为60字节。
- Differentiated Services Field (服务区分符):用于为不同的IP数据包定义不同的服务质量,一般应用在QoS技术中。
- Total Length (总长度):标识IP头部加上上层数据的数据包大小,IP包总长度最大为65535个字节。
- Identification (标识符):用来实现IP分片的重组,标识分片属于哪个进程,不同进程通过不同ID区分。
- Flags(标志符):用来确认是否还有IP分片或是否能执行分片。
- Fragment offset (分片偏移量):用于标识IP分片的位置,实现IP分片的重组。
- Time to live (生存时间):标识IP数据包还能生存多久,根据操作系统不同,TTL默认值不同,每经过一个三层设备如路由器的处理,则TTL减去1,当TTL=0时,则此数据包被丢弃。
- Protocol (协议号):标识IP协议上层应用。当上层协议为ICMP时,协议号为1,TCP协议号为6,UDP的协议号为17。
- Header checksum (头部校验):用于检验IP数据包是否完整或被修改,若校验失败则丢弃数据包。
- Source(源IP地址):标识发送者IP地址,占用32bit。
- Destination (目的IP地址):标识接收者IP地址,占用32bit。
为了便于理解,所以授课者进行了总结:
- Source、Destination:即IP源目地址字段,是IP协议最核心的字段;
- Id、Flags、FO:三个字段可以实现IP数据分片和重组;
- Total Length、Header Length:标记IP头部和上层数据的边界;
- TTL:标志着数据包的生存时间,同时可以实现通信防环;
- DSCP:服务区分符可以实现流量控制,它的存在主要是为了改变互联网数据包传输的优先级,比如DESP为EF的,则其优先级极高;
- Checksum:可以用其对数据包进行完整性校验;不同的协议校验的数据部分不同,
IP协议
只会校验头部内容,而TCP、UDP
则还需要校验数据部分 - Protocol:标记上层应用;
其中一个比较好玩的是TTL
字段,它的默认值为128
,最大值为255
。每当数据包进行一次路由转发,则该值减1,当TTL值为0的时候,就意味着数据包死亡,同时互联网转发设备会丢弃该数据包,并返回该设备会向源发送者返回一个”TTL Exceed“的ICMP
报错包。
ARP协议
又名地址解析协议,用于实现IP地址到mac地址
的映射,即询问目标IP
的mac地址
,是用于局域网内的数据交互。对其进行抓包后可以看到如下:
首先源设备发送一个广播包(会询问局域网内的每一台设备),目的是质询局域网内目标设备的mac地址,但是只有目标设备获取到广播包后才会进行回应,这被称为广播请求,单播回应
。回应之后目标设备同时也会质询源设备的mac地址,但此时是单播
,源设备同样会将mac地址信息回应给目标设备。之后两者就可以进行正常的通信了。
针对广播
的内容也会发现其中的Target MAC address
值为:00:00:00:00:00:00
,这个被称作为置空位
,专门用于目标设备填补的。
ARP协议中需要了解的字段如下:
- Hardware type :硬件类型,标识链路层协议
- Protocol type: 协议类型,标识网络层协议
- Hardware size :硬件地址大小,标识MAC地址长度,这里是6个字节(48bti)
- Protocol size: 协议地址大小,标识IP地址长度,这里是4个字节(32bit)
- Opcode: 操作代码,标识ARP数据包类型,1表示请求,2表示回应
Sender MAC address
:发送者MACSender IP address
:发送者IPTarget MAC address
:目标MAC,此处全0表示在请求Target IP address
: 目标IP
同时,在进行广播获得目标设备的IP
、mac
信息后,源设备就会在arp表
中存一份数据,可以通过命令arp -a
查看该表:
如果需要删除这个arp表
的信息,则可以通过命令arp -d
。如果需要手动建立一个IP<-->mac
对应的arp关系,则可以通过命令:arp -s [IP] [mac]
,该命令建立的是arp映射类型是static
,它的映射关系不会再随着广播的回应而修改。
ICMP协议
又名互联网控制协议,用于实现链路连通性测试和链路追踪,可以实现链路差错报告,运行在传输层协议,服务于IP协议。基于该协议的常见命令有:ping、traceroute/traceert
。如下图:
字段对应的信息如下:
- Type/code:区分数据包类型,
8 | 0
表示发送包,0 | 0
表示回复包 - Checksum:用于数据表完整性校验
- *Identifier (\*)**:用于标志不同的Ping进程
- *Sequence (\*)**:表示在此进程下的第几个包。
ping
用于探测目的主机是否有问题,探测本地到目的的延迟等,traceroute/traceert
探测本地到目的路径,拓扑踩点。使用如下:
1 | Linux和win下都可以用 |
TCP协议
又名传输控制协议,非常的复杂,比如网页信息的浏览都是基于http/https
的,它们都是属于TCP协议
中的内容,常见的协议及其常用的端口有:
- HTTP:80
- HTTPS:443
- FTP:20/21
- SSH:22
- TELNET :23
- SMTP/POP:25/110
- OICQ:8000
抓取其中一个包,如下:
实验
远程登录实验
1
2
3
4telnet [ip/域名]
比如:
telnet route-server.ip.att.net局域网内设备扫描(Kali系统)
1
2
3
4
5基于nbtbios协议的扫描,获取IP、mac、netbios主机名信息
nbtscan 192.168.0.0/24
基于arp协议的扫描
arp-scan --interface=eth0 192.168.0.0/24
常见攻击分析
arp攻击
原理
- 局域网内,设备之间的通信是借助于
mac地址
的,而mac地址的获取是借助于arp协议
的。 - 根据
arp协议
,设备可以自由的发送广播包到局域网中的每台设备上进行质询,每台设备在收到针对自己的质询包时,会给予回应。 - 同时每台设备中的
arp表
在遇到新的数据包时,默认采用新数据包中的回应数据来更新本地的arp映射关系
。 - 因此在局域网中就可能会存在一个hacker设备故意欺骗其它设备,表明自己是网关的
mac地址
信息,此时受害的设备就会将所有原本要发送给网关的数据发送到了hacker设备上,从而达到了攻击的目的。
- 局域网内,设备之间的通信是借助于
特征
查询受害者机器上的
arp映射表
,会发现arp表中网关IP对应的mac地址
和另一台设备IP的mac地址
一摸一样,这就说明arp表被毒化了。操作
Windows
下使用工具p2pover
Windows
下使用工具Cain & Abel
防护手段
在路由器和本地双向绑定IP和mac地址的对应关系
1
2
3
4本地绑定
arp -s [ip] [mac]
路由器里面有单独设置的地方,叫:IP和MAC绑定开启路由器中的一个功能:
AP隔离
,这样就禁止了同一局域网下的arp扫描
开启路由器中的一个功能:
无线设备接入控制
,设置只允许列表内的设备接入
DOS攻击/DDOS攻击
原理
DOS攻击又名拒绝服务攻击,本质上是通过耗尽对方服务器的资源(带宽、内存、CPU计算等)而导致对方服务器无法提供服务。单台设备对服务器发起的攻击称之为DOS攻击,有时候单台设备无法提供大量的请求时,可以通过多台设备同时发送请求以达到目的,可以称之为DDOS攻击。
因此,任何可以与服务器产生交互的方式都可以作为DOS攻击的手段,如:ICMP泛洪攻击、TCP/UDP泛洪攻击、HTTP泛洪攻击、DNS放大攻击、混杂流量攻击等。
操作
使用
hping工具
:1
2
3
4
5
6
7
8
9
10
11-c:发送数据包的个数
-d:每个数据包的大小
-S:发送SYN数据包
-w:TCP window大小
-p:目标端口,你可以指定任意端口
--flood:尽可能快的发送数据包
--rand-source:使用随机的IP地址,使得安全设备不能定位实际IP;**
-a或--spoof:隐藏主机名
testsite.com:目的IP地址或网站
sudo hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source testsite.com使用
nping工具
1
sudo nping --tcp-connect -rate=90000 -c 900000 -q testsite.com
Wifi密码破解
背景
目前Wifi的加密技术有:
WEP
、WAP
、WAP2
三种,不管哪一种,都可以通过抓取用户和Wifi的握手包进行暴力破解,破解的关键在于:用我们字典中的PSK、SSID先生成PMK,然后结合握手包中的客户端MAC、AP的BSSID、A-NONCE、S-NONCE计算PTK,再加上原始的报文数据算出MIC并与AP发送的MIC比较,如果一致,那么该PSK就是密钥
EWSA