Smap es una herramienta escrita en lenguaje Go qye se trata una réplica de Nmap y que utiliza la API gratuita de shodan.io para el escaneo de puertos. Todos los argumentos de la línea de comandos son los mismos que Nmap y toda la salida que proporciona es como NMAP, lo que lo convierte en un reemplazo adecuado para Nmap.
Características:
- Escanea 200 hosts por segundo.
- No requiere ninguna clave de cuenta/api.
- Detección de vulnerabilidades.
- Admite todos los formatos de salida de nmap.
- Huella digital de servicio y versión.
- No hace contacto con los objetivos (reconocimiento pasivo).
Consideraciones previas.
Dado que Smap simplemente obtiene los datos de los puertos existentes de shodan.io, es súper rápido, pero hay algo más. Deberías usar Smap si estas interesado en:
- Detección de vulnerabilidades
- Escaneo de puertos rápido
- Resultados para los puertos más comunes (Top 1237)
- No hay que establecer conexiones con los objetivos.
Y no te importa:
- No poder escanear direcciones IPv6
- Los resultados tienen hasta 7 días de antigüedad
- Algunos falsos negativos.
Instalación:
En primer lugar, instalaremos la herramienta con el siguiente comando:
❯ go install -v github.com/s0md3v/smap/cmd/smap@latest
¿Instalación de smap fallida?
- Descarga de go del sitio web oficial siguiendo los pasos.
- Instalación de smap:
❯ go install -v github.com/s0md3v/smap/cmd/smap@latest
- Verificamos si se ha instalado correctamente introduciendo el comando
smap
en la terminal. - Si nos da algún tipo de error probablemente sea que no tenemos añadido go en el
$PATH
, para ello deberemos añadir el siguiente comando en el archivo de nuestra shell (.bashrc
,.zshrc
, etc). export PATH=$PATH:$HOME/go/bin/
- Reiniciamos y ya debería de funcionar correctamente.
Uso:
Su uso es muy sencillo, como se ha comentado anteriormente, Smap utiliza los comandos de Nmap. Si estás familiarizado con Nmap podrás usar todas sus opciones de forma eficiente.
Si accedemos a la ayuda con el comando smap -h
, nos indicará:
- Sintaxis:
smap <Objetivo>
- Formatos de objetivos admitidos: Nombre de host, dirección IP y CIDR.
- Acepta entrada de listado de objetos separados por saltos de línea con el comando
smap -iL <target_list.txt>
. - Formatos de salida admitidos:
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 seperated by newlines
oS // custom smap format
oJ // json
Ejemplos de uso:
Escaneo normal hacia un nombre de dominio:
❯ smap nmap.scanme.org
Escaneo de tipo SYN con detección de Sistema Operativo a la misma dirección de nmap.scanme.org
pero esta vez a la dirección IP:
❯ smap -sS -O 45.33.32.156
Escaneo con detección de versiones hacia los puertos específicos 80
y 22
:
❯ smap -sV -p 80,22 45.33.32.156
Escaneo con detección de versiones con salida a un fichero “grepeable”:
❯ smap -sV nmap.scanme.org -oG <fichero>
Podemos acceder al contenido del fichero de salida y a continuación le pasamos el comando grep con la opción 80
para que nos devuelva la línea del puerto 80
escaneado anteriormente:
❯ cat <fichero>
❯ grep 80 <fichero>