网络攻防实验1Word文档下载推荐.docx
《网络攻防实验1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《网络攻防实验1Word文档下载推荐.docx(10页珍藏版)》请在冰点文库上搜索。
错误、缺失
指导教师(签名)
年月日
说明:
指导教师评分后,实验报告交院(系)办公室保存。
实验一信息搜集
一、实验目的
1、了解信息搜集的一般步骤;
2、学会熟练使用Ping命令;
3、学会利用Nmap等工具进行信息搜集
4、学会编写端口全扫描程序
二、实验步骤
1、信息搜集
此实验物理机A与虚拟机B同时相互搜集对方信息,下面的步骤以主机A为例讲解。
(1)Ping探测
物理机A开启命令行,对虚拟机B进行Ping探测,根据虚拟机B的回复,可以确定物理机A与虚拟机B之间的连通情况,还可以根据回复数据包的TTL值对操作系统进行猜测。
回复数据包的TTL值:
(128),虚拟机B中的操作系统可能为:
(windowsxp)。
2、NMap扫描
(1)对活动主机进行端口扫描
物理机A使用NMap工具对虚拟机B进行TCP端口同步扫描(范围1-150):
NMAP命令(nmap-p1-65535-T4-A-v172.18.36.125);
虚拟机B开放的TCP端口(1025/139/21/23/445/135/80/1026);
对虚拟机B进行UDP端口扫描(范围110-140):
NMAP命令(nmap-sS-sU-T4-A-v172.18.36.125);
虚拟机B开放的UDP端口(137);
(2)对活动主机操作系统进行探测
物理机A对虚拟机B进行TCP/IP指纹特征扫描:
NMAP命令(nmap-O172.18.36.125);
查看扫描结果(Nmapscanreportfor172.18.36.125
Hostisup(0.00slatency).
Notshown:
992closedports
PORTSTATESERVICE
21/tcpopenftp
23/tcpopentelnet
80/tcpopenhttp
135/tcpopenmsrpc
139/tcpopennetbios-ssn
445/tcpopenmicrosoft-ds
1025/tcpopenNFS-or-IIS
1026/tcpopenLSA-or-nterm
MACAddress:
00:
0C:
29:
5E:
67:
9D(VMware)
NoexactOSmatchesforhost(IfyouknowwhatOSisrunningonit,seehttp:
//nmap.org/submit/));
(3)对活动主机IP协议进行探测
物理机A使用NMap命令对虚拟机B进行IP协议探测:
NMAP命令(nmap-sO172.18.36.125);
252open|filteredprotocols
PROTOCOLSTATESERVICE
1openicmp
6opentcp
17openudp
132closedunknown
9D(VMware));
3、使用C语言实现端口全扫描程序。
//端口扫描函数
UINTportscan(LPVOIDport)
{
intaddr=portip;
//取得要扫描的地址
intsock;
structfd_setmask;
structtimevaltimeout;
structsockaddr_inserver;
unsignedlongflag=1;
//创建一个sock
sock=socket(AF_INET,SOCK_STREAM,0);
//创建sock失败处理
if(sock==INVALID_SOCKET)
printf("
/r/nSockError:
%s"
WSAGetLastError());
maxth--;
return-1;
}
//给sock成员赋值
server.sin_family=AF_INET;
server.sin_addr.s_addr=htonl(addr);
//要扫描的地址
server.sin_port=htons(short(port));
//要扫描的端口
//显示进度
playx();
//调用ioctlsocket()设置套接字为非阻塞模式
if(ioctlsocket(sock,FIONBIO,&
flag)!
=0)
//设置失败处理
closesocket(sock);
//调用connect()连接远程主机端口
connect(sock,(structsockaddr*)&
server,sizeof(server));
timeout.tv_sec=18;
//超时限制为18秒
timeout.tv_usec=0;
FD_ZERO(&
mask);
//清空集合mask
FD_SET(sock,&
//将sock放入集合mask中
//用select()处理扫描结果
switch(select(sock+1,ZERO,&
mask,ZERO,&
timeout))
case-1:
printf("
/r/nSelect()error"
);
maxth--;
return-1;
}
//sock超时处理
case0:
closesocket(sock);
default:
if(FD_ISSET(sock,&
mask))
//禁止sock发送和接受数据
shutdown(sock,0);
//设置输出结果格式
[Found:
]%sPort:
%dopen./r/n"
inet_ntoa(server.sin_addr),ntohs(server.sin_port));
//关闭sock
scanok++;
return1;
return0;
//扫描开始主函数
voidportscannow(intxp)
intsport;
char*timenow,timebuf[32];
//定义默认扫描的端口
char*ports[32]={
"
21"
22"
23"
25"
53"
79"
80"
110"
111"
113"
123"
135"
139"
143"
443"
512"
513"
514"
515"
540"
1080"
1433"
1521"
1524"
3306"
3389"
5631"
6000"
6112"
8000"
8080"
12345"
//这里你也可以自己定义要扫描的端口
};
//显示扫描开始的时间
timenow=_strtime(timebuf);
/r/nPortScanStartTime:
%s/r/n/n"
timenow);
//计数器初始化.
maxth=0;
scanok=0;
scannum=0;
searched=0;
//计算要扫描的端口数量
searchnum=hoststop-hoststart+1;
if(xp==3)
searchnum=searchnum*32;
if(xp==4)
searchnum=searchnum*(endport-startport+1);
//端口扫描开始
for(portip=hoststart;
portip<
=hoststop;
portip++,scannum++)
//*.*.*.0和*.*.*.255地址处理
if((portip%256)==0||(portip%256)==255)
if(xp==3)
searchnum=searchnum-32;
if(xp==4)
searchnum=searchnum-(endport-startport+1);
scannum--;
playx();
continue;
if(i>
11)i=0;
//默认端口扫描
//scan192.168.0.1
//scan192.168.0.1-192.168.0.254
if(xp==3)
for(sport=0;
sport<
32;
sport++,maxth++,searched++)
{
//测试当前线程是否大于180
TestThread(180);
//产生新的线程处理端口扫描
CWinThread*pthread=AfxBeginThread(portscan,LPVOID(atoi((char*)ports[sport])));
//延时
Sleep(120);
}
//自定义端口扫描
//scan-p21192.168.0.1
//scan-p21-80192.168.0.1-192.168.0.254
if(xp==4)
{//计算要扫描的端口
sport=endport-startport;
if(sport>
500)
//扫描自定义的端口
for(sport=startport;
=endport;
TestThread(2000);
CWinThread*pthread=AfxBeginThread(portscan,LPVOID(sport));
//延时
Sleep(10);
else
//测试当前线程是否大于250
TestThread(250);
Sleep(100);
//等待所有的线程结束
WaitThreadEnd();
//显示端口扫描结束时间
/r/nPortScanEndTime:
%s"
timenow);
/r/nScan%dHostscompleted.Open%dPorts!
/r/n"
scannum,scanok);
注:
此程序的扫描结果与实验得到的端口总数上有差别,具体原因未知
3、实验心得
本次实验通过对windowsxp系统虚拟机进行网络配置,让虚拟机连接到网络中,学会使用简单的nmap命令。