当前位置:文档之家› 网络安全实验四 主动和被动式扫描工具的使用 哈理工版本

网络安全实验四 主动和被动式扫描工具的使用 哈理工版本

成绩:实验报告课程名称:网络安全实验项目:主动和被动式扫描工具的使用姓名:专业:班级:学号:计算机科学与技术学院实验教学中心2012 年5 月17 日实验项目名称:主动和被动式扫描工具的使用( 2学时)一、实验目的通过对主动式扫描工具和被动式扫描工具的使用,了解主动式扫描和被动式扫描的意义,熟悉主动式扫描和被动式扫描的方式的具体方法和几种基础扫描软件的使用。

通过被动式扫描发现系统上的不合适设置及不安全的本地安全策略;通过主动式扫描模拟对系统的攻击,从而记录系统反应,发现漏洞,对漏洞进行修复,增强网络安全意识,完善自身技术,熟练掌握网络安全知识。

二、实验内容(一)被动式策略扫描1.系统用户扫描2.开放端口扫描3.共享目录扫描4.利用TCP协议实现端口扫描(二)主动是策略扫描1.漏洞扫描(三)网络监听1.监听工具Win Sniffer使用三、实验步骤案例4-1系统用户扫描(1)对IP为192.168.0.111的计算机进行扫描,首先将该计算机添加到扫描列表中,选择菜单File下的菜单项“添加主机”,输入目标计算机的IP地址。

(2)可以得到对方的用户列表了。

点击工具栏上的图标,得到的用户列表。

(3)选择菜单栏工具下的菜单项“设置”,设置密码字典为一个文本文件。

(4)利用该工具可以对计算机上用户进行密码破解,首先设置密码字典,设置完密码字典以后,将会用密码字典里的每一个密码对目标用户进行测试,如果用户的密码在密码字典中就可以得到该密码。

一个典型的密码字典。

(5)利用密码字典中的密码进行系统破解,选择菜单栏工具下的菜单项“字典测试”,程序将按照字典的设置进行逐一的匹配。

案例4-2开放端口扫描(1)得到对方开放了哪些端口也是扫描的重要一步。

使用工具软件PortScan 可以到得到对方计算机都开放了哪些端口。

(2)对172.18.25.109的计算机进行端口扫描,在Scan文本框中输入IP地址,点击按钮“START”,开始扫描。

案例4-3共享目录扫描(1)通过工具软件Shed来扫描对方主机,得到对方计算机提供了哪些目录共享。

工具软件的主界面。

(2)该软件可以扫描一个IP地址段的共享信息,这里只扫描IP为192.168.0.111的目录共享情况。

在起始IP框和终止IP框中都输入192.168.0.111,点击按钮“开始”就可以得到对方的共享目录了。

案例4-4利用TCP协议实现端口扫描(1)实现端口扫描的程序可以使用TCP协议和UDP协议,原理是利用Socket 连接对方的计算机的某端口,试图和该端口建立连接(2)如果建立成功,就说明对方开放了该端口,如果失败了,就说明对方没有开放该端口,具体实现程序proj4_4.cpp所示。

案例4-5漏洞扫描(1)扫描结果保存在/log/目录中,index_*.htm为扫描结果索引文件。

主界面。

(2)可以利用该软件对系统存在的一些漏洞进行扫描,选择菜单栏设置下的菜单项“扫描参数”,扫描参数的设置。

可以看出该软件可以对常用的网络以及系统的漏洞进行全面的扫描,选中几个复选框,点击按钮“确定”。

(3)下面需要确定要扫描主机的IP地址或者IP地址段,选择菜单栏设置下的菜单项“扫描参数”,扫描一台主机,在指定IP范围框中输入:192.168.0.111-192.168.0.111。

(4)设置完毕后,进行漏洞扫描,点击工具栏上的图标“开始”,开始对目标主机进行扫描。

案例4-6监听工具 Win Sniffer(1)Win Sniffer专门用来截取局域网内的密码,比如登录FTP,登录Email 等的密码。

(2)只要做简单的设置就可以进行密码抓取了,点击工具栏图标“Adapter”,设置网卡,这里设置为本机的物理网卡就可以。

四、实验结果案例4-1系统用户扫描案例4-2 开放端口扫描案例4-3共享目录扫描案例4-4利用TCP协议实现端口扫描案例4-5漏洞扫描案例4-6监听工具 Win Sniffer五、程序代码案例4-4利用TCP协议实现端口扫描#include <stdlib.h>#include <stdio.h>#include <winsock.h>#include <winbase.h>#define BUFSIZE 64#define WSVERS MAKEWORD(2, 0)#define WINEPOCH 2208988800#define MSG "Is this port you open?\n"#define MAX_PACKET 1024SOCKET connectsock(const char *host, const char *service,const char *transport );void errexit(const char *, ...);int main(int argc, char *argv[]){char *host = "localhost"; /* host to use if none supplied*/ char *service = "5060"; /* default service name */ SOCKET s; /* socket descriptor */int errcnt = 0; /* error count */WSADATA wsadata;switch (argc) {case 1:break;case 3:service = argv[2];/* FALL THROUGH */case 2:host = argv[1];break;default:fprintf(stderr, "usage: file1.exe [host [port]]\n");exit(1);}if (WSAStartup(WSVERS, &wsadata))errexit("WSAStartup failed\n");s = connectsock(host, service, "tcp");;(void) send(s, MSG, strlen(MSG), 0);closesocket(s);WSACleanup();return 1;}#ifndef INADDR_NONE#define INADDR_NONE 0xffffffff#endif /* INADDR_NONE *//*------------------------------------------------------------------------* connectsock - allocate & connect a socket using TCP or UDP*------------------------------------------------------------------------*/SOCKET connectsock(const char *host, const char *service, const char *transport ) {struct hostent *phe; /* pointer to host information entry */struct servent *pse; /* pointer to service information entry */struct protoent *ppe; /* pointer to protocol information entry*/struct sockaddr_in sin; /* an Internet endpoint address */int s, type; /* socket descriptor and socket type */memset(&sin, 0, sizeof(sin));sin.sin_family = AF_INET;/* Map service name to port number */if ( pse = getservbyname(service, transport) )sin.sin_port = pse->s_port;else if ( (sin.sin_port = htons((u_short)atoi(service))) == 0 )errexit("can't get \"%s\" service entry\n", service);/* Map host name to IP address, allowing for dotted decimal */if ( phe = gethostbyname(host) )memcpy(&sin.sin_addr, phe->h_addr, phe->h_length);else if ( (sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE) errexit("can't get \"%s\" host entry\n", host);/* Map protocol name to protocol number */if ( (ppe = getprotobyname(transport)) == 0)errexit("can't get \"%s\" protocol entry\n", transport);/* Use protocol to choose a socket type */if (strcmp(transport, "udp") == 0)type = SOCK_DGRAM;elsetype = SOCK_STREAM;/* Allocate a socket */s = socket(PF_INET, type, ppe->p_proto);if (s == INV ALID_SOCKET)errexit("can't create socket: %d\n", GetLastError());/* Connect the socket */if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) ==SOCKET_ERROR)errexit("can't connect to %s.%s: %d\n", host, service,GetLastError());return s;}void errexit(const char *format, ...){va_list args;va_start(args, format);vfprintf(stderr, format, args);va_end(args);WSACleanup();exit(1);}。

相关主题