[ 笔记 ] 计算机网络安全_4_网络扫描和网络监听

[笔记] 计算机网络安全:(4)网络扫描和网络监听

  1. 网络安全基础
  2. internet协议的安全性
  3. Web安全
  4. 网络扫描和网络监听
  5. 防火墙原理与设计
  6. 入侵检测系统
  7. VPN技术

目录


4.1 网络扫描概要

4.1.1 网络扫描相关概念

什么是网络扫描
  • 网络扫描
    • 向指定对象发送特定网络报文,根据反馈判断、评估对象的相关信息和状态的网络技术
  • 哪些信息和状态?
    • 确定目标网络内哪些主机是活动的
    • 主机的操作系统类型
    • 开放了哪些端口、提供哪些服务
    • 运行的应用程序的版本号
    • ……
  • 最终目的:发现指定目标的潜在漏洞
网络安全扫描系统安全扫描
策略主动式策略被动式策略
方式基于网络基于主机
内容通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞对系统中不合适的设置,脆弱的口令以及其 他同安全规则抵触的对象进行检查
影响对系统进行模拟攻击,可能会对系统造成破 坏不会对系统造成破坏
扫描策略
  • 隐蔽扫描
    • 对非连续端口进行扫描,并且源地址不一致、时间间隔长没有规律
    • 又叫做慢速扫描、乱序扫描
  • 主动扫描
    • 对连续的端口进行扫描,源地址一致,时间间隔短

4.1.2 网络扫描使用场景

安全运维:漏洞扫描、渗透测试

黑客:入侵攻击

漏洞扫描
  • 概念
    • 通过一定的网络扫描技术手段
    • 发现系统和软件存在的安全漏洞
  • 目的
    • 一种主动的防范措施,可以及时有效发现网络安全漏洞
    • 在攻击发生之前进行防范,做到防患于未然
    • 保证业务顺利的开展,维护公司、企业、国家信息资产安全

系统扫描 vs Web扫描
在这里插入图片描述

漏洞扫描工作机制

在这里插入图片描述

扫出漏洞的处理

  • 基本办法
    • 升级应用版本,如openssh
    • 安装安全漏洞补丁,如oracle CPU安全补丁
    • 修改应用配置,如启用认证授权模块
    • 更换更安全的其他应用/协议,如将telnet更换为ssh
    • 卸载应用,如非必要的运维应用
  • 临时风险规避办法
    • 官方提供的临时规避办法,如微软官方提供的缓解因素和变通办法
    • 严格的端口访问控制策略,仅允许可信的有限源访问目标IP和端口
    • 安全防护设备
渗透测试

概念

  • 模拟攻击者入侵系统,对系统进行一步步地渗透,发现系统的脆弱环节和隐藏风险
  • 形成测试报告提供给系统所有者
  • 系统所有者可根据该测试报告对系统进行加固,提升系统的安全性,防止真正的攻击者入侵

前提

  • 经过系统所有者的授权
  • 未经过授权的渗透测试,就是违法行为

区别

  • 渗透测试
    • 在漏洞扫描的基础上
    • 执行漏洞利用
    • 证明系统确实存在安全隐患
    • 能够模拟黑客行为并提供攻击载荷
    • 比漏洞扫描更进一步
  • 漏洞扫描: 检查系统和服务是否存在潜在安全问题

渗透测试的类型

  • 白盒测试
    • 了解目标的源码或某些信息的情况下进行渗透
    • 类似代码审计
  • 灰盒测试
    • 掌握了目标系统的网站组织架构、网络拓扑等设计模拟进行的渗透
  • 黑盒测试
    • 在仅知道目标是什么,其余信息均未知的情况下进行渗透
    • 完全模拟黑客的入侵行为

渗透测试步骤

  1. 信息收集
    • 主动收集
    • 被动收集
  2. 扫描
    • 端口扫描
    • 漏洞扫描
  3. 漏洞利用
    • 获取权限
    • metasploit
  4. 维持访问
    • 安装后门
    • 擦除日志
  5. 渗透测试报告
    • 综合报告
    • 详细报告
    • 原始数据

渗透后处置

  • 如何提高WEB系统安全性?
    • 及时升级JDK版本
    • 清理不安全的第三方库
    • 中间件版本补丁及时更新
    • 删除不需要的页面
    • 避免使用弱口令,及时更换口令
  • 漏洞不能及时修复时如何临时规避?
    • 通过专业的安全设备防护(例如WAF、IPS),更新相应的防护规则
    • 限制特定端口的访问权限
    • 自定义过滤规则
黑客入侵攻击
  • 入侵的目的通常是攻击者在未授权的情况下获取系统权限或信息,通常具有一定的隐蔽性或破坏性
  • 根据《中华人民共和国刑法》第二百八十五条规定,非法侵入计算机信息系统罪,是指违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的行为。犯本罪,处三年以下有期徒刑或者拘役

黑客攻击步骤

  1. 隐藏IP
    • 利用“肉鸡”
      • 首先入侵互联网上的一台电脑
      • 利用这台电脑进行攻击,这样即使被发现了,也是“肉鸡”的IP地址
    • 多级跳板
      • “socks代理”
      • 在入侵的电脑上留下的是代理计算机的IP地址
  2. 踩点扫描
    • 踩点就是通过各种途径对所要攻击的目标进行多方面的了解,以便实施有效的攻击
    • 扫描的目的是利用各种工具在攻击目标的IP地址或地址段的主机上寻找漏洞
    • 黑客需要的信息
      • 域名
      • 可以访问到的IP地址
      • 每个主机上运行的TCP/UDP服务
      • 系统体系结构
      • 访问控制机制
      • 系统信息(用户名和用户组名、系统标识、路由表、SNMP信息等)
      • 其它信息…
    • 信息收集步骤
      • 找到初始信息
      • 找到网络地址范围
      • 找到活动的机器
      • 找到开放的端口
      • 弄清操作系统
      • 弄清服务软件类型及型号
      • 针对特定的应用和服务漏洞扫描
  3. 获取权限
    • 得到管理员权限的目的是连接到远程计算机,对其进行控制,达到自己攻击目的
    • 获得系统及管理员权限的方法
      • 通过系统漏洞获得系统权限
      • 通过管理漏洞获得管理员权限
      • 通过软件漏洞得到系统权限
      • 通过监听获得敏感信息进一步获得相应权限
      • 通过弱口令获得远程管理员的用户密码
      • 通过穷举法获得远程管理员的用户密码
      • 通过攻破与目标机有信任关系另一台机器进而得到目标机的控制权
      • 通过欺骗获得权限以及其他有效的方法
  4. 种植后门
    • 为了保持长期对自己胜利果实的访问权,在已经攻破的计算机上种植一些供自己访问的后门。
  5. 隐身
    • 一次成功入侵之后,一般在对方的计算机上已经存储了相关的登录日志,这样就容易被管理员发现。
    • 在入侵完毕后需要清除登录日志以及其他相关的日志

4.1.3 常见网络扫描工具

Nmap
  • Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的网络探测和安全审核工具
  • 网址:https://nmap.org/
  • Nmap以新颖的方式使用原始IP报文来发现
    • 网络上有一些主机
    • 那些主机提供什么服务(应用程序名和版本
    • 那些服务运行在什么操作系统(包括版本信息)
    • 它们使用什么类型的报文过滤器/防火墙
    • 以及一堆其他功能
  • 主机发现
    • -sP 仅进行ping扫描 (主机发现),不做进一步的测试
    • -PS [portlist] 发送一个设置了SYN标志位的空TCP报文,默认目的端口为80
    • -PA [portlist] 发送一个设置了ACK标志位的空TCP报文,默认目的端口为80
    • -PU [portlist] 发送一个空的(除非指定了–data-length)UDP报文到给定的端口,默认是31338
    • -PR ARP扫描
  • 端口扫描
    • -sS TCP SYN扫描,可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的)状态
    • -sT TCP connect()扫描,当用户没有权限发送原始报文或者扫描IPv6网时默认使用
    • -sU UDP扫描,发送空的(没有数据)UDP报头到每个目标端口
    • -sATCP ACK扫描,用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的
  • 端口状态
    • open(开放的)
      • 应用程序正在该端口接收TCP 连接或者UDP报文
    • closed(关闭的)
      • 关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程 序在其上监听
    • filtered(被过滤的)
      • 由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放
      • 过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙
    • unfiltered(未被过滤的)
      • 未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭
      • 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态
    • open|filtered(开放或者被过滤的)
      • 当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成这种状态
    • closed|filtered(关闭或者被过滤的)
      • 该状态用于Nmap不能确定端口是关闭的还是被过滤的。
      • 它只可能出现在IPID Idle扫描中
  • 服务和版本探测
    • nmap-service-probes 数据库包含查询不同服务的探测报文和解析 识别响应的匹配表达式
    • Nmap试图确定
      • 服务协议 (如 ftp,ssh,telnet,http)
      • 应用程序名(如ISC Bind,Apache httpd,Solaris telnetd)
      • 版本号
      • 主机名
      • 设备类型(如 打印机,路由器)
      • 操作系统家族 (如Windows,Linux)
      • 其它的细节,如是否可以连接X server,SSH协议版本,或者KaZaA用户名
    • -sV 打开版本探测
    • -O 启用操作系统检测
profile参数说明
Intense scannmap -T4 -A -v一般扫描,-T4 加快执行速度,-A 操作系统及版本探测,-v 显示详细的输出
Intense scan plus UDPnmap -sS -sU -T4 -A -v即TCP/UDP端口扫描
Intense scan,all TCP portsnmap -p 1-65535 -T4 -A -v扫描所有TCP端口,范围在1-65535,试图 扫描所有端口的开放情况
Intense scan,no pingnmap -T4 -A -v -Pn跳过主机发现扫描
X-Scan
  • X-Scan是国内最著名的综合扫描器之一
    • 完全免费
    • 不需要安装的绿色软件
    • 界面支持中文和英文两种语言
    • 包括图形界面和命令行方式
  • 主要由国内著名的民间黑客组织“安全焦点”完成,凝聚 了国内众多黑客的心血
    • 停更状态
  • 技术特点
    • 采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测
    • 支持插件功能
    • 提供了图形界面和命令行两种操作方式
    • 扫描内容包括二十几个大类
      • 远程服务类型
      • 操作系统类型及版本
      • 各种漏洞:弱口令、后门
      • 应用服务漏洞
      • 网络设备漏洞
      • 拒绝服务漏洞
    • 对于多数已知漏洞,给出了相应的漏洞描述、解决方案及详细描述链接
nessus
  • nessus号称世界上最流行的漏洞扫描程序
    • 通常包括成千上万的最新的漏洞
    • 各种各样的扫描选项
    • 易于使用的图形界面
    • 有效的报告
  • 网址:https://www.tenable.com/products/nessus
  • 1998年,Renaud Deraison创办了 “Nessus”计划,提供开源免费、功能强大、更新频繁、简单易用的安全扫描程序,逐渐 受到认可
  • 2002年,Renaud与Ron Gula、Jack Huffard创办了Tenable Ne twork Security,2005年12月Nessus 3.0发布时,收回了Nessus的版权与程序源代码,开始商业化运营
  • 2021年8月10日发布8.15.1版本
  • 技术特点
    • 采用B/S体系结构,用户通过浏览器访问WEBUI与服务器通信,发送扫描请求给服务器,由服务器启动扫描并将结果呈现给用户
    • 扫描代码与漏洞数据相互独立,Nessus针对每一个漏洞有一个对应的插件,漏洞插件是NASL(NESSUS Attack Scripting La nguage)编写的一小段模拟攻击漏洞的代码,这种利用漏洞插件的扫描技术极大的方便了漏洞数据的维护、更新
    • 具有扫描任意端口任意服务的能力
    • 以用户指定的格式(ASCII 文本、html 等)产生详细的输出报告,包括目标的脆弱点、怎样修补漏洞以防止黑客入侵及危险级别

4.2 网络扫描技术

4.2.1 主机扫描

  • 目的
    • 确定在目标网络上的主机是否可达
    • 同时尽可能多映射目标网络的拓扑结构
  • 传统技术
    • ICMP Echo(ping)扫描
    • ping sweep扫描
    • 广播ICMP扫描
    • 非ECHO的ICMP扫描
  • 高级技术
    • ICMP错误报文探测
(1) ICMP Echo(ping)扫描
  • 原理
    • 向目标主机发送ICMP Echo Request(type 8)数据包,等待回复的ICMP Echo Reply 包(type 0)
    • 如果能收到,则表明目标系统可达,否则表明目标系统已经不可达或发送的包被对方的设备过滤掉
  • 优点 简单,一般操作系统自带支持
  • 缺点 很容易被防火墙限制
(2) ping sweep扫描
  • 原理 使用ICMP ECHO轮询多个主机
  • 特点 对于中小型网络尚可接受,对于大型网络速度比较慢
  • 工具 fping
(3) 广播ICMP扫描
  • 原理 通过向广播地址发送ICMP ECHO报文来发现目标网络中活动的主机
  • 特点 只适用于目标网络的Unix主机
  • 常用工具 ping -b
(4) 非ECHO的ICMP扫描
  • 其他请求应答
    • TimeStamp Request (Type 13) & Reply (Type 14)
      • 请求系统返回当前时间,目的是查看系统所在的时区
    • Address Mask Request (Type 17) & Reply (Type 18)
      • 地址掩码请求分组,即能请求返回某个设备的子网掩码
  • 工具 hping3
(5) ICMP错误消息探测
  • 异常的IP包头 目标主机或路由设备会返回ICMP Parameter Problem Error报文
  • 错误的数据分片 目标主机反馈ICMP Fragment Reassembly Time Exceeded报文
(6) 其他高级主机扫描
  • traceroute探测路径路由器
    • 依次发送TTL为1、2、3…的UDP报文,路径上的路由器会依次反 馈ICMP TTL超时消息
  • 超长包探测路由器
    • 构造长度超过MTU的数据包,且设置DF标志,路由器会反馈ICMP Fragmentation Needed and DF Bit was Set报文
(7) 主机扫描对策
  • 使用可以检测并记录ICMP扫描的工具
  • 在防火墙中设置ICMP过滤规则
  • 使用IDS

4.2.2 端口扫描

  • 目的
    • 确定在目标主机哪些TCP、UDP端口可访问
    • 端口 – 服务进程
  • 类型
    • 开放扫描(open scanning)
    • 半开扫描(half-open scanning)
    • 隐蔽扫描(stealth scanning)
  • 常用工具 nmap netcat
(1) TCP端口扫描原理
动作响应
一个SYN/ACK/FIN报文到达一个关闭的端口返回一个RST报文
一个SYN/ACK/FIN报文到达一个开放的端口报文被丢弃
一个包含ACK的报文到达一个开放端口报文被丢弃,同时返回一个RST报文
一个不包含SYN位的报文到达一个开放端口报文被丢弃
一个SYN报文到达一个开放端口正常三次握手,回答一个SYN
(2) 开放扫描
  • 实现原理
  • 直接调用socket函数connect()连接到目标,完成一次完整的三次握手过程
  • 如果端口处于侦听状态,那么connect()就能成功返回
  • 否则,这个端口不可用,即没有提供服务
  • 优点 稳定可靠,不需要特殊的权限
  • 缺点
    • 扫描方式不隐蔽,服务器日志会记录下大量密集的连接和错误记录
    • 容易被防火墙发现和屏蔽
    • 扫描速度慢
(3) 半开扫描
  • 实现原理
    • 扫描器向目标主机端口发送SYN包
    • 如果应答是RST包,那么说明端口是关闭的
    • 如果应答中包含SYN和ACK包,说明目标端口处于监听状态,再传送一个RST包给目标机从而停止建立连接。由于在SYN扫描时,全连接尚未建立,所以这种技术通常被称为半连接扫描
  • 优点 隐蔽性较全连接扫描好,一般系统对这种半扫描很少记录
  • 缺点 通常构造SYN数据包需要超级用户或者授权用户访问专门的系统调用
(4) 隐蔽扫描
  • 实现原理
    • 扫描器向目标主机端口发送FIN包
    • 当一个FIN数据包到达一个关闭的端口,数据包会被丢掉,并且返回一个RST数据包
    • 否则,若是打开的端口,数据包只是简单的丢掉(不返回RST)
  • 优点
    • 不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽得多
    • FIN数据包能够通过只监测SYN包的包过滤器
  • 缺点
    • 跟SYN扫描类似,需要自己构造数据包,要求由超级用户或者授权用户访问专门的系统调用
    • 通常适用于UNIX目标主机,除去少量的应丢弃数据包却发送RST包的操作 系统(包括CISCO,HP/UX,MVS和IRIX)。但在Windows95/NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都返回RST包
(5) TCP扫描技术比较
优点缺点
开放扫描可靠性高会产生大量的审计数据,容易被对方发现,扫描速度慢
半开扫描介于二者之间介于二者之间
隐蔽扫描有效避免对方入侵检测系统和防火墙的检测数据包在通过网络时容易被丢弃从而产生错误的探测信息
(6) UDP端口扫描
  • 实现原理
    • 扫描器向目标主机UDP端口发送UDP数据包
    • 如果它是关闭的,就会给源端发回一个ICMP的端口不可达消息
    • 否则,若是打开的端口,数据包只是被忽略,不返回任何的信息
  • 优点 简单易行
  • 缺点 可靠性不高,开放还是丢失?
  • 扫描速度慢,RFC1812对ICMP错误报文的生成速度做出了限制
(7) 端口扫描对策
  • 使用状态检测防火墙
  • 在主机上禁止所有不必要的服务

4.2.3 操作系统探测

  • 目的
    • 探测目标主机的操作系统类型
    • 甚至版本信息
  • 探测方式
    • 主动探测
    • 被动探测
  • 技术路线
    • 应用层探测技术
    • TCP协议栈指纹探测技术
(1) 主动探测 vs 被动探测
主动探测被动探测
向目标系统发送构造的特殊包并监控其应答来识别操作系统类型通过Sniff收集数据包,再对数据包的不同特征进行分析识别操作系统类型
速度快速度慢
可靠性高可靠性不高
具有攻击性,易被发现阻断不具备攻击性,具有很好的隐蔽性
严重依赖于目标系统网络拓扑结构和过滤规则严格依赖扫描主机所处的网络拓扑结构
(2) 应用层探测技术
  • 实现原理
    • 使用telnet、SSH等协议登录目标主机
    • 登录后显示的系统旗标(banner)信息可能显示出操作系统
  • 缺点
    • 依赖于目标主机提供相应服务
    • 容易修改隐藏
(3) TCP协议栈指纹探测技术
  • 协议栈存在指纹的原因
    • 虽然许多操作系统都是基于旧的BSD版本的TCP协议栈,但是已经进行了很多更改,因此现在所有主要操作系统之间都存在相当大的差异
    • 为了解决关键缺陷,厂商会向其TCP协议栈发布补丁
    • 为了改进提升,厂商也会修改调整TCP协议栈的实现
  • 指纹因素
    • IP TTL、IP TOS、IP DF位…
    • TCP Window-size、TCP ISN…
  • 不同操作系统的TCP ISN特征
    • 传统的64K(许多老UNIX机器)
    • 随机增量(新版本的Solaris,IRIX,FreeBSD,Digital UNIX ,Cray等)
    • 真“随机”(Linux 2.0.*,OpenVMS,新的AIX等)
    • Windows 机器用一个“时间相关”模型,每过一段时间ISN就被加上一个小的固定数
  • 一些操作系统的典型指纹特征
  • Linux 2.2/2.4的TCP SYN报文
    • IP TTL:64
    • TCP Window:5840
    • TCP Options:MSS,Timestamps,sackOK,wscale,1 nop
  • OpenBSD的TCP SYN报文
    • IP ID:完全随机
    • TCP Options:MSS,Timestamps,sackOK,wscale,5 nops
    • 包长:64字节
  • Solaris 7的TCP SYN报文
    • IP TTL:255
    • IP ID:始终递增1
    • TCP Window:8760
    • TCP Options:MSS
    • 包长:44字节
Nmap的指纹库
  • 指纹模板文件:nmap-os-fingerprints.txt

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4) 操作系统探测对策
  • 操作系统及时打补丁
  • 修改OS源代码从而改变特征
  • 禁止不必要的服务

4.2.4 应用服务探测

  • 目的
    • 识别出服务软件类型和版本
    • 进而发现特定的应用和服务漏洞
  • 探测方法
    • 原理扫描
    • 版本扫描
(1) 服务识别
常见端口对应服务可利用的漏洞
21ftp弱口令
22/23SSH/telnet弱口令
80/443HTTP/HTTPSWEB相关漏洞
3306mysql弱口令
6379redis未授权访问
7001weblogicweblogic相关漏洞
8080TomcatTomcat相关漏洞
  • 基于 Banner 信息识别
    • 与目标端口建立TCP连接,接收返回的WelcomeBanner信息
    • 将接收到的Banner与服务指纹数据库中的数据进行对比
    • 查找对应的应用程序名字与版本信息
  • WEB网站指纹识别
    • 服务器类型
      • Windows、Linux
    • 网站容器
      • apache、nginx、tomcat、IIS
    • 脚本类型
      • php、jsp、asp、aspx
    • 数据库类型
      • mysql、oracle、access、sqlserver
(2) 原理扫描
  • 扫描机制
    • 根据特定漏洞原理,构造漏洞利用数据包(特定无害行为)发送到目标主机,判断主机响应情况
    • 如果返回数据符合预期结果(实现了此前构造的特殊动作),则报出该漏洞
  • 支持的漏洞
    • 联网上公开了漏洞原理的漏洞
    • 公开了漏洞概念性证明(PoC,Proof of Concept)的漏洞
    • 甚至是公开了漏洞利用脚本工具(EXP,Exploit)的漏洞
  • 特点
    • 误报率低:实际利用漏洞,只有目标真实存在漏洞,才会返回特定的响应数据
    • 可实现的漏洞较少
(3) 版本扫描
  • 扫描机制
    • 基于服务banner信息判断应用使用的程序及版本
    • 查询漏洞数据库中相关软件版本存在的漏洞信息
  • 支持的漏洞
    • 未公开漏洞原理、PoC、EXP的漏洞
    • 常见类型包括:Apache、Tomcat、Nginx、Weblogic、Webspher e、PHP、OpenSSH、Oracle、FTP、NTP、MySQL等
  • 特点
    • 误报率高:仅依据banner,banner可能失真
    • 多数漏洞未公开原理及利用方式,要保证低漏报率
(4) 服务探测对策
  • 禁止不必要的服务
  • 服务软件正确配置、及时升级
  • 修改应用源代码改变banner特征

4.3 网络监听

4.3.1 网络监听概述

网络监听概念
  • 网络监听(Network Listening)也称网络嗅探(Network Sniffing)
  • 含义
    • 监视网络的流量、状态、数据等信息
    • 捕获网络上传输的数据并进行分析
网络监听用途
  • 网络管理员
    • 监视网络的状态、观测分析实时数据包,定位网络故障
    • 作为网络入侵检测系统的底层数据来源
  • 网络程序员
    • 分析程序网络行为,调试程序
  • 攻击者
    • 窃取敏感数据
    • 为发起进一步攻击收集网络信息
网络监听的威胁
  • 敏感信息泄露
    • 因特网在设计之初就没有考虑过安全问题
      • 早期观点:一群相互信任的用户连接到一个透明的网络上
      • 当初网络设计的时候,是按电话网络的思路来设计的
    • 目前仍广泛使用的部分协议使用明文传输数据,包括口令等敏感信息
      • telnet、SMTP、POP3、HTTP、FTP等
  • 后续入侵准备
    • 了解局域网的IP信息
    • 了解局域网的MAC信息
    • 了解局域网的拓扑结构
    • 了解局域网的主要应用

4.3.2 网络监听原理

(1) 网卡工作模式
  • 普通模式
    • 只接收
      • 目的MAC是自身的帧
      • 广播帧
    • 不能接收发给其他站点的帧,无法监听!
  • 混杂模式
    • 接收接口收到的任何帧
    • 可以接收发给其他站点的帧
    • 总线式以太网,可以监听!!
    • 交换式以太网??
(2) 总线式以太网
  • 联网方式
    • 同轴电缆
    • 集线器
  • 通信机制
    • 源站点发出的以太帧经总线广播
    • 总线上所有站点的网卡都可以收到以太帧
  • 一般情况下,网卡检查以太帧的目的MAC
    • 广播地址:接收
    • 组播地址:若网卡加入了该组,接收
    • 单播地址:与自身MAC地址相同,接收;不同,丢弃
(3) 交换式以太网
  • 联网方式
    • 交换机
  • 通信机制
    • 交换机自学习交换表
      • <MAC地址,转发端口,时间戳>
  • 交换机收到以太帧,检查目的MAC
  • 在交换表中
    • 转发端口与接收端口相同,丢弃
    • 向转发端口转发
  • 不在交换表中
    • 向其他所有端口转发
  • 站点网卡从端口收到以太帧,执行总线式同样的检查
(4) 交换式以太网监听
  • 管理员的方法
    • 流量镜像——交换机将指定的流量复制一份发送到指定的镜像端口
  • 攻击者的手段
    • MAC Flooding
      • 向交换机发送大量含有虚构MAC地址和IP地址的IP包
      • 使交换机的交换表满载溢出,进入failopen状态
      • 交换机->集线器
    • ARP欺骗
      • 利用免费ARP( Gratuitous ARP ),或抢先应答ARP Request
      • 对主机——假冒网关的MAC
      • 对网关——假冒主机的MAC
      • 使流量通过攻击主机,实现监听、中间人攻击
    • ICMP重定向
      • 引导用户流量发送到假冒的下一跳网关,实现监听
(5) 广域网光纤分流监听

在这里插入图片描述

(6) WIFI监听
  • WIFI
    • 802.11协议族
    • 在开放空间传输的无线通信协议
    • MAC采用冲突避免的载波侦听多路访问CSMA/CA
  • 利用协议安全机制缺陷的监听
    • 无加密:直接监听
    • WEP:存在缺陷,已破解监听
    • WPA/WPA2:相对安全,弱口令也易被破解
  • 利用免费WIFI监听
    • 自建热点,假冒免费WIFI,将用户通信引至恶意AP监听
(7) 协议分析
  • 对象
    • 网卡接收的数据包字节流
  • 方法
    • 从链路层帧开始,逐层按照对应协议格式匹配解析首部、数据(和尾部)
  • 目的——获取数据包的信息
    • 源目的MAC地址
    • 五元组:源目的IP地址、运输层 协议、源目的端口
    • 流重组提取应用层数据

4.3.3 网络监听防范

(1) 网络监听发现
  • 监听主机的特点:网络接口设为混杂模式

  • ping测试发现
    在这里插入图片描述

  • 包测试发现

在这里插入图片描述

(2) 网络监听防范措施
  1. 从逻辑或物理上对网络分段
    • 网络分段通常被认为是控制网络广播风暴的一种基本手段,但其实也是保证网络安全的一项措施。
    • 其目的是将非法用户与敏感的网络资源相互隔离,从而防止可能的非法监听出现
  2. 以交换机代替集线器
    • 对局域网的中心交换机进行网络分段后,局域网被监听的危险仍然存在
      • 网络最终用户的接入往往是通过分支集线器而不是中心交换机直连
      • 分支集线器通常是共享式集线器
      • 当用户与主机进行数据通信时,两台机器之间的单播数据包(Unicast Packet)还是会被同一台集线器上的其他用户所监听
    • 以交换机代替分支集线器,使单播数据包仅在两个结点之间传送,从而防止非法监听
      • 交换机价格已经足够便宜
      • 交换机只能控制单播包而无法控制广播包(Broadcast Packet)和多播包(Multicast Packet),但广播包和多播包内的关键信息要远远少于单播包
  3. 划分VLAN
    • 运用VLAN(虚拟局域网)技术
    • 在交换机上划分VLAN,减小交换机的广播域
    • 控制以太网广播通信的范围
  4. 动态机制修改为静态设置
    • 静态ARP
      • 主机、网关上设置
      • 防止ARP欺骗
    • MAC-端口映射
      • 交换机上设置
      • 防止MAC假冒
  5. 使用加密技术
    • 数据经过加密后,可以监听到传输数据,但看到是乱码,无法提取敏感信息
      • telnet → SSH
      • http → https(TLS)
      • IPSec
    • 缺点
      • 影响数据传输速度
      • 弱加密技术比较容易被破解
    • 系统管理员和用户需要在网络速度和安全性上进行权衡

4.3.4 网络监听工具

(1) tcpdump
  • 免费命令行抓包工具
  • linux、BSD等类Unix操作系统默认安装
    • 使用libpcap库
  • 显示监听到的网络报文信息
    • 指定网络接口
    • 按时间顺序
    • 符合过滤条件
  • 需要root权限开启网卡混杂模式
  • 命令格式:tcpdump [选项] [过滤表达式]
  • 常用选项
    • 带参数
      • -i interface:指定监听接口,默认第一个网络接口
      • -s snaplen:设置数据包抓取长度为snaplen
      • -c count:设置抓取包的数量
      • -w file:将抓包数据写到文件中而不是标准输出
      • -r file:从给定的数据包文件中读取数据
    • 不带参数
      • -n:显示时不将地址转换为名字
      • -nn:在-n基础上,端口显示数值,而不转换为服务名
      • -e:输出信息包含链路层头部信息
      • -X:以16进制和ASCII两种形式扩展输出包的数据
      • -v:当分析和打印的时候,产生详细的输出
  • 过滤表达式
    • pcap过滤器语法
    • 基本单元:[proto] [dir] type ID
      • 协议proto:ether、arp、ip、tcp、udp等
      • 方向dir:src、dst、src or dst、src and dst等
      • 类型type:host、net、port、portrange
    • 组合条件连接符
      • and、&&、or、||、not、!
      • 括号“()”改变优先级,需用反斜线“\”转义
    • 示例
      • host 192.168.1.2 and not port ftp and not port 20
(2) wireshark
  • 支持多平台
    • Windows
      • 基于Npcap或WinPcap库
    • macOS
    • Linux
    • Solaris、FreeBSD、NetBSD…
  • 支持监听各类设备
    • 以太网
    • IEEE
    • 802.11(WLAN)
    • 蓝牙
    • USB
  • 实时捕获和离线分析
  • 标准三窗格数据包浏览器
  • 捕获数据可以通过GUI或TTY模式TShark浏览
  • 数据包列表着色规则,便于快速、直观的分析
  • 双重过滤机制
    • BPF规范的捕获过滤器
      • 过滤捕获的数据包,以免太多数据包消耗过多资源
    • 业界最强大的显示过滤器
      • 在捕获的数据包中进一步过滤查找所需要的数据包
  • 丰富的文件格式支持
    • 读/写多种不同的捕获文件格式
      • tcpdump(libpcap)
      • Sniffer®Pro
      • NetXray®
    • 使用gzip压缩的捕获文件可以动态解压缩
    • 解析结果可导出为XML、PostScript® 、CSV或纯文本
  • 强大的解析分析能力
    • 深入解析数百个协议,还在不断添加更多协议支持
    • 协议流追踪
    • 各种数据统计分析
    • 丰富的VoIP分析
    • 对许多协议的解密支持

4.3.5 网络监听开发技术

  • 基于原始套接字
  • 基于数据包捕获库(PCAP)
  • 基于scapy
  • 基于内核协议栈
(1) 基于原始套接字监听
  • 原始套接字,即raw socket
  • 绕过系统内核协议栈接收和发送原始数据包
  • 用户可以自行构造数据包,包括各层首部
  • 需要管理员权限
Socket接收报文

在这里插入图片描述

获得报文的拷贝

在这里插入图片描述

  • 监听数据包
    • 接收所有数据包
      • 需自行将网卡设置为混杂模式
      • WSAIoctl:SIO_RCVALL
    • 数据包解析
      • 存放在缓冲区
      • 按照数据结构进行强制类型转换,访问具体数据
        在这里插入图片描述
用原始套接字进行报文捕获示例

在这里插入图片描述

(2) PCAP: Packet Capture API
  • 最开始来源于tcpdump
  • 多平台支持:
    • Linux: libpcap
    • Windows: winpcap 和npcap
  • C语言写的,实现语言实现封装
  • 基于pcap的工具:Wireshark,tcpdump,scapy,McAfee, nmap, snort
  • Pcap功能
    • 获得网卡设备列表及其高级信息
    • 打开一个网卡适配器并将其设置成混杂模式
    • 捕获数据包
    • 设置过滤器
    • 将数据包存储为文件并处理离线文件
    • 发送数据包
    • 收集网络通信流量的统计信息
    • 但是,Pcap不能修改数据包或者拦截数据包
WinPcap程序框架

在这里插入图片描述

用pcap写的监听程序

在这里插入图片描述
在这里插入图片描述

(3) 基于内核协议栈监听
  • Netfilter
    • Linux内核协议栈的子系统
    • 在协议栈处理流程的关键位置设置HOOK点,可以注册回调函数处理报文
  • Linux内核空间和用户空间信息交互
    • 编写自己的系统调用
    • 编写设备驱动程序
    • 使用proc文件系统
    • 使用netlink
    • 使用内存映像
回调函数返回值
返回值含义
NF_DROP丢弃该数据包
NF_ACCEPT保留该数据包
NF_STOLEN告知netfilter忽略该数据包
NF_QUEUE将该数据包插入到用户空间
NF_REPEAT请求netfilter再次调用该HOOK函数
Netfilter框架

在这里插入图片描述

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值