20189209 《网络攻防实践》安全工具研究

安全工具研究

一、安全工具简介

1. Wireshrak

  • 简介
      Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
      网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。
  • 应用
      网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识。当然,有的人也会“居心叵测”的用它来寻找一些敏感信息。
      Wireshark不是入侵侦测系统(Intrusion Detection System,IDS)。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。Wireshark不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。 Wireshark本身也不会送出封包至网络上。
  • 发展简史
      1997年底,GeraldCombs需要一个能够追踪网络流量的工具软件作为其工作上的辅助。因此他开始撰写Ethereal软件。Ethereal在经过几次中断开发的事件过后,终于在1998年7月释出其第一个版本v0.2.0。自此之后,Combs收到了来自全世界的修补程式、错误回报与鼓励信件。Ethereal的发展就此开始。不久之后,GilbertRamirez看到了这套软件的开发潜力并开始参予低阶程式的开发。1998年10月,来自NetworkAppliance公司的GuyHarris在寻找一套比tcpview(另外一套网络封包撷取程式)更好的软件。于是他也开始参与Ethereal的开发工作。1998年底,一位在教授TCP/IP课程的讲师RichardSharpe,看到了这套软件的发展潜力,而后开始参与开发与加入新协定的功能。在当时,新的通讯协定的制定并不复杂,因此他开始在Ethereal上新增的封包撷取功能,几乎包含了当时所有通讯协定。
      自此之后,数以千计的人开始参与Ethereal的开发,多半是因为希望能让Ethereal撷取特定的,尚未包含在Ethereal默认的网络协定的封包而参与新的开发。2006年6月,因为商标的问题,Ethereal更名为Wireshark。

2.Metasploit

  • 简介
      Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为Metasploit团队一直都在努力开发各种攻击工具,并将它们贡献给所有Metasploit用户。
      Metasploit的设计初衷是打造成一个攻击工具开发平台,本书稍后将讲解如何开发攻击工具。然而在目前情况下,安全专家以及业余安全爱好者更多地将其当作一种点几下鼠标就可以利用其中附带的攻击工具进行成功攻击的环境。
  • 特点
      这种可以扩展的模型将负载控制,编码器,无操作生成器和漏洞整合在一起,使 Metasploit Framework 成为一种研究高危漏洞的途径。它集成了各平台上常见的溢出漏洞和流行的 shellcode ,并且不断更新。最新版本的 MSF 包含了750多种流行的操作系统及应用软件的漏洞,以及224个 shellcode 。作为安全工具,它在安全检测中用着不容忽视的作用,并为漏洞自动化探测和及时检测系统漏洞提供了有力保障。
      Metasploit自带上百种漏洞,还可以在online exploit building demo(在线漏洞生成演示)上看到如何生成漏洞。这使自己编写漏洞变得更简单,它势必将提升非法shellcode的水平,并且扩大网络阴暗面。与其相似的专业漏洞工具,如Core Impact和Canvas已经被许多专业领域用户使用。Metasploit降低了使用的门槛,将其推广给大众。
  • 发展简史
      2004年8月,在拉斯维加斯开了一次世界黑客交流会---黑帽简报(Black Hat Briefings). 在这个会议上,一款叫Metasploit 的攻击和渗透工具备受众黑客关注,出尽了风头。
      Metasploit 是同 HD Moore 和 Spoonm 等4名年轻人开发的,这款免费软件可以帮助黑客攻击和控制计算机,安全人员也可以利用 Metasploit 来加强系统对此类工具的攻击。Metasploit 的演示吸引了来自“美国国防部”和“国家安全局”等政府机构的众多安全顾问和个人,正如 Spoonm 在演讲中所说的, Metasploit 很简单,只需要求“找到目标,单击和控制”即可。
      2004年 Metasploit 的发布在安全界引发了强烈的“地震”。没有一款新工具能够一发布就能挤进此列表的15 强(也就是说,2000年和2003年的调查没有这种情况),更何况此工具在5强之列,超过很多广为流传的诞生了几十年的老牌工具。
      2005年6月,西雅图效区的微软公司总部园区内的管理情报中心,如开了一次“蓝帽”会议。几百名微软公司的工程师和众多外界专家及黑客都被邀请进入微软帝国的中心。在会议中的黑客攻击演示中,当 Moore 向系统程序员们说明使用 Metasploit 测试系统对抗入侵时的可靠程度时,Metasploit 让微软公司的开发人员再次感到不安。在程序员们看来,Metasploit 将会使系统安全面临严重的考验。
      Metasploit Framework (MSF) 在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试,shellcode 编写和漏洞研究提供了一个可靠平台。
      Metasploit框架直到2006年发布的2.7版本都用Perl脚本语言编写,由于Perl的一些缺陷,开发者于2007年底使用Ruby语言重写了该框架。到2007年年底,Spoonm和马特·米勒已经离开了项目。从2008年发布的3.2版本开始,该项目采用新的3段式BSD许可证。
      2009年10月21号,漏洞管理解决公司Rapid7收购Metasploit项目。Rapid7承诺成立专职开发团队,仍然将源代码置于3段式BSD许可证下。

3.Nessus

  • 简介
      Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件。
      1998年, Nessus 的创办人 Renaud Deraison 展开了一项名为 "Nessus"的计划,其计划目的是希望能为因特网社群提供一个免费、威力强大、更新频繁并简易使用的远端系统安全扫描程序。经过了数年的发展, 包括 CERT 与 SANS 等著名的网络安全相关机构皆认同此工具软件的功能与可用性。
      2002年时, Renaud 与 Ron Gula, Jack Huffard 创办了一个名为 Tenable Network Security 的机构。在第三版的Nessus 发布之时, 该机构收回了 Nessus 的版权与程序源代码 (原本为开放源代码), 并注册成为该机构的网站。 目前此机构位于美国马里兰州的哥伦比亚。
  • 特色
      1.提供完整的电脑漏洞扫描服务, 并随时更新其漏洞数据库。
      2.不同于传统的漏洞扫描软件, Nessus 可同时在本机或远端上摇控, 进行系统的漏洞分析扫描。
      3.其运作效能能随着系统的资源而自行调整。如果将主机加入更多的资源(例如加快CPU速度或增加内存大小),其效率表现可因为丰富资源而提高。
      4.可自行定义插件(Plug-in)
      5.NASL(Nessus Attack Scripting Language) 是由 Tenable 所开发出的语言,用来写入Nessus的安全测试选项。
      6.完整支持SSL (Secure Socket Layer)。
      7.自从1998年开发至今已谕十年, 故为一架构成熟的软件。
      采用客户/服务器体系结构,客户端提供了运行在X window 下的图形界面,接受用户的命令与服务器通信,传送用户的扫描请求给服务器端,由服务器启动扫描并将扫描结果呈现给用户;扫描代码与漏洞数据相互独立,Nessus 针对每一个漏洞有一个对应的插件,漏洞插件是用NASL(NESSUS Attack Scripting Language)编写的一小段模拟攻击漏洞的代码,这种利用漏洞插件的扫描技术极大的方便了漏洞数据的维护、更新;Nessus 具有扫描任意端口任意服务的能力;以用户指定的格式(ASCII 文本、html 等)产生详细的输出报告,包括目标的脆弱点、怎样修补漏洞以防止黑客入侵及危险级别。

4. Snort

  • 简介
      在1998年,Marty Roesch先生用C语言开发了开放源代码(Open Source)的入侵检测系统Snort.直至今天,Snort已发展成为一个多平台(Multi-Platform),实时(Real-Time)流量分析,网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS.Snort符合通用公共许可(GPL——GNU General Pubic License),在网上可以通过免费下载获得Snort,并且只需要几分钟就可以安装并开始使用它。snort基于libpcap。
      Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
  • 原理及工作过程
      Snort能够对网络上的数据包进行抓包分析,但区别于其它嗅探器的是,它能根据所定义的规则进行响应及处理。Snort 通过对获取的数据包,进行各规则的分析后,根据规则链,可采取Activation(报警并启动另外一个动态规则链)、Dynamic(由其它的规则包调用)、Alert(报警),Pass(忽略),Log(不报警但记录网络流量)五种响应的机制。
      Snort有数据包嗅探,数据包分析,数据包检测,响应处理等多种功能,每个模块实现不同的功能,各模块都是用插件的方式和Snort相结合,功能扩展方便。例如,预处理插件的功能就是在规则匹配误用检测之前运行,完成TIP碎片重组,http解码,telnet解码等功能,处理插件完成检查协议各字段,关闭连接,攻击响应等功能,输出插件将得理后的各种情况以日志或警告的方式输出。
      Snort通过在网络TCP/IP的5层结构的数据链路层进行抓取网络数据包,抓包时需将网卡设置为混杂模式,根据操作系统的不同采用libpcap或winpcap函数从网络中捕获数据包;然后将捕获的数据包送到包解码器进行解码。网络中的数据包有可能是以太网包、令牌环包、TCP/IP包、802.11包等格式。在这一过程包解码器将其解码成Snort认识的统一的格式;之后就将数据包送到预处理器进行处理,预处理包括能分片的数据包进行重新组装,处理一些明显的错误等问题。预处理的过程主要是通过插件来完成,比如Http预处理器完成对Http请求解码的规格化,Frag2事务处理器完成数据包的组装,Stream4预处理器用来使Snort状态化,端口扫描预处理器能检测端口扫描的能力等;对数据包进行了解码,过滤,预处理后,进入了Snort的最重要一环,进行规则的建立及根据规则进行检测。规则检测是Snort中最重要的部分,作用是检测数据包中是否包含有入侵行为。例如规则alert tcp any any ->202.12.1.0/24 80(msg:”misc large tcp packet”;dsize:>3000;)这条规则的意思是,当一个流入202.12.1.0这个网段的TCP包长度超过3000B时就发出警报。规则语法涉及到协议的类型、内容、长度、报头等各种要素。处理规则文件的时候,用三维链表来存规则信息以便和后面的数据包进行匹配,三维链表一旦构建好了,就通过某种方法查找三维链表并进行匹配和发生响应。规则检测的处理能力需要根据规则的数量,运行Snort机器的性能,网络负载等因素决定;最后一步就是输出模块,经过检测后的数据包需要以各种形式将结果进行输出,输出形式可以是输出到alert文件、其它日志文件、数据库UNIX域或Socket等。

5. BackTrack

  • 简介
      BackTrack是一套专业的计算机安全检测的Linux操作系统,简称BT。BackTrack不仅仅是用来战争驾驶,还集成了包括Metasploit等200多种安全检查工具;此外众多的RFID工具和对ARM平台的支持也是一个亮点。BackTrack经过了多年发展,渗透测试并接受来自安全社区前所未有的帮助,BackTrack开始于早期live linux的发行版Whoppix,IWHAX以及auditor,BackTrack被设计成一体化的旨在安全审计用的live cd,现今它是被最广泛采用的渗透测试框架并被世界各地的安全社区所使用。现在,BackTrack已被Kali Linux所代替,BT将不再维护。
  • 发展历史
      BackTrack 4使用了ubuntu8.10 的系统,而且只能装Debian的软件包。
      BackTrack 5使用了ubuntu10.04的系统。
      2011年8月18日,BackTrack发布了BackTrack5 R1,基于ubuntu10.04 LTS(Long-Term Support) 内核为Kernel 2.6.39.4,目前BackTrack的最新版本为2012年8月13日发布的BackTrack5 R3 黑帽子版,内核为Kernel 3.2.6。 [1]
      BackTrack经过了多年发展,渗透测试并接受来自安全社区的帮助。
      BackTrack开始于早期live linux的发行版Whoppix,IWHAX以及auditor。
      BackTrack被设计成一体化的live cd。
  • 主要功能
      BackTrack是一套专业的计算机安全检测的Linux操作系统,简称BT。目前最新与最好用版本是BT5R3 [2] 。
      它能破解WEP,WPA/WPA2加密方式的无线网络,前提是需要有足够强大的密码字典文件。
      BT对于基于无线射频技术的硬件系统有很强的检测能力。
    密码破解方面,在以往版本工具的基础上又加入了基于GPU的破解工具oclhashcat,分别为oclhashcat+(ATI),oclhashcat+(Nvidia),破解速度理论上可以达到传统CPU破解的百倍。
      Apache和MySQL都被集成到了系统中,方便使用者搭建LAMP环境进行测试,包含有Injection,XSS,Snort等IDS(入侵检测系统)工具。

二、详解Wireshark

1. 认识Wireshark的主窗口界面

(1)首先了解一下这款软件主窗口界面中每个部分的功能。Wireshark主窗口界面如下图所示:

上图中每部分的含义如下:

  • 标题栏:用于显示所分析的抓包文件的名称、捕获的设备名称以及Wireshark的 版本号。
  • 菜单栏:Wireshark的标准菜单栏。
  • 工具栏:常用功能的快捷图标按钮。
  • 筛选区域:我们在实际的数据包分析中,可能在很短的时间内就能够捕获到成 千上万的数据包信息。这个时候就需要使用这里的筛选器,加上一定的条件,筛 选掉我们并不关心的数据包,从而更好地进行分析。我们在接下来的实际分析课程 中,会多次使用筛选功能。
  • Packet List面板:显示每个数据帧的摘要。需要强调的是,其实这里所捕获 的其实就是数据帧,但是出于表达的习惯,本系列的课程中的大部分时候,我会 以“数据包”的叫法来代替“数据帧”以及“分段”。这里采用表格的形式列出了 当前捕获文件中的所有数据包,其中包括了数据包序号、数据包捕获的相对时 间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概 况信息等。
  • Packet Details面板:分析数据包的详细信息。这个面板分层次地显示了一个 数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获的全部内 容。在我们的课程中,Packet List面板以及Packet Details面板是我们重点 关注的对象。
  • Packet Bytes面板:以十六进制和ASCII码的形式显示数据包的内容。这里显 示了一个数据包未经处理的原始样子,也就是在链路上传播时的样子。
    状态栏:包含有专家信息、注释、包的数量和Profile。

(2)认识数据包

一旦我们开始利用Wireshark进行数据包的捕获,那么所获得的二进制数据就会 依照不同的协议的结构进行规范,并且显示在Packet Details面板中。这里我 给大家简单介绍一下识别数据包的方法。

在Wireshark中,关于数据包的叫法主要有3个术语,也就是帧、包、段。数据帧的起始点和目的点都是数据链路层;数据包的起始和目的地是网络层;段通常是指起始点和目的地都是传输层的信息单元。这里我们通过以下捕获的数据包来分析一下这三种术语(以下展示的是通过筛选器显示HTTP协议,并查看3934号数据包的情况):

这里面主要展示了以下五种协议的信息:

  • Frame:物理层数据帧的情况。
  • Ethernet II:数据链路层以太网帧头部的信息。
  • Internet Protocol Version 4:网络层IP包的头部信息。
  • Transmission Control Protocol:传输层的数据段头部信息,这里显示的是TCP协议。
  • Hypertext Transfer Protocol:应用层信息,这里显示的是HTTP协议。 下面依据上述所捕获到的数据包的具体情况,对上述前四层的内容进行分析。

物理层数据帧的情况

  • Frame 3934: 310 bytes on wire (2480 bits), 310 bytes captured (2480 bits) on interface 0
    3934号帧,线路上有310个字节,实际捕获310个字节
    Interface id: 0 (\Device\NPF_{EF10E4D3-713B-4239-8786-300C825A9D3F})
    接口id
    Encapsulation type: Ethernet (1)
    封装类型
    Arrival Time: Nov 26, 2015 11:54:10.987177000 中国标准时间
    捕获日期和时间
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1448510050.987177000 seconds
    [Time delta from previous captured frame: 0.014178000 seconds]
    当前数据包与前一个数据包的时间间隔
    [Time delta from previous displayed frame: 0.311034000 seconds]
    [Time since reference or first frame: 10.449670000 seconds]
    当前数据包与第一个数据包的时间间隔
    Frame Number: 3934
    帧序号
    Frame Length: 310 bytes (2480 bits)
    帧长度
    Capture Length: 310 bytes (2480 bits)
    捕获长度
    [Frame is marked: False]
    此帧是否做了标记:否
    [Frame is ignored: False]
    此帧是否被忽略:否
    [Protocols in frame: eth:ethertype:ip:tcp:http:image-gif]
    帧内封装的协议层次结构
    [Number of per-protocol-data: 1]
    [Hypertext Transfer Protocol, key 0]
    [Coloring Rule Name: HTTP]
    着色标记的协议名称
    [Coloring Rule String: http || tcp.port == 80 || http2]
    着色规则显示的字符串

数据链路层以太网帧头部的信息

  • Ethernet II, Src: Qihoo360_61:0b:0c (d0:fa:1d:61:0b:0c), Dst: Giga-Byt_d4:be:c9 (94🇩🇪80:d4:be:c9)
    Destination: Giga-Byt_d4:be:c9 (94🇩🇪80:d4:be:c9)
    目标MAC地址
    Source: Qihoo360_61:0b:0c (d0:fa:1d:61:0b:0c)
    源MAC地址
    Type: IP (0x0800)
    需要说明的是,为什么上述的源MAC地址以及目标MAC地址的开头明明是“d0:fa:1d”以及“94🇩🇪80”,# 但是Wireshark上显示出来的却是“Qihoo360”以及“Giga-Byt”# 呢?这是因为MAC地址的前3 # 个字节表示厂商。而“d0:fa:1d”以及“94🇩🇪80”被分# 配给了奇虎以及技嘉公司。这是全球统一标# 准,所以Wireshark干脆显示出厂商名称了。

网络层IP包的头部信息

  • Internet Protocol Version 4, Src: 220.181.7.190 (220.181.7.190), Dst: 192.168.0.14 (192.168.0.14)
    Version: 4
    互联网协议IPv4
    Header Length: 20 bytes
    IP包头部的长度
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
    差分服务字段
    Total Length: 296
    IP包的总长度
    Identification: 0x2863 (10339)
    标志字段
    Flags: 0x02 (Don't Fragment)
    标记字段
    Fragment offset: 0
    分片偏移
    Time to live: 49
    生存期
    Protocol: TCP (6)
    当前数据包所封装的上层协议为TCP协议
    Header checksum: 0x7b43 [validation disabled]
    头部数据的校验和
    Source: 220.181.7.190 (220.181.7.190)
    源IP地址
    Destination: 192.168.0.14 (192.168.0.14)
    目标IP地址

传输层TCP数据段的头部信息

  • Transmission Control Protocol, Src Port: 80 (80), Dst Port: 2488 (2488), Seq: 422, Ack: 3024, Len: 256
    Source Port: 80 (80)
    源端口号
    Destination Port: 2488 (2488)
    目标端口号
    [Stream index: 16]
    [TCP Segment Len: 256]
    Sequence number: 422 (relative sequence number)
    序列号(相对序列号)
    [Next sequence number: 678 (relative sequence number)]
    下一个序列号(相对序列号)
    Acknowledgment number: 3024 (relative ack number)
    确认序列号
    Header Length: 20 bytes
    头部长度
    .... 0000 0001 1000 = Flags: 0x018 (PSH, ACK)
    TCP标记字段
    Window size value: 162
    流量控制的窗口大小
    Checksum: 0x6fc4 [validation disabled]
    TCP数据段的校验和

(3)学习筛选器的简单用法

Wireshark的筛选器可以让我们找出我们所希望进行分析的数据包。简单来说, 一个筛选器就是定义了一定的条件,用来包含或者排除数据包的表达式。如果在实 际的分析中,不希望看到某一些数据包,那么就可以通过筛选器来屏蔽掉它们, 从而只显示我们感兴趣的内容。但是这里需要注意的是,有些时候,我们在进行网 络分析时,可能会因为设置了不恰当的筛选器而漏掉了一些关于这个网络情况的关 键数据,所以筛选器有时候也是一把双刃剑。

筛选器主要是在处理大量的数据时使用,比如我们刚才就使用了筛选器来专门显 示HTTP协议的数据包。这是关于筛选器的最简单的一种用法。筛选器也支持与 (and)、或(or)、非(not)等逻辑运算符,可以加强筛选的效率。比如我 们可以通过如下语句来显示出所有IP地址为180.97.34.134,端口号为80的数据包 :

  • ip.addr180.97.34.134 and tcp.port80

或者也可以查看所有非TCP协议的协议:

  • !tcp

除了逻辑操作符,在筛选器中还可以使用比较操作符,比如等于(==)、不等于 (!=)、大于(>)、小于(<)、大于等于(>=)以及小于等于(<=)等。比如我 们现在只想查看长度小于等于150字节的数据包,则可以使用如下命令:

  • frame.len<=150

最后再讲一下Wireshark的协议域筛选器。这个功能可以帮助我们通过检查协议 头中的某一个字节来创建筛选条件,或者也可以匹配一个数据包中从某一特定位置 开始一定数量的字节。举例来说,比如我们想捕获带有(PSH,ACK)标志的TCP数据 包。那么就可以检测TCP协议中偏移为13的标志位的情况。尽管这个标志位只有1 个字节,但是这个字节中的每一个比特位都是一个标志。

我们可以用如下命令进行查看:

  • tcp[13]==0x18

显示结果如下:

如果我们在实际的分析过程中发现某一个筛选条件使用的比较频繁,那么可以考 虑将这个筛选条件保存下来,避免每次分析中的重复输入。我们可以在菜单栏中选 择“Analyze”->“Display Filter”,打开Display Filter对话框。

单击左边的New按钮,创建一个新的筛选器。并且在“Filter Name”中给 筛选器起一个名字,在“Filter String”中输入筛选表达式,之后单 击“OK”进行保存即可:

参考链接

2. wireshark怎么抓包、wireshark抓包详细图文教程

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。
为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。

wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark。

wireshark 开始抓包

开始界面

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。

点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包

Wireshark 窗口介绍

WireShark 主要分为这几个界面

  1. Display Filter(显示过滤器), 用于过滤

  2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表

  3. Packet Details Pane(封包详细信息), 显示封包中的字段

  4. Dissector Pane(16进制数据)

  5. Miscellanous(地址栏,杂项)

第 2 页 Wireshark 显示过滤

使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。

过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。

过滤器有两种,

一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录

一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置

保存过滤

在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102",

Filter栏上就多了个"Filter 102" 的按钮。

过滤表达式的规则

表达式规则

1.协议过滤

比如TCP,只显示TCP协议。

2.IP 过滤

比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,

ip.dst==192.168.1.102, 目标地址为192.168.1.102

3.端口过滤

tcp.port ==80, 端口为80的

tcp.srcport == 80, 只显示TCP协议的愿端口为80的。

4.Http模式过滤

http.request.method=="GET", 只显示HTTP GET方法的。

5.逻辑运算符为 AND/ OR

封包列表(Packet List Pane)

封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。

你也可以修改这些显示颜色的规则, View ->Coloring Rules.

封包详细信息 (Packet Details Pane)

这个面板是我们最重要的,用来查看协议中的每一个字段。

各行信息分别为

Frame: 物理层的数据帧概况

Ethernet II: 数据链路层以太网帧头部信息

Internet Protocol Version 4: 互联网层IP包头部信息

Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP

Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

第 3 页 wireshark与对应的OSI七层模型

TCP包的具体内容

从下图可以看到wireshark捕获到的TCP包中的每个字段。

第 4 页 实例分析TCP三次握手过程

看到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例

三次握手过程为

这图我都看过很多遍了, 这次我们用wireshark实际分析下三次握手的过程。

打开wireshark, 打开浏览器输入 http://www.cr173.com

在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",

这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图

图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。

第一次握手数据包

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图

第二次握手的数据包

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图

第三次握手的数据包

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:

就这样通过了TCP三次握手,建立了连接

三、详解Nmap

1.Nmap介绍

Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

Zenmap

Zenmap是Nmap官方提供的图形界面,通常随Nmap的安装包发布。Zenmap是用Python语言编写而成的开源免费的图形界面,能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS等)。Zenmap旨在为nmap提供更加简单的操作方式。

以百度(www.baidu.com或61.135.169.125)为例,使用Zenmap

  • 显示主界面,填写目标地址

  • 显示扫描目标主机的端口号(80和443)

  • 拓扑

  • 目标主机的情况

对比Zenmap和命令模式下的不同:(使用nmap www.baidu.com或namp 61.135.121)

扫描得到的端口号都是一样的,命令行模式简单明了,时间短。以下都使用命令模式操作。

2.Nmap扫描的基本方法

  • Nmap主要包括四个方面的扫描功能,主机发现、端口扫描、应用与版本侦测、操作系统侦测。这里先介绍端口扫描。

红框内的内容是重要的

绿色内容表示有998个端口被屏蔽了,也就是说明了网站的防火墙是开启的,因为没有开启防火墙是不会对端口进行屏蔽的。

蓝色部分表示开放的端口号,状态,以及服务

  • 为什么要关注这些端口

  • 使用的命令

nmap -F -sT -v www.baidu.com

-F:扫描100个最有可能开放的端口 -v 获取扫描的信息 -sT:采用的是TCP扫描 不写也是可以的,默认采用的就是TCP扫描

  • 扫描方式

全连接扫描,三次握手防火墙能有效拦截,故很少使用 (产生大量日志,很少使用)
半链接扫描,三次握手前两次,源SYN 目标SYN/ACK 端口开放;源SYN 目标RST/ACK 端口关闭 (不记日志,隐蔽性好)
秘密扫描,发送FIN,返回RST (端口关闭,回复RST包;端口开放,不回复)

半链接扫描与叫做间接扫描
FIN扫描、Xmas扫描、Null扫描对Windows无效

nmap 类型 选项 目标

nmap -sT TCP扫描 全链接扫描
nmap -sS SYN扫描 半链接扫描
nmap -sF FIN扫描 秘密扫描 除SYN、ACK其它位置1
nmap -sX Xmas扫描 秘密扫描 FIN、URG、PUSH位置1
nmap -sN Null扫描 秘密扫描 标志位全为0,发送TCP分组
nmap -sP ping扫描 同时使用ICMP和TCP ACK 80,返回RST说明主机运行(外网)
nmap -sU UDP扫描 发送0字节UDP包,快速扫描Windows的UDP端口
nmap -sA ACK扫描 TCP ACK扫描,当防火墙开启时,查看防火墙有未过虑某端口
nmap -sW 滑动窗口扫描
nmap -sR RPC扫描
nmap -b FTP反弹攻击(FTP Bounce attack) 外网用户通过FTP渗透内网
nmap -P0 Nmap扫描前不Ping目标主机
nmap -PT Nmap扫描前使用TCP ACK包确定主机是否在运行(-PT默认80)
nmap -PS Nmap使用TCP SYN包进行扫描
nmap -PI Nmap进行Ping扫描
nmap -PB 结合-PT和-PI功能
nmap -O Nmap扫描TCP/IP指纹特征,确定目标主机系统类型
nmap -I 反向标志扫描,扫描监听端口的用户
nmap -f 分片发送SYN、FIN、Xmas、和Null扫描的数据包
nmap -v 冗余模式扫描,可以得到扫描详细信息
nmap -oN 扫描结果重定向到文件
nmap -resume 使被中断的扫描可以继续
nmap -iL -iL,扫描目录文件列表
nmap -p -p扫描端口列表,默认扫描1-1024端口和/usr/share/nmap/nmap-services文件中指定端口;
-p例:23;20-30,139,60000-
nmap -F 快速扫描模式,只扫描nmap-services文件中的端口
nmap -D 欺骗扫描,可有效隐藏扫描者IP地址
nmap -S 在欺骗扫描时,用来指定源主机IP
nmap -e 指定从哪个网卡发送和接收数据包
nmap -g 指定扫描源端口
nmap -r 按顺序扫描端口

  • Tcp扫描(-sT)

这是一种全连接扫描方式之一,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现

运行的原理:通过建立TCP的三次握手连接来进行信息的传递

① Client端发送SYN;

② Server端返回SYN/ACK,表明端口开放;

③ Client端返回ACK,表明连接已建立;

④ Client端主动断开连接。

用wireshark对扫描过程进行抓包分析:(使用命令nmap -F -sT -v 61.135.169.121)

  • SYN扫描(-sS)

这是一种半链接的扫描方式之一,因为在SYN扫描中Client端和Server端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会再目标主机上留下任何的痕迹,但是这种扫描是需要root权限(对于windows用户来说,是没有root权限这个概念的,root权限是linux的最高权限,对应windows的管理员权限)

对RST包的讲解请看:

https://my.oschina.net/costaxu/blog/127394

用wireshark对扫描过程进行抓包分析:(使用命令nmap -F -sS -v 61.135.169.121

  • ACK扫描(-sA)

ACK扫描的原理是发送一个ACK包给目标主机,不论目标主机的端口是否开启,都会返回相应的RST包,通过判断RST包中的TTL来判断端口是否开启

运行原理图:

TTL值小于64端口开启,大于64端口关闭

用wireshark对扫描过程进行抓包分析:(使用命令nmap -F -sA -v 61.135.169.121)

posted on 2019-03-06 19:13  20189209郑炜  阅读(589)  评论(0编辑  收藏  举报