今天的學習目標是理解勒索病毒對醫療體系的威脅,認識其運作方式(檔案加密 + 要求贖金),並學習常見防護措施如備份、漏洞修補與員工教育。同時透過簡單 Python 加密/解密模擬,體會病歷被鎖定後無法存取的危險性,加深資安意識。
一、理論重點
勒索病毒(Ransomware) 是一種惡意程式,會加密醫院伺服器或電腦檔案,阻止使用者存取,並要求支付比特幣或其他加密貨幣贖金。
醫療機構特別脆弱,因為醫療紀錄和臨床系統必須即時可用,一旦被鎖定會導致手術延誤、救護系統癱瘓。
防禦重點:
二、案例分享
2017 年的 WannaCry 勒索病毒 迅速感染全球 150 多個國家,利用 Windows SMB 漏洞(EternalBlue)在網路間自動擴散,導致英國國民保健署(NHS)大規模醫療系統當機,醫院病人手術被迫取消,凸顯了資安漏洞與醫療關鍵基礎設施保護的重要性。
三、簡單程式示範
# day24_ransomware_demo.py
from cryptography.fernet import Fernet
import os
# 產生金鑰 (實際勒索病毒會把金鑰送到駭客伺服器)
key = Fernet.generate_key()
cipher = Fernet(key)
# 測試資料夾路徑 (改成你自己的)
folder = "C:/Users/a0907/Desktop/test_files"
# 確保資料夾存在
if not os.path.exists(folder):
os.makedirs(folder)
# 遍歷資料夾中的檔案,只加密 txt
for file in os.listdir(folder):
filepath = os.path.join(folder, file)
if os.path.isfile(filepath) and file.endswith(".txt"):
try:
with open(filepath, "rb") as f:
data = f.read()
encrypted = cipher.encrypt(data)
with open(filepath, "wb") as f:
f.write(encrypted)
print(f"已加密:{filepath}")
except Exception as e:
print(f"跳過檔案:{filepath},原因:{e}")
print("\n模擬完成!金鑰 (若要解密需要此金鑰):")
print(key.decode())
這段程式碼會在指定的測試資料夾中尋找 .txt 檔案並將其內容以對稱加密方式轉為不可讀的位元資料,同時產生並顯示一組解密用的金鑰;此類模擬可用於教學或演練,讓學生或團隊觀察「檔案被鎖住」的視覺效果並討論偵測、備援與還原流程,但應僅在受控的測試環境(且保留原始備份)中執行以避免真實資料損失或法律風險。執行結果如下