SSHD 식별 문자열 삭제

SSHD 식별 문자열 삭제

SSH 포트에서 nmap 스캔을 수행하면 다음과 같은 결과가 나타납니다.

22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

SSH 식별 문자열을 수정하거나 숨길 수 있습니까?

답변1

이 식별 문자열은 SSH 서비스 자체에서 반환될 수 있습니다. 이 시도:

echo "blah" | nc YOUR.SERVER.ADDRESS 22

이는 다음과 다소 유사한 응답을 제공합니다.

SSH-2.0-OpenSSH_8.6
Invalid SSH identification string.

불행하게도 이것은 바이너리에 포함된 문자열입니다 sshd. 여러 가지 옵션이 있습니다:

  • 배포판에서 버전 배너를 제거하기 위해 sshd 패키지에 대한 특정 컴파일 플래그를 허용하는지 확인하십시오.
  • Debian과 같은 일부 배포판에서는 파일 DebianBanner no에서 다음과 같은 옵션을 시도할 수 있습니다 . /etc/ssh/sshd_config이것은 배포판에 따라 다릅니다.
  • Hatch에 대한 솔루션입니다. 반환된 문자열과 일치하는 문자열을 찾으려면 바이너리 strings에 사용하세요 . sshd그런 다음 현재 바이너리의 백업을 준비하고 hexedit. 조심하고 백업 계획이 있는지 확인하십시오.

이 식별 문자열은 프로토콜의 일부이므로 너무 많이 조작하지 마십시오. nc문자열이 올바른 형식이 아니기 때문에 변경된 문자열을 표시함에도 불구하고 클라이언트가 연결을 거부하게 될 수 있습니다.http://www.openssh.com/txt/rfc4253.txt

답변2

sed 's/SSH-%d.%d-%.100s%s%s/SSH-%d.%d-OpenSSH___/' /usr/sbin/sshd > modifiedsshd

크기는 여전히 같지만 바이너리가 다른지 확인하세요. 여전히 동일한 바이너리인 경우(cmp는 0을 반환함)

strings /usr/sbin/sshd | grep SSH-

printf()SSH 버전에서 사용하는 올바른 형식을 찾으세요 . 중요한 점은 앞뒤에 제공하는 문자열의 sed길이가 정확히 같아야 한다는 것입니다.

말할 것도 없이 sshd바이너리 백업을 어딘가에 보관하고 문제가 발생할 경우를 대비해 먼저 로컬 액세스 권한이 있는 머신에서 이 작업을 시도해 보세요.

관련 정보