信息安全 学习笔记(1)——常用攻击、网络命令、ARP安全、IP安全

跟着郭燕老师的资料来学习《信息安全》课程:

 

 

 

几种典型攻击(可以自己演示的):

netwox 80——攻击ARP局域网

  使用ARP攻击,阻止局域网内系统正常联网

netwox 86——ICMP重定向

  通过ICMP重定向,成为受害者、网关之间的中间人

netwox 76——TCP里SYN Flooding(Dos攻击)

  TCP里面的SYN Flooding,Dos攻击。

backdoor & rootkit

  在他人的系统上装上后门backdoor(用于长期控制root权限)

  通常和rootkit配套使用,rootkit负责消除痕迹

stackoverflow

  汇编代码...

 

 

常用网络相关Linux命令:

ping 发送ICMP请求

  • ping www.baidu.com:测试能否正常联网
  • ping 192.168.3.33(本机gateway网关)
  • ping localhost:测试系统协议栈

  (windows同)

ifconfig 配置网络接口

  • 查看IP号、网卡等信息  ifconfig
  • 启动 网卡(硬件,用于朝外发包)  sudo ifconfig ens33 up

  windows用 ipconfig

netwox 发包工具

  • 80 ARP攻击局域网
  • 86 ICMP重定向
  • 76 TCP里SYN Flooding

traceroute 追踪路由信息

 (一般最多30跳)

  类似于 Windows系统-cmd中的 tracert 命令

nslookup  查看域名对应的IP地址,类似于DNS服务

  例子:nslookup www.baidu.com

  (windows同)

whois  查看IP属于哪个组织。

  例子:whois 219.219.220.1

netstat 显示网络状态:网络连接、路由表

  例子:netstat -ant  查看tcp路由表、连接状态等

  (windows同)

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 远程连接

 

 

网桥、网卡、网关?

网桥

  是把两个不同物理层,不同MAC子层,不同速率的局域网连接在一起。比如说10MB/S与100MB/S的局域网。因为它有储存转化功能。

网卡:

  是电脑的一个接收、转换、暂储信息的一个硬件。它是把接受到信息递交给上层,如(CUP)的一个接口。

网关(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的包长度<min,丢之
  • 间接法:若存在FO=1的分片,丢之(正常情况不会出现FO=1)(ps:FO=2以上就可以了)

 

  

(2) 重叠碎片攻击

如果系统采用的重叠方式后一片覆盖前一片的情况下,可以使用碎片重叠攻击,

使得第一个分片的SYN字段不为1,第二个分片的FO!=0 并包含TCP的SYN=1字段。

这样两个分片也都能通过防火墙,然后在上层重组,第二个分片覆盖第一个分片后就能重新组成SYN包。

攻击方法

用第二个分片(有害),覆盖第一个无害分片(用于顶包接受检查)。       

例如:第一个分片 SYN = 0,ACK = 1(应答)

第二个分片 SYN = 1,ACK = 0 (请求连接)

并且第二个分片的FO==1(当且仅当片偏移==1、这样恰好能覆盖)

这样在重组之后就是有害的报文。

防止措施

丢掉FO==1,且protocal==TCP 的包(此方法不彻底够用)


以上就是课程1-5的学习笔记与总结

posted @ 2020-05-04 21:29  青杨风2199  阅读(3041)  评论(0编辑  收藏  举报