网络安全-渗透基础

背景

记录一些关于网络安全相关的内容,内容源自拼客学院的公开课,全文是根据自己的需要做的简要笔记,便于后期复习,如需了解完整内容,可前往拼客学院了解,它挺好的。

全文内容从TCP/IP协议栈说起,记录常见的网络攻击、局域网攻击、Wifi攻击,主要是对这些概念的深化理解,不拘泥于工具的使用,同时文中所涉及的内容仅用作研究所用,使用的设备也都是个人局域网设备,不侵犯任何人的利益和隐私。

提供原教学视频链接:https://www.pinginglab.net/course/430/tasks

TCP/IP协议栈

TCP/IP协议栈本质上是一个用于网络通信的软件包,是一个通信的标准,内部包含了很多的协议。与此相对应的还有很多其它机构为此设定的通信标准,最著名的有ISO设定的标准:OSI模型,不过它只是一个理论模型,并没有广泛用于实践中,真实投入使用的是TCP/IP协议栈。它们的区别如下:

image-20210106171614451

这些模型的区别在于将数据打包过程细分化的程度不同,没有太多需要纠结的,重点是需要理解不同层所处理的事务,以TCP/IP协议栈为例:

  • 应用层:为用户提供软件/接口。工作的协议有:HTTPHTTPSBT/P2POICQ
  • 传输层:用于实现数据的可靠或不可靠传输。工作的协议有:TCPUDPICMP
  • 网络层:提供IP地址和三层通信(路由器)功能。工作的协议有:IP协议
  • 链路层:提供MAC地址和二层通信(交换机)功能。工作的协议有:Ethernet

我不大理解上面的内容,所以借助数据包的形成过程来理解:

  • 应用层:将要传输的数据信息纳入数据包中。
  • 传输层:将数据包对应的应用信息(如端口)纳入数据包中。
  • 网络层:将数据通信双方IP信息纳入数据包中。
  • 链路层:将数据通信双方的mac地址信息纳入数据包中。

拆解数据包的过程则相反,每拆解一层就会得到对应层的信息,然后进行处理后就将数据包中该层对应的数据信息丢弃,而将剩余的信息上传到上一层进行处理。如果处理到某一层发现数据包中对应该层的数据信息不准确,则直接将该数据包给丢弃。

如果需要查看网卡处理的数据包,则可以借助:wireshark,关于wireshark的使用,则可以直接百度,基本上用一遍就能了解。以其中一个数据包为例:

image-20210106190442049

Ethernet协议

又名以太网协议,工作于链路层,实现对链路层的数据传输mac地址封装。如下图:

image-20210106191130259

其中有三个协议字段需要注意:

  • Destination:目标的mac地址信息
  • Source:发送者的mac地址信息
  • Type:标识上层协议

关于mac地址信息,授课者给予了解答:

  • 所有设备的mac地址都是全球唯一的;
  • MAC地址以16进制表示的,长度为48bit,采用冒号分16进制表示;
  • MAC地址前半部分被称为OUI代码,用于唯一标志一个企业/公司,例如思科、TP-LINK、华为;后半部分厂商自行分配。

IP协议

又名互联网协议,它内容中包含了IP地址IP地址的存在确保了联网设备的唯一性,实现网络通信的面向无连接和不可靠传输的功能。IP地址起作用的前提是存储在DNS服务器中的路由表,类似于手机里的通讯录,唯一标识了用户在互联网的位置。

通过wireshark抓包,可以查看IP协议封装的数据内容:

image-20210106192702779

其中要注意的字段信息很多:

  • 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报错包。

image-20210106210307907

ARP协议

又名地址解析协议,用于实现IP地址到mac地址的映射,即询问目标IPmac地址,是用于局域网内的数据交互。对其进行抓包后可以看到如下:

image-20210106203429964

首先源设备发送一个广播包(会询问局域网内的每一台设备),目的是质询局域网内目标设备的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 :发送者MAC
  • Sender IP address :发送者IP
  • Target MAC address :目标MAC,此处全0表示在请求
  • Target IP address: 目标IP

同时,在进行广播获得目标设备的IPmac信息后,源设备就会在arp表中存一份数据,可以通过命令arp -a查看该表:

image-20210106204953921

如果需要删除这个arp表的信息,则可以通过命令arp -d。如果需要手动建立一个IP<-->mac对应的arp关系,则可以通过命令:arp -s [IP] [mac],该命令建立的是arp映射类型是static,它的映射关系不会再随着广播的回应而修改。

ICMP协议

又名互联网控制协议,用于实现链路连通性测试和链路追踪,可以实现链路差错报告,运行在传输层协议,服务于IP协议。基于该协议的常见命令有:ping、traceroute/traceert。如下图:

image-20210106210837974

字段对应的信息如下:

  • Type/code:区分数据包类型,8 | 0表示发送包,0 | 0表示回复包
  • Checksum:用于数据表完整性校验
  • *Identifier (\*)**:用于标志不同的Ping进程
  • *Sequence (\*)**:表示在此进程下的第几个包。

ping用于探测目的主机是否有问题,探测本地到目的的延迟等,traceroute/traceert探测本地到目的路径,拓扑踩点。使用如下:

1
2
3
4
5
6
7
8
# Linux和win下都可以用
ping [IP/域名]

# Linux下
traceroute [IP/域名]

# win下
tracert [IP/域名]

TCP协议

又名传输控制协议,非常的复杂,比如网页信息的浏览都是基于http/https的,它们都是属于TCP协议中的内容,常见的协议及其常用的端口有:

  • HTTP:80
  • HTTPS:443
  • FTP:20/21
  • SSH:22
  • TELNET :23
  • SMTP/POP:25/110
  • OICQ:8000

抓取其中一个包,如下:

image-20210106222551224

实验

  • 远程登录实验

    1
    2
    3
    4
    telnet [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攻击

  • 原理

    1. 局域网内,设备之间的通信是借助于mac地址的,而mac地址的获取是借助于arp协议的。
    2. 根据arp协议,设备可以自由的发送广播包到局域网中的每台设备上进行质询,每台设备在收到针对自己的质询包时,会给予回应。
    3. 同时每台设备中的arp表在遇到新的数据包时,默认采用新数据包中的回应数据来更新本地的arp映射关系
    4. 因此在局域网中就可能会存在一个hacker设备故意欺骗其它设备,表明自己是网关的mac地址信息,此时受害的设备就会将所有原本要发送给网关的数据发送到了hacker设备上,从而达到了攻击的目的。
  • 特征

    查询受害者机器上的arp映射表,会发现arp表中网关IP对应的mac地址和另一台设备IP的mac地址一摸一样,这就说明arp表被毒化了。

  • 操作

    Windows下使用工具p2pover

    image-20210106230053441

    Windows下使用工具Cain & Abel

    image-20210106230424541

  • 防护手段

    1. 在路由器和本地双向绑定IP和mac地址的对应关系

      1
      2
      3
      4
      # 本地绑定
      arp -s [ip] [mac]

      # 路由器里面有单独设置的地方,叫:IP和MAC绑定
    2. 开启路由器中的一个功能:AP隔离,这样就禁止了同一局域网下的arp扫描

    3. 开启路由器中的一个功能:无线设备接入控制,设置只允许列表内的设备接入

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的加密技术有:WEPWAPWAP2三种,不管哪一种,都可以通过抓取用户和Wifi的握手包进行暴力破解,破解的关键在于:用我们字典中的PSK、SSID先生成PMK,然后结合握手包中的客户端MAC、AP的BSSID、A-NONCE、S-NONCE计算PTK,再加上原始的报文数据算出MIC并与AP发送的MIC比较,如果一致,那么该PSK就是密钥

EWSA