터미널을 통해 원격 서버의 포트에서 실행 중인 실제 서비스를 식별하는 방법은 무엇입니까?

터미널을 통해 원격 서버의 포트에서 실행 중인 실제 서비스를 식별하는 방법은 무엇입니까?

다음 서비스를 반환하는 대상 서버에서 nmap을 사용했습니다.

PORT     STATE SERVICE       VERSION
53/tcp   open  domain?
80/tcp   open  http          Microsoft IIS httpd 10.0
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2021-03-17 07:07:34Z)
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp  open  ldap
443/tcp  open  https?
445/tcp  open  microsoft-ds?
464/tcp  open  kpasswd5?
593/tcp  open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp  open  tcpwrapped
3268/tcp open  ldap
3269/tcp open  tcpwrapped
3389/tcp open  ms-wbt-server Microsoft Terminal Services

문제는 Nmap이 실수로 식별했을 수 있는 포트에서 실행 중인 실제 서비스를 식별하는 방법입니다. 예를 들어, 포트 53에서 DNS 서비스가 실행되고 있는지 터미널을 통해 어떻게 확인할 수 있습니까?

어떤 기술을 사용할 수 있나요? 대상 서버에 대한 액세스 권한이 없으므로 서버에서 실행 중인 프로세스를 볼 수 없습니다.

답변1

Steffen이 지적했듯이 서버 X가 호스트 Z의 포트 Y에서 실행되고 있는지 확인하는 방법은 X와 동일한 프로토콜을 사용하는 클라이언트를 실행하고 호스트 Z의 포트 Y를 가리키는 것입니다. 특정 서버가 DNS를 사용하면 다음과 같은 많은 DNS 클라이언트 중 하나를 사용할 수 있습니다 nslookup.

물론, 이는 사용된 프로토콜과 호환된다는 점을 제외하면 실제로 실행 중인 항목에 대해 아무 것도 알려주지 않습니다. 서버는 거의 모든 것이 될 수 있습니다. 예를 들어, 포트 80의 리스너(귀하의 예)는 `HTTP 201 콘텐츠 없음\r\nServer: Microsoft IIS httpd 10.0\r\n\r\n"을 사용하여 TCP 핸드셰이크에 단순히 응답하는 작은 스크립트일 수 있습니다. 이는 거의 유효한 HTTP 응답이지만(클라이언트가 HTTP 요청을 보내지 않은 경우에도 이를 보낼 수 있음) 리스너가 유용한 의미에서 웹 서버임을 의미하지는 않으며 특히 IIS 10.0이라는 의미는 아닙니다.

Nmap에 내장된 인식기 스크립트는 대부분의 서버를 사용자보다 더 잘 인식할 수 있지만 유연성이 매우 부족하고 누군가 시도하면 쉽게 속일 수 있습니다. 문제의 도구와 프로토콜에 익숙한 사람은 특이한 경우(예: 한 서버가 다른 서버를 가장하거나 관리자가 고의로 서버를 식별하는 일반적인 "알림"을 숨긴 경우)에 스크립트가 할 수 있는 것보다 더 많은 정보를 추출할 수 있습니다. Nmap). 그러나 일반적으로 그러한 친숙함의 기본 사항을 전달하는 것은 이 답변 또는 실제로 이 사이트의 범위를 벗어납니다.

관련 정보