网络抓包和协议初认识

基本网络命令

所有的命令 可以用 命令 + /? 来获得提示 如 ping /? 等等

ping命令通过向计算机发送ICMP回应报文并且监听回应报文的返回,以校验与远程计算机或本地计算机的连接。

tracert(跟踪路由)是路由跟踪实用程序,用于获得IP数据报访问目标时从本地计算机到目的主机的路径信息。

ipconfig 显示所有适配器的基本TCP/IP配置

  • ipconfig /all 显示所有适配器的完整 TCP/IP 配置

netstat命令可以显示当前活动的TCP连接、计算机侦听的端口、以太网统计信息、IP路由表、IPv4统计信息(对于IP、ICMP、TCP和UDP协议)以及IPv6统计信息

  • netstat –an 显示所有活动的 TCP 连接以及计算机侦听的TCP 和 UDP 端口
  • netstat -e –s 显示以太网统计信息,如发送和接收的字节数、数据包数

ARP 把基于 TCP/IP 的软件使用的 IP 地址解析成 LAN 硬件使用的媒体访问控制地址

  • arp –a 显示所有接口的ARP 缓存表。

  • arp -a -N 192.168.1.100
    显示IP 地址为 192.168.1.100 的接口ARP 缓存表。

  • arp -s 10.0.0.80 00-AA-00-4F-2A-9C
    将 IP 地址 10.0.0.80与物理地址 00-AA-00-4F-2A-9C绑定(静态ARP缓存项)。

  • 注意:在IPv6协议下,已经取消了arp协议,代之以NDP(邻居发现)协议。

net命令是功能强大的以命令行工具,它包含了管理网络环境、服务、用户、登陆等Windows 中大部分重要的管理功能。使用net可以管理本地或者远程计算机的网络环境,以及各种服务程序的运行和配置,或者进行用户管理和登陆管理等。net命令所执行的功能都可以在相对应的图形界面完成。

net命令实例

  • 建立本地机用户myuser、口令159357:
    net user myuser 159357 /add
  • 删除本地机用户myuser
    net user myuser /delete
  • 建立本地目录c:\myshare为共享目录,其共享名myshare、共享权限为只读,访问用户为myuser:
    net share myshare=c:\myshare /GRANT:myuser,READ
  • 在Windows7,用户myuser必须是存在并设置有密码的。权限可以是READ、CHANGE或FULL

IP地址

  • 在IPv4系统中,IP地址是一个32位的二进制地址
    如:11001010 01110010 11001110 11001010
  • 为便于记忆,将其划为4组,每组8位,由小数点分开,用四个字节来表示。
    如:11001010.01110010.11001110.11001010
  • 用点分开的每个字节的数值范围是0-255,称为“点分十进制表示法”
    如: 202.114.206.202

  • 全“0”地址
    整个IP地址全为0代表一个未知的网络如:0.0.0.0。在路由器的配置中,用于默认路由的配置

  • 回环地址
    A类地址第一段十进制数值为127是保留地址,用于环路反馈等测试。如127.0.0.1代表本机地址

  • 网络地址(“0”地址)
    主机号全为0的IP地址表示某网络号的网络本身

  • 192.168.1.0
    不表示一个具体IP地址,而是表示一网段的网络地址

  • 广播地址(“1”地址)
    主机号各位全为1的IP地址表示本网广播或称为本地广播

  • 192.168.1.255
    表示一个广播地址

  • IPv4 A类地址 前八位为网络地址(0开头)

  • IPv4 B类地址 前16位为网络地址(10开头)

  • IPv4 C类地址 前24位为网络地址(110开头)

  • IPv4 D类地址 前八位为网络地址(1110开头)

  • IPv4私有IP地址
    10.0.0.0~10.255.255.255 1个A类地址
    172.16.0.0~172.31.255.255 16个连续的B类地址
    192.168.0.0~192.168.255.255 256个连续的C类地址
    这些私有地址常被用于局域网内部地址

  • 192.168.1.1/24
    斜扛后的数字表示掩码的高24位为1,其余为0

网络掩码

  • 作用:标识一个IP地址的网络号范围
  • 结构: 掩码长度32bit,由一串1和紧随的一串0组成。1对应于IP地址中的网络号(子网号),0对应于IP地址中的主机号
  • A类地址掩码 255.0.0.0
  • B类地址掩码 255.255.0.0
  • C类地址掩码 255.255.255.0

TCP/UDP/ICMP协议

  • TCP、UDP、ICMP协议是TCP/IP协议族中的协议
  • TCP、UDP工作于传输层,ICMP工作于网络层
  • TCP为两台主机上的应用程序提供高可靠的端到端的数据通信,包括把应用程序交给它的数据分成数据块交给网络层、确认接收到的分组等
  • UDP则为应用层提供不可靠的数据通信,它只是把数据包的分组从一台主机发送到另一台主机,不保证数据能到达另一端。
  • 所有的TCP、UDP、ICMP数据都以IP数据包格式传输。

  • TCP报文的传输过程

这里写图片描述
特点:传输双方先建立连接,再传输数据,是可靠传输协议

  • UDP协议
    这里写图片描述
    特点:传输双方未建立连接,即传输数据,是不可靠传输协议

  • ICMP协议
    这里写图片描述
    ICMP的目的主要是用于在TCP/IP网络中发送出错和控制消息。ICMP的错误
    报告只能通知出错数据包的源主机, 而无法通知从源主机到出错路由器途中
    的所有路由器(环路时)。ICMP数据包是封装在IP数据包中的。

协议分析软件Wireshark

常用的过滤规则例

  • tcp
  • tcp or udp
  • tcp || udp(此过滤规则是上一条的不同写法)
  • tcp and ip.addr=192.168.1.34
  • tcp.port == 80
  • tcp port 80 (此过滤规则是上一条的不同写法)

Wireshark的界面窗口主要分为三部分

  • 最上面为数据包列表,用来显示截获的每个数据包的总结性信息
  • 中间为协议树,用来显示选定的数据包所属的协议信息
  • 最下面是以十六进制形式表示的数据包的内容,用来显示数据包在物理层上传输时的最终形式

网络监听的概念

  • 网络监听技术又叫做网络嗅探技术(Network Sniffing) 顾名思义,这是一种在他方未察觉的情况下捕获其通信报文或通信内容的技术。

  • 在网络安全领域,网络监听技术对于网络攻击与防范双方都有着重要的意义,是一把双刃剑。对网络管理员来说,它是了解网络运行状况的有力助手,对黑客而言,它是有效收集信息的手段。

网络传输技术:广播式和点到点

  • 广播式网络传输技术:仅有一条通信信道,由网络上的所有机器共享。信道上传输的分组可以被任何机器发送并被其他所有的机器接收。(总线型以太网就是典型的广播式网络)

  • 点到点网络传输技术:点到点网络由一对对机器之间的多条连接构成,分组的传输是通过这些连接直接发往目标机器,因此不存在发送分组被多方接收的问题

网卡的四种工作模式

  • 广播模式:该模式下的网卡能够接收网络中的广播信息。
  • 组播模式:该模式下的网卡能够接受组播数据。
  • 直接模式:在这种模式下,只有匹配目的MAC地址的网卡才能接收该数据帧。
  • 混杂模式:(Promiscuous Mode)在这种模式下,网卡能够接受一切接收到的数据帧,而无论其目的MAC地址是什么。

网络监听器分软、硬两种

  • 软件嗅探器便宜易于使用,缺点是功能往往有限,可能无法抓取网络上所有的传输数据(比如碎片),或效率容易受限;
  • 硬件嗅探器通常称为协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,处理速度很高,但是价格昂贵。
  • 目前主要使用的嗅探器是软件的

网络监听软件的主要工作机制

  • 驱动程序支持:需要一个直接与网卡驱动程序接口的驱动模块,作为网卡驱动与上层应用的“中间人”,它将网卡设置成混杂模式,捕获数据包,并从上层接收各种抓包请求。
  • 分组捕获过滤机制:对来自网卡驱动程序的数据帧进行过滤,最终将符合要求的数据交给上层。
  • 链路层的网卡驱动程序上传的数据帧就有了两个去处:一个是正常的协议栈,另一个就是分组捕获过滤模块,对于非本地的数据包,前者会丢弃(通过比较目的IP地址),而后者则会根据上层应用的要求来决定上传还是丢弃。
  • 等待、捕获和分析。Sniffer程序把网卡设置为混杂模式的状态,能接收所有经过其所在信道的每一个信息包,并将信息交给sniffer程序。
  • sniffer工作在网络环境中的底层,能拦截所有正在网络上传送的数据,并且进行分析处理。
  • sniffer可以进行IP资料统计分析,显示内部及外部IP地址、Port端口号、主机名称等重要资讯,且可将取得的数据储存以备查阅

交换机:

  • 交换机的原理
  • 交换机是一种网络开关(Switch),也称交换器,由于和电话交换机对出入线的选择有相似的原理,因此被人称为交换机
  • 交换机被定义成一个能接收发来的信息帧,加以暂时存储,然后发到另 一端的网络部件,其本质上就是具有流量控制能力的多端口网桥。

  • 交换机的工作特点

  • 把每个端口所连接的网络分割为独立的LAN,每个LAN成为一个独立的冲突域。
  • 每个端口都提供专用的带宽。这是交换机与集线器的本质区别,集线器不管有多少端口,都是共享其全部带宽。
  • 转发机制。交换机维护有每个端口对应的地址表,其中保存与该端口连接的各个主机的MAC地址。

linux 设置网卡为混杂模式

#include <stdio.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h> 
#include <string.h>
#include <linux/in.h>
#include <linux/if_ether.h>
#include <unistd.h>
#include <net/if.h>

int main(int argc, char **argv) {
  int sock, n;
  struct ifreq ethreq;
  if ( (sock=socket(PF_PACKET, SOCK_RAW, 
                    htons(ETH_P_ALL)))<0) {
    perror("socket");
    exit(1);
  }
   /* Set the network card in promiscuos mode */
  strncpy(ethreq.ifr_name,"eth0",IFNAMSIZ);//把网络设备的名字填充到ifr结构中
  if (ioctl(sock,SIOCGIFFLAGS,&ethreq)==-1) {//获取接口标志
    perror("ioctl");
    close(sock);
    exit(1);
  }
  ethreq.ifr_flags|=IFF_PROMISC; //获取接口标志后将其设置成混杂模式
  if (ioctl(sock,SIOCSIFFLAGS,&ethreq)==-1) {
    perror("ioctl");
    close(sock);
    exit(1);
  }
  printf("Success to set eth0 to promiscuos mode.../n");
  return 0;
}


交换式局域网

  • 交换式以太网就是用交换机或其它非广播式交换设备组建成的局域网。
  • 这些设备根据收到的数据帧中的MAC地址决定数据帧应发向交换机的哪个端口。
  • 因为端口间的帧传输彼此屏蔽,因此节点就不担心自己发送的帧会被发送到非目的节点中去

有如下方法来实现在交换式以太网中的网络监听

  • 溢出攻击
    • 交换机工作时要维护一张MAC地址与端口的映射表。
      但是用于维护这张表的内存是有限的。如用大量的错误MAC地址的数据帧对交换机进行攻击,交换机就可能出现溢出。
      这时交换机就会退回到广播方式,向所有的端口发送数据包,一旦如此,监听就很容易了
  • ARP欺骗

    • 计算机中维护着一个IP-MAC地址对应表,记录了IP地址和MAC地址之间的对应关系。该表将随着ARP请求及响应包不断更新。
      通过ARP欺骗,改变表里的对应关系,攻击者可以成为被攻击者与交换机之间的“中间人”,使交换式局域网中的所有数据包都流经自己主机的网卡,这样就可以像共享式局域网一样分析数据包了。

TCP

正常TCP通信过程:

  • 建立连接
  • 数据传输
  • 断开连接

    这里写图片描述

TCP标志位

  • ACK: 确认标志
  • RST: 复位标志
  • URG: 紧急标志
  • SYN: 建立连接标志
  • PSH: 推标志
  • FIN: 结束标志

URG: 为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效。
ACK: 为确认标志位。如果为1,表示包中的确认号是有效的。否则,包中的确认号无效。
PSH: 如果置位,接收端应尽快把数据传送给应用层。
RST: 用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。
SYN: 标志位用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1则表示接受连接。
FIN: 表示发送端已经没有数据要求传输了,希望释放连接。

这里写图片描述
这里写图片描述

下面是我用wireshark嗅探到的ftp密码

这里写图片描述
这里写图片描述
这里写图片描述

正如你所看ftp账户 pronter
ftp密码 abc123

扫描与防御技术

这里写图片描述

网络扫描器的主要功能

  • 扫描目标主机识别其工作状态(开/关机)
  • 识别目标主机端口的状态(监听/关闭)
  • 识别目标主机操作系统的类型和版本
  • 识别目标主机服务程序的类型和版本
  • 分析目标主机、目标网络的漏洞(脆弱点)
  • 生成扫描结果报告

一个完整的网络安全扫描分为三个阶段:

  • 第一阶段:发现目标主机或网络

    • PING扫描用于扫描第一阶段,识别系统是否活动
  • 第二阶段:发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息
    • OS探测、穿透防火墙探测、端口扫描用于扫描第二阶段
      OS探测是对目标主机运行的OS进行识别
      穿透防火墙探测用于获取被防火墙保护的网络资料
      端口扫描是通过与目标系统的TCP/IP端口连接,并查看该系统处于监听或运行状态的服务
  • 第三阶段:根据收集到的信息判断或者进一步测试系统是否存在安全漏洞

    • 漏洞扫描用于安全扫描第三阶段,通常是在端口扫描的基础上,进而检测出目标系统存在的安全漏洞

一个典型的扫描案例
这里写图片描述

  • 选定目标为:192.168.1.18
    测试此主机是否处于活动状态,工具是用操作系统自带的ping,
    使用命令: ping 192.168.1.18

  • 运用扫描工具,检查目标主机开放的端口,判断它运行了哪些服务 使用的工具是Nmap 扫描命令:nmap 192.168.1.18

  • 检测SMTP服务是否存在漏洞 使用漏洞扫描工具Nessus(内萨斯)

  • .Report结果

ICMP协议
Internet Control Message Protocol,是IP的一部分,在IP协议栈中必须实现。

  • 用途: 网关或者目标机器利用ICMP与源通讯 当出现问题时,提供反馈信息用于报告错误
  • 特点: 其控制能力并不用于保证传输的可靠性 它本身也不是可靠传输的 并不用来反映ICMP报文的传输情况

ICMP报文类型
0 Echo Reply
3 Destination Unreachable
4 Source Quench
5 Redirect
8 Echo
11 Time Exceeded
12 Parameter Problem
13 Timestamp
14 Timestamp Reply
15 Information Request
16 Information Reply
17 Address Mask Request
18 Address Mask Reply

NMAP简介

  • Nmap(Network Mapper,网络映射器),是由Fyodor制作的端口扫描工具。
  • 它除了提供基本的TCP和UDP端口扫描功能外,还综合集成了众多扫描技术,可以说,现在的端口扫描技术很大程度上是根据Nmap的功能设置来划分的。
  • Nmap还有一个卓越的功能,那就是采用一种叫做“TCP栈指纹鉴别(stack
    fingerprinting)”的技术来探测目标主机的操作系统类型。

其基本功能有三个:

  • 探测一组主机是否在线 ——– 主机扫描技术
  • 扫描主机端口,嗅探所提供的网络服务—————- 端口扫描技术
  • 还可以推断主机所用的操作系统 —————–远程主机OS指纹识别

Nessus简介

  • Nessus采用基于插件的技术。
  • 工作原理是通过插件模拟黑客的攻击,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,若模拟攻击成功,则表明目标主机系统存在安全漏洞。
  • Nessus可以完成多项安全工作,如扫描选定范围内的主机的端口开放情况、提供的服务、是否存在安全漏洞等等。
  • 它是免费的,比起商业的安全扫描工具如ISS具有价格优势。
  • 采用了基于多种安全漏洞的扫描,避免了扫描不完整的情况。
  • Nessus基于插件体制,扩展性强,支持及时的在线升级,可以扫描自定义漏洞或者最新安全漏洞。

主机扫描技术
端口扫描技术
远程主机OS识别
漏洞扫描技术
这是比Nmap多的功能 Nessus自带的上万个扫描插件是其最引人注目的功能

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值