zoukankan      html  css  js  c++  java
  • 2019-2020-20199135 《网络攻防实践》第4周作业

    学号 2019-2020-20199135 《网络攻防实践》第4周作业

    问题 回答
    作业所属课程 网络攻防实践(https://edu.cnblogs.com/campus/besti/19attackdefense)
    这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10518
    我在这个课程的目标是 学习第四章
    这个作业在哪个具体方面帮助我实现目标 熟悉linux环境
    作业正文 见下文
    参考文献 见博客结尾

    1.实践内容

    4.1网络嗅探

    4.1.1网络嗅探技术概述
    •网络嗅探技术定义
    网络嗅探利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。网络嗅探技术可以按照所监听的网络链路层网络进行分类,分为有线局域网和无线局域网两种。网络嗅探器按照实现方式也可以分为硬件和软件嗅探器两种。
    4.1.2网络嗅探的原理与实现
    •以太网工作原理
    以太网是共享通信信道的,采用了载波侦听/冲突检测技术(Carrier Sense Multiple Access with Collision Detection, CSMA/CD)避免共享链路上的通信冲突。在以太网的共享通信媒介中,网络上的站点使用在信道上的广播机制来发送自己的数据,计算机能够接收到在共享媒介上发送给其他计算机的信息。以太网中数据的传播是以“帧”为单位进行的,而以太网上的网络接口设备(Network Interface Controller, NIC),通常是网卡,都拥有一个48位的MAC地址,以太网帧头中包括发送源的MAC地址与目标MAC地址。
    •共享式网络与交换式网络中的嗅探

    •类UNIX平台的网络嗅探技术实现
    类UNIX平台的网络嗅探技术主要通过内核态的BPF (Berkeley Packet Filter)和用户态的libpcap抓包工具库实现。BPF是类UNIX系统上数据链路层的一种原始接口,提供原始链路层封包的收发功能。另外,BPF支持“过滤”封包,这样BPF会只把“感兴趣”的封包抓取到上层软件, 可以避免从操作系统内核向用户态复制其他封包,降低抓包的CPU的负担以及所需的缓冲区空间,从而减少丢包率。Libpcap是类UNIX平台用户态下的抓包工具库,与内核态的BPF包嗅探与过滤机制相配介。
    • Windows平台的网络嗅探实现技术
    Windows操作系统内核并不提供标准的网络嗅探与抓包接口,利用与类UNIX平台上的BPF模块兼容的NPF (NetGroup Packet Filter)来访问内核网卡驱动中捕获的数据包。NPF是一个内核态虚拟设备驰动程序,它的功能是过滤数据包,并将这些数据包原封不动地传给用户态模块。

    4.1.3网络嗅探器软件
    • 类UNIX平台网络嗅探器软件
    (1)libpcap抓包开发库
    (2)tcpdump嗅探器软件
    (3)wireshark嗅探器软件
    (4)其他嗅探器软件
    dsniff、sniffit和linux_sniffcr等。
    •Windows平台网络嗅探器软件
    以上存在Windows版本
    •tcpdump嗅探器软件
    tcpdump是通用的命令行网络嗅探与数据包分析程序,允许用户能够从主机所在网络上截取和显示特定的TCP/IP数据包。
    而善用BPF过滤器规则也是利用tcpdump进行深入的网络数据包嗅探与分析的关键所在,BPF过滤器的语法规则和使用示例凹以参考tcpdump的使用参考(tcpdump Man Page: http://www.tcpdump.org/tcpdump_man.html)
    4.1.4网络嗅探的检测与防范
    •网络嗅探的检测
    在同一主机上,可以通过检查网卡是否运行在混杂模式下,来发现正在进行监听的嗅探器。此外,也可以基于混杂模式下操作系统和协议栈的不同特性,来检测出网络中其他主机上的嗅探器。
    •网络嗅探的防范措施
    (1)采用安全的网络拓扑,尽量将共享式网络升级为交换式网络,并通过在交换机上设置VLAN等技术手段,对网络进行合理的分段,从而尽量使得网络包只被转发到目的主机上。
    (2)用静态ARP或者MAC-端口映射表代替动态机制。
    (3)重视网络数据传输的集中位置点的安全防范。
    (4)避免使用明文传输口令或敏感信息的网络协议,而使用加密及安全增强的网络协议进行替代。

    4.2网络协议分析

    4.2.1网络协议分析技术
    •网络协议分析技术原理
    1.首先网络嗅探得到的原始数据是在链路层传输的二进制数据包,大多数情况是以太网数据帧。
    2.对以太网数据帧进行结构分析,定位出帧头各字段结构,确定网络层协议类型,并提取数据帧中包含的网络层数据内容。
    3.进一步对IP数据包进行分析,如果设置了分片位,则进行IP分片重组
    4.继续根据TCP或UDP的目标端口确定具体的应用层协议。
    5.依据相应的应用层协议对数据进行整合恢复,得到实际传输的数据。
    •网络协议分析技术实现
    1.Snort中decode.c的DecodeEthPkt例程的解包过程大致如下。
    ①预处理:拆包前进行一些前期处理,如以太网包计数自増,判断包头长度是不是大于预定义的最大包头长度,若发现有误则进行报错处理等。
    ②拆包:实际的拆包过程很简単,将当前得到的包的指针赋给Packet数据结构中相应的指针eh (EtherHdr)型的指针)即可。
    ③解析上层协议:用switch语句对以太网包头中指定的上层应用类型代码(以太网包数据结构中的ether-type)进行选择,调用相应的处理函数。

    2.解析IP数据包的DecodelP例程与解析以太网帧类似,大致如下。
    ①预处理,如IP数据包计数自增,判断数据包的头部是不是小于IP报文包头的最小长度,以及有关IPv6的一些判断宏处理。
    ②拆包,过程大体类似,将包的地址赋值给Packet数据结构中的IP包头iph (IPHdr 类型的指针),同时还有一些必要的处理。
    ③解析成上层协议包:以TCP为例,当判断上层协议是TCP数据包时,先将TCP 计数器累加,再交给解析TCP的例程进行处理:TCP模块得到的数据包指针向后移动1P 包头长度,即获得TCP数据包头及内容。

    3.TCP报文解析的过程DecodeTCP也分为三个部分。
    ①预处理,包的长度等信息的检验。
    ②拆包:将当前的包的指针赋给Packet的icph,之后也有一些关于包合法性的处理以及TCP数据包中标志位的处理、选项和填充的处理。
    ③解析:数据的得到只需要将指针向后移动TCP的包头长度并赋值给相应的指针,以后的数据处理则交由相应的程序处理,区分不同上层协议的便是端口号。

    4.2.2网络协议分析工具Wireshark
    • Wireshark简介与发展历程
    Wireshark 是一款开源的网络数据包分析工具,其主要作用是捕获网络数据包,对于数据包进行协议分析以尽可能地显 示详细的情况,并以更容易理解的格式呈现给用户。
    •Wireshark功能介绍
    Wireshark支持类UNIX及Windows平台,对Mac OS也有第三方的支持包;
    Wireshark 在网络嗅探功能方面支持对多种类型网络接口,包括以太网、802.11无线网络等,并支持从网络中截获数据包及从离线的记录文件中读取网络数据包;
    在网络协议分析方面, Wireshark通过网络协议解析框架支持开源社区提交网络协议的解析插件;
    对于输入的文件数据,支持超过25种不同软件的捕获文件,同样具有多种不同格式的输出文件类型;
    可以通过图形界面,用各种颜色展示不同的包,并列举包 的详细信息,以比较容易理解的方式呈现给用户;
    拥有强大的包过滤功能(含捕获过滤和显示过滤);
    可以重组一次TCP (UDP/SSL)会话的所有数据包,并通过ASCII码等以易于理解的方式显示。
    •Wireshark 的使用
    Wireshark主窗口包含菜单栏、快速工具栏、过滤器栏、总览窗口(逐行列岀数据包)、 协议树窗口(提供在总览窗口选中的数据包的详细信息)、数据查看窗口(提供在总览窗口 选中的数据包的原始数据,包括十六进制显示和ASCII码显示,其中不能显示的ASCII码 用点号代替)、状态栏。

    2.实践过程

    4.1.5 动手实践:tepdump

    使用tepdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
    使用kali里自带的tcpdump进行网络嗅探,首先将我们的kali网络模式改变成桥接模式,使它能够连上网络。
    输入命令 sudo tcpdump src 192.168.1.107 and tcp dst port 80后
    打开www.tianya.cn再回到终端


    可知访问的 Web 服务器有:
    124.225.65.154,124.225.214.206,218.77.130.200,124.225.135.230 海南省海口市 电信
    182.61.200.166,182.61.200.166 广东省广州市 百度bgp节点
    72.21.202.25 美国 华盛顿州西雅图市亚马逊公司数据中心
    通过nslookup tianya.cn命令查看www.tianya.cn对应的IP地址,验证tcpdump的正确性。

    4.2.3 动手实践:Wireshark

    任务:使用Wireshark开源软件对在本机上以telnet方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
    (1) 你所登录的BBS服务器的IP地址与端口各是什么?
    (2) telnet协议是如何向服务器传送你输入的用户名及登录口令的?
    (3) 如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名
    在kali上完成:首先打开wireshark,然后进入复旦大学bbs
    输入命令 luit -encoding gbk telnet bbs.fudan.edu.cn
    发现中文乱码

    解决方法在博客(https://www.cnblogs.com/Fu-ry/p/12559991.html)
    重启后重新输入luit -encoding gbk telnet bbs.fudan.edu.cn

    注册新用户,输入用户名、密码:
    进入后,可以发现复旦大学论坛的实时搜索


    回到wireshark界面,对telnet进行分析,可以看出IP地址为202.120.225.9,端口为23
    抓包界面

    利用wireshark找到输入的用户名和登录口令:






    其他此处就略去吧
    同理,在data中也可以找到登录密码




    密码是qq号,其他数字此处就略去吧
    由此,可以知道telnet是明文传输,不安全。

    取证分析实践:解码网络扫描

    案例分析挑战内容:这次案例分析挑战是完全为刚入门的安全分析师准备的,冃标是 分析由人为构造的到一台蜜罐主机的5次不同类型端口扫描。需要指出的是,这次案例分 析中的端H扫描流量并不是从“野外”捕获的,而是特意构造的,这次入门级的案例分析 挑战的目的完全是为了提供学习和训练的机会。
    网络入侵检测器-snort捕获每次扫描的流量并存入tcpdump格式二进制网络日志文件中。这次挑战的任务每组从这5次扫描的日志文件中随机选择两个,分析这两个文件,回 答所列的问题,并撰写详细的实验分析报告。通过这次挑战,你能够学习到数据包抓取技 术的使用方法,以及使用数据包解码工具tcpdump或Wireshark分析网络数据包的技能。
    问题:
    1.攻击主机的IP地址是什么?
    2.网络扫描的目标IP地址是什么?
    3.本次案例中是使用了哪个扫描匸具发起这些端口扫描?你是如何确定的?
    4.你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并 描述其工作原理。
    5.在蜜罐主机上发现哪些端口是开放的?
    6.额外奖励问题:攻击主机的操作系统是什么?
    攻防对抗实践:攻击方用nmap扫描(达到特定目的),防寄方用tcpdump嗅探,用 Wireshark分析,并分析岀攻击方的扫描目的以及每次使用的nmap命令。撰写实验报告。
    用wireshark打开listen.pcap

    可以发现攻击机的ip是172.31.4.178,网络扫描的ip是172.31.4.188

    打开 kali 实验环境,安装 snort 工具,对上述 pcap 包进行入侵检测:
    sudo apt-get install snort

    给予所有权限:sudo chmod 777 /etc/snort/snort.conf
    进入 pcap 包所在目录后,执行:
    sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap

    可知攻击机使用 nmap 扫描目标网络
    在过滤器中输入ARP,通过ARP确定目标MAC地址,在listen的ARP中找到who has 172.31.4.188?tell 172.31.4.178

    第5、6、7、8号数据包之间没有额外的其他数据包,所以可以知道这是采用 namp -sP 探测活跃主机。
    筛选 tcp.port == 57738 and tcp.flags.syn == 1 and tcp.flags.ack == 0 ,表示tcp 端口 57738 发送 tcp 请求但无回应。猜测是进行了 namp -O扫描靶机上安装的操作系统。

    确定操作系统:安装 p0f:sudo apt-get install p0f
    使用命令探测:sudo p0f -r listen.pcap

    可以看到,系统为 Linux 2.6.x

    3.学习中遇到的问题及解决

    问题1:kali中文乱码
    问题1解决方案:见正文链接
    问题2:wireshark不熟练
    问题2解决方案:参考同学的微博有点了解

    4.实践总结

    本周作业一顿操作猛如虎,理论还需补一补

    参考资料

  • 相关阅读:
    2015.2.27 UltraEdit中显示XML结构
    2015.1.31 DataGridView自动滚动到某行
    2015.1.15 利用函数实现将一行记录拆分成多行记录 (多年想要的效果)
    2015.1.15 利用Oracle函数返回表结果 重大技术进步!
    2015.1.15 利用Oracle函数插入表结构 Bulk collect into 不用循环,简洁高效
    2015.1.8 Left join 左连接
    2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
    delphi 遍历窗口
    delphi 访问 protected 属性 哈哈
    clientdataset 读取excel 如果excel 文件不存在的时候 相应的gird 会不显示数据, 鼠标掠过 gird 格子 才会显示数据。 这是一个bug 哈哈
  • 原文地址:https://www.cnblogs.com/Fu-ry/p/12557537.html
Copyright © 2011-2022 走看看