2018-2019-2 20189206 《网络攻防实践》 第四周作业

2018-2019-2 20189206 《网络攻防实践》第四次作业


课本内容——网络嗅探与协议分析

网络嗅探

网络嗅探利用计算机的网络接口截获目的地址为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息。实现网络嗅探技术的工具称为网络嗅探器

截获到的经过封包的二进制数据,通常会结合网络协议分析技术来解析嗅探到的网络数据。

网络嗅探是攻击者经常使用的内网渗透技术,通常在攻击者获得内部网络中的一台主机的访问权后实施。可以静默地、被动地嗅探网络上传输的数据。

网络嗅探技术与工具分类

网络嗅探技术可以按照所监听的链路层网络进行分类:
  • 以太网 WiFi是有线局域网和无线局域网最流行的链路层协议,也是网络嗅探的主要监听对象。
    • tcpdump支持对以太网的嗅探
    • kismet支持WiFi网络的监听
    • 以上两种针对不同局域网的嗅探器在对数据包实际进行破解和分析的时候完全没有区别。唯一的区别是无线嗅探器可以读取和分析符合无线传输协议的数据包。
网络嗅探器按照实现形式可以分为:
  • 软件嗅探器 和 硬件嗅探器
    • 硬件嗅探器通过专用网络对网络数据进行捕获和分析,也称为协议分析仪,硬件嗅探器通过专用硬件对网络数据进行捕获和分析,数据全面,但成本较高,价格高昂。
    • 软件嗅探器一般实现位不同操作系统类型上的应用软件,通过对网卡进行编程实现,价格便宜,易于使用,但速度慢,数据不全面。

网络嗅探的原理与实现

以太网的工作原理:

以太网是IEEE指定的有线网络协议标准,以太网是共享通信信道,采用载波侦听/冲突检测技术,避免共享链路上的通信冲突。网络上的站点使用在信道的上的广播机制来发送自己的数据,意味着计算机能够接受到在共享媒介上发送给其他计算机的信息。

以太网中的数据以“帧”为单位传输,以太网帧头中包括发送源的MAC地址与目标MAC地址。当站点需要发送数据时,通过协议栈进行TCP/IP封包,在数据链路层“装配”帧头与帧尾,发送至共享通信介质上。

网卡驱动程序在正常模式下,只会接受目标MAC地址与自身MAC地址相匹配的数据帧,产生中断信号通过CPU由操作系统根据中断程序调用驱动程序接受数据,放入信号堆栈,让操作系统进行反向的拆包处理

网卡的混杂模式将会接收一切通过它连接共享通信媒介的数据帧,不管该数据帧是否是传给他的。

共享式网络与交换式网络中的嗅探

利用以太网部署有线局域网时,根据部署方式不同分为共享式网络与交互式网络两种。

  • 共享式网络:使用集线器连接,网络拓扑基于总线方式,物理上广播
    • 当主机A向C发送数据,集线器接收到数据,会把它所接收到的数据发送到所有接口。集线器上任意一台主机都能够嗅探整个集线器上的全部网络流量。
  • 交互式网络:使用交换机组件,所有数据帧通过交换机进行转发
    • 交换机中存有“MAC地址-端口映射表”会检查接收到的数据帧,对数据帧进行转发处理,如果没有该MAC地址,将数据包广播到所有端口上,拥有该MAC地址的网卡在接受到该广播帧后作出应答,交换机添加记录到映射表中。

即使是在纯交换的网络中,采用以下技术手段,使得本不应到达的数据包到达本地,实现嗅探。

  • MAC地址泛洪攻击

    • 向交换机发送大量含有虚构MAC地址和IP地址的数据包,使映射表溢出无法处理,交换机进入类似集线器的工作方式。
  • MAC欺骗

    • 假冒所要监听的主机网卡,攻击者将源MAC地址伪造成目标MAC地址的源MAC地址,交换机将会相信攻击者主机的MAC地址就是目标主机的MAC地址。
    • 这里没有太看懂,参考博客有更详细的叙述关于ARP、MAC、IP欺骗以及TCP劫持
  • ARP欺骗

    • 利用IP地址与MAC地址之间进行转换时的协议漏洞,达到MAC欺骗攻击者通过对网关和目标主机进行ARP欺骗,截获两者之间的通信数据,在交换式局域网中达到网络嗅探的目的
Linux平台网络嗅探技术的实现

主要通过内核态的BPF和用户态的libpcap抓包工具库实现

  • BPF

    • 是数据链路层上的原始接口,提供原始链路层封包的收发功能。如果网卡处于混杂模式,将会收到网络上所有包。
    • 支持“过滤”封包
  • libpcap

    • 与内核态BPF包嗅探与过滤机制想配合,为类Unix平台上的应用程序提供标准的网络嗅探接口
  • 嗅探所捕获的数据包保存在pcap记录文件中,成为了类UNIX平台上存储网络数据包的标准格式

Linux平台网络嗅探技术的实现

Windows操作系统内核不提供标准的网络嗅探与抓包接口,需要增加一个驱动程序或网络组件来访问内核网卡驱动中捕获的数据包。

  • NPF
    • 是一个内核态虚拟设备驱动程序,功能是过滤数据包,将数据包原封不动传给用户模块
  • WinPcap
    • 包括packet.dll和wpcap.dll两层模块的标准抓包接口

网络嗅探器软件

Linux平台网络嗅探器软件

在类UNIX平台上使用的网络嗅探器软件一般基于标准接口BPF和libpcap,最常用包括libcap抓包开发库、tcpdump以及wireshark嗅探器软件。

  • libpcap抓包开发库

基于libpcap库实现的一个最简单的网络嗅探程序:

  • tcpdump嗅探器软件

tcpdump是通用的命令行网络嗅探器与数据包分析协议,允许用户能够从主机所在网络上截取和显示特定的TCP/IP数据包。命令 src 192.168.199.200 and tcp dst port 80可以查看源主机向外连接的HTTP网络流量的情况。
命令tcpdump 将监视第一个网络接口上所有流过的数据包。

  • wireshark嗅探器软件
Windows平台网络嗅探器软件

类UNXI平台上的BPF/winpcap/windump标准嗅探接口与程序在Windows平台上有对应的移植版本。

实践

利用tcpdump对在本机上访问www.tianya.cn网站过程进行嗅探,截图如下:


协议分析

网络嗅探截获的是通过封包过程组装的二进制格式原始报文内容,为了获取其包含信息,要根据TCP/IP协议栈的协议规范重新还原数据包在各个协议层上的协议格式及内容。

网络协议分析技术

网络协议分析类似于解包过程,需要从底层向上层逐层地解析网络协议,同时进行IP分片包以及TCP会话重组。

网络协议分析的典型过程包括以下几个步骤:

  • 网络嗅探得到的原始数据是在链路层传输的二进制数据包,大多数情况是以太网数据帧
  • 对帧结构进行分析,得到帧头各字段结构,根据帧头字段确定网络层的协议类型,并提取包含网络层数据的内容
  • 进一步对IP数据包进行分析,如果设置分片位要对IP进行分片重组;确定传输层协议类型,提取传输层数据内容
  • 根据TCP或UDP目标端口确定确定具体的应用层协议,对数据包重组,得到应用层特定协议的应用交互内容
  • 依据相应应用层协议对数据进行整合恢复,得到实际传输的协议
网络协议分析技术实现

snort作为一个多平台网络入侵检测/防御系统,支持基本的网络数据嗅探和协议分析。snort关于网络协议分析最重要的数据结构是Packet,定义了snort的处理对象——数据包,其包含三大类:

  • 指示原始数据的字段*pkth
  • 指向包头与数据包的指针*pkt
  • 用于存放当前数据包进行协议解析后信息的字段,有多种类型用于支持多种协议。

snort网络协议分析处理过程:

入口是从libpcap库pcap_loop函数定义的ProcessPacket()回调函数。libpcap网络嗅探库在截获每个数据包后都会调用数据包处理函数。

  • 解析以太网数据帧:6字节的目的MAC地址,6字节的源MAC地址,2字节的上层协议类代码
    • 预处理
    • 拆包 将当前得到的包的指针赋给Packet数据结构相应的指针类型
    • 解析上层协议 用switch语句对以太网包头中指定的上层应用类型代码进行选择
  • 解析IP数据包
    • 预处理
    • 拆包
    • 解析成上层协议包
  • 解析TCP数据包
    • 预处理
    • 拆包
    • 解析

网络协议分析工具wireshark


视频学习

openvas的使用

上周安装openvas用了好久,这周学习一下如何使用:))

  • 首先登陆openvas的web管理界面,打开靶机查看其IP地址

  • 测试攻击机与虚拟机是否连通

准备使用openvas进行扫描

  • 创建一个目标 targets

  • 创建目标后,就可以进行添加扫描管理,创建扫描任务task,开启task

  • 点击task可以查看任务的详细信息

可以查看扫描的结果,扫描结束后可以生成扫描结果漏洞,如果下方有扫描出漏洞,可以点击查看详细信息

  • 扫描中可以查看漏洞的详细情况

也可以通过整体扫描过程查看扫描情况

漏洞分析之扫描工具

  • web扫描工具Golismero

    • 采用插件式的框架结构,提供了一系列接口,用户只要继承并实现这些接口,即可自己定义自己的插件。
      • ImportPlugin 导入插件
      • TestingPlugin 测试插件
      • ReportPlugin 报表插件
      • UIPlugin界面插件
  • 漏洞扫描器 Nikto.pl

    • 是一个开源的网页服务扫描器

使用nikto扫描靶机 nikto -h <靶机地址> 可以列出靶机的相关信息以及漏洞信息。

  • lynis
    • 对Linux操作系统详细配置等信息进行枚举收集,生成易懂的报告文件

使用lynis --check-all 进行信息的枚举,其中可以显示系统的相关信息。

  • Unix-privesc-check

使用standerd模式查看相关信息

漏洞分析之web爬行工具

  • apach-user 使用
    • 对于网站路径等枚举扫描,需要用到字典的帮助,在kali下整理了一些字典

- 输入命令 apach-user -h <靶机地址> -l /usr/share/worldlist/dirbuster/
  • Cutycapt 使用 用来对网站进行截图

输入命令后可以将网站图片保存在当前的目录下,可以查看

  • DIRB --目录扫描工具

可以对网站进行扫描

  • dirbuster 图形化扫描器

漏洞分析之web漏洞扫描工具

  • cadaver 是对web dav进行测试的工具
    • 用来浏览和修改webDAV共享的Unix命令行程序,同时需要靶机有配置好的webDAV环境。

  • davtest 漏洞扫描工具

  • Deblaze flex server 远程枚举工具

  • fimap 文件包含漏洞利用工具

    • 是本地与远程文件包含的扫描器同时可以自动利用的工具。
  • Grabber web应用漏洞扫描器

    • 可以指定扫描漏洞类型,结合网络爬虫对网站进行安全扫描

  • Joomsacn 开源OWASP Joomla漏洞扫描器

  • SkipFish 一款自动化的网络安全扫描工具

  • Uniscan WVS web漏洞扫描器

  • wapiti 采用黑盒的方式主动对被测web应用进行扫描,寻找其中潜在的安全缺陷,由python语言开发,支持平台广泛,支持的协议有HTTP/HTTPS 1.0/1.1

  • webSploit 主要用于远程扫描和分析系统漏洞,可以快速发现系统中存在的问题并深入分析

Python黑帽子

  • 遇到的问题:

在运行第一个sniffer代码时,Windows报错,一直找不都解决方法,后来得知是脚本使用的是底层套接字,需要用root权限,或者管理员权限执行py脚本,在cmd以管理员身份运行后,成功运行了代码

  • 遇到的问题2:

在运行代码时出现了错误:

意思是说缓冲区太小,于是我尝试将缓冲区改成32位,此时又报错

在参考了李炀大佬的博客--->点这里 (っ•̀ω•́)っ✎⁾⁾ 我爱学习 后找到了解决的办法,运行成功。

代码已经上传到码云,点击这里----> 我的码云:))

posted @ 2019-03-24 21:25  王子榛20189206  阅读(487)  评论(0编辑  收藏  举报
levels of contents