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

Smap은 shodan.io의 무료 API로 구축된 패시브 포트 스캐너입니다. Nmap과 동일한 명령줄 인수를 받아들이고 동일한 출력을 생성하므로 Nmap을 그대로 대체할 수 있는 도구입니다.
사전 빌드된 바이너리를 여기에서 다운로드하여 바로 사용할 수 있습니다.
go install -v github.com/s0md3v/smap/cmd/smap@latest
혼란스럽거나 뭔가 작동하지 않나요? 더 자세한 지침은 여기를 클릭하세요.
Smap은 AUR에서 smap-git(소스에서 빌드) 및 smap-bin(사전 빌드 바이너리)으로 사용할 수 있습니다.
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으로 스캔 범위를 좁히세요. 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을 사용해야 합니다:
참고:
--nmap을 사용하면 Smap은 대상에 대해nmap을 실행하고 능동 연결을 만듭니다. Shodan의 데이터는 오래되었거나 불완전할 수 있으므로 이를 포트 필터로 사용하면 열린 포트를 놓칠 수 있습니다.