나는 현재 이것에 집착하고 strace
있으며 초보자로서 시도해 보기로 결정했습니다. 질문 제목에서 알 수 있듯이 나는 시도 strace su
하고 strace ssh
. 두 명령 모두 strace 출력에 입력한 비밀번호를 표시합니다. su
계속 비밀번호가 틀렸다고 하는데 ssh
정상적으로 로그인이 됩니다.
내 질문:
- 이것이 보안 결함인가요, 아니면 뭔가 빠졌나요?
- 잘못된 비밀번호를 보고하는 것은
su
비밀번호가 실행되고 있음을 감지하기 때문에 보안 조치 입니까strace
? 그렇다면 를 통해 호출되었는지 어떻게 알 수 있나요strace
? 확인해 볼까요/proc/self/cmdline
? - 그런 일이 얼마나 많은 피해를 입힐 수 있습니까?
alias su="strace -o /tmp/output.log su"
답변1
이는 보안 결함이 아닙니다. 귀하의 프로세스이므로 프로세스를 추적할 수 있습니다. strace
실행 중인 프로세스에만 연결할 수는 없습니다 . 예를 들어:
$ sudo sleep 30 &
[1] 3660
$ strace -p 3660
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
su
읽기 권한이 부족하여 잘못된 비밀번호가 보고되었습니다 /etc/shadow
. /etc/shadow
비밀번호 해시가 저장되는 곳이며 보안상의 이유로 루트만 읽을 수 있도록 설정되어 있습니다. su
setuid 비트가 설정되어 실행하는 사람은 루트로 효과적으로 실행되지만 실행하면 strace
작동하지 않으므로 결국 사용자 계정에서 실행됩니다.
"얼마나 많은 피해를 입힐 수 있는지"라는 말이 무슨 뜻인지 잘 모르겠습니다. 보시다시피 su
내부에서는 작동하지 않으므로 strace
작동하지 않게 만들게 됩니다. "누군가 이것을 사용하여 내 비밀번호를 훔칠 수 있다"는 의미라면 그들은 쉘에 별칭을 설정할 수 있어야 합니다. 로그인 파일을 누구나 쓸 수 있도록 설정하거나 이와 유사한 것으로 설정하지 않는 한 별칭을 설정해서는 안 됩니다. 방법. 별칭을 설정할 수 있는 권한이 있는 경우 su
비밀번호를 직접 기록하는 패치 버전의 별칭을 사용할 수 있습니다.strace
답변2
나는 당신이 이것을 보고 있는 이유는 먼저 일반 텍스트를 입력 su
하고 ssh
비밀번호를 입력한 다음 해시하고 처리해야 하기 때문이라고 생각합니다. 를 실행하면 strace
모든 시스템 호출을 수신하고 이를 해싱하고 처리하기 전에 일반 텍스트 비밀번호를 캡처합니다. 터미널에 텍스트가 표시되지 않는다고 해서 일반 텍스트를 입력하지 않는다는 의미는 아닙니다.
답변3
http://blog.vpetkov.net/2013/01/29/sniffing-ssh-password-from-the-server-side/잠재적인 보안 문제를 나타내는 공격자가 openssh를 실행하는 서버에 대한 루트 권한을 갖고 있는 경우 strace
"net" 프로세스에서 실행하여 서버에 SSH를 통해 접속하는 사람들의 비밀번호를 수집할 수 있습니다.
ps aux | grep ssh | grep net | awk {‘ print $2′} | xargs -L1 strace -e write -p
...
Process 17681 attached – interrupt to quit
write(4, “\0\0\0 \v”, 5) = 5
write(4, “\0\0\0\33thisismysupersecretpassword“, 31) = 31
write(3, “\345+\275\373q:J\254\343\300\30I\216$\260y\276\302\353″…, 64) = 64
Process 17681 detached
답변4
이 작업은 루트 권한으로만 수행할 수 있지만 여전히 매우 위험합니다. 해당 시스템에서 다른 중요한 시스템으로 SSH를 통해 연결하면 루트 권한을 가진 악의적인 사람이 사용자가 모르는 사이에 사용자의 암호나 암호 문구를 훔칠 수 있습니다.