《2022年网络安全实验报告 4.pdf》由会员分享,可在线阅读,更多相关《2022年网络安全实验报告 4.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网络安全实验报告姓名:杨瑞春班级:自动化 86 学号: 08045009 实验一:网络命令操作与网络协议分析一实验目的:1.熟悉网络基本命令的操作与功能。2.熟练使用网络协议分析软件ethereal 分析应用协议。二实验步骤:1.网络命令:ping tracert netstat ipconfig telnet netcat Arp route nslookup Ssh 2.协议分析软件: ethereal 的主要功能:设置流量过滤条件,分析网络数据包,流重组功能,协议分析。三实验任务:1跟踪某一网站如google 的路由路径2查看本机的 MAC地址, ip 地址输入 ipconfig /al
2、l 找见本地连接 . Description . . . . : SiS 900-Based PCI Fast Ethernet Adapte Physical Address. . : 00-13-8F-07-3A-57 DHCP Enabled. . . . : No Subnet Mask . . 这项是网关 .也就是路由器 IP Physical Address. . : 00-13-8F-07-3A-57 这项就是 MAC 地址了 . 3telnet 到 linux 服务器,执行指定的命令4.ssh连接到 linux 服务器,执行指定的命令5.nc 应用: telnet ,绑定程序(
3、 cmd,shell等) ,扫描,连接等。6.选择任意一种应用层协议如www,ftp,qq 等,利用 ethereal 对该协议进行分析。实验报告要求有ethereal 捕获的网络流量和数据包协议解析的屏幕截图。7 分析 honeynet challenge dataset 的真实攻击网络流量利用 ethereal捕获的网络流量如下图所示:分析:从捕获的网络流量可以发现,有许多的SYN 信号,但是 TCK 信号很少,因此可以认为三次握手没有建立,连接失败。实验二:黑客攻击技术实验一实验要求:1.掌握典型攻击技术原理2.熟悉典型攻击软件的功能及操作3.分析黑客攻击软件执行输出结果名师资料总结 -
4、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 二实验内容:1.namp 2.nessus 3.craft network packet: hping 4.crack password: john the ripper 5.web attack: nikto 6.google hacking tools 三实验任务1 利用 winnmap 扫描功能,给出扫描报告及分析2 nessus应用,给出漏洞扫描报告设置扫描策略添加新扫描扫描结果扫描报告:
5、3.执行 nikto 对 web 服务器进行漏洞扫描。4.john 应用及配置在 run 目录下运行 john-386 -wordlist=password.lst newxjtu.txt,对 newxjtu.txt 中内容解密, 会生成一个 .pot 的文件,对同一密文只能解密一次, 若删除 .pot 文件,可以再次解密。破解后生成的明文为 $LM$9eceeb689e046fcd:NEWXJTU $LM$aad3b435b51404ee: 5.google hacking tools应用实验三:网络安全技术实验一实验要求:1.掌握防火墙, VPN,入侵检测系统等安全技术的基本原理和实现过程
6、2.熟悉 IPSec 、SSL、Kerberos、PGP中的安全认证协议关键技术3.熟练使用 IPSec 、SSL、Kerberos、PGP等安全工具二实验内容:1.防火墙2.VPN 3.IPSec 4.SSL 5.Kerberos 6.PGP 7.Snort 三实验任务:1.防火墙:利用个人防火墙软件,定义防火墙规则,允许或是禁止某类网络流量的访问。2 .IPSec:windows 自带的 IPSec服务配置及使用。搭建一个VPN,实现隧道模式,传输模式等功能。(1)、启用 xp 的远程访问组件,该组件默认不启用。打开服务services.msc,找到 Routing and Remote
7、Access 服务,设置启动类型为自动,并启动服务。(2) 、双击打开属性,勾选“虚拟专用网”下的复选框。打开“用户页” ,选择允许远程拨入的用户,或者新建用户。打开网络页,确保计算机上已经安装了IPX/SPX 协议。服务器上设置完成。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - (3) 、打开客户机,打开网上邻居,单击创建一个新的连接。点击“下一步”单击“连接到我的工作场所的网络”单击“虚拟专用网络连接”输入公司名,单击下一
8、步输入 VPN服务器的IP 地址,单击完成客户机创建连接完毕。(5) 、打开刚刚创建好的连接,输入允许介入的用户名和密码,单击“连接”网络连接后,客户机成功接入XP VPN服务器3.SSL:openSSL配置及使用4.Kerberos:windows 实现的 kerberos认证服务器配置及使用5.PGP:GNUpgp 6.Snort:定义变量,配置规则,定义新的规则,学习攻击检测规则及报警分析在使用 snort 之前请先安装wireshark,因为会用到其中的winpcap:1.将 snort 安装在 C 盘根目录下。2.安装完成后先把rules.rar 解压,将里面的文件全部直接放在下3.
9、将 snort.conf 拷贝到 bin 目录下4.在 cmd 中执行 snort 的命令Snort 扫描到的端口查看 snort.conf 实验四:网络安全软件开发:网络扫描器一实验目的:1.熟悉网络扫描器实现的关键技术2.熟练运用C#,java 开发网络应用程序3.熟悉网络协议字段含义及结构二实验内容:1.网络扫描器实现基本的地址扫描,端口扫描,TCP/UDP 扫描,实现多线程扫描。2.图形化界面的网络扫描器软件3.提交源代码、可执行程序及代码注释文件及执行结果截图。三实验分析:多线程: 电脑上有322个端口。如果只启动一个线程的话322个端口需要的时间可以用小时计算。解决这个问题需要用到
10、多线程原理。多线程实现可通过继承Thread 类或者实现Runnable 接口来达到。主机端口扫描:与目标主机创建TCP 连接,如果成功则说明端口监听中,同事对正在监听的端口做识别操作!默认按照常用端口服务给出提示!例如21,则提示ftp 服务。 UDP 扫描是向目标主机端口发送固定字符,读取目标主机回复内容!TCP 扫描原理: 利用 .net.Socket 类建立 socket 连接,如果无法与指定的IP 和端口建立连接,将会抛出IOException 。我们用try-catch 对这个IOException 异常进行捕获,以判断是否成功与指定的IP 端口建立连接。如果成功建立了连接,说明指
11、定IP 的指定端口已经开放;如果程序抛出了一个IOException 异常被我们捕获,则说明指定的IP 没有开放指定的端口。扫描指定端口段则是利用循环不断与服务器的指定端口进行连接,供我们判断是否开放。UDP 扫描原理: 这种方法使用的是UDP 协议。由于这个协议很简单,所以扫描变得相对比较困难。 这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开的UDP 端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。UDP 和 ICMP错误都不保证能到达,因此这种扫描器必须还实现在
12、一个包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为RFC 对 ICMP 错误消息的产生速率做了规定。同样,这名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 种扫描方法需要具有root 权限。利用 .net.DatagramSocket 类 ICMP_PORT_UNREACH 判断 IP 地址和端口合法性: 在得到端口和建立socket 之前一定要判断IP 地址和端口的合法性,因为端口的范围是在165535,如果我们去
13、建立范围外端口的连接就是没必要的,而且是不可行的。图形化界面(GUI )设计: 主要用到了java.awt 提供的和图形界面相关的类。为了使界面更美观使用了swing 组件。socket 中的 close 方法: 不需要一个socket 的时候应关闭它,因为socket 是一种有限的系统资源。关闭socket 将释放有关的资源,并允许绑定在此socket 上的端口被重新使用。Socket被关闭之后就不能再向它收发数据UDP 缺陷说明: 开放的 UDP 端口并不需要送回ACK 包,而关闭的端口也不要求送回错误包(而本实验基于的原理就是那些主机在关闭的UDP 端口会回送ICMP Port Unre
14、achable 错误,因此有很大的几率误判,由于时间原因和自身知识的局限不能想到更好的方法),所以利用 UDP 包进行扫描非常困难。UDP 包和 ICMP 包都是不可靠的,速度慢(差错报文产生的速度有限制) ,并且需要root 权限才能读取ICMP 消息,因此使用的局限性好大。四实验结果:1. 初始界面:2 .对站点进行TCP扫描:3 .对站点进行UDP扫描:实验源代码:/*基于多线程端口扫描程序源代码*/ import j rame; public class Scanner implements ActionListener / 创建主窗口public static JFrame main
15、Frame = new JFrame(); public static Label labelIP = new Label( 主机 IP); public static Label labelPortStart = new Label( 起始端口: ); public static Label labelPortEnd = new Label(结束端口: ); public static Label labelThread = new Label(线程数: ); public static Label labelResult = new Label( 扫描结果 :); public stati
16、c Label State = new Label( 扫描状态: ); public static Label Scanning = new Label( 未开始扫描 ); public static JTextField PortStart = new JTextField(0); public static JTextField PortEnd = new JTextField(100); public static JTextField ThreadNum = new JTextField(10); / 文本区域,显示扫描结果public static TextArea Result =
17、 new TextArea(); public static Label DLGINFO = new Label(); public static JButton Start = new JButton(TCP扫描 ); public static JButton Start2 = new JButton(UDP扫描 ); public static JButton Exit = new JButton(退出 ); / 错误提示对话框public static JDialog DLGError = new JDialog(mainFrame, 错误 ); public static JButt
18、on OK = new JButton(确定 ); public Scanner()/GUI界面/ 设置主窗体名称mainFrame.setTitle( 多线程端口扫描器); / 设置主窗体位置和大小mainFrame.setBounds(180, 200, 550, 300); mainFrame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
19、 - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - ); / 设置错误提示框Container dPanel = DLGError.getContentPane(); dPanel.setLayout(null); dPanel.add(DLGINFO); dPanel.add(OK); dPanel.setBackground(new Color(153,255,204); OK.setActionCommand(ok); OK.addActionListener(this); / 在主窗体中添加其他组件mainFrame.setLay
20、out(null); mainFrame.setResizable(false); mainFrame.add(Start); mainFrame.add(Start2); mainFrame.add(Exit); mainFrame.add(labelIP); mainFrame.add(hostName); mainFrame.add(labelPortStart); mainFrame.add(labelPortEnd); mainFrame.add(PortStart); mainFrame.add(PortEnd); mainFrame.add(labelThread); mainF
21、rame.add(ThreadNum); mainFrame.add(labelResult); mainFrame.add(Result); mainFrame.add(State); mainFrame.add(Scanning); / 设置扫描按钮和退出按钮Start.setBounds(350, 232, 100, 30); Start.setActionCommand(Start); Start.addActionListener(this); Start.setBackground(new Color(153,255,204); Start2.setBackground(new C
22、olor(153,255,204); Start2.setBounds(250, 232, 100, 30); Start2.setActionCommand(Start2); Start2.addActionListener(this); Exit.setBounds(475, 232, 60, 30); Exit.setActionCommand(Exit); Exit.addActionListener(this); Exit.setBackground(new Color(153,255,204); labelIP.setBounds(17, 13, 50, 20); hostName
23、.setBounds(67, 10, 92, 25); hostName.setHorizontalAlignment(JTextField.CENTER); labelPortStart.setBounds(162, 13, 60, 20); PortStart.setBounds(227, 10, 45, 25); PortStart.setHorizontalAlignment(JTextField.CENTER); labelPortEnd.setBounds(292, 13, 60, 20); PortEnd.setBounds(357, 10, 45, 25); PortEnd.s
24、etHorizontalAlignment(JTextField.CENTER); labelThread.setBounds(422, 13, 50, 20); ThreadNum.setBounds(477, 10, 45, 25); ThreadNum.setHorizontalAlignment(JTextField.CENTER); labelResult.setBounds(1, 45, 55, 20); Result.setBounds(1, 65, 542, 160); Result.setEditable(false); Result.setBackground(new Co
25、lor(204,255,51);/ 设置显示结果窗口颜色RGB 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - State.setBounds(17, 232, 60, 30); Scanning.setBounds(80, 232, 120, 30); mainFrame.setVisible(true); public void actionPerformed(ActionEvent e) String cmd = e.ge
26、tActionCommand(); /得到明明处理事件if(cmd.equals(Start)|cmd.equals(Start2) /启动扫描线程try catch (UnknownHostException e1) DLGError.setBounds(300, 280, 160, 110); DLGINFO.setText( 错误的 IP 地址 /域名 ); DLGINFO.setBounds(25, 15, 100, 20); OK.setBounds(45, 40, 60, 30); DLGError.setVisible(true); return ; int minPort ;
27、int maxPort ; int threadNum ; / 获取输入数据try minPort = Integer.parseInt(PortStart.getText(); maxPort = Integer.parseInt(PortEnd.getText(); threadNum = Integer.parseInt(ThreadNum.getText(); catch (NumberFormatException e1) DLGError.setBounds(300, 280, 299, 120); DLGINFO.setText( 错误的端口号或线程数!端口号和线程数必须为整数!
28、); DLGINFO.setBounds(10, 20, 280, 20); OK.setBounds(110, 50, 60, 30); DLGError.setVisible(true); return; / 输入信息错误处理if(minPort 65535)|(minPort maxPort) DLGError.setBounds(300, 280, 295, 120); DLGINFO.setText( 最小端口必须是0-65535 并且小于最大端口的整数); DLGINFO.setBounds(10, 20, 280, 20); OK.setBounds(120, 50, 60, 3
29、0); DLGError.setVisible(true); return ; if(threadNum 200)| (threadNum 0) DLGError.setBounds(300, 280, 184, 120); DLGINFO.setText( 进程数必须是1-200 中的整数 ); DLGINFO.setBounds(10, 20, 200, 20); OK.setBounds(55, 50, 60, 30); DLGError.setVisible(true); return ; Result.append(正在扫描 + hostName.getText() + 线程数:+t
30、hreadNum+n); Scanning.setText(开始扫描.); Result.append(开始端口 + minPort + 结束端口 + maxPort + n); if(cmd.equals(Start)/ 启动 TCP 扫描线程名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - for(int i = minPort;i = maxPort; ) if(i + threadNum) = maxPort) new S
31、can(i, i + threadNum).start(); i += threadNum; else new Scan(i, maxPort).start(); i += threadNum; else if(cmd.equals(Start2)/ 启动 UDP 扫描线程 for(int i = minPort;i = maxPort; ) if(i + threadNum) = maxPort) new Scan2(i, i + threadNum).start(); i += threadNum; else new Scan2(i, maxPort).start(); i += thre
32、adNum; try Thread.sleep(3000);/设置处理等待时间 catch (InterruptedException e1) e1.printStackTrace(); Result.append(扫描完成 !n); Scanning.setText(扫描完成! ); else if(cmd.equals(ok) DLGError.dispose(); else if(cmd.equals(Exit) System.exit(1); public static void main(String args) new Scanner(); /TCP Scan class clas
33、s Scan extends Thread int maxPort, minPort; public static InetAddress hostAddress; Scan(int minPort, int maxPort) this.minPort = minPort; this.maxPort = maxPort; public void run() / 扫描指定端口for(int i = minPort;i maxPort; i+) try 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
34、 - - 第 7 页,共 9 页 - - - - - - - - - / 根据主机名和端口号创建套接字地址。SocketAddress sockaddr = new InetSocketAddress(hostAddress, i); Socket scans=new Socket(); int timeoutMs=50; / 将此套接字连接到具有指定超时值的服务器。scans.connect(sockaddr, timeoutMs); / 关闭此套接字。scans.close(); / 添加结果显示switch(i)/ 通用 TCP 端口作用显示 catch (IOException e)
35、/UDP Scan class class Scan2 extends Thread int maxPort, minPort,port; public static InetAddress hostAddress; Scan2(int minPort, int maxPort) this.minPort = minPort; this.maxPort = maxPort; public void run() for(int port=minPort;port=maxPort;port+) DatagramSocket connection = null; byte myByte = host
36、Address.toString().getBytes(); String myStr = new String(myByte); try /connection = new DatagramSocket(port, InetAddress.getByName(ipAddress);/(ipAddress, port); connection = new DatagramSocket( );/(ipAddress, port); /connection.setReceiveTimeout(20*1000); connection.setSoTimeout(60*1000); connectio
37、n.connect( hostAddress, port); connection.send(new DatagramPacket(myByte, myByte.length); while(true) byte newByte = new byte4096; DatagramPacket dp = new DatagramPacket(newByte, 4096); connection.receive(dp); if (dp != null & dp.getData() != null) byte rslt = dp.getData(); for (int i = 0;i dp.getLength(); i+) break; connection.close(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - catch(Exception ex) ex.printStackTrace(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -
限制150内