0
0
Lập trình
NM

Dự Án KeyLogger Python: Khám Phá và Học Hỏi

Đăng vào 1 tháng trước

• 6 phút đọc

Chủ đề:

KungFuTech

Giới Thiệu

Chào các bạn! Tôi là Anuj, và tôi rất vui được chia sẻ về dự án mới nhất mà tôi đã thực hiện - một hệ thống KeyLogger toàn diện với khả năng reverse shell. Khi bắt đầu dự án này, tôi chỉ nghĩ rằng mình sẽ xây dựng một keylogger đơn giản để tìm hiểu về an ninh mạng. Nhưng, nó đã trở thành một thứ thú vị hơn rất nhiều so với những gì tôi mong đợi! Hãy cùng tôi khám phá những gì tôi đã xây dựng và những điều tôi đã học được trong quá trình này.

Khởi Đầu Dự Án

Tất cả bắt đầu khi tôi xem một vài video về an ninh mạng và cảm thấy tò mò về cách các công cụ kiểm tra thâm nhập hoạt động. Tôi luôn nghe về keyloggers và reverse shells, nhưng tôi muốn hiểu chúng từ gốc rễ. Bạn có biết cảm giác khi thấy một điều gì đó thú vị và nghĩ "Tôi có thể xây dựng điều đó" không? Đó chính là tôi. Tôi muốn tìm hiểu sâu về lập trình mạng Python, hiểu cách các quy trình nền hoạt động và thực sự trải nghiệm những khái niệm an ninh mạng.

Những Gì Tôi Đã Xây Dựng

Điều này không phải là một keylogger "hello world" thông thường. Tôi đã xây dựng một hệ thống hoàn chỉnh với 4 mô-đun:

Các Thành Phần Chính:

  • keylogger.py: Bộ não ghi lại các phím bấm một cách thông minh.
  • reverse_shell.py: Một client mạnh mẽ với nhiều tính năng.
  • server.py: Máy chủ điều khiển và chỉ huy.
  • test_client.py: Khung thử nghiệm để đảm bảo mọi thứ hoạt động.

Các Tính Năng Nổi Bật:

  • Hoạt động trên Windows, Linux và macOS (phát triển đa nền tảng là một thách thức lớn!).
  • Truy cập hoàn toàn vào reverse shell.
  • Chụp ảnh màn hình từ xa.
  • Keylogger thông minh lọc bỏ những thông tin nhạy cảm.
  • Hoạt động hoàn toàn im lặng trong nền.

Những Khía Cạnh Kỹ Thuật

(Don’t Worry, Tôi Sẽ Giữ Đơn Giản):
Hãy để tôi cho bạn thấy một số đoạn mã thú vị mà tôi đã viết. Phần keylogger thực sự rất tinh tế:

python Copy
from pynput import keyboard
log = ""

def on_press(key):
    global log
    try:
        log += str(key.char)  # Ký tự thông thường
    except AttributeError:
        # Xử lý các phím đặc biệt như khoảng trắng, enter, v.v.
        if key == keyboard.Key.space:
            log += " "
        else:
            log += " " + str(key) + " "

Giao Tiếp Reverse Shell:

python Copy
import socket
import json

def reliable_send(data):
    jsondata = json.dumps(data)
    s.send(jsondata.encode())

def reliable_recv():
    data = ""
    while True:
        try:
            data += s.recv(1024).decode().rstrip()
            return json.loads(data)
        except ValueError:
            continue

Những Điều Tôi Yêu Thích

Một trong những điều tôi thích là cách giao tiếp JSON làm cho mọi thứ trở nên dễ dàng hơn. Không còn phải xử lý dữ liệu socket lộn xộn nữa!

Đường Học Tập

Xây dựng dự án này đã dạy tôi nhiều hơn tôi kỳ vọng:

  • Lập Trình Socket: Tôi chưa bao giờ làm lập trình mạng trước đây. Việc học cách các client và server giao tiếp, xử lý kết nối và thời gian chờ - như mở ra một thế giới mới.
  • Đa Luồng: Đưa keylogger hoạt động trong nền trong khi duy trì kết nối reverse shell là trải nghiệm đầu tiên của tôi với lập trình đồng thời.
  • Phát Triển Đa Nền Tảng: Làm cho nó hoạt động trên Windows, Linux và macOS thực sự là phần khó nhất. Các đường dẫn tệp khác nhau, quyền khác nhau, hành vi khác nhau - nhưng thật thoải mái khi mọi thứ được gắn kết với nhau.
  • Xử Lý Tệp: Thực hiện việc truyền tệp an toàn với mã hóa Base64 đã dạy tôi rất nhiều về tuần tự hóa dữ liệu.

Những Thách Thức Tôi Đã Đối Mặt

Thực sự, có một số khoảnh khắc khó khăn:

  • Windows Defender: Nó liên tục đánh dấu reverse shell của tôi (điều này thực sự là hành vi mong đợi đối với loại công cụ này). Tôi đã phải thêm ngoại lệ để thử nghiệm.
  • Quản Lý Đường Dẫn: Để có đường dẫn tệp hoạt động chính xác trên các hệ điều hành khác nhau phức tạp hơn tôi nghĩ.
  • Độ Tin Cậy Kết Nối: Kết nối mạng có thể không ổn định. Tôi đã phải thực hiện logic thử lại và xử lý lỗi một cách đúng đắn.
  • Thử Nghiệm: Đảm bảo mọi thứ hoạt động trên các nền tảng khác nhau cần phải thiết lập nhiều môi trường thử nghiệm.

Những Tính Năng Khiến Tôi Tự Hào

  • Ghi Nhận Phím Thông Minh: Nó không chỉ đơn giản là ghi lại mọi thứ - mà còn xử lý thông minh các phím đặc biệt và định dạng đầu ra một cách chính xác.
  • Hoạt Động Tệp Từ Xa: Bạn có thể tải lên và tải xuống tệp, thậm chí lấy tệp trực tiếp từ URL.
  • Khả Năng Chụp Màn Hình: Sử dụng thư viện mss, nó có thể chụp ảnh màn hình từ xa trên các nền tảng khác nhau.
  • Chế Độ Ẩn: Hoạt động hoàn toàn im lặng mà không có cửa sổ hoặc chỉ báo nào.
  • Giao Tiếp Vững Chắc: Giao thức dựa trên JSON với xử lý lỗi chính xác và cơ chế thử lại.

Công Nghệ Sử Dụng

  • Python 3.8+ (rõ ràng rồi!)
  • Thư viện: pynput, mss, requests, python-dotenv
  • Các mô-đun tích hợp: socket, threading, subprocess, json, base64

Kiến Trúc

  • Mô hình client-server với giao tiếp JSON
  • Đa luồng cho các thao tác đồng thời
  • Cấu hình dựa trên môi trường
  • Xử lý hệ thống tệp đa nền tảng

Toàn bộ dự án khoảng 500 dòng mã được phân bổ qua nhiều mô-đun, nhưng nó rất sạch sẽ và có tổ chức.

Tôi xây dựng điều này để tìm hiểu về các khái niệm an ninh mạng, hiểu cách các công cụ này hoạt động, và cải thiện kỹ năng Python của mình. Luôn sử dụng các công cụ như thế này một cách có trách nhiệm, trong các môi trường được kiểm soát, và chỉ với sự cho phép phù hợp. Nếu bạn quan tâm đến an ninh mạng, hãy sử dụng kiến thức này để xây dựng các biện pháp phòng thủ tốt hơn, không phải để gây hại.

Kế Hoạch Tương Lai

  • Thêm mã hóa AES cho giao tiếp
  • Xây dựng giao diện điều khiển web
  • Thực hiện lưu trữ cơ sở dữ liệu cho các bản ghi
  • Có thể khám phá các nền tảng di động
  • Thêm các tính năng steganography

Kết Luận

Dự án này đã đẩy tôi ra khỏi vùng an toàn và dạy tôi rất nhiều về mạng, bảo mật và lập trình hệ thống. Có điều gì đó vô cùng thỏa mãn khi thấy reverse shell của bạn kết nối lần đầu tiên, hoặc xem keylogger ghi lại dữ liệu một cách lặng lẽ đúng như mong muốn.

Điều tốt nhất? Tất cả đều là mã nguồn mở trên GitHub của tôi. Nếu bạn tò mò về an ninh mạng hoặc muốn tìm hiểu về lập trình socket, hãy thoải mái kiểm tra, đánh dấu sao nếu bạn thấy thú vị, và đừng ngần ngại hỏi bất kỳ câu hỏi nào!

Kho lưu trữ GitHub

Bạn nghĩ sao? Bạn đã từng làm việc trên bất kỳ dự án an ninh mạng nào chưa? Tôi rất muốn nghe về những trải nghiệm của bạn trong phần bình luận!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào