AIGC信息安全-在应用系统中安全防范过程实践应用
  HJM7RbKj596p 2024年08月07日 29 0

AIGC信息安全-信息系统中安全防范过程应用

一、强密码的规则

  • 长度要求:密码至少应为8-12个字符,最好超过14个字符。
  • 字符复杂性:密码应包含大写字母、小写字母、数字和特殊字符(如!@#$%^&*)。
  • 避免常见词汇:避免使用常见单词、用户名、生日等易于猜测的信息。
  • 定期更改:建议定期更改密码(如每90天),避免长期使用同一密码。
  • 不重复使用:不同系统和服务应使用不同的密码,防止一次泄露影响多个账户。
  • 使用密码短语:用一系列无关的单词组成密码短语,可以增强密码强度和记忆性。
  • 避免连续字符:避免使用连续的字符或数字(如123456, abcdef)。
  • 多因素认证(MFA):结合使用密码和其他认证方式(如短信验证码、指纹、硬件令牌等)。


行业案例
1. NIST (National Institute of Standards and Technology)
NIST在其《数字身份指南》(NIST Special Publication 800-63B)中对密码强度提出了建议:
最低密码长度为8个字符。
不强制要求复杂性(如特殊字符)但推荐使用长密码短语。
禁用常见弱密码和曾经泄露的密码。

2. OWASP (Open Web Application Security Project)
OWASP建议:
密码长度至少为10个字符(企业内部系统)和16个字符(外部系统)。
强制使用多因素认证(MFA)。
使用密码管理器生成和存储复杂密码。

3. PCI-DSS (Payment Card Industry Data Security Standard)
PCI-DSS对密码有严格要求:
密码长度至少为7个字符。
包含字母和数字组合。
每90天强制更换密码。
禁用重复使用最近4次的密码。


二、基于现有生日、姓名、电话号码等信息生成字典用于弱口令自动化扫描

我们的目标是生成用户信息可能密码字典库

示例如下:

1. 文言一心:

Q:已知用户 用户名“熊安一”,“王敏”,请帮助生成 可能的 密码字符串列表,包含拼音的可能性

A:

当为用户生成密码时,通常会考虑易于记忆但又不易被猜测的组合。以下是根据用户名“熊安一”和“王敏”生成的可能的密码字符串列表,这些列表包含了用户名拼音的可能性:

用户名:熊安一

xionganyi123:直接使用拼音并加上数字后缀。

XiongA1y!:使用首字母大写,加入数字和特殊字符。

y1anXiong:颠倒部分拼音字母的顺序。

Xiong1anY:使用拼音并改变数字的位置。

Xiong888A1:使用重复数字和拼音的组合。

Y1xiongAn:将用户名中的“一”置于开头。

An1Y_Xiong:使用下划线和拼音的组合。

1XiongA_nY:数字、下划线和拼音的混合。

用户名:王敏

wangmin666:直接使用拼音并加上数字后缀。

WangM!n:首字母大写,并加入特殊字符。

mWangMin:将“敏”的拼音置于开头。

Wmi_n23:使用下划线、拼音和数字的组合。

22MingWang:数字开头,并改变“敏”的拼音为“明”。

MinW_888:使用拼音、下划线和重复数字。

W888ingMin:将数字插入拼音之间。

Min7Wang:使用数字将两个拼音分开。


CSV格式输出

将这些密码保存为CSV文件,可以使用文本编辑器或编程脚本。以下是一个简单的CSV文件示例,其中包含了两列:用户名可能密码

熊安一,熊安一 
熊安一,xionganyi 
熊安一,熊安一123 
熊安一,xionganyi123 
熊安一,熊安一xionganyi 
熊安一,熊安一xionganyi123 
熊安一,xay1990 
熊安一,wxm1990 
王敏,王敏 
王敏,wangmin 
王敏,王敏123 
王敏,wangmin123 
王敏,王敏wangmin 
王敏,王敏wangmin123 
王敏,wm1990 
王敏,wmn1990


2. ChatGpt

生成这类密码的Python代码示例,并将其导出为CSV格式

import itertools
import csv

# 定义用户名和拼音组合
usernames = ['熊安一', '王敏']
pinyin_combinations = {
     '熊安一': ['xiongan', 'xiongyiyi', 'xiongan1', 'xiongan01', 'xay'],
     '王敏': ['wangmin', 'wangmin1', 'wangmin01', 'wm']
}

# 定义可能的密码后缀
suffixes = ['', '123', '2024', '@123', '!']

# 生成密码组合
passwords = []

for username in usernames:
     for pinyin in pinyin_combinations[username]:
         for suffix in suffixes:
             passwords.append(f'{pinyin}{suffix}')

# 写入CSV文件
csv_file = 'password_combinations.csv'

with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
     writer = csv.writer(file)
     writer.writerow(['username', 'password'])  # CSV header
     for username in usernames:
         for pinyin in pinyin_combinations[username]:
             for suffix in suffixes:
                 writer.writerow([username, f'{pinyin}{suffix}'])

print(f'Passwords have been written to {csv_file}')

运行上面的Python代码将生成一个 password_combinations.csv 文件,内容如下:

username,password
熊安一,xiongan
熊安一,xiongan123
熊安一,xiongan2024
熊安一,xiongan@123
熊安一,xiongan!
熊安一,xiongyiyi
熊安一,xiongyiyi123
熊安一,xiongyiyi2024
熊安一,xiongyiyi@123
熊安一,xiongyiyi!
熊安一,xiongan1
熊安一,xiongan1123
熊安一,xiongan12024
熊安一,xiongan1@123
熊安一,xiongan1!
熊安一,xiongan01
熊安一,xiongan01123
熊安一,xiongan012024
熊安一,xiongan01@123
熊安一,xiongan01!
熊安一,xay
熊安一,xay123
熊安一,xay2024
熊安一,xay@123
熊安一,xay!
王敏,wangmin
王敏,wangmin123
王敏,wangmin2024
王敏,wangmin@123
王敏,wangmin!
王敏,wangmin1
王敏,wangmin1123
王敏,wangmin12024
王敏,wangmin1@123
王敏,wangmin1!
王敏,wangmin01
王敏,wangmin01123
王敏,wangmin012024
王敏,wangmin01@123
王敏,wangmin01!
王敏,wm
王敏,wm123
王敏,wm2024
王敏,wm@123
王敏,wm!

说明
用户名和拼音组合:为每个用户名生成可能的拼音组合(可以根据需要扩展更多组合)。
密码后缀:添加常见的密码后缀,如数字、年份和特殊字符。
生成密码列表:通过嵌套循环生成所有可能的用户名和密码组合。
导出CSV文件:将生成的用户名和密码组合写入CSV文件。
这个方法确保涵盖了多种可能的密码组合,有助于进行安全扫描和弱口令检测

3. 进一步延伸

如我们获取一个集团公司所有用户姓名与生日等敏感信息,很容易生成密码字典。字典可用于登录接口爆破。

四.基于登录HTTP接口弱口令扫描模块

旨在对系统的登录HTTP接口进行弱口令扫描,识别可能存在的弱口令并提示管理员进行修复。随着网络安全威胁的不断增加,弱口令扫描成为保障系统安全的关键步骤。

image

数据流图解释
用户 (User):通过管理界面创建和管理扫描任务。
管理服务 (Management Service):处理用户请求,保存和获取扫描配置和结果,启动扫描任务。
扫描服务 (Scanning Service):根据配置发送HTTP请求尝试弱口令,并记录结果。
数据库服务 (Database Service):存储扫描配置、结果和日志。
目标HTTP接口 (Target HTTP Interface):被扫描的目标系统接口。
用户界面 (User Interface):展示扫描结果和任务状态。
数据流说明
用户通过管理界面与管理服务交互,创建、管理和查看扫描任务。
管理服务将扫描配置和结果保存到数据库,并从数据库中获取信息。
当用户发起扫描任务时,管理服务会通知扫描服务执行扫描。
扫描服务根据配置从数据库获取扫描任务信息,并对目标HTTP接口发送请求。
扫描服务根据响应判断弱口令,并将结果记录到数据库。
最终,管理服务将扫描结果展示给用户。

模块组成
扫描服务:负责发送HTTP请求,尝试不同的弱口令组合,记录扫描结果。
管理服务:提供管理界面和API,配置扫描任务和查看扫描结果。
数据库服务:存储扫描配置、结果和日志。
基本功能
弱口令字典管理:支持导入、导出和编辑弱口令字典。
扫描任务管理:创建、修改和删除扫描任务。
扫描执行:并发执行多个扫描任务。
结果报告:生成并展示扫描报告,提供导出功能。
安全性
身份认证和权限控制:确保只有授权用户可以访问管理界面和API。
日志记录和审计:记录扫描操作日志,提供审计功能。
扩展性
可配置性:支持自定义扫描策略和弱口令字典。
高并发性:支持大规模并发扫描任务。


实现概要设计

扫描服务

扫描服务负责发送HTTP请求,尝试各种弱口令组合。为了提高扫描效率,可以使用多线程和异步IO技术。扫描过程中需要处理以下几个方面:

  1. 请求构建:根据配置生成HTTP请求,包括URL、请求头和请求体。
  2. 响应处理:解析HTTP响应,根据状态码和响应内容判断登录是否成功。
  3. 结果记录:记录成功和失败的尝试,生成扫描报告。

管理服务

管理服务提供管理界面和API,支持用户配置扫描任务和查看扫描结果。管理服务需要实现以下功能:

  1. 用户管理:支持用户注册、登录、身份验证和权限管理。
  2. 扫描任务管理:提供界面和API,支持创建、修改和删除扫描任务。
  3. 结果展示:展示扫描结果,支持按任务、时间和状态筛选。

数据库服务

数据库服务负责存储扫描配置、结果和日志。需要设计以下几张主要表:

  1. 用户表:存储用户信息。
  2. 任务表:存储扫描任务配置信息。
  3. 结果表:存储扫描结果。
  4. 日志表:存储操作日志。


二. 应用系统中如何实现密码复杂度判断

JAVA栈:

hutools开源工具类中密码复杂度判断
<dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.8.29</version>
</dependency>

https://plus.hutool.cn/apidocs/cn/hutool/core/text/PasswdStrength.html

Passay

Passay 是一个Java库,用于验证密码复杂度。

<dependency>
     <groupId>org.passay</groupId>
     <artifactId>passay</artifactId>
     <version>1.6.4</version>
</dependency>

示例:

import org.passay.*;

public class PasswordValidatorExample {
     public static void main(String[] args) {
         PasswordValidator validator = new PasswordValidator(
             new LengthRule(8, 30),
             new CharacterRule(EnglishCharacterData.UpperCase, 1),
             new CharacterRule(EnglishCharacterData.LowerCase, 1),
             new CharacterRule(EnglishCharacterData.Digit, 1),
             new CharacterRule(EnglishCharacterData.Special, 1),
             new WhitespaceRule()
         );

        String password = "Password@123";
         RuleResult result = validator.validate(new PasswordData(password));

        if (result.isValid()) {
             System.out.println("Password is valid.");
         } else {
             System.out.println("Password is invalid: " + String.join(", ", validator.getMessages(result)));
         }
     }
}

JavaScript

zxcvbn 是由Dropbox开发的一个强大的JavaScript库,用于评估密码强度。

NPM安装

npm install zxcvbn

示例代码

  
    

const zxcvbn = require('zxcvbn'); const password = 'Password@123'; const result = zxcvbn(password); console.log(`Password strength score: ${result.score}`); console.log('Feedback:', result.feedback.suggestions.join(' '));


Python栈

password-strength 是一个用于评估密码复杂度的Python库。

安装

pip install password-strength

示例代码

   
     

from password_strength import PasswordPolicy policy = PasswordPolicy.from_names( length=8, # min length: 8 uppercase=1, # need min. 1 uppercase letters numbers=1, # need min. 1 digits special=1, # need min. 1 special characters nonletters=0 # need min. 0 non-letter characters (digits, specials, anything) ) password = "Password@123" result = policy.test(password) if not result: print("Password is valid.") else: print("Password is invalid:", result)


.NET栈
PasswordValidator 是一个用于验证密码复杂度的.NET库。

NuGet安装

Install-Package PasswordValidator

示例代码

   
     

using PasswordValidator; class Program { static void Main() { var validator = new PasswordValidator.PasswordValidator() .Length(8, 128) .IncludeUpper() .IncludeLower() .IncludeDigit() .IncludeSpecial(); string password = "Password@123"; var result = validator.Validate(password); if (result.IsValid) { Console.WriteLine("Password is valid."); } else { Console.WriteLine("Password is invalid: " + string.Join(", ", result.Errors)); } } }

Golang栈:

zxcvbn-go

zxcvbn-go 是一个Golang的密码强度评估库,基于Dropbox的 zxcvbn

安装

go get -u github.com/nbutton23/zxcvbn-go

示例代码

 
   

package main import ( "fmt" "github.com/nbutton23/zxcvbn-go" ) func main() { password := "Password@123" result := zxcvbn.PasswordStrength(password, nil) fmt.Printf("Password strength score: %d\n", result.Score) fmt.Println("Feedback:", result.Feedback.Suggestions) }


改进建议

防止暴力破解攻击

      如果攻击者能够在账户未因认证尝试失败而禁用的情况下猜测密码,攻击者就有机会继续进行暴力破解攻击,直到账户被破坏。在Web应用程序上自动化暴力破解/密码猜测攻击是一个微不足道的挑战。应采用密码锁定机制,如果进行了超过预设数量的不成功登录尝试,则锁定账户。密码锁定机制有一个逻辑弱点。攻击者对已知账户名进行大量认证尝试,可能会产生锁定整个用户账户区块的结果。鉴于密码锁定系统的目的是从暴力破解攻击中保护,一个明智的策略是让账户在一段时间后(例如,20分钟)锁定。这大大减慢了攻击者的速度,同时允许账户自动重新开放给合法用户。

此外,多因素认证是防止暴力破解攻击的非常有力的威慑,因为凭证是一个移动目标。当多因素实现并激活时,账户锁定可能不再必要。

日志记录和监控

启用认证功能的日志记录和监控,以实时检测攻击/失败。

  • 确保所有失败都被记录和审查
  • 确保所有密码失败都被记录和审查
  • 确保所有账户锁定都被记录和审查
要求对敏感功能进行重新认证

    为了缓解CSRF和会话劫持,重要的是在更新敏感账户信息(例如用户的密码、用户的电子邮件)或在敏感交易(例如将购买的商品运送到新地址)之前,需要当前账户的凭据。如果没有这种对策,攻击者可能能够在不知道用户当前凭据的情况下,通过CSRF或XSS攻击执行敏感交易。此外,攻击者可能暂时物理访问用户的浏览器或窃取他们的会话ID以接管用户的会话。


其它参考

https://github.com/k8gege/PasswordDic



今天先到这儿,希望对AIGC,云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感兴趣的文章:
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

image_thumb2_thumb_thumb_thumb_thumb

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年08月07日 0

暂无评论

推荐阅读
  qOdA3bQTCOgr   2024年05月20日   63   0   0 信息安全
  HJM7RbKj596p   2024年08月07日   71   0   0 信息安全
  QYnNb6OHbvIn   2024年08月06日   51   0   0 信息安全
HJM7RbKj596p