업데이트로 돌아가기
New releaseAug 16, 2026

Smap v1.0.0-beta

shodan.io 기반의 Nmap 드롭인 대체 도구

공유

Smap 로고

shodan.io 기반 nmap 대안

Smap 데모

Smap은 shodan.io의 무료 API로 구축된 패시브 포트 스캐너입니다. Nmap과 동일한 명령줄 인수를 받아들이고 동일한 출력을 생성하므로 Nmap을 그대로 대체할 수 있는 도구입니다.

기능

  • 초당 200개 호스트 스캔
  • 계정/API 키 불필요
  • 취약점 탐지
  • nmap 출력 형식 지원
  • 서비스 및 버전 핑거프린팅
  • 패시브 모드에서 대상과 접촉하지 않음
  • Shodan이 보고한 포트를 사용한 선택적 nmap 가속

설치

바이너리

사전 빌드된 바이너리를 여기에서 다운로드하여 바로 사용할 수 있습니다.

수동 설치

go install -v github.com/s0md3v/smap/cmd/smap@latest

혼란스럽거나 뭔가 작동하지 않나요? 더 자세한 지침은 여기를 클릭하세요.

AUR 패키지

Smap은 AUR에서 smap-git(소스에서 빌드) 및 smap-bin(사전 빌드 바이너리)으로 사용할 수 있습니다.

Homebrew/Mac

Smap은 Homebrew에서도 사용할 수 있습니다.

brew update
brew install smap

사용법

Smap은 Nmap과 동일한 인수를 사용하지만, 패시브 모드에서는 -p, -h, -V, -o*, -iL, --concurrency, --append-output 이외의 옵션은 무시됩니다. 패시브 포트 발견 후 실제 Nmap 스캔에 Nmap 옵션을 전달하려면 --nmap을 사용하세요. Nmap에 익숙하지 않다면 Smap 사용 방법은 다음과 같습니다.

대상 지정

smap 127.0.0.1 127.0.0.2

새 줄로 구분된 대상 목록을 사용할 수도 있습니다.

smap -iL targets.txt

지원되는 형식

1.1.1.1         // IPv4 address
example.com     // hostname
178.23.56.0/8   // CIDR
1.1.1.1-20      // IPv4 range

출력

Smap은 7가지 출력 형식을 지원하며 -o*와 함께 다음과 같이 사용할 수 있습니다:

smap example.com -oX output.xml

출력을 터미널에 인쇄하려면 파일 이름으로 하이픈(-)을 사용하세요.

지원되는 형식

oX    // nmap's xml format
oG    // nmap's greppable format
oN    // nmap's default format
oA    // output in all 3 formats above at once
oP    // IP:PORT pairs separated by newlines
oS    // custom smap format
oJ    // json

참고: Nmap은 취약점과 태그를 스캔하거나 표시하지 않으므로 해당 데이터는 nmap 형식에서 사용할 수 없습니다. 해당 정보를 보려면 -oS를 사용하세요.

포트 지정

Smap은 기본적으로 이 ~4000개 포트를 스캔합니다. 특정 포트에 대한 결과를 표시하려면 -p 옵션을 사용하세요.

smap -p21-30,80,443 -iL targets.txt

Nmap 가속

--nmap을 사용하여 로컬 nmap으로 스캔 범위를 좁히세요. Smap은 먼저 Shodan이 보고한 포트의 합집합을 수집한 다음, 더 작은 포트 범위로 원래 대상에 대해 Nmap을 한 번 실행합니다.

smap --nmap -Pn -sV --version-light 1.1.1.1

--nmap--concurrency를 제외한 인수는 Nmap에 전달됩니다. Smap은 포트 범위를 Shodan 후보 포트로 대체합니다. -p를 지정하면 먼저 후보를 해당 범위로 제한합니다. Nmap이 스캔과 출력을 직접 처리하므로 Nmap의 옵션과 출력 형식은 정상적으로 동작합니다. -sL-sn과 같은 호스트 전용 작업은 패시브 포트 발견 없이 그대로 전달됩니다.

Smap의 사용자 지정 출력 형식은 패시브 모드 기능입니다. --nmap을 사용하면 출력 옵션은 일반적인 Nmap 의미를 갖습니다. Shodan이 후보 포트를 보고하지 않으면 Nmap은 실행되지 않습니다.

패시브 데이터가 사용 사례에 충분하다면 시간을 절약할 수 있습니다.

동시성 제어

Smap은 Shodan을 너무 공격적으로 호출하지 않도록 기본적으로 3개의 워커를 사용합니다. --concurrency로 변경할 수 있습니다.

smap --concurrency 5 -iL targets.txt

고려 사항

Smap은 shodan.io에서 기존 포트 데이터를 가져오기만 하므로 매우 빠르지만, 고려할 점이 더 있습니다. 다음과 같은 경우 Smap을 사용해야 합니다:

원하는 경우

  • 취약점 탐지
  • 초고속 포트 스캐너
  • 대상에 연결이 이루어지지 않는 스캔

감수할 수 있는 경우

  • IPv6 주소를 스캔할 수 없는 것
  • 최대 7일까지 오래된 결과
  • 패시브 모드에서 드물게 부정확한 소프트웨어 탐지

참고: --nmap을 사용하면 Smap은 대상에 대해 nmap을 실행하고 능동 연결을 만듭니다. Shodan의 데이터는 오래되었거나 불완전할 수 있으므로 이를 포트 필터로 사용하면 열린 포트를 놓칠 수 있습니다.

카테고리