《网络空间安全技术实践教程》课件10.1课件_第1页
《网络空间安全技术实践教程》课件10.1课件_第2页
《网络空间安全技术实践教程》课件10.1课件_第3页
《网络空间安全技术实践教程》课件10.1课件_第4页
《网络空间安全技术实践教程》课件10.1课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三篇网络安全理论与技术实验篇第十章网络安全编程实验10.1端口扫描器编程实验网络空间安全技术实践教程110.1端口扫描器编程实验实验目的:

一个开放的网络端口就是一条与计算机进行通信的虚拟信道,网络攻击者通过对网络端口的扫描可以得到目标主机开放的网络服务程序,而网络安全防护者也可以通过扫描系统的端口,发现安全隐患;因此网络扫描器有着非常重要的地位。本次实验通过在理解扫描器原理的基础上,利用VS开发环境来编程实现一款简单的扫描器。网络空间安全技术实践教程210.1端口扫描器编程实验实验要点说明:(实验难点说明)VS的下载及安装理解扫描器的实现原理用不同的方式编程实现端口扫描器功能网络空间安全技术实践教程310.1端口扫描器编程实验实验准备:(实验环境,实验先有知识技术说明)操作系统Windows7及以上VS2010及以上开发环境网络空间安全技术实践教程410.1端口扫描器编程实验实验步骤:1)扫描器简要介绍(1)扫描技术的分类黑客攻击往往分为三个阶段:信息搜集,攻击实施,隐身巩固。在信息搜集阶段中,扫描器发挥着巨大作用。扫描器根据扫描技术来分可以分为:主机扫描技术、端口扫描技术、栈指纹OS识别技术、漏洞扫描技术。<1>主机扫描技术主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。网络空间安全技术实践教程510.1端口扫描器编程实验实验步骤:1)扫描器简要介绍<2>端口扫描技术确定目标主机可达后,使用端口扫描技术,发现目标主机的开放端口,包括网络协议和各种应用监听的端口。<3>栈指纹OS识别技术根据各个OS在TCP/IP协议栈实现上的不同特点,采用黑盒测试方法,通过研究其对各种探测的响应形成识别指纹,进而识别目标主机运行的操作系统。网络空间安全技术实践教程610.1端口扫描器编程实验实验步骤:1)扫描器简要介绍<4>漏洞扫描技术在端口扫描后得知目标主机开启的端口以及端口上的网络服务,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否有满足匹配条件的漏洞存在。通过模拟黑客的攻击手法,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等。若模拟攻击成功,则表明目标主机系统存在安全漏洞。而在上述4类扫描技术中,端口扫描是最常用的扫描手段。网络空间安全技术实践教程710.1端口扫描器编程实验实验步骤:1)扫描器简要介绍(2)扫描器实现原理通常人们将端口分为如下两类:公认端口和已注册端口。从0到1023,这些端口由IANA分配,通常只有系统进程可以使用它们,一些入侵者利用了这些端口,则潜在地控制了整个系统。从1024到65535,这些端口则不受IANA控制。端口扫描是向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应的技术。通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。扫描类型:可分为TCPconnect()扫描、半连接扫描和秘密扫描等。其中TCPconnect()扫描是端口扫描最基础的一种扫描方式。秘密扫描包含有TCPFIN扫描、TCPACK扫描等多种扫描方式。网络空间安全技术实践教程810.1端口扫描器编程实验实验步骤:1)扫描器简要介绍(2)扫描器实现原理<1>TCPconnect()扫描TCP连接扫描是向目标端口发送SYN报文,等待目标端口发送SYN/ACK报文,收到后向目标端口发送ACK报文,即著名的“三次握手”过程。在许多系统中只需调用connect()即可完成。优点:不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处是速度,可以通过同时打开多个套接字,从而加速扫描。缺点:会在目标主机的日志记录中留下痕迹,易被发现,并且数据包会被过滤掉。目标主机的logs文件会显示一连串的连接和连接出错的服务信息,并且能很快地使它关闭。网络空间安全技术实践教程910.1端口扫描器编程实验实验步骤:1)扫描器简要介绍(2)扫描器实现原理<2>TCPSYN扫描TCPSYN扫描(半开放扫描)就是利用3次握手的弱点来实现的。通过向远程主机的端口发送一个请求连接的SYN数据报文,如果没有收到目标主机的SYN/ACK确认报文,而是RST数据报文,就说明远程主机的这个端口没有打开。而如果收到远程主机的SYN/ACK应答,则说明远程主机端口开放。在收到远程主机的SYN/ACK后,不再做ACK应答,这样3次握手并没有完成,正常的TCP连接无法建立,因此,这个扫描信息不会被记入系统日志,不会在目标主机上留下记录。网络空间安全技术实践教程1010.1端口扫描器编程实验实验步骤:1)扫描器简要介绍(2)扫描器实现原理<3>秘密扫描

端口扫描容易被在端口处监听的服务记录到日志中:这些服务监听到一个没有任何数据的连接,就记录一个错误。半开放扫描现在已经不是一种秘密,很多防火墙和路由器都有了相应的措施。这些防火墙和路由器会对一些指定的端口进行监视,将对这些端口的连接请求全部进行记录。秘密扫描能躲避IDS、防火墙、包过滤器和日志的审计,从而获取目标端口的开放或关闭的信息。由于没有TCP三次握手的任何部分所以无法被记录下来,比半连接扫描更为隐蔽。缺点:扫描结果的不可靠性会增加,而且扫描主机也需要构建自己的IP包。现有的秘密扫描有TCPFIN扫描、TCPACK扫描、NULL扫描、XMAS扫描和SYN/ACK扫描等。网络空间安全技术实践教程1110.1端口扫描器编程实验实验步骤:2)利用TCPconnect()实施端口扫描关键源码在Windows平台下实际编程过程中只要调用套接字的connect()函数,根据该函数执行的返回结果来判断是否连接成功,从而判定该端口是否开放。实现该函数的调用可以采用原始套接字,CSocket,CASynSocket等,同时也可选择阻塞模式或非阻塞模式来实现.

(1)利用原始套接字编程实现扫描的控制台程序代码

不需要输入,实现对给定IP:127.0.0.1(可根据目标在源代码中修改自己的IP地址),从1到200的端口进行Connect()连接,连接成功即表示该端口开放,否则为关闭。可以将这些代码放到一个cpp文件调试通过。网络空间安全技术实践教程1210.1端口扫描器编程实验实验步骤:2)利用TCPconnect()实施端口扫描关键源码#include<winsock2.h>#include“stdio.h”#pragmacomment(lib,”ws2_32”)#include<stdlib.h>#include<windows.h>voidmain(){ WSADATAws; SOCKETs; structsockaddr_inaddr;网络空间安全技术实践教程1310.1端口扫描器编程实验实验步骤:2)利用TCPconnect()实施端口扫描关键源码 intRESULT; longlRESULT;

for(inti=1;i<200;i++) { lRESULT=WSAStartup(0x0101,&ws); s=socket(PF_INET,SOCK_STREAM,0); addr.sin_family=PF_INET; addr.sin_addr.s_addr=inet_addr(“127.0.0.1”); addr.sin_port=htons(i);

if(s==INVALID_SOCKET)break;网络空间安全技术实践教程1410.1端口扫描器编程实验实验步骤:2)利用TCPconnect()实施端口扫描关键源码

RESULT=connect(s,(structsockaddr*)&addr,sizeof(addr));

if(RESULT!=0)//连接失败,表明该端口没开放

{printf(“127.0.0.1:%iinactive\n”,i); WSACleanup();} else {printf(“127.0.0.1:%iactive\n”,i);} closesocket(s); }}其具体的思路是首先申明一个Socket,给其相应的目标IP,目标端口赋值,然后调用Connect();其中端口号是一个for循环的控制变量。网络空间安全技术实践教程1510.1端口扫描器编程实验实验步骤:2)利用TCPconnect()实施端口扫描关键源码(2)利用CSocket实现扫描的关键代码举例CSocket的扫描设计思路与前面的例子一样的,关键是使用的形式不一样,具体的Socket创建和连接调用的关键代码如下:网络空间安全技术实践教程1610.1端口扫描器编程实验实验步骤:2)利用TCPconnect()实施端口扫描关键源码CSockettestSocekt;CStringtemp;for(i=1;i<200;i++){testSocekt.Create();if(testSocekt.Connect("127.0.0.1",i)==1) { temp.Format("%d%s",i,"开放"); AfxMessageBox(temp);

} testSocekt.Close();

}网络空间安全技术实践教程1710.1端口扫描器编程实验实验步骤:3)实现基于TCPconnect()的端口扫描软件以CSocket编程为例,使用VS2010进行MFC编程。(1)新建工程

建立一个基于对话框的工程C**Scanner,注意在创建工程的时候需要勾选上包含WindowsSocket的头文件,否则后续编程在使用CSocket的时候会出现未定义的情况。建立成功后,设计好界面,如图10-1-2所示:其中“开放端口报告”下方的框选择VS工具栏中ListBox绘制。“输入IP地址”后面选择工具栏中IPAddressControl控件进行绘制。设计好后,分别给各个控件填上恰当的名字或者ID。网络空间安全技术实践教程1810.1端口扫描器编程实验实验步骤:3)实现基于TCPconnect()的端口扫描软件(2)为控件添加变量完成上述内容后,右键选择类向导,添加成员变量。如图10-1-3所示。网络空间安全技术实践教程19(3)实现扫描功能

添加成员变量后,回到设计界面(图10-1-2),双击开始扫描按钮,进入代码编辑页。10.1端口扫描器编程实验实验步骤:3)实现基于TCPconnect()的端口扫描软件voidCJiaocaiScannerDlg::OnBnClickedButton1(){ UpdateData(TRUE); WSADATAws; CSockettestSocket; structsockaddr_inaddr; CStringtemp; CStringipstr; CStringfini; BYTEnFild[4];网络空间安全技术实践教程2010.1端口扫描器编程实验实验步骤:3)实现基于TCPconnect()的端口扫描软件m_remoaddress.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]);//将ip控件内容强制转换ipstr.Format("%d.%d.%d.%d",nFild[0],nFild[1],nFild[2],nFild[3]);for(inti=m_startport;i<m_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();网络空间安全技术实践教程2110.1端口扫描器编程实验实验步骤:3)实现基于TCPconnect()的端口扫描软件 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.Close();}fini="Thescanfinished!";m_strmessage.AddString(fini);}网络空间安全技术实践教程2210.1端口扫描器编程实验实验步骤:3)实现基于TCPconnect()的端口扫描软件(4)设置缺省主机信息在JiaocaiScannerDlg.cpp文件里面找到CJiaocaiScannerDlg::CJiaocaiScannerDlg(CWnd*pParent),在其中设置一些已确定的基本信息,如本机IP地址为127.0.0.1,本机名字为Admin等。如图10-1-4所示。(5)编译程序编写完成后,需要对代码进行编译。关键出错点主要有:网络空间安全技术实践教程2310.1端口扫描器编程实验实验步骤:3)实现基于TCPconnect()的端口扫描软件<1>在代码段中定义了CString类型的ipstr,当编码字符是Unicode集的时候,在后续的代码中可能会出现错误提示:不存在从CString到constchar*的转换。解决方法:点击项目——>属性——>配置属性——>常规——>字符集下的Unicode字符集改为使用多字节字符集即可解决。如图10-1-5所示。网络空间安全技术实践教程24<2>在使用VS编程的时候,不同于VC++的情况,可能会出现未定义IDC_EDIT的情况,解决方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论