网络攻防实验1.docx
- 文档编号:10240749
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:12
- 大小:18KB
网络攻防实验1.docx
《网络攻防实验1.docx》由会员分享,可在线阅读,更多相关《网络攻防实验1.docx(12页珍藏版)》请在冰豆网上搜索。
网络攻防实验1
实验报告
课程名称网络攻击与防范
实验项目名称信息搜集
班级与班级代码
实验室名称(或课室)
专业
任课教师
学号:
姓名:
实验日期:
—
姓名实验报告成绩
评语:
实验目的和要求是否明确
实验步骤是否正确
实验内容是否完整
实验结果是否正确
实验分析是否详细
心得体会是否深刻
实验报告格式是否符合要求
注:
对号:
正确、完整、详细、合理
半对号:
部分正确、不完整、不详细、基本合理
错号:
错误、缺失
指导教师(签名)
年月日
实验一信息搜集
一、实验目的
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.125Hostisup(0.00slatency).
Notshown:
992closedports
PORT
STATESERVICE
21/tcp
openftp
23/tcp
opentelnet
80/tcp
openhttp
135/tcp
openmsrpc
139/tcp
opennetbios-ssn
445/tcp
openmicrosoft-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);
查看扫描结果(Nmapscanreportfor172.18.36.125
Hostisup(0.00slatency).
Notshown:
252open|filteredprotocols
PROTOCOLSTATESERVICE
1
open
icmp
6
open
tcp
17
open
udp
132
closedunknown
MACAddress:
00:
0C:
29:
5E:
67:
9D(VMware));
3、使用C语言实现端口全扫描程序。
//端口扫描函数
UINTportscan(LPVOIDport)
{
intaddr=portip;//取得要扫描的地址
intsock;
structfd_setmask;
structtimevaltimeout;
structsockaddr_inserver;
unsignedlongflag=1;
//创建一个sock
sock=socket(AF_INET,SOCK_STREAM,0);
II创建sock失败处理
if(sock==INVALID_SOCKET)
{
printf("IrInSockError:
%s",WSAGetLastError());
maxth--;
return-1;
}
II给sock成员赋值
server.sin_family=AF」NET;
server.sin_addr.s_addr=htonl(addr);II要扫描的地址
server.sin_port=htons(short(port));II要扫描的端口
II显示进度
playx();
II调用ioctlsocket()设置套接字为非阻塞模式
if(ioctlsocket(sock,FIONBIO,&flag)!
=0)
{
II设置失败处理
printf("IrInSockError:
%s",WSAGetLastError());
closesocket(sock);
maxth--;
return-1;
}
II调用connect()连接远程主机端口
connect(sock,(structsockaddr*)&server,sizeof(server));timeout.tv_sec=18;II超时限制为18秒timeout.tv_usec=0;
FD_ZERO(&mask);//清空集合mask
FD_SET(sock,&mask);//将sock放入集合mask中
//用select()处理扫描结果
switch(select(sock+1,ZERO,&mask,ZERO,&timeout))
{
case-1:
{
printf("/r/nSelect()error");
maxth--;
return-1;
}
//sock超时处理
case0:
{
maxth--;
closesocket(sock);
return-1;
}
default:
if(FD_ISSET(sock,&mask))
{
//禁止sock发送和接受数据
shutdown(sock,0);
//设置输出结果格式
printf(”[Found:
]%sPort:
%dopen./r/n",inet_ntoa(server.sin_addr),ntohs(server.sin_port));
//关闭sock
closesocket(sock);
scanok++;
maxth--;
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",
"1521",
"1524",
"3306",
"3389",
"5631",
"6000",
"6112",
"8000",
"8080",
"12345"//这里你也可以自己定义要扫描的端口
};
//显示扫描开始的时间
timenow=_strtime(timebuf);
printf("/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;sport<=endport;sport++,maxth++,searched++)
{
TestThread(2000);
//产生新的线程处理端口扫描
CWinThread*pthread=AfxBeginThread(portscan,LPVOID(sport));
//延时
Sleep(10);
}
}
else
{
//扫描自定义的端口
for(sport=startport;sport<=endport;sport++,maxth++,searched++)
{
//测试当前线程是否大于250
TestThread(250);
//产生新的线程处理端口扫描
CWinThread*pthread=AfxBeginThread(portscan,LPVOID(sport));
//延时
Sleep(100);
playx();
}
}
}
}
//等待所有的线程结束
WaitThreadEnd();
//显示端口扫描结束时间
timenow=_strtime(timebuf);
printf("/r/nPortScanEndTime:
%s",timenow);
printf("/r/nScan%dHostscompleted.Open%dPorts!
/r/n",scannum,scanok);
}
注:
此程序的扫描结果与实验得到的端口总数上有差别,具体原因未知
三、实验心得
本次实验通过对windowsxp系统虚拟机进行网络配置,让虚拟机连接到网络中,学会使用简单的nmap命令。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 攻防 实验