파일 안으로 들어가면 /etc/ssh/ssh_config
파일 상단에 "$OpenBSD"가 보입니다. 그런데 기본 포트를 다른 값으로 변경하면 동작하지 않는 것 같습니다. 동료는 Dropbear가 여기서 소프트웨어 서버가 아니라 소프트웨어 서버이기 때문이라고 말했습니다.오픈SSH.
확실히 할 수 있는 방법이 있나요?구글링해도 답을 못찾겠어요.
답변1
SSH 포트(예: 22)에 연결하고 배너를 검사합니다.
$ nc 10.0.0.10 22
SSH-2.0-OpenSSH_8.6
답변2
대부분의 SSH 서버는 연결 즉시 일종의 버전 문자열을 보냅니다. 내 소규모 연구 프로젝트에서 나는 대규모 IPv4 공간에 걸쳐 SSH 서버 버전을 매핑하려고 시도했으며 기본적으로 내가 한 일은 nc address port
.
내 쪽에서 더 쉽게 처리할 수 있도록 시간 제한과 기본값이 있는 선택적인 시간 제한을 사용하여 Perl 스크립트에 구운 것입니다.
#!/usr/bin/perl
use warnings;
use strict;
unless ($ARGV[0] && $ARGV[1]) { die "Usage: ./raw hostname port [timeout]\n" }
my $timeout = '10s';
if ($ARGV[2]) { $timeout = $ARGV[2] }
my $response = `timeout $timeout nc $ARGV[0] $ARGV[1]`;
print $response;
내 네트워크의 서버에 대해 테스트합니다.
./sshbanner.pl 172.16.16.11 22
SSH-2.0-OpenSSH_5.3
답변3
서버에 있는 경우 ssh
예상되는 네트워크 포트( 22
또는 다른 것)에 연결된 프로세스를 살펴보십시오.
netstat
또는 이를 위해 사용할 수 있습니다 ss
. 그런 다음 실행 중인 서버를 식별하는 데 충분할 수 있는 전체 명령줄을 찾거나 다른 옵션을 사용할 수 있습니다.
- 그것을 실행하는
strings
것은 실제로 마지막 작업 과정이지만 결과를 얻을 수 있습니다 (다른 답변에서 볼 수 있듯이 서버에서 원격으로보고하는 문자열도 가장 확실하게 다시 찾을 수 있습니다) - 프로세스에 있는 열린 파일을 찾을 수 있습니다( 참조
/proc/$PID/fd
). 이는 구성 파일에 대한 링크나 로그 파일을 생성할 수 있으며 이상적으로는 로그 파일은 이것이 어떤 프로세스인지 정확히 찾아낼 수 있는 충분한 정보를 제공합니다.
또는 시스템 및 설정에 따라 예를 들어 systemctl list-units
현재 실행 중인 항목과 서버가 무엇인지 정확하게 확인할 수 있습니다 ssh
(그런 다음 유닛 파일을 검사하면 systemd
해당 명령줄이 무엇인지 및 기타 정보를 확인할 수 있습니다).
서버 외부에 있는 경우 다른 답변을 참조하세요. 그러나 원격 서버에서 반환된 내용이 사실이라는 보장은 없으며 원하는 대로 표시될 수 있습니다.
원격으로 또 다른 옵션은 "SSH 지문 채취"를 수행하는 것입니다. 직접 본 적은 없지만 존재하는 것은 확실합니다. 기본적으로 다양한 유형의 연결을 테스트하여 주장하는 것 외에 원격 부분에서 일부 정보를 확인할 수 있습니다. 여러 취약점 스캐너에 그런 것이 있다고 생각합니다.
답변4
를 사용하여 ps
프로세스 목록과 . 이를 통해 실행 가능한 바이너리 {{ 예 또는 이와 유사한 것 }} 에 대한 경로를 얻을 수 있습니다 . 그런 다음 이 바이너리를 실행하여 도움말 및 사용 정보를 얻을 수 있습니다. 이 출력에는 다음이 포함됩니다.grep
sshd
/usr/sbin/sshd
-?
패키지의 최종 이름{{ 예: OpenSSH, Dropbear 또는 이와 유사한 것 }}.