키 로깅으로부터 그놈 터미널을 보호하기위한 설정


15

동일한 사용자의 모든 프로세스에 대한 키 입력을 쉽게 기록 할 수 있습니다. 기본 키로거는 'xinput'입니다.

xinput test-xi2

이 명령은 모든 키 누르기의 로그를 생성합니다. 불행히도 여기에는 그놈 터미널의 암호가 포함됩니다. 인터넷 검색은 키보드를 잡으면 다른 창에서 키 입력을 캡처하지 못할 수 있다고 제안했습니다.

그놈 터미널에서 XI2 로깅을 방지하는 방법이 있습니까? 아니면이 기능이있는 X 터미널이 있습니까?


해결책?
Radu Rădeanu

답변:


13

그것은으로 불가능 어떤 XInput에 / 임의의 프로그램에 사용할 수 있습니다, 키는 X 서버에 통과했다. (실제로 디자인의 일부입니다). Wayland 및 Mir와 같은 새로운 디스플레이 서버는 X에서 이러한 보안 문제를 해결하고 있습니다. 유일한 해결책은 X 대신 Wayland 또는 Mir를 사용하는 것입니다. 블로그 게시물에서는이 문제에 대해 자세히 설명합니다.


암호로 gksu에 입력해도 xinput으로 이동합니까?
yanychar

1
@yanychar yup, 실제로이 블로그 게시물을 통해이 키 로깅 방법에 대해 알았 습니다 : theinvisiblethings.blogspot.in/2011/04/… ( 블로그 게시물을 처음 읽을 때 놀랐습니다)
Ramchandra Apte

2
X11은 실제로 프로그램이 "나쁜"확장자에 접근하는 것을 막기 위해 사용할 수있는 신뢰할 수없는 모드를 가지고 있습니다 -x.org/wiki/Development/Documentation/Security
Michał Zieliński

-1

실제로는 아닙니다. X 내에서 키보드를 잡을 수 있다고하더라도 (이것이 가능한지 모르겠습니다. 의심합니다) 루트로 실행되는 키 로거 유틸리티는 항상 키보드에 액세스 할 수 있습니다.


4
위의 명령은 루트 권한없이 X 내에서 키보드를 가져옵니다. 따라서 키로거를 우분투 데스크탑에 설치하는 것은 쉽지 않습니다. 문제는 이것을 피하는 방법입니다.
yanychar

-3

다른 사람들이 말했듯이 표준 사용자가 키 로거를 실행하도록 제한하거나 키 로거 프로세스를 중지 / 일시 중지 한 경우에만 gnome-terminal 또는 기타 터미널과 같은 프로그램 만 키 로깅에서 보호 할 수 없습니다.

다음은 xinput명령의 경우 이러한 작업을 수행하는 방법을 보여 주지만 다른 키 로거에 동일한 방법을 사용할 수 있습니다. 키 로거가 xinput명령을 사용하는 경우에 적용하는 한 메소드를 적용 할 필요는 없습니다 xinput.

1. 표준 사용자가 xinput명령 을 사용하도록 제한

다음 명령 을 사용xinput 하여 표준 사용자가 명령 을 사용하도록 제한 할 수 있습니다 .

sudo chmod go-x /usr/bin/xinput

2. 표준 사용자 xinputtest-xi2인수 와 함께 명령 을 사용하도록 제한

이 명령에 대한 랩퍼를 작성하여 표준 사용자 xinputtest-xi2인수 와 함께 명령 을 사용하도록 제한 할 수 있습니다 . 이렇게하려면 터미널로 이동하여 아래 지침을 따르십시오.

  • 루트 권한을 얻으십시오.

    sudo -i
    
  • xinput사용자의 PATH에없는 다른 디렉토리로 파일을 이동 하십시오 (예 :) /opt:

    mv /usr/bin/xinput /new/path/to/xinput
    
  • 다음에 xinput명령을 위한 랩퍼를 작성하십시오 /usr/bin.

    gedit /usr/bin/xinput
    

    내부에 다음 스크립트를 추가하십시오.

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

    파일을 저장하고 닫습니다.

  • 새 랩퍼를 실행 가능하게 만드십시오.

    chmod +x /usr/bin/xinput
    

첫 번째 방법은 안전하지만 두 번째 방법을 사용 xinput하면 새 위치를 알고있는 경우 원본을 직접 호출하여이를 피할 수 있습니다.

3. xinput프로세스 중지 / 일시 정지

xinput비밀번호 또는 기록하지 않으려는 항목을 입력하기 전에 프로세스를 중지하거나 일시 중지 할 수 있습니다 . 이렇게하려면 ~/.bashrc파일 끝에 다음 bash 함수를 추가 하십시오.

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
}

이제 터미널을 다시 연 후 언제든지이 기능을 사용하여 다음을 수행 할 수 있습니다.

  • 모든 xinput프로세스를 중지 / 종료하십시오 .

    processof xinput stop
    
  • 모든 xinput프로세스를 일시 중지합니다 :

    processof xinput pause
    
  • 모든 xinput프로세스를 재개하십시오 .

    processof xinput continue
    

실제로이 기능을 사용하면 암호를 입력하는 등의 작업을 수행하기 전에 원하는 프로세스를 중지 / 일시 정지 할 수 있습니다.

processof [process_name] [stop|pause|continue]

시스템에서 활성 키로거를 감지하는 방법을 감지하는 방법을 모르면 다음을 참조하십시오.

이러한 방법이 최선의 해결책은 아니지만 어쩌면 당신이 할 수있는 일에 대한 아이디어를주기를 바랍니다.


5
xinput은 키로거의 예일뿐입니다. 문제는 가능한 모든 키로거로부터 입력을 보호하는 것입니다.
yanychar

5
모든 프로그램은 소켓과 키로그를 통해 X 서버에 연결할 수 있으며, 키 로거가 외부 프로그램을 사용할 필요조차 없습니다.
Ramchandra Apte

3
@ RaduRădeanu 귀하의 솔루션은 효과가없고 쓸모가 없습니다. xinput심지어 SUID (-rwxr-XR-X 1 루트 루트 48504 2012년 8월 15일는 / usr / 빈 / XInput에)입니다
RAMCHANDRA Apte

1
@ RaduRădeanu 키로그에 xinput이 필요하지 않기 때문입니다. (외부 명령이 필요하지 않고 악성 프로그램이 SUID 일 필요도 없음) 솔루션은 단순히 xinput의 실행을 제어 할 수 있도록합니다
Ramchandra Apte

3
그것이 효과가 없음을 증명하는 가장 기본적인 예 : USB 스틱에서 (ubuntu) xinput의 스톡 버전을 복사하여 웹에서 다운로드하거나 자신에게 전자 메일로 보내 홈 폴더에서 실행하십시오. 무제한 / usr / bin / xinput을 사용하는 것과 동일한 효과.
allo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.