Cài đặt để bảo vệ gnome-terminal khỏi việc ghi nhật ký khóa


15

Có vẻ như rất dễ dàng để đăng nhập tổ hợp phím của tất cả các quy trình của cùng một người dùng. Một keylogger cơ bản là 'xinput'.

xinput test-xi2

Lệnh tạo nhật ký của tất cả các lần nhấn phím. Thật không may, điều này bao gồm mật khẩu trong gnome-terminal. Googling đề xuất rằng lấy bàn phím có thể ngăn các cửa sổ khác chụp các nét chính.

Có cách nào để ngăn chặn đăng nhập XI2 trong gnome-terminal không? Hoặc có một thiết bị đầu cuối X có tính năng này?


này một giải pháp?
Radu Rădeanu

Câu trả lời:


13

Không thể vì bất kỳ tổ hợp phím nào được chuyển đến máy chủ X, sẽ có sẵn cho xinput / bất kỳ chương trình tùy ý nào. (Trên thực tế, đó là một phần của thiết kế). Các máy chủ hiển thị mới như Wayland và Mir đang khắc phục các sự cố bảo mật như vậy trong X. Giải pháp thực sự duy nhất là sử dụng Wayland hoặc Mir thay vì X. Blog này đăng chi tiết vấn đề này.


Vì vậy, đầu vào gksu cho mật khẩu cũng đi đến xinput?
yanyar

1
@yanychar yup, thực ra tôi đã tìm hiểu về phương pháp đăng nhập khóa này thông qua bài đăng trên blog này: theinvisiblethings.blogspot.in/2011/04/ (ngay cả khi tôi đọc bài đăng trên blog lần đầu tiên)
Ram Vendra Apte

2
X11 thực sự có chế độ không đáng tin cậy mà bạn có thể sử dụng để ngăn các chương trình truy cập các tiện ích mở rộng "xấu" - x.org/wiki/Development/Documentation/Securance
Michał Zieliński

-1

Không hẳn vậy. Ngay cả khi bạn bằng cách nào đó có thể lấy bàn phím trong X (Tôi không biết liệu điều này có khả thi hay không, tôi nghi ngờ điều đó), một tiện ích keylogger chạy dưới quyền root sẽ luôn có quyền truy cập vào bàn phím.


4
Lệnh trên lấy bàn phím trong X mà không có quyền root. Vì vậy, việc cài đặt một keylogger cho máy tính để bàn Ubuntu là chuyện nhỏ. Câu hỏi là làm thế nào để tránh điều này.
yanyar

-3

Như những người khác đã nói ở đây, không thể chỉ bảo vệ một chương trình như gnome-terminal hoặc thiết bị đầu cuối khác khỏi việc ghi nhật ký khóa, chỉ khi bạn hạn chế người dùng chuẩn thực hiện bất kỳ trình ghi nhật ký khóa nào hoặc nếu bạn dừng / tạm dừng bất kỳ quy trình ghi nhật ký khóa nào.

Tiếp theo tôi sẽ chỉ cho bạn cách bạn có thể thực hiện những điều này trong trường hợp xinputlệnh, nhưng các phương thức tương tự có thể được sử dụng cho bất kỳ trình ghi nhật ký khóa nào khác. Nếu một trình ghi nhật ký khóa sử dụng xinputlệnh, thì không cần thiết phải áp dụng phương thức đó miễn là bạn áp dụng nó xinput.

1. Hạn chế người dùng chuẩn sử dụng xinputlệnh

Bạn có thể hạn chế người dùng chuẩn sử dụng xinputlệnh bằng lệnh sau:

sudo chmod go-x /usr/bin/xinput

2. Hạn chế người dùng chuẩn sử dụng xinputlệnh với test-xi2đối số

Bạn có thể hạn chế người dùng chuẩn sử dụng xinputlệnh với test-xi2đối số bằng cách viết trình bao bọc cho lệnh này. Để làm điều này, đi trong thiết bị đầu cuối và làm theo hướng dẫn dưới đây:

  • Nhận quyền root:

    sudo -i
    
  • Di chuyển xinputtệp trong thư mục khác không có trong bất kỳ PATH nào của người dùng (ví dụ /opt):

    mv /usr/bin/xinput /new/path/to/xinput
    
  • Tạo trình bao bọc của bạn cho xinputlệnh trong /usr/bin:

    gedit /usr/bin/xinput
    

    Thêm đoạn script sau vào bên trong:

    #!/bin/bash
    if [ "$@" != "${@/test-xi2/}" -a "$(whoami)" != "root" ]; then
        echo "`basename $0` $@: Permission denied"
    else
        /new/path/to/xinput $@
    fi
    

    Lưu file và đóng nó lại.

  • Làm cho trình bao bọc mới thực thi:

    chmod +x /usr/bin/xinput
    

Mặc dù phương thức đầu tiên là an toàn, sử dụng phương pháp thứ hai, người dùng vẫn có thể phá vỡ nó bằng cách gọi xinputtrực tiếp bản gốc nếu anh ta biết vị trí mới của nó.

3. Dừng / tạm dừng bất kỳ xinputquá trình

Bạn có thể dừng hoặc tạm dừng bất kỳ xinputquy trình nào trước khi nhập mật khẩu hoặc bất cứ điều gì khác mà bạn không muốn đăng nhập. Để thực hiện việc này, hãy thêm chức năng bash sau vào cuối ~/.bashrctệp của bạn :

processof () {
    xinput_pids=" $(pidof $1) "
    if [ "$xinput_pids" = "  " ]; then
        echo "Nothing to stop/pause/continue. $1: no such process!"
        return
    fi
    for pid in $xinput_pids; do
        case $2 in
        "stop") 
            kill $pid
            echo "$1: stopped"
            ;;
        "pause")
            kill -stop $pid
            echo "$1: paused"   
            ;;
        "continue")
            kill -cont $pid
            echo "$1: continue"
            ;;
        *)
            echo "$1 is runnig"
            ;;
        esac
    done
}

Bây giờ, sau khi bạn mở lại thiết bị đầu cuối của mình, bất cứ lúc nào bạn muốn, sử dụng chức năng này, bạn có thể:

  • dừng / hủy tất cả các xinputquy trình:

    processof xinput stop
    
  • tạm dừng tất cả các xinputquy trình:

    processof xinput pause
    
  • tiếp tục tất cả các xinputquy trình:

    processof xinput continue
    

Trên thực tế, với chức năng này, bạn có thể dừng / tạm dừng bất kỳ quy trình nào bạn muốn trước đó để làm điều gì đó (chẳng hạn như nhập mật khẩu):

processof [process_name] [stop|pause|continue]

Nếu bạn không biết cách phát hiện cách phát hiện keylogger đang hoạt động trên hệ thống của mình, hãy xem:

Những phương pháp này có thể không phải là giải pháp tốt nhất, nhưng tôi hy vọng sẽ cho bạn ý tưởng về những gì bạn có thể làm ...


5
xinput chỉ là một ví dụ về keylogger. Câu hỏi là về việc bảo vệ đầu vào từ mọi keylogger có thể.
yanyar

5
Bất kỳ chương trình nào cũng có thể kết nối với máy chủ X thông qua các socket và keylog, thậm chí không yêu cầu bộ ghi khóa sử dụng một chương trình bên ngoài.
Ramowderra Apte

3
@ RaduRădeanu giải pháp của bạn không hiệu quả và vô dụng. xinputthậm chí không phải là SUID (-rwxr-xr-x 1 root root 48504 ngày 15 tháng 8 năm 2012 / usr / bin / xinput)
Ram

1
@ RaduRădeanu Bởi vì bạn không cần xinput để keylog. (nó không cần một lệnh bên ngoài cũng như chương trình độc hại cần phải SUID), giải pháp của bạn sẽ đơn giản cho phép một người kiểm soát việc thực thi xinput
Ram

3
Ví dụ cơ bản nhất để chứng minh nó không hiệu quả: Sao chép phiên bản chứng khoán của (ub Ubuntu) từ một thanh usb, tải xuống từ web hoặc gửi e-mail cho chính bạn và chạy nó trong thư mục nhà của bạn. Hiệu quả tương tự như sử dụng không giới hạn / usr / bin / xinput.
allo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.