(网络空间安全技术实践)10.1端口扫描器编程实验

上传人:繁星 文档编号:88156476 上传时间:2019-04-20 格式:PPTX 页数:30 大小:448.68KB
返回 下载 相关 举报
(网络空间安全技术实践)10.1端口扫描器编程实验_第1页
第1页 / 共30页
(网络空间安全技术实践)10.1端口扫描器编程实验_第2页
第2页 / 共30页
(网络空间安全技术实践)10.1端口扫描器编程实验_第3页
第3页 / 共30页
(网络空间安全技术实践)10.1端口扫描器编程实验_第4页
第4页 / 共30页
(网络空间安全技术实践)10.1端口扫描器编程实验_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《(网络空间安全技术实践)10.1端口扫描器编程实验》由会员分享,可在线阅读,更多相关《(网络空间安全技术实践)10.1端口扫描器编程实验(30页珍藏版)》请在金锄头文库上搜索。

1、网络空间安全技术实践教程,吕秋云,王小军,胡耿然,汪云路,王秋华 西安电子科技大学出版社,第三篇 网络安全理论与技术实验篇,第十章 网络安全编程实验 10.1端口扫描器编程实验,网络空间安全技术实践教程,2,10.1端口扫描器编程实验,实验目的: 一个开放的网络端口就是一条与计算机进行通信的虚拟信道,网络攻击者通过对网络端口的扫描可以得到目标主机开放的网络服务程序,而网络安全防护者也可以通过扫描系统的端口,发现安全隐患;因此网络扫描器有着非常重要的地位。本次实验通过在理解扫描器原理的基础上,利用VS开发环境来编程实现一款简单的扫描器。,网络空间安全技术实践教程,3,10.1端口扫描器编程实验,

2、实验要点说明:(实验难点说明) VS的下载及安装 理解扫描器的实现原理 用不同的方式编程实现端口扫描器功能,网络空间安全技术实践教程,4,10.1端口扫描器编程实验,实验准备: (实验环境,实验先有知识技术说明) 操作系统Windows 7及以上 VS2010及以上开发环境,网络空间安全技术实践教程,5,10.1端口扫描器编程实验,实验步骤: 1)扫描器简要介绍 (1)扫描技术的分类 黑客攻击往往分为三个阶段:信息搜集,攻击实施,隐身巩固。在信息搜集阶段中,扫描器发挥着巨大作用。扫描器根据扫描技术来分可以分为:主机扫描技术、端口扫描技术、栈指纹OS识别技术、漏洞扫描技术。 主机扫描技术 主机扫

3、描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。,网络空间安全技术实践教程,6,10.1端口扫描器编程实验,实验步骤: 1)扫描器简要介绍 端口扫描技术 确定目标主机可达后,使用端口扫描技术,发现目标主机的开放端口,包括网络协议和各种应用监听的端口。 栈指纹OS识别技术 根据各个OS在TCP/IP协议栈实现上的不同特点,采用黑盒测试方法,通过研究其对各种探测的响应形成识别指纹,进而识别目标主机运行的操作系统。,网络空间安全技术实践教程,7,10.1端口扫描器编程实验,实验步骤: 1)扫描器简要介绍 漏洞扫描技术 在端口扫描后得知目标主机开启的端口以

4、及端口上的网络服务,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否有满足匹配条件的漏洞存在。通过模拟黑客的攻击手法,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等。若模拟攻击成功,则表明目标主机系统存在安全漏洞。 而在上述4类扫描技术中,端口扫描是最常用的扫描手段。,网络空间安全技术实践教程,8,10.1端口扫描器编程实验,实验步骤: 1)扫描器简要介绍 (2)扫描器实现原理 通常人们将端口分为如下两类:公认端口和已注册端口。从0到1023,这些端口由IANA分配,通常只有系统进程可以使用它们,一些入侵者利用了这些端口,则潜在地控制了整个系统。从1024到65535,

5、这些端口则不受IANA控制。 端口扫描是向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应的技术。通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。 扫描类型:可分为TCP connect()扫描、半连接扫描和秘密扫描等。其中TCP connect()扫描是端口扫描最基础的一种扫描方式。秘密扫描包含有TCP FIN扫描、TCPACK扫描等多种扫描方式。,网络空间安全技术实践教程,9,10.1端口扫描器编程实验,实验步骤: 1)扫描器简要介绍 (2)扫描器实现原理 TCP connect()扫描 TCP连接扫描是向目标端口发送SYN报文,等待目标端口发送

6、SYN/ACK报文,收到后向目标端口发送ACK报文,即著名的“三次握手”过程。在许多系统中只需调用connect()即可完成。优点:不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处是速度,可以通过同时打开多个套接字,从而加速扫描。缺点:会在目标主机的日志记录中留下痕迹,易被发现,并且数据包会被过滤掉。目标主机的logs文件会显示一连串的连接和连接出错的服务信息,并且能很快地使它关闭。,网络空间安全技术实践教程,10,10.1端口扫描器编程实验,实验步骤: 1)扫描器简要介绍 (2)扫描器实现原理 TCP SYN扫描 TCP SYN扫描(半开放扫描)就是利用3次握手的弱点来实现的

7、。通过向远程主机的端口发送一个请求连接的SYN数据报文,如果没有收到目标主机的SYN/ACK确认报文,而是RST数据报文,就说明远程主机的这个端口没有打开。而如果收到远程主机的SYN/ACK应答,则说明远程主机端口开放。在收到远程主机的SYN/ACK后,不再做ACK应答,这样3次握手并没有完成,正常的TCP连接无法建立,因此,这个扫描信息不会被记入系统日志,不会在目标主机上留下记录。,网络空间安全技术实践教程,11,10.1端口扫描器编程实验,实验步骤: 1)扫描器简要介绍 (2)扫描器实现原理 秘密扫描 端口扫描容易被在端口处监听的服务记录到日志中:这些服务监听到一个没有任何数据的连接,就记

8、录一个错误。半开放扫描现在已经不是一种秘密,很多防火墙和路由器都有了相应的措施。这些防火墙和路由器会对一些指定的端口进行监视,将对这些端口的连接请求全部进行记录。秘密扫描能躲避IDS、防火墙、包过滤器和日志的审计,从而获取目标端口的开放或关闭的信息。由于没有TCP三次握手的任何部分所以无法被记录下来,比半连接扫描更为隐蔽。缺点:扫描结果的不可靠性会增加,而且扫描主机也需要构建自己的IP包。现有的秘密扫描有TCP FIN扫描、TCP ACK扫描、NULL扫描、XMAS扫描和SYN/ACK扫描等。,网络空间安全技术实践教程,12,10.1端口扫描器编程实验,实验步骤: 2)利用TCP connec

9、t()实施端口扫描关键源码 在Windows平台下实际编程过程中只要调用套接字的connect()函数,根据该函数执行的返回结果来判断是否连接成功,从而判定该端口是否开放。实现该函数的调用可以采用原始套接字,CSocket,CASynSocket等,同时也可选择阻塞模式或非阻塞模式来实现. (1)利用原始套接字编程实现扫描的控制台程序代码 不需要输入,实现对给定IP:127.0.0.1(可根据目标在源代码中修改自己的IP地址),从1到200的端口进行Connect()连接,连接成功即表示该端口开放,否则为关闭。可以将这些代码放到一个cpp文件调试通过。,网络空间安全技术实践教程,13,10.1

10、端口扫描器编程实验,实验步骤: 2)利用TCP connect()实施端口扫描关键源码 #include #include “stdio.h” #pragma comment(lib,”ws2_32”) #include #include void main() WSADATA ws; SOCKET s; struct sockaddr_in addr;,网络空间安全技术实践教程,14,10.1端口扫描器编程实验,实验步骤: 2)利用TCP connect()实施端口扫描关键源码 int RESULT; long lRESULT; for (int i=1;i200;i+) lRESULT=W

11、SAStartup(0x0101,网络空间安全技术实践教程,15,10.1端口扫描器编程实验,实验步骤: 2)利用TCP connect()实施端口扫描关键源码 RESULT=connect(s,(struct sockaddr*) 其具体的思路是首先申明一个Socket,给其相应的目标IP,目标端口赋值,然后调用Connect();其中端口号是一个for循环的控制变量。,网络空间安全技术实践教程,16,10.1端口扫描器编程实验,实验步骤: 2)利用TCP connect()实施端口扫描关键源码 (2)利用CSocket实现扫描的关键代码举例 CSocket的扫描设计思路与前面的例子一样的,

12、关键是使用的形式不一样,具体的Socket创建和连接调用的关键代码如下:,网络空间安全技术实践教程,17,10.1端口扫描器编程实验,实验步骤: 2)利用TCP connect()实施端口扫描关键源码 CSocket testSocekt; CString temp; for (i=1;i200;i+) testSocekt.Create(); if (testSocekt.Connect(“127.0.0.1“,i)=1) temp.Format(“%d%s“,i,“开放“); AfxMessageBox(temp); testSocekt.Close(); ,网络空间安全技术实践教程,18

13、,10.1端口扫描器编程实验,实验步骤: 3)实现基于TCP connect()的端口扫描软件 以CSocket编程为例,使用VS2010进行MFC编程。 (1)新建工程 建立一个基于对话框的工程C*Scanner,注意在创建工程的时候需要勾选上包含Windows Socket的头文件,否则后续编程在使用CSocket的时候会出现未定义的情况。建立成功后,设计好界面,如图10-1-2所示:其中“开放端口报告”下方的框选择VS工具栏中List Box绘制。“输入IP地址”后面选择工具栏中IP Address Control控件进行绘制。设计好后,分别给各个控件填上恰当的名字或者ID。,网络空间安

14、全技术实践教程,19,10.1端口扫描器编程实验,实验步骤: 3)实现基于TCP connect()的端口扫描软件 (2)为控件添加变量 完成上述内容后,右键选择类向导,添加成员变量。如图10-1-3所示。,网络空间安全技术实践教程,20,(3)实现扫描功能 添加成员变量后,回到设计界面(图10-1-2),双击开始扫描按钮,进入代码编辑页。,10.1端口扫描器编程实验,实验步骤: 3)实现基于TCP connect()的端口扫描软件 void CJiaocaiScannerDlg:OnBnClickedButton1() UpdateData(TRUE); WSADATA ws; CSocke

15、t testSocket; struct sockaddr_in addr; CString temp; CString ipstr; CString fini; BYTE nFild4;,网络空间安全技术实践教程,21,10.1端口扫描器编程实验,实验步骤: 3)实现基于TCP connect()的端口扫描软件 m_remoaddress.GetAddress(nFild0,nFild1,nFild2,nFild3); /将ip控件内容强制转换 ipstr.Format(“%d. %d. %d. %d“,nFild0,nFild1,nFild2,nFild3); for(int i=m_st

16、artport;im_endport;i+) addr.sin_family=PF_INET;/*实现协议族,采用TCP/IP方式*/ addr.sin_addr.S_un.S_addr=inet_addr(ipstr); /*目的IP地址*/ addr.sin_port=htons(i); /*扫描端口号*/ testSocket.Create();,网络空间安全技术实践教程,22,10.1端口扫描器编程实验,实验步骤: 3)实现基于TCP connect()的端口扫描软件 if(testSocket.Connect(“127.0.0.1“,i)=1) /*端口开放成功*/ temp.Format(“%d %s“,i,“open“); m_strmessage.AddString(temp);/*将扫描结果显示到列表框里面*/ else temp.Format(“%d %s“,i,“close“); m_strmessage.AddString(temp); testSocket

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号