IP 기반 서비스 탐색의 중요성

서버나 네트워크를 관리하다 보면, 특정 IP 주소에서 어떤 서비스를 운영 중인지 파악해야 할 일이 자주 생깁니다. 특히 클라우드 서버나 사내 여러 대의 서버가 복잡하게 얽혀 있을 경우, IP만 딸랑 알고 정확히 무슨 서비스가 돌아가는지 모를 때가 있습니다. 그럴 때는 IP를 중심으로 스캐닝을 해보면, 열려 있는 포트와 해당 포트 위에서 동작하는 서비스(예: HTTP, HTTPS, FTP, SSH 등)를 확인할 수 있어 효율적입니다.

개인적으로는 이 작업이 마치 미지의 섬을 탐험하는 기분이라고 생각합니다. IP라는 주소 하나를 단서로, “이곳에서 어떤 서비스가 살고 있나?”를 단계별로 추적하게 되는 과정에서 많은 흥미로움을 느끼거든요. 또한 서버가 늘어나고, 여러 가지 애플리케이션이 혼재할수록 이런 탐색 방법을 알아두는 것이 큰 도움이 됩니다.


1. 포트 스캔(Nmap)으로 열린 포트 찾기

서비스를 찾아내는 가장 기초적인 도구로 Nmap을 많이 사용합니다.

  • 열린 포트를 스캔하고,
  • 버전 스캔을 통해 해당 포트에서 실행 중인 소프트웨어 정보를 얻을 수 있죠.
# 기본 스캔
nmap <IP_ADDRESS>

# 서비스/버전 스캔
nmap -sV -p- <IP_ADDRESS>
  • -sV: 대상 서비스의 버전 정보를 파악
  • -p-: 0~65535 모든 포트 스캔
  • 80, 443처럼 HTTP 관련 포트만 집중적으로 확인하려면 -p 80,443 같이 적용

저는 평소에 -sV 옵션을 자주 씁니다. “이 웹 서버가 nginx인지, 아파치인지, 어느 버전인지” 정도만 알아도 REST API 서버가 있을 가능성을 추정하기 좋으니까요. 그리고 버전 정보를 통해 취약점이 있을 확률도 파악이 됩니다. 실제로 운영 중인 서버가 “지금도 오래된 아파치 버전을 돌리고 있나?” 하고 확인하는 것만으로도 관리 측면에서 꽤 이점이 많습니다.


2. HTTP 서비스가 열려 있다면, 디렉토리 브루트포싱

HTTP/HTTPS가 열려 있다면, 여기서 웹사이트나 REST API가 돌아갈 수 있습니다. 그런데 API라는 게 대부분 /api, /v1, /docs 등의 엔드포인트를 가지고 있죠. 이걸 알아내기 위해서는 디렉토리 브루트포싱 툴을 사용합니다. 예를 들어 dirb, gobuster, ffuf, dirbuster 등이 대표적이죠.

# ffuf 예시
ffuf -u http://<IP_ADDRESS>/FUZZ -w common-dir.txt
  • FUZZ 자리에 단어 리스트(common-dir.txt)를 대입하며 여러 디렉토리 경로를 시도
  • 예) /api, /admin, /openapi.json 등등
  • 상태 코드가 200이면 해당 경로가 존재한다는 의미

제가 이런 툴들을 좋아하는 이유는, 한 번 명령을 돌려놓으면 자동으로 가능성이 있는 경로들을 탐색해 주기 때문입니다. 수작업으로는 몇몇 경로만 찍어볼 텐데, 이런 스캐너를 사용하면 상당히 많은 경로를 시도할 수 있어요. 특히 REST API 서버를 찾고 싶을 때, /api, /v1, /v2, /rest 같은 키워드를 두루두루 시도하면서 탐색 범위를 넓힐 수 있습니다.

만약 해당 서버가 SwaggerRedoc처럼 API 문서를 자동으로 제공한다면, /swagger, /docs, /api-docs, /openapi.json 같은 경로가 발견될 수 있습니다. 그리고 그 문서를 보면 API 엔드포인트 리스트를 한눈에 정리해서 볼 수 있으니 엄청 편해지죠.


3. Shodan, Censys 같은 보안 검색 엔진 활용

만약 인터넷에 공개되어 있는 서버라면, Shodan이나 Censys 같은 전문 보안 검색 엔진을 활용해 볼 수 있습니다. 저는 이 서비스들이 참 흥미롭다고 생각해요. 전 세계적으로 인터넷에 연결된 다양한 IP와 포트 정보를 색인해서 누구나 검색할 수 있도록 해주거든요. 예를 들어 Shodan에서 다음과 같은 식으로 검색할 수 있습니다.

ip:<IP_ADDRESS>

그러면 이미 스캔된(크롤링된) 결과를 바탕으로, 해당 IP의 열린 포트 목록, SSL 인증서, HTTP 배너 등 여러 정보를 볼 수 있습니다. 원하는 경우에는 특정 웹서버에서 어떤 도메인이 연결돼 있는지도 유추할 수 있죠. 단, 모든 IP가 다 색인돼 있는 것은 아니어서, 100% 확신할 순 없습니다.

그럼에도 불구하고 이런 검색 엔진을 쓸 때마다, “세상에 이렇게나 많은 서버가 연결되어 있고, 저마다 어떤 상태인지 꽤나 자세히 공개적으로 열람이 가능하구나!” 라는 생각이 듭니다. 동시에, 서버 보안이 얼마나 중요한지 체감하게 되기도 합니다.


4. 권한과 윤리적 고려

마지막으로 꼭 짚고 싶은 부분은, 스캔 대상 서버에 대한 권한 문제입니다. 위에서 말한 Nmap, dirbuster, ffuf, Shodan 등은 분명히 강력한 툴이지만, 내가 소유하거나, 혹은 합법적 허가를 받은 서버가 아닐 경우에는 문제의 소지가 큽니다. 포트 스캐닝 자체가 법적 이슈가 될 수도 있기 때문이죠.

제 경험상, 회사 내부 서버이거나 의뢰받은 취약점 점검 범위 안에 있는 서버라면 마음 놓고 시도할 수 있습니다. 그러나 남의 서버나 무작위 IP를 대상으로 스캔하는 건 절대 삼가야 합니다. 정말이지 실제 법적 책임이 뒤따를 수 있으니까요.


마무리

정리하자면, 어떤 IP에서 돌아가는 서비스를 확인하고, REST API 사이트 주소를 알아내기 위해서는 크게 다음 과정을 거칩니다:

  1. Nmap 같은 포트 스캐너로 열린 포트를 확인
  2. HTTP/HTTPS 포트가 열려 있다면, dirbuster·ffuf 등으로 디렉토리 브루트포싱을 돌려 /api, /v1, /docs 등 API 경로를 추적
  3. 공개 서버라면 Shodan 혹은 Censys 검색을 통해 (이미 색인된) 추가 정보를 얻을 수도 있음
  4. 모든 과정은 허가된 범위 내에서만 진행해야 함

어떻게 보면 평범한 네트워크·웹 탐색 기법이지만, 이 기본을 잘 이해하고 있으면 정말 많은 상황에서 유용하게 써먹을 수 있습니다. 게다가 “IP 한 줄”만 가지고도 서버에 대한 꽤 풍부한 정보를 수집해낼 수 있다는 게 매력적인 부분이죠.

앞으로 더 깊이 있는 보안 테스트나 서버 관리 업무를 하게 된다면, 이런 툴들과 방법론에 더욱 익숙해지는 게 좋겠다는 생각이 듭니다. 특히 REST API가 점점 더 중요해지는 시대이니, 그 API 엔드포인트를 어떻게 정확히 찾아내고, 문서를 읽으며 테스트할지에 대한 스킬은 필수라고 할 수 있겠네요.

글이 도움이 되었길 바라며, 혹시 궁금하거나 더 알고 싶은 점이 있다면 언제든 댓글로 남겨주세요!

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다