이것은 공격의 시그니처를 더 잘 식별할 수 있도록 일종의 해킹에서 비롯된 경우를 대비해 공유하고 싶었던 다소 이상한 이야기입니다.
저는 웹 개발자이고 Ubuntu 20.04를 실행하고 있으며 내 컴퓨터의 docker에서 이상한 작업을 실행하고 있습니다. VSC에는 품질이 의심스러운 개발 확장이 많이 있습니다. 나는 어디에서나 ansible Python venvs 등을 사용합니다. SSH 에이전트를 사용하고 있으며 내 SSH 키는 비밀번호로 보호되어 있으며 자동 로그인 후에는 SSH 키를 해독하지 않습니다.
어제는 평소처럼 일하고 밤에는 컴퓨터를 껐습니다. 오늘은 이 메시지를 사용하여 SSH를 통해 원격 컴퓨터에 연결할 수 없습니다.
sign_and_send_pubkey: signing failed for RSA "/home/xxxxx/.ssh/id_rsa" from agent: agent refused operation
[email protected]: Permission denied (publickey).
약간의 조작 끝에 개인 키를 확인했는데 놀랍게도 개인 키가 파괴되었습니다.
$ cat ~/.ssh/id_rsa
-e
-e
파일 내용이었는데 가장 행복한 순간은 아니었지만 콜드 백업이 있어서 잠시 후 다시 작업을 하게 되었습니다.
하지만 나는 잠을 잘 수가 없었고, 어떻게 이런 일이 일어났는지 몰랐습니다. 최근에 새 키를 생성한 적도 없고 .ssh/
파일을 수동으로 조작한 적도 없습니다.
id_rsa
내가 작업하는 동안 의 타임스탬프는 어제 정오이고 known_hosts
타임스탬프도 동일하며 그 안의 다른 파일에도 .ssh/
합법적인 기록 타임스탬프가 있습니다. 그 무렵 나는 오래된 기계에 SSH를 연결하고 있었기 때문에 known_hosts
파일을 만질 이유가 전혀 없었습니다 .
id_rsa
이와 같은 말도 안되는 일을 무시 하게 되는 상황을 생각할 수 있는 사람이 있습니까 -e
? 제가 사용하는 일부 도구에 악성 코드가 있다는 사실에 편집증이 생겼습니다. 아니면 확실히 내 부분에서 인간의 실수가 있지만 일반적으로 경계합니다. 당신의 생각에 감사드립니다.
편집하다:
내 구성이 최적 이
bash_history
아니기 때문에 내 구성이 불완전합니다bash
.tmux
https://askubuntu.com/questions/80371/bash-history-handling-with-multiple-terminals/80882. 따라서 불행하게도 특정 명령을 추적하는 것은 불가능합니다.기반으로답변VSCode가
-
예를~/.config/Code/User/History/-707c1648
들어 . 처리 중인 파일. 이로 인해 git 명령과 VSCode에서 임시로 생성된 파일 사이에 충돌이 있을 수 있다는 가설이 생겼습니다. 이를 추적하려면 특별한 주의가 필요합니다.
답변1
아니요, 이것은 공격이 아닙니다. 어딘가에서 문제가 발생했습니다.
개인 키 파일을 유효하지 않은 콘텐츠로 바꾸는 것은 공격자에게 이상적인 표적이 아닙니다. 공격자가 원할 수도 있음읽다하지만 인증에 사용되는 개인 키를 변경하는 것은 의미가 없으며, 잘못된 텍스트로 대체하여 이를 파기하는 것은 말할 것도 없습니다. 이는 공격자에게 아무런 이점도 주지 않으며 쉽게 탐지할 수 있습니다. 공격자는 덮어쓰려고 할 수 있지만 known_hosts
자신의 공개 키만 추가할 수 있습니다. 자신의 공개 키를 파기해도 공격자에게는 아무런 이점이 없습니다. 이것이 공격이라면 아주 이상한 방식으로 실패했고 공격자는 정리하려는 시도조차 하지 않았습니다. 물론 이것이 물리법칙을 어기는 것은 아니지만 전혀 믿기지 않는 일이다.
콘텐츠 로 , 옵션으로 의도되었지만 콘텐츠로 해석된 -e
일부 셸 명령의 버그일 가능성이 높습니다 . -e
다른 파일이 동시에 수정되는 경우 가능한 원인은 일부 파일 내용 교체 명령입니다. 예를 들어 find … | xargs perl -i -p -e …
잘못된 인용, 복사하여 붙여넣기 오류, 잘못된 공백 또는 예기치 않은 문자로 인해 명령이 실행되는 파일 수 파일명 등이 기대 이상이었습니다.
대시로 시작하는 파일 이름이 있는지 확인하십시오( locate /-
공개적으로 표시되면 발견되고, 그렇지 않으면 발견됩니다 find ~ -name '-*'
). 또는 공백 뒤에 대시( locate ' -'
또는 )가 오는 find -name '* -*'
파일 이름 일 수도 있습니다. 이는 --
및 공백을 사용하지 않고 파일 이름을 전달하는 명령, 변수 확장 주위에 따옴표를 사용하지 않거나 를 사용하지 xargs
않고 명령이 파일 이름을 전달함으로써 발생하는 신비한 효과의 원인일 수 있습니다 -0
. 범인을 찾아내고 그것이 여러분이 작성한 셸 명령에 있다는 것을 알게 된다면 다음을 참조하세요.공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까?그리고bash/POSIX 쉘에서 변수를 인용하는 것을 잊어버리는 보안 위험. 다른 사람이 작성한 셸 명령에 있는 것으로 밝혀지면 버그를 신고하고 해당 리소스를 알려주세요. 귀하의 경우 이것은 우연이지만 파일 이름을 제어할 수 있는 공격자가 버그를 사용하여 유용한 작업을 수행할 수 있습니다.