网络对抗实验210-11Word文档格式.docx
《网络对抗实验210-11Word文档格式.docx》由会员分享,可在线阅读,更多相关《网络对抗实验210-11Word文档格式.docx(102页珍藏版)》请在冰点文库上搜索。
(4)找到开放端口和入口点;
(5)弄清操作系统;
(6)弄清每个端口运行的是哪种服务;
(7)画出网络结构图。
二.ping命令探测技巧
使用ping可以测试目标主机名称和IP地址,验证与远程主机的连通性,通过将ICMP回显请求数据包发送到目标主机,并监听来自目标主机的回显应答数据包来验证与一台或多台远程主机的连通性,该命令只有在安装了TCP/IP协议后才可以使用。
ping命令格式:
ping[选项]目标主机。
常用选项见表13-1-1。
生存时间(TTL):
指定数据报被路由器丢弃之前允许通过的网段数量。
TTL是由发送主机设置的,以防止数据包在网络中循环路由。
转发IP数据包时,要求路由器至少将
TTL减小1。
TTL字段值可以帮助我们猜测操作系统类型,如表13-1-2所示。
表13-1-2 各操作系统ICMP回显应答TTL对照
三.Nmap介绍
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取哪台主机正在运行以及提供什么服务等信息。
nmap支持很多扫描技术,例如:
UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、
ICMP、FIN、ACK扫描、圣诞树(XmasTree)、SYN扫描和null扫描。
nmap还提供了一些高级的特征,例如:
通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口映射),碎片扫描,以及灵活的目标和端口设定。
nmap运行通常会得到被扫描主机端口的列表。
nmap总会给出wellknown端口的服务名(如果可能)、端口号、状态和协议等信息。
每个端口的状态有:
open、filtered、unfiltered。
open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。
filtered状态表示:
防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。
unfiltered表示:
这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。
通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。
根据使用的功能选项,nmap也可以报告远程主机的下列特征:
使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
四.Nmap常用命令选项
执行命令:
nmap[扫描类型][扫描选项]。
常用命令选项见表13-1-3。
表13-1-3 nmap命令常用选项
【实验步骤】
本练习主机A、B为一组,C、D为一组,E、F为一组。
实验角色说明如下:
下面以主机A、B为例,说明实验步骤。
首先使用“快照X”恢复Windows/Linux系统环境。
一.信息搜集
此实验主机A可与B同时相互搜集对方信息,下面的步骤以主机A为例讲解。
1.ping探测
主机A开启命令行,对主机B进行ping探测,根据主机B的回复,可以确定主机A
和主机B之间的连通情况,还可以根据回复数据包的TTL值对操作系统进行猜测。
回复数据包的TTL值:
,主机B操作系统可能为:
。
2.Nmap扫描
(1)对活动主机进行端口扫描
主机A使用Nmap工具对主机B进行TCP端口同步扫描(范围1-150):
Nmap命令 ;
主机B开放的TCP端口 。
对主机B进行UDP端口扫描(范围是110-140):
主机B开放的UDP端口 。
(2)对活动主机操作系统进行探测
主机A对主机B进行TCP/IP指纹特征扫描:
查看扫描结果 。
(3)对活动主机运行服务进行探测
主机A单击平台工具栏“协议分析器”按钮,启动协议分析器进行数据包捕获。
打开
IE在地址栏中输入http:
//主机B的IP,访问主机B的web服务,停止协议分析器,查看捕获结果。
图13-1-1可做为参考。
图13-1-1 HTTP会话分析由图13-1-1可判断目标主机web服务使用的软件类型是
。
请探测目标主机FTP服务使用的软件类型是
(4)对活动主机IP协议进行探测
主机A使用Nmap命令对主机B进行IP协议探测:
3.探测总结
根据上述实验所得结果,填写表13-1-1。
表13-1-1 探测结果
【思考问题】
1.137/UDP端口提供的是什么服务?
Linux系统是否提供此服务?
实验1.2 主机发现
【实验目的】
1.了解IP助手函数
2.掌握SendARP函数的使用方法
3.理解利用ARP协议实现主机发现的原理
1学时;
每组1人
Windows;
交换网络结构;
主机支持的IP协议
一.主机发现
任何网络探测任务的最初几个步骤之一就是把一组IP范围(有时该范围是巨大的)缩小为一列活动的或者你所感兴趣的主机。
扫描每个IP的每个端口很慢,通常也没必要。
当然,什么样的主机令你感兴趣主要依赖于扫描的目的。
网络管理员也许只对运行特定服务的主机感兴趣,而从事安全的人士则可能对每一个细节都感兴趣。
一个系统管理员也许仅仅使用Ping来定位内网上的主机,而一个外部入侵测试人员则可能绞尽脑汁用各种方法试图突破防火墙的封锁。
二.利用ARP协议实现主机发现
1.ARP协议简介
Internet是由各种各样的物理网络通过使用诸如路由器之类的设备连接在一起组成的。
主机发送一个数据包到另一台主机时可能要经过多种不同的物理网络。
主机和路由器都是在网络层通过逻辑地址来识别的,这个地址是在全世界内唯一的。
然而,数据包是通过物
理网络传递的。
在物理网络中,主机和路由器通过其物理地址来识别的,其范围限于本地网络中。
物理地址和逻辑地址是两种不同的标识符。
这就意味着将一个分组传递到一个主机或路由器需要进行两级寻址:
逻辑地址和物理地址。
需要能将一个逻辑地址映射到相应的物理地址。
ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。
所谓“地址解析”就是主机在发送帧前将目的逻辑地址转换成目的物理地址的过程。
在使用TCP/IP协议的以太网中ARP协议完成将IP地址映射到MAC地址的过程。
向目标主机发送一个ARP请求,如果对方返回MAC地址,则表明对方处于活动状态,这样达到探测的目的。
2.ARP协议运行过程
在网络中,数据报传送一般都需要使用ARP协议来获得目的主机的物理地址,ARP协议的运行过程如下:
(1)ARP协议创建一个ARP请求报文,其中包含了发送方的物理地址、发送方的IP
地址和接收方的IP地址,而接收方的物理地址用0填充。
(2)将报文传递到数据链路层,并在该层中用发送方的物理地址作为源地址,用物理广播地址作为目的地址,将其封装在一个帧中。
(3)因为该帧中包含了一个广播目的地址,所以同一链路中的每个主机或路由器都接收到这个帧。
所有接收到该帧的站点都将其传递到ARP层进行处理。
除了目的主机以外的所有主机都丢弃该报文。
(4)目的主机用一个包含其物理地址的ARP响应报文做出响应,并单播该报文。
(5)发送方接收到这个响应报文,这样它就知道了目的主机的物理地址。
因此,就可以利用ARP协议的运行特点来判断网络中的主机是否处于活动状态,当向目的主机发送ARP请求报文后,如果接收到目的主机返回的ARP应答报文,那么说明目的主机处于活动状态;
否则,说明目的主机处于不活动状态。
利用ARP协议实现主机发现的过程如图13-2-1所示。
图13-2-1 利用ARP协议实现主机发现图13-2-2所示为ARP请求与应答情况。
图13-2-2 ARP请求与应答
三.IP助手函数
使用IP助手函数,可以对计算机上的IP协议特征进行查询和管理。
它们以程序的方式提供如下功能:
(1)显示IPv4配置信息,允许释放和更新DHCP分配的IPv4地址。
(2)显示TCP连接表,UDP监听表以及IP协议统计信息。
(3)显示并处理网络路由表。
(4)显示并修改ARP缓存表。
四.相关函数与数据结构
1.WSAStartup函数与WSACleanup函数
在利用套接字编程之前,首先需要加载套接字库,初始化WS2_32.DLL的调用,这些都是通过WSAStartup函数来实现。
该函数有两个功能:
一是加载套接字库,一是进行套接字库的版本协商,也就是确定将使用的socket版本,原型声明如下:
WSAStartup函数有两个参数,第一个参数(wVersionRequested)用来指定准备加载的
WinSock库的版本。
高位字节指定所需要的Winsock库的副版本,而低位字节则是主版本号,为了建立此参数的值,可以使用宏MAKEWORK(x,y),其中x是高字节,y是低字节;
第二个参数(lpWSAData)是一个返回值,指向WSADATA结构的指针,WSAStartup函数用其加载的库版本有关的信息填写这个结构。
WSACleanup函数结束WS2_32.DLL的调用,再调用了WSAStartup函数之后,必须调用WSACleanup进行清理。
2.WSADATA结构
WSADATA结构的定义如下:
WSAStartup函数把WSAData结构中的第一个字段wVersion设置为使用的Winsock版本。
wHighVersion字段容纳的是现有的Winsock库的最高版本。
这两个字段中,高位字段
代表的是Winsock副版本,而低位字段代表的是Winsock的主版本。
3.hostent结构
hostent结构定义如下:
参数h_name表示主机正式名称;
h_aliases表示主机别名,有的时候,有的主机可能有好几个别名;
h_addrtype表示的是主机ip地址的类型,如ipv4(AF_INET)、
ipv6(AF_INET6);
h_length表示的是主机ip地址的长度;
h_addr_list是主机的ip地址列表,ip地址是以网络字节顺序存储的。
4.SendARP函数
SendARP是MicrosoftPlatformSDK中提供用来获得目标主机的MAC地址的函数,它发送一个ARP请求报文,用来获得与指定IP地址相应的物理地址,原型声明如下:
该函数有四个参数,第一个参数(DestIP)指定了目的IP地址,ARP协议将试图获得这个IP地址相对应的物理地址;
第二个参数(SrcIP)指定了发送者的IP地址,这个参数是可选的,调用者可以用0填充;
第三个参数(pMacAddr)一个指向无符号长整型的指针,如果函数调用成功,这个长整型变量将保存得到的物理地址;
第四个参数(phyAddrLen)一个指向无符号长整型的指针,如果函数调用成功,这个长整型变量将保存得到的物理地址的长度。
如果SendARP函数调用成功,返回值为NO_ERROR;
反之,如果调用失败,将返回错误代码。
5.gethostname函数
使用gethostname函数可获得本地主机的标准名称,原型声明如下:
参数name指向用于存储获得主机名称的char型缓冲区地址;
参数namelen是缓冲区大小。
6.gethostbyname函数
使用gethostbyname函数可获得本地主机的IP地址列表,原型声明如下:
参数name指向一个存有要获取主机地址信息的主机名称缓冲区,可由gethostname获
得。
如果函数调用成功,返回hostent结构体。
7.inet_ntoa函数
使用inet_ntoa函数可将IP地址转化成点式地址,原型声明如下:
本练习单人为一组。
首先使用“快照X”恢复Windows系统环境。
一.SendArp应用示例
Windows提供了帮助函数SendARP来发送ARP请求,获取与IP地址对应的物理地址。
平台目录C:
\ExpNIS\NetAD-Lab\Projects\HostScan\SendArpEx\中提供了SendArp应用实例,它能够实现列出LAN中IP地址对应的MAC地址。
1.运行程序
(1)启动VC++6.0,选择“File”|“Open Workspace…”加载工程文件“C:
\ExpNIS\NetAD-Lab\Projects\HostScan\SendArpEx\SendArpEx.dsw”,SendArpEx.cpp源文件默认就会被打开,或者在左侧“Workspace”区域,选择“FileView”标签页,双击
“SendArpEx.cpp”文件,如图13-2-1所示。
图13-2-1
(2)单击菜单项“Build”|“Rebuild All”编译SendArpEx工程,生成的可执行文件位于当前工程Debug目录下(SendArpEx.exe)。
在控制台中执行SendArpEx.exe,分析SendArpEx.exe返回信息,效果如图13-2-2所示。
图13-2-2 SendArpEx运行效果
2.代码分析
程序中最为重要的一条语句就是调用函数SendARP,对其4个参数的实例说明如下:
(1)第一参数,目的IP地址。
ARP请求试图取得此IP地址对应的物理地址,该参数类型为IPAddr(IPHelper提供此种数据类型,它与Winsock提供的in_addr是可互换的)。
通过inet_addr函数(Winsock提供)可以将IP点式地址(如172.16.0.50)转换成in_addr
结构地址。
(2)第二参数,发送者的IP。
将此参数指定为0。
(3)第三参数,返回目标地址的缓冲区。
(4)第四参数,指定目标地址缓冲区大小,返回实际需要的长度。
二.主机发现程序开发
在熟悉了SendArp的应用之后,我们来设计一个简单的Arp主机发现程序,它可以发现当前LAN中的所有活动主机,为了减少开发量,我们固定本地主机的网络掩码为
255.255.255.0。
开发流程如图13-2-3所示。
图13-2-3 主机发现开发流程
1.编写程序
(1)加载“C:
\ExpNIS\NetAD-Lab\Projects\HostScan\HostDiscover”目录下的
HostDiscover工程,HostDiscover.cpp源文件中提供了程序框架。
(2)调用WSAStartup函数,加载Winsock库(版本2.2)。
(3)调用gethostname函数,获取本地主机名称。
(4)调用gethostbyname函数,获取本地主机IP地址列表。
(5)计算出本机网络地址后,调用SendARP函数,进行主机发现。
(6)在退出程序前卸载winsock库。
(7)调试、编译程序,生成执行文件HostDiscover.exe。
2.HostDiscover发现主机
(1)启动协议分析器,单击菜单“设置”|“定义过滤器”,在“定义过滤器”界面中,选择“网络地址”选项卡,设置捕获本机IP地址与同组主机IP地址间的数据;
选择“协议过滤”选项卡,选中“ARP”节点,单击“确定”按钮完成过滤器设置。
单击“新建捕获窗口”按钮,点击“选择过滤器”按钮,确定过滤信息。
在新建捕获窗口工具栏中点击“开始捕获数据包”按钮,开始捕获数据包。
(2)执行HostDiscover.exe,效果如图13-2-4所示。
图13-2-4 主机发现执行效果图
(3)待HostDiscover发现同组主机后,协议分析器停止捕获。
观察本机与活动主机间的ARP会话过程图。
1.利用ARP协议探测网络中的活动主机的优、缺点是什么?
实验1.3NetBIOS主机发现
1.学会通过NetBIOS进行网络探测
2.熟悉防范NetBIOS主机发现的方法
1学时;
每组6人
【实验环境】
Windows、Linux、交换网络结构
一.NetBIOS简介
NetBIOS(NetworkBasicInput/OutputSystem,网络基本输入输出系统)是1983年
IBM开发的一套网络标准,微软在这基础上继续开发。
微软的客户机/服务器网络系统都是基于NetBIOS的。
应用程序通过标准的NetBIOSAPI调用,实现NetBIOS命令和数据在各种协议中传输。
Microsoft网络在WindowsNT操作系统中利用NetBIOS完成大量的内部联网。
它还为许多其它协议提供了标准界面。
TCP/IP、NetBEUI和NWLink都有NetBIOS界面,应用程序都可以利用。
NetBIOS API是为局域网开发的,现已发展为标准接口。
无论是在面向连接或面向非连接的通信中,应用程序都可用其访问传输层联网协议。
NetBIOS接口是为NetBEUI,NWLink,TCP/IP及其它协议而写的,因此应用程序不需要关心哪个协议提供传输服务(NT所使用的任何协议都有传输驱动界面具备沟通NT的NetBIOS与本机的协议能力)。
因为这些协议都支持NetBIOSAPI,所以都提供了建立会话和启动广播的功能。
网络上的每一台计算机都必须唯一的与NetBIOS名等同起来。
在建立NetBIOS会话或发送广播时需要这个名字。
当通过NetBIOS会话使用该名字时,发送方必须能够将
NetBIOS名转化为一个IP地址。
由于IP地址和名字都需要,所以在进行成功的通信之前,所有的名字转换方法都必须能够给出正确的IP地址。
NetBIOS服务与TCP/IP所提供端口对应关系如表13-2-1所示。
表13-2-1 NetBIOS服务端口号
二.WINS简介
WINS(Windows网际名字服务)为NetBIOS名字提供名字注册、更新、释放和转换服务,这些服务允许WINS服务器维护一个将NetBIOS名链接到IP地址的动态数据库,大大减轻了对网络交通的负担。
在默认状态中,网络上的每一台计算机的NetBIOS名字是通过广播的方式来提供更新的,也就是说,假如网络上有n台计算机,那么每一台计算机就要广播n-1次,对于小型网络来说,这似乎并不影响网络交通,但是对于大型网络来说,加重了网络的负担。
因此
WINS对大中型企业来说尤其重要。
三.理解NetBIOS
1.LANA编号
理解LAN适配器(LANAdapter,LANA)编号是NetBIOS进行网络编程的关键所在。
网络的传输协议是通过LANA编号同NetBIOS对应起来,每个LANA编号对应于网卡及传输协议的唯一组合。
因此,我们在编程时要注意,两台要进行通信计算机必须至少安装有同一种协议,并且这两台计算机通信所依赖的LANA编号对应的网络协议要相同,否则即使这两台计算机安装相同的协议也无法进行通信。
LANA编号范围在0到9之间,其中,LANA0代表默认的LANA。
2.NetBIOS名字
NetBIOS名字可分为两种类型:
唯一名字(UniqueName)和组名(GroupName)。
顾名思义,唯一名字只允许一台计算机注册该名字,一旦唯一名字注册成功,其他计算机如果再注册该名字,就会出现:
“名字重复”的错误,微软网络中的机器名采用的就是
NetBIOS唯一名字。
组名则是一组计算机的总称,可以用来接收发给这一组计算机的数据。
值得注意的是:
组名不可以和唯一名字同名,否则将会引起发送或接收数据的目地出现错误!
NetBIOS名字长度为16个字符,其中第16个字符用于区分不同的网络服务。
关于计算机注册NetBIOS名字的信息可以利用Nbtstat命令查看。
3.NetBIOS提供的服务
NetBIOS提供两种服务:
面向连接的服务和数据报服务(无连接)。
面向连接的服务为两台需要进行通信的计算机建立一个连接,并利用错误探测和恢复机制保证数据在通信的两端准确无误的传输,它适于传输比较长的消息。
对于NetBIOS,服务器在对想通过它建立通信的LANA编号上注册,而对于位于其他计算机上的客户机会搜索服务器注册的名字,并将它解析为机器名,然后发出进行通信的请求。
数据报服务是无连接的,因而它不能保证数据有序、正确的传输,但它可以节省建立连接的开销,它适合短消息的传输。
在NetBIOS中,客户机只是将发送数据的目的地定义为服务器注册的进程名,而不进行任何连接。
本练习主机A~F为一组。
一.NetBIOS主机扫描
由于ARP协议不支持路由功能,所以基于ARP的主机发现方式就不能够实现跨网段
(路由)发现。
虽然Ne