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

    学习总结

    Sniffer(嗅探器)

    嗅探器是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。Snifffer可以作为能够捕获网络报文的设备,ISS为Sniffer这样定义:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。
    SNIFFER要捕获的东西必须是要物理信号能收到的报文信息。显然只要通知网卡接收其收到的所有包(一般叫做杂收promiscuous模式:指网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是它们自己的数据。),在HUB下就能接收到这个网段的所有包,但是交换机下就只能是自己的包加上广播包。
    要想在交换机下接收别人的包,那就要让其发往你的机器所在口。交换机记住一个口的MAC是通过接收来自这个口的数据后并记住其源MAC,就像一个机器的IP与MAC对应的ARP列表,交换机维护一个物理口与MAC的表,所以可以欺骗交换机的。可以发一个包设置源MAC是你想接收的机器的MAC,那么交换机就把你机器的网线插的物理口与那个MAC对应起来了,以后发给那个MAC的包就发往你的网线插口了,也就是你的网卡可以Sniffer到了。注意这物理口与MAC的表与机器的ARP表一样是动态刷新的,那机器发包后交换HUB就又记住他的口了,所以实际上是两个在争,这只能应用在只要收听少量包就可以的场合。
    内部网基于IP的通信可以用ARP欺骗别人机器让其发送给你的机器,如果要想不影响原来两方的通信,可以欺骗两方,让其都发给你的机器再由你的机器转发,相当于做中间人,这用ARP加上编程很容易实现。并且现在很多设备支持远程管理,有很多交换机可以设置一个口监听别的口,不过这就要管理权限了。
    利用这一点,可以将一台计算机的网络连接设置为接受所有以太网总线上的数据,从而实现Sniffer。Sniffer就是一种能将本地网卡状态设成‘杂收’状态的软件,当网卡处于这种“杂收”方式时,该网卡具备“广播地址”,它对遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的网卡具备置成杂收方式的能力)
    可见,Sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:Sniffer是极其安静的,它是一种消极的安全攻击。
    嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:标准以太网、TCP/IP、IPX。

    网络协议


    定义:网络协议分析是网络嗅探器进一步解析与理解捕获数据包必须的技术手段,是指对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
    原理:网络协议分析需要从底向上逐层解析网络协议,同时进行IP分片包以及TCP会话的重组,需要解析与保存各个网络层次上的所有包头字段信息,以及最高层的应用层数据,并提供给用户以了解网络数据包的全方位信息。
    TCP协议字段含义如下:

    16位源端口号:TCP 发端 端口号(标示发送方计算机上的应用程序收发端口)。

    16位目的端口号:TCP 接收端端口号(标示接收方计算机上应用程序收发端口)

    32位序号(sequence number):将整个一次TCP 通讯(从三次握手到四次挥手)中传输的发送方发送的数据作为一次流动的字节流,32位序号,它表示在发送的这个报文段第一个字节在整个字节流中所处的字节位置。在tcp中tcp用序号对每个字节进行计数(这个值与发送的帧数没有关系,而是与发送的数据字节数有关系)。

    32位确认序号:一次TCP通讯中,发送该报文的发送方,确认收到的另一方发送过来的字节序+1(即所期望收到的下一个序号)。

    4位数据偏移:即TCP头大小,指示何处“数据”开始。一般为20字节,实际值为首部长度除以4。

    保留(6位):6位值域,这些位必须是0。

    URG: 紧急指针( urgent pointer)有效。 
    ACK: 确认序号有效。 
    PSH: 接收方应该尽快将这个报文段交给应用层。 
    RST: 重建连接。 
    SYN: 同步序号用来发起一个连接。 
    FIN: 发端完成发送任务。

    16位窗口大小:流量控制,用来表示想收到的每个TCP数据段的大小。
    16位校验和:检验和覆盖了整个的 TCP报文段(TCP首部和TCP数据),收信息机要与源机器数值 结果完全一样,从而证明数据的有效性。检验和覆盖了整个的TCP报文段。
    16位紧急指针:指向后面是优先数据的字节,在URG标志设置了时才有效。如果URG标志没有被设置,紧急域作为填充。加快处理标示为紧急的数据段。
    选项:长度不定,但长度必须为1个字节。如果没有选项就表示这个1字节的域等于0。
    数据:该TCP协议包负载的数据。

    实践过程

    tcpdump

    使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题: 你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
    打开kali虚拟机终端,输入tcpdump src 192.168.200.1 and tcp dst port 80,然后打开www.tianya.cn,

    出现几个重复出现的IP地址,分别为124.225.65.154,124.225.135.230,218.77.130.200,106.120.159.126,输入nslookup www.tianya.cn,查到它的Ip为124.225.65.154

    使用Wireshark开源软件对在本机上以telnet方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:

    (1) 你所登录的BBS服务器的IP地址与端口各是什么?
    (2) telnet协议是如何向服务器传送你输入的用户名及登录口令的?
    (3) 如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?

    打开控制面板,点击程序,打开启用或关闭Windows功能,选择Telnet Client:

    然后在命令提示符中telnet连接论坛,发现23端口有问题。并且现在许多论坛连浏览器都不能登录,切换端口和论坛解决。
    输入
    telnet bbs.fudan.sh.cn 2323

    然后打开wireshark,追踪tcp流

    可以发现是通过guest登录的

    发现密码为空,所有telnet这种方式相当不安全

    2.3作业三:取证分析实践,解码网络扫描器

    1.攻击主机的IP地址是什么?
    2.网络扫描的目标IP地址是什么?
    3.本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
    4.你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
    5.在蜜罐主机上哪些端口被发现是开放的?
    6.攻击主机的操作系统是什么?

    在kali中安装snort。为snort增加权限sudo chmod 777 /etc/snort/snort.conf。安装nmap需要联网,虚拟机中的网络设置需要调整。
    并且需要换源,阿里源比较好,有些网上给的阿里源还带着debain的源,需要自己注意。

    可以发现攻击机的ip为192.168.200.3,kali的地址为192.168.200.2
    将listen.pcap下载到kali

    可以发现是攻击是由nmap发起的

    nmap在发起端口扫描之前总是先通过Ping扫描和针对80端口的探测确定目标主机是否活跃。可以发现80端口是高亮的
    在wireshark上tcp.flags.syn == 1 and tcp.flags.ack == 1过滤,可以过滤出SYN | ACK的数据包,可以看出端口均被拒绝了



    使用p0f工具,p0f是一款被动探测工具,能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别。
    在终端先输入
    sudo apt-get install p0f
    sudo p0f -r listen.pcap
    进行探测,得知版本为linux 2.6.x。

    学习中遇到的问题及解决

    kali在vmnet8中不能联网,导致不能换源下载工具,走了不少弯路
    4.实践总结
    网络的底层细节比较难以掌握,还需要多多学习

  • 相关阅读:
    编写一个程序,获取10个1至20的随机数,要求随机数不能重复。并把最终的随机数输出到控制台。
    代码实现集合嵌套之ArrayList嵌套ArrayList
    代码实现模拟进栈出栈
    代码实现:键盘录入任意一个年份,判断该年是闰年还是平年
    代码实现你来到这个世界多少天?
    代码实现:以下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”
    代码实现把字符串反转
    编写代码实现把一个字符串的首字母转成大写,其余为小写。
    编写代码实现:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数
    编写代码实现模拟登录,给三次机会,并提示还有几次
  • 原文地址:https://www.cnblogs.com/besti-20199303/p/12567370.html
Copyright © 2011-2022 走看看