Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Phát hiện tấn công dò mật khẩu từ log đăng nhập

    Khi phân tích lỗ hổng hệ thống, một việc quan trọng là phát hiện các cuộc tấn công dò mật khẩu (brute-force) dựa trên nhật ký (log) đăng nhập. Cho NNN, TTT và một danh sách MMM dòng log theo thứ tự thời gian không giảm, mỗi dòng gồm: thời điểm ts (giây, số nguyên), địa chỉ ip, tên đăng nhập user, và kết quả result (FAIL hoặc OK).

    Với mỗi cặp (ip, user), duy trì một cửa sổ trượt các lần đăng nhập thất bại: mỗi khi có một lần FAIL mới tại thời điểm ts, thêm ts vào cửa sổ, sau đó loại khỏi cửa sổ mọi thời điểm cũ hơn quá TTT giây so với ts hiện tại (tức ts - t_cu > T). Khi có một lần OK, cửa sổ của cặp (ip, user) đó được đặt lại về rỗng.

    Ngay khi số phần tử trong cửa sổ đạt tới NNN (lần đầu tiên kể từ lần OK gần nhất, hoặc từ đầu log), hệ thống phát ra một cảnh báo duy nhất tại thời điểm đó cho cặp (ip, user) này (không cảnh báo lặp lại cho các lần FAIL tiếp theo trong cùng chuỗi, cho tới khi có OK reset và một chuỗi mới lại đạt ngưỡng).

    Ví dụ: N=2,T=5N=2, T=5N=2,T=5; log: (0,FAIL) (5,FAIL) → tại t=5t=5t=5: cửa sổ ={0,5}=\{0,5\}={0,5} vì 5−0=5≤T5-0=5 \le T5−0=5≤T, đạt N=2N=2N=2 → cảnh báo tại t=5t=5t=5.

    • Định dạng đầu vào:
      • Dòng 1: hai số nguyên NNN và TTT (1≤N≤1051 \le N \le 10^51≤N≤105, 0≤T≤1090 \le T \le 10^90≤T≤109).
      • Dòng 2: số nguyên MMM (0≤M≤1050 \le M \le 10^50≤M≤105) — số dòng log.
      • MMM dòng tiếp theo, mỗi dòng gồm ts ip user result cách nhau bởi khoảng trắng; ts là số nguyên không giảm dần theo các dòng, ip và user là chuỗi không chứa khoảng trắng, result là FAIL hoặc OK.
    • Định dạng đầu ra:

      In ra tất cả các cảnh báo theo đúng thứ tự thời gian phát sinh, mỗi cảnh báo một dòng theo định dạng ALERT <ts> <ip> <user>. Nếu không có cảnh báo nào, in ra NONE.

      Ví dụ: với ví dụ trên → output:

      ALERT 5 9.9.9.9 x
      

      (giả sử ip=9.9.9.9, user=x).

    Ví dụ:

    Đầu vào:

    2 5
    3
    0 1.1.1.1 bob FAIL
    10 1.1.1.1 bob FAIL
    11 1.1.1.1 bob FAIL

    Đầu ra:

    ALERT 11 1.1.1.1 bob
    

    Đầu vào:

    3 60
    6
    100 1.2.3.4 admin FAIL
    110 1.2.3.4 admin FAIL
    115 1.2.3.4 admin FAIL
    120 1.2.3.4 admin OK
    200 5.6.7.8 root FAIL
    260 5.6.7.8 root FAIL

    Đầu ra:

    ALERT 115 1.2.3.4 admin
    

    Đang tải editor...