• 信息安全 学习笔记(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的学习笔记与总结

  • 相关阅读:
    Linux实现ftp账号同时访问两个目录方法
    ubuntu系统中的VMware 安装win7 Ghost镜像的几个坑
    ubuntu14.04LTS安装vmware10.0.1
    翻页特效
    使用Fragment应用放置后台很久,被系统回收,出现crash
    Android软件安全开发实践(下)
    移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)
    数字签名与数字加密
    time_wait 原理分析和优化
    Go中http超时问题的排查
  • 原文地址:https://www.cnblogs.com/qyf2199/p/12785004.html
Copyright © 2020-2023  润新知