跟着郭燕老师的资料来学习《信息安全》课程:
- 知乎专栏:https://zhuanlan.zhihu.com/c_1081549579018608640
- Bilibili视频专栏:https://www.bilibili.com/video/BV1CA411b7nk?p=1
几种典型攻击(可以自己演示的):
1.1 netwox 80 使用ARP攻击,阻止局域网内系统正常联网
1.2 netwox 86 通过ICMP重定向,成为受害者、网关之间的中间人
1.3 netwox 76 通过内核模块窃取别人的用户名和密码
2. 在他人的系统上装上后门backdoor(用于长期控制root权限);通常和rootkit配套使用,rootkit负责消除痕迹
3. stackoverflow 汇编代码...
常用网络相关Linux命令:
ping 发送ICMP请求
- ping www.baidu.com:测试能否正常联网
- ping 192.168.3.33(本机gateway网关)
- ping localhost:测试系统协议栈
ifconfig 配置网络接口
- 查看IP号、网卡等信息 ifconfig
- 启动 网卡(硬件,用于朝外发包) sudo ifconfig ens33 up
netwox 发包工具
- 80 ARP攻击局域网
- 86 ICMP重定向
- 76 窃取Cookie用户名和密码
traceroute 追踪路由信息(一般最多30跳)类似于 Windows系统-cmd中的tracert命令
nslookup 查看域名对应的IP地址,类似于DNS服务 例子:nslookup www.baidu.com
whois 查看IP属于哪个组织。 例子:whois 219.219.220.1
netstat 显示网络状态:网络连接、路由表。。 例子:netstat -ant 查看tcp路由表、连接状态等
tcpdump 网络抓包工具。 例子:sudo tcpdump -i ens33 -c 20 其中i后面跟接口,c 20表示抓前20个包(packets)
应用软件wireshark 可用于抓包
netcat 用于TCP/UDP中读写数据:文件传输、即时通讯 (网络工具中的瑞士军刀)
- 查看某IP的端口开放状态:例子:查看百度网站的80端口(HTTP) nc -v www.baidu.com 80 显示:连接成功
- 查看端口段:例子:nc -v localhost 20-30 同时查看20-30这11个端口
- 局域网内 群聊:例子:001主机: nc -l 192.168.3.34 80 002主机:nc 192.168.3.34 80 然后就可以聊天了。。
nmap 用于端口扫描(TCP安全相关)
ssh 远程连接
1、网桥,是把两个不同物理层,不同MAC子层,不同速率的局域网连接在一起。比如说10MB/S与100MB/S的局域网。因为它有储存转化功能。
2、网卡是电脑的一个接收信息 转换信息 暂储信息的一个硬件。它是把接受到信息递交给上层,如(CUP)的一个接口。
3、网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI 7层协议的顶层--应用层。
所以生动的表示以下,网关是邮电局,所有的信息必须通过这里的打包、封箱、寻址,才能发出去与收进来;网卡是设备,也就是邮电局邮筒,你家的信箱;而网桥是邮递员,但他只负责一个镇里面(局域网)不负责广域网。
Mitnick米特尼克圣诞节攻击
3个对象说明:
Target是黑客想要的文件,
X-terminal 与Target有连接(互相信任),
Server(X-terminal的服务器)与X-terminal 有TCP信任连接
攻击链条: Target的访问 <---> X-terminal <---> Server
攻击思路:访问 Target文件(最终目标)
--->劫持X-terminal与Target的连接
--->获得X-terminal的root权限,并加载内核STREAMS模块
---> 远程修改X-terminal的.rhosts文件(账户信任关系)
---> 以X-terminal信任的Server,建立TCP连接,在TCP中传递命令
- 对X-terminal:IP源地址欺骗和TCP序列号预测;
- 对Server:Dos攻击,使之不能(对意外SYN-ACK)发出RST;
一些重点:
该攻击程序注意到连续的两个数据包之间,初始序列号增长了128,000。因此,该攻击程序破解了序列号生成规则(等差序列)。
下村的机器必须处于闲置状态,攻击才能进行成功。不然的话,其他的连接将改变数据包的初始序列号,并使其更难以预测。这就是黑客选择在圣诞节攻击的原因。
攻击程序使用IP欺骗发送了看似来自可信赖的服务器的数据包。"看似"的原因,是因为数据包的IP地址是受信任计算机的Internet地址。下村的工作站收到数据包之后,将会发送SYN+ACK数据包发回给受信任的服务器。如果真实的服务器收到了这个不请自来的SYN+ACK数据包,那么服务器会发送RST数据包断开连接。但是因为之前服务器已经被攻击者使用DoS攻击阻止处理任何新包,所以服务器不会对这个数据包做出反应。
因为服务器已经被堵塞,所以此时,攻击程序可以发送虚假确认。这个虚假确认看起来是真实的,因为它有可信服务器的源地址,以及正确的初始序列号。下村的的工作站因此受骗。它认为它正在与受信任的服务器通信。
接下来攻击程序告诉了下村的工作站要去相信所有的机器。它发布了简单的命令指示下村的工作站信任整个互联网。攻击者此时可以从任何站点进行访问。
一共使用了两种不同的攻击机制。 IP源地址欺骗和TCP序列号预测,使用这两种攻击获得了对主要用作X终端的无盘工作站的访问权。
在获得root访问权限之后,可加载内核STREAMS模块的方法劫持了与另一个系统的现有连接。
finger: 查看用户
showmount: 查看挂载(找信任关系)
ARP安全
Dos攻击:netwox 80 使用ARP攻击,阻止局域网内系统正常联网
ARP:IP-->MAC
主机广播IP来寻找MAC,返回是单播;
然后(所有主机都)缓存IP--MAC的对应关系到ARP表,
但ARP表不是一成不变的,因为IP--MAC对应关系不断改变。(比如:虚拟机中的IP地址,多启动几回可能就换掉了)
局域网(以太网)帧格式:
帧类型 Frame types: 0800 IP 0806 ARP 8035 RARP
了解以太网帧的格式之后,就可以根据帧的结构发包;也可以借助netwox 80发ARP包,导致同在一个局域网的另一个主机不能联网。
IP 协议安全
(1)IP协议
- 不保证可靠:重复、丢失;
- 无连接:同一个连接中多个报文,被独立对待
下面是具体的例子:
具体分析:
- 首先是4 bit的协议字段:目前是4,代表IPv4;如果是IPv6,会有一个新的协议头部。
- HLEN,表示包中IP头部的长度,它的单位是32 位,也就是4个字节,因此上面包中的5指示该数据包的IP头部的长度是4*5=20字节。
- ToS:总共有八位,代表不同类型的服务,其中只能设置一位。常见的包括 min delay, 0x10; max throughput, 0x08;max reliability, 0x40; min cost, 0x20。
- 接下来是Total Length。以字节为单位的报文的长度。0054 --> 5X16+4=84Bytes
- IDent,flags和 fragment offset(片偏移x8):一起用于数据包的分片和重组;后面详细讨论。【也是针对IP协议发起攻击的主要利用的字段】
- TTL:Time to Live,由发送者启动,然后每经过一个路由器就减一。如果到达某一个路由器的时候数据包的TTL变为0,那么就被丢弃。可以有效地防止路由循环。
- Example: ping –t TTL IP allows us to specify the TTL field
- 思考: 如果修改数据包的TTL(定制数据包),一般需要root权限,那么为什么我们可以通过ping程序来修改TTL? 【实际上,发送ICMP数据包需要root权限】
- 思考:能不能找到一个TTL应用的例子?
- TraceRoute是如何实现的?
- TYPE:IP报文中承载的数据的类型;
- 1, ICMP; 2 IGMP; 6 TCP; 17 UDP;
- 校验和:
- 16位补码;仅针对头部计算;每一条都需要重新计算;
- 源IP地址和目的IP地址。
- IP选项,可省略。譬如,可以在IP头部中记录路由。
- 思考:IP选项的长度最长为多少? 20B~60B,最多60字节 (Fx4B=60B)
(2)IP分片/重组
分片:
IP fragmentation:IP分片功能
为什么需要分片功能?主要是因为硬件环境的MTU限制。一个IP报文最多可以达到65535的最大长度;但是网络硬件限制了帧的大小(以太网限制为1500字节)。
如何分片?(对应上面IP头部的第二行):
- IDENT: 也即identifier,用于标识IP报文段的唯一标识符;具有同一IDENT的片段属于同一个IP报文;
- FRAGMENT OFFSET: 简称FO,片偏移x8,指明当前片段在原始完整的IP报文中的位置(偏移)。该偏移的单位是8个字节。
- FLAGS: 【3个bit 独立工作】bit 0:保留; bit 1:不分片 bit 2:更多分片。如果此位是1,那么说明有更多分片,则不是最后一个分片。
重组:
当接收方接收到分片,应该如何进行重组呢?在IP层上必须进行重组,将完整的数据包发到上层。
在IP协议的设计中就需要考虑一些问题:在路由器上上进行重组还是在目的主机进行重组? 重组发生在目的主机,分片发生在路由器上
如果某一个IP分片在路上因为各种原因 丢失,怎么办? 答:IP数据包全部重传,TCP不用
如果接收到的分片在Fragment Offset上出现的 重叠,怎么办?
如果 重组后大小超过65535,允许的最大值,怎么办?
(3)IP攻击: Dos攻击 TearDrop攻击 分片攻击(RFC系列)
DoS攻击:
思路:攻击者构造两个分片,第一个分片的偏移为0;第二个分片的偏移是64800。
因为IP分片可以乱序到达,所以接收方会等待其他分片;同时会为其他分片分配内存空间。
相当于一个数据包会使用64K的内存。而且这段空间会持续保留15~255秒。这样,很快会耗尽主机的内存空间,造成DoS。
(Windows 2000, XP, 以及Unix的各版本都有这个漏洞)
TearDrop攻击:
Unsigned:无符号数,出现负数,会产生异常。
TearDrop攻击的原理,在于构造两个分片。其中,第二个分片完全包含在第一个分片中。
这种攻击的成功,依赖于一种当分片发生重叠时,重组的方法。如果接收主机的实现中选择在发生重叠时,使用第一个分片来覆盖第二个分片的重叠内容,那么TearDrop攻击就能够成功。具体见下面分析:
处理重叠的方法(含有漏洞):
先把first 完全copy,然后计算copy_Second的长度:len=end- offset(after)=end- pre_end ,如果unsign类型的 len<0,就会产生一个非常大的数。
第二片的结束end要晚于第一片结束pre_end,就是正常的: end- pre_end> 0
攻击后果:
如果 end- pre_end <0,就会因为unsigned出现一个非常大的copy_Second_len,导致拷贝超多无关数据,导致内存占用过多以及系统崩溃
解决方法:
加上一个 if 判断语句,来保证 end-pre_end>0
分片攻击
防火墙通过数据包包头信息,进行拦截(包过滤器防火墙)
RFC:互联网国际标准机构 Request For Comment
原有协议:有些端口阻止 外部访问请求,但是接受 对本机请求的回复(本机先发出请求)
漏洞是:只检查FO=0(第一个)数据片。
只要第一个混过去(包装成无害的样子),后面(具有同样IDentifier标识符的)分片可以跟着全部通过防火墙
(1)微小碎片攻击
攻击方法
强迫TCP头部进入第二个分片,从而躲过防火墙过滤器的匹配(SYN)
通过许多IP实现,可以在发出数据包上形成异常小的片段大小。如果片段大小足够小以迫使某些TCP数据包的TCP头字段进入第二个片段,则指定这些字段的模式的过滤规则将不匹配。如果过滤实现没有强制执行最小片段大小,则可能会通过不允许的数据包,因为它在过滤器中没有得到匹配。
防止措施
- 直接法:FO=0的包长度
- 间接法:若存在FO=1的分片,丢之(正常情况不会出现FO=1)(ps:我感觉FO=2/3也不行,4可以)
(2) 重叠碎片攻击
攻击方法
用第二个分片(有害),覆盖第一个无害分片(用于顶包接受检查)。
例如:第一个分片 SYN = 0,ACK = 1(应答)
第二个分片 SYN = 1,ACK = 0 (请求连接)
这样在重组之后就是有害的报文。
防止措施
丢掉FO==1,且peotocal==TCP 的包(此方法不彻底够用)
以上就是课程1-5的学习笔记与总结