欢迎访问有用文档网!

当前位置: 有用文档网 > 述职报告 >

网络安全实验报告

| 浏览次数:

 网络安全实验报告

 姓名: : 杨瑞春

 班级: : 自动化 86

 学号 :08045009

 实验一: 网络命令操作与网络协议分析 一.实验目的: 1. 熟悉网络基本命令的操作与功能。

 2. 熟练使用网络协议分析软件 ethereal 分析应用协议。

 二.实验步骤: 1. 网络命令: ping tracert netstat ipconfig telnet netcat Arp route nslookup Ssh 2. 协议分析软件:ethereal 的主要功能:设置流量过滤条件,分析网络数据包,流重组功能,协议分析。

 三.实验任务: 1.跟踪某一网站如 google 的路由路径

 2.查瞧本机的 MAC 地址,ip 地址 输入 ipconfig /all 找见本地连接、 Description 、 、 、、 、 : SiS 900-Based PCI Fast Ethernet Adapte Physical Address、、 、 : 00-13-8F-07-3A-57 DHCP Enabled、 、 、、 、 : No

 IP Address、 、 、 、、 、 : 192、168、1、5 Subnet Mask 、 、 、、 、 : 255、255、255、0 Default Gateway 、、 、 : 192、168、1、1 DNS Servers 、 、 、、 、 : 61、128、128、67

 192、168、1、1 Default Gateway 、、 、 : 192、168、1、1 这项就是网关、也就就是路由器 IP Physical Address、、 、 : 00-13-8F-07-3A-57 这项就就是 MAC 地址了、

 3.telnet 到 linux 服务器,执行指定的命令

 4、ssh 连接到 linux 服务器,执行指定的命令

  5、nc 应用:telnet,绑定程序(cmd,shell 等),扫描,连接等。

 6、选择任意一种应用层协议如,qq 等,利用 ethereal 对该协议进行分析。实验报告要求有 ethereal 捕获的网络流量与数据包协议解析的屏幕截图。

 7 分析 honeynet challenge dataset 的真实攻击网络流量 利用 ethereal 捕获的网络流量如下图所示:

 分析:从捕获的网络流量可以发现,有许多的SYN信号,但就是TCK信号很少,因此可以认为三次握手没有建立,连接失败。

 实验二: 黑客攻击技术实验 一.实验要求: 1. 掌握典型攻击技术原理 2. 熟悉典型攻击软件的功能及操作 3. 分析黑客攻击软件执行输出结果 二.实验内容: 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 应用,给出漏洞扫描报告

  设置扫描策略

  添加新扫描

 扫描结果

 扫描报告:

  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 应用 打开 Google Hacking,在网站输入框中输入,点击查询网站详情,可以在随后弹出的网页上查瞧交大网站的详细信息,包括站点创建时间,IP 地址,IP 所在地,WEB 服务器等信息。

  实验三: 网络安全技术实验 一.实验要求: 1. 掌握防火墙,VPN,入侵检测系统等安全技术的基本原理与实现过程 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 Access 服务,设置启动类型为自动,并启动服务。

 (2)、双击打开属性,勾选“虚拟专用网”下的复选框。

 打开“用户页”,选择允许远程拨入的用户,或者新建用户。

 打开网络页,确保计算机上已经安装了 IPX/SPX 协议。服务器上设置完成。

 (3)、打开客户机,打开网上邻居,单击创建一个新的连接。点击“下一步” 单击“连接到我的工作场所的网络”

  单击“虚拟专用网络连接”

 输入公司名,单击下一步

 输入 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 解压,将里面的文件全部直接放在 snort\rules\下 3、将 snort、conf 拷贝到 bin 目录下 4、在 cmd 中执行 snort 的命令

 Snort 扫描到的端口

 查瞧 snort、conf

 实验四: 网络安全软件开发: 网络扫描器 一.实验目的: 1、熟悉网络扫描器实现的关键技术 2、熟练运用 C#,java 开发网络应用程序 3、熟悉网络协议字段含义及结构 二.实验内容: 1、网络扫描器实现基本的地址扫描,端口扫描,TCP/UDP 扫描,实现多线程扫描。

 2、图形化界面的网络扫描器软件 3、提交源代码、可执行程序及代码注释文件及执行结果截图。

 三.实验分析:

 多线程:电脑上有322个端口。如果只启动一个线程的话322个端口需要的时间可以用小时计算。解决这个问题需要用到多线程原理。多线程实现可通过继承 Thread 类或者实现 Runnable接口来达到。

 主机端口扫描:与目标主机创建 TCP 连接,如果成功则说明端口监听中,同事对正在监听的端口做识别操作!默认按照常用端口服务给出提示!例如 21,则提示 ftp 服务。UDP 扫描就是向目标主机端口发送固定字符,读取目标主机回复内容!

 TCP 扫描原理:利用 java、net、Socket 类建立 socket 连接,如果无法与指定的 IP 与端口建立连接,将会抛出 IOException。我们用 try-catch 对这个 IOException 异常进行捕获,以判断就是否成功与指定的 IP 端口建立连接。如果成功建立了连接,说明指定 IP 的指定端口已经开放;如果程序抛出了一个 IOException 异常被我们捕获,则说明指定的 IP 没有开放指定的端口。扫描指定端口段则就是利用循环不断与服务器的指定端口进行连接,供我们判断就是否开放。

 UDP 扫描原理:这种方法使用的就是 UDP 协议。由于这个协议很简单,所以扫描变得相对比较困难。这就是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的就是,许多主机在您向一个未打开的 UDP 端口发送一个数据包时,会返回一个 ICMP_PORT_UNREACH 错误。这样您就能发现哪个端口就是关闭的。UDP 与ICMP 错误都不保证能到达,因此这种扫描器必须还实现在一个包瞧上 去就是丢失的时候能重新传输。这种扫描方法就是很慢的,因为 RFC 对 ICMP 错误消息的产生速率做了规定。同样,这种扫描方法需要具有 root 权限。利用 java、net、DatagramSocket 类给指导 IP 发送DatagramPacket 数据包,如果捕获到 java、net、PortUnreachableException 异常,说明对方主机返回了ICMP_PORT_UNREACH的错误,说明端口关闭,否则如果在指定等待时间内没有得到回复,则捕获到 java、net、SocketTimeoutException 连接超时异常,说明端口就是开放的。

 断 判断 IP 地址与端口合法性:在得到端口与建立 socket 之前一定要判断 IP 地址与端口的合法性,因为端口的范围就是在 1~65535,如果我们去建立范围外端口的连接就就是没必要的,而且就是不可行的。IP 地址表示成 XX、XX、XX、XX 格式,XX 范围在 0~255 之间,在这之外就是不合法的。

 图形化界面(GUI) 设计:主要用到了 java、awt 提供的与图形界面相关的类。为了使界面更美观使用了 swing 组件。

 socket 中的 close 方法:不需要一个 socket 的时候应关闭它,因为 socket 就是一种有限的系统资源。关闭 socket 将释放有关的资源,并允许绑定在此 socket 上的端口被重新使用。Socket被关闭之后就不能再向它收发数据 UDP 缺陷说明:开放的 UDP 端口并不需要送回 ACK 包,而关闭的端口也不要求送回错误包(而本实验基于的原理就就是那些主机在关闭的UDP端口会回送ICMP Port Unreachable错误,因此有很大的几率误判,由于时间原因与自身知识的局限不能想到更好的方法),所以利用UDP 包进行扫描非常困难。UDP 包与 ICMP 包都就是不可靠的,速度慢(差错报文产生的速度有限制),并且需要 root 权限才能读取 ICMP 消息,因此使用的局限性好大。

 四.实验结果: 1、 初始界面:

  2 、对站点 127、0、0、1 进行 TCP 扫描:

  3 、对站点 127、0、0、1 进行 UDP 扫描:

  实验源代码: /*基于多线程端口扫描程序源代码*/ import java、awt、Color;

 //类的调用 import java、awt、Container; import java、awt、Label; import java、awt、TextArea; import java、awt、event、ActionEvent; import java、awt、event、ActionListener; import java、awt、event、WindowAdapter; import java、awt、event、WindowEvent; import java、io、IOException; import java、net、InetAddress; import java、net、InetSocketAddress; import java、net、Socket; import java、net、SocketAddress; import java、net、DatagramPacket; import java、net、DatagramSocket; import java、net、UnknownHostException; import javax、swing、JButton; import javax、swing、JDialog; import javax、swing、JFrame; import javax、swing、JTextField; public class Scanner implements ActionListener{

 // 创建主窗口

 public static JFrame mainFrame = 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 static Label State = new Label("扫描状态:");

 public static Label Scanning = new Label("未开始扫描");

 public

 static JTextField hostName = new JTextField("172、22、65、10");

 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 = 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 JButton 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);

 }

  });

  // 设置错误提示框

  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、setLayout(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);

  mainFrame、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 Color(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、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、setHorizontalAlignment(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 Color(204,255,51));//设置显示结果窗口颜色 RGB

  State、setBounds(17, 232, 60, 30);

  Scanning、setBounds(80, 232, 120, 30);

  mainFrame、setVisible(true);

 }

 public void actionPerformed(ActionEvent e) {

  String cmd = e、getActionCommand();

 //得到明明处理事件

  if(cmd、equals("Start")||cmd、equals("Start2")){

 //启动扫描线程

 try {

  Scan、hostAddress = InetAddress、getByName(Scanner、hostName、getText());

  Scan2、hostAddress = InetAddress、getByName(Scanner、hostName、getText());

 } 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 ;

  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("错误的端口号或线程数!端口号与线程数必须为整数!");

  DLGINFO、setBounds(10, 20, 280, 20);

  OK、setBounds(110, 50, 60, 30);

  DLGError、setVisible(true);

  return;

 }

 // 输入信息错误处理

 if((minPort < 0)||(maxPort > 65535)||(minPort > maxPort)){

  DLGError、setBounds(300, 280, 295, 120);

  DLGINFO、setText("最小端口必须就是 0-65535 并且小于最大端口的整数");

  DLGINFO、setBounds(10, 20, 280, 20);

  OK、setBounds(120, 50, 60, 30);

  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() + " 线 程数:"+threadNum+"\n");

 Scanning、setText("开始扫描 、、、");

 Result、append("开始端口 " + minPort + " 结束端口 " + maxPort + " \n");

 if(cmd、equals("Start"))//启动 TCP 扫描线程

 {

 for(int i = minPort;i <= maxPort; ) {

  if((i + threadNum) <= maxPort) {

 new Scan(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 += threadNum;

  }

 }

 }

 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 class 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++){

 Scanner、Scanning、setText("正在扫描"+i+"端口");

 try {

  // 根据主机名与端口号创建套接字地址。

  SocketAddress sockaddr = new InetSocketAddress(hostAddress, i);

  Socket scans=new Socket();

  int timeoutMs=50;

 // 将此套接字连接到具有指定超时值的服务器。

  scans、connect(sockaddr, timeoutMs);

  // 关闭此套接字。

  scans、close();

 // 添加结果显示

  Scanner、Result、append("主机:" + Scanner、hostName、getText() + " TCP端口:" + i);

 switch(i){//通用 TCP 端口作用显示

  case 20: Scanner、Result、append("()");break;

  case 21: Scanner、Result、append("()");break;

  case 23: Scanner、Result、append("(TELNET)");break;

  case 25: Scanner、Result、append("(SMTP)");break;

  case 38: Scanner、Result、append("(RAP)");break;

  case 53: Scanner、Result、append("(DNS)");break;

  case 79: Scanner、Result、append("FINGER");break;

  case 80: Scanner、Result、append("(HTTP)");break;

  case 139: Scanner、Result、append("(netBIOS)");break;

  case 110: Scanner、Result、append("(POP)");break;

  case 161: Scanner、Result、append("(SNMP)");break;

  case 443: Scanner、Result、append("(HTTPS)");break;

  case 1433: Scanner、Result、append("(SQL)");break;

  case 1521: Scanner、Result、append("(Oracle)");break;

  case 3389: Scanner、Result、append("(Terminal Service)");break;

  case 8000: Scanner、Result、append("(OICQ)");break;

  }

  Scanner、Result、append(" 开放\n");

 } catch (IOException e) {

 }

  }

 } } //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 = hostAddress、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);

 Scanner、Scanning、setText("正在扫描"+port+"端口");

 connection、connect( hostAddress, port);

 System、out、println(port+"连结创建完成、、、");

 connection、send((new DatagramPacket(myByte, myByte、length)));

 System、out、println(" 数据发送完成、、、");

 while(true)

 {

 byte[] newByte = new byte[4096];

  DatagramPacket dp = new DatagramPacket(newByte, 4096);

  connection、receive(dp);

  if (dp != null && dp、getData() != null)

  {

 System、out、println(dp、getLength());

 System、out、println("#####");

 byte[] rslt = dp、getData();

 for (int i = 0;i < dp、getLength(); i++)

 { System、out、println(rslt);

 }

 System、out、println("#####");

  }

  break;

 }

 connection、close();

  }

  catch(java、net、PortUnreachableException e)//ICMP 不可达

  {

 System、out、println(port+"UDP 端口关闭了\n");

  }

  catch(java、net、SocketTimeoutException e)//连接超时

  {

 Scanner、Result、append(port+"UDP 端口打开\n");

  }

  catch(Exception ex)

  {

 ex、printStackTrace();

  }

 } } }

推荐访问:网络安全 实验 报告

热门排行Top Ranking

弦振动实验报告

弦振动得研究 一、实验目得 1、观察固定均匀弦振动共振干涉形成驻波时得波形,加深驻波得认识。 2、了

宣传委员述职报告12020 幼儿园党支部宣传委员述职报告

下面是小编为大家精心整理的宣传委员述职报告12020幼儿园党支部宣传委员述职报告文章,供大家阅读参考。宣传委员述

党建工作现场述职会上讲话 公安局长在党建工作现场会上的讲话

下面是小编为大家精心整理的党建工作现场述职会上讲话公安局长在党建工作现场会上的讲话文章,供大家阅读参考。党建工作现场

支部宣传委员述职述廉报告范例 幼儿园党支部宣传委员述职报告

下面是小编为大家精心整理的支部宣传委员述职述廉报告范例幼儿园党支部宣传委员述职报告文章,供大家阅读参考。支部宣传

政治生态评估报告5篇

可能会捆绑住经办人员的手脚,不利于业务工作的开展。致使个别中层干部主体责任压力传导出现能量损耗;个别

2021年领导述职报告合集2020 县领导述职报告

下面是小编为大家精心整理的2021年领导述职报告合集2020县领导述职报告文章,供大家阅读参考。2

工商局监察室主任述职述廉报告

工商局监察室主任述职述廉报告 第一篇:工商局监察室主任述职述廉报告 我叫haoword,中共党员,现

党支部书记个人述职报告 对村党支部书记述职报告的点评

下面是小编为大家精心整理的党支部书记个人述职报告对村党支部书记述职报告的点评文章,供大家阅读参考。党支部书记个人

结合乡村振兴战略人才工作述职报告 乡村振兴工作员年度述职

下面是小编为大家精心整理的结合乡村振兴战略人才工作述职报告乡村振兴工作员年度述职文章,供大家阅读参考。结合

财务分析课程报告4篇

财务分析课程报告4篇财务分析课程报告篇1一年来,在领导和同事们的的支持帮助和指导下,加上自身的不断努

个人安全生产履职报告[安全生产述职报告] 党委书记安全生产履职报告

下面是小编为大家精心整理的个人安全生产履职报告[安全生产述职报告]党委书记安全生产履职报告文章,供大家阅读参

企业年度工作总结报告范文13篇

企业年度工作总结报告范文13篇企业年度工作总结报告范文篇1时光飞逝,转眼已经毕业一年了,我顺利地完成