AIGC資訊保安-在應用系統中安全防範過程實踐應用

PetterLiu發表於2024-08-01

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。

相關文章