Nmap 을 이용한 SMB 서비스 열거

NmapBeginner
지금 연습하기

소개

이 랩에서는 Nmap 을 사용하여 SMB (Server Message Block) 서비스를 열거하는 방법을 살펴봅니다. SMB 는 네트워크 파일 공유 프로토콜이며, 사용 가능한 공유를 식별하면 대상 시스템에 대한 귀중한 정보를 얻을 수 있습니다. 이를 위해 smb-enum-shares Nmap Scripting Engine (NSE) 스크립트를 사용합니다.

이 랩에서는 Nmap 명령을 실행하여 대상 시스템에서 SMB 공유를 열거하고, 대상 IP 주소 (예: 192.168.1.1 또는 localhost 의 경우 127.0.0.1) 를 지정하며, 사용 가능한 공유, 해당 유형 및 관련 주석을 식별하기 위해 출력을 해석합니다. 또한 상세도 추가, 결과를 파일에 저장하고, 배너 스캔과 출력을 비교하는 방법도 살펴봅니다.

nmap --script smb-enum-shares 192.168.1.1 로 SMB 열거 실행

이 단계에서는 smb-enum-shares 스크립트를 사용하여 대상 시스템에서 SMB 공유를 열거하기 위해 Nmap 을 사용합니다. SMB (Server Message Block) 는 네트워크 파일 공유 프로토콜이며, 공유를 열거하면 사용 가능한 리소스 및 잠재적 취약성과 같은 대상 시스템에 대한 귀중한 정보를 얻을 수 있습니다.

먼저, 사용할 명령어를 이해해 보겠습니다.

  • nmap: 이것은 우리가 사용할 네트워크 매퍼 도구입니다.
  • --script smb-enum-shares: 이것은 Nmap 에게 smb-enum-shares NSE (Nmap Scripting Engine) 스크립트를 사용하도록 지시합니다. 이 스크립트는 SMB 공유를 열거하도록 특별히 설계되었습니다.
  • 192.168.1.1: 이것은 대상 IP 주소입니다. 중요: 이 부분을 스캔하려는 대상 시스템의 실제 IP 주소로 바꿔야 합니다. 특정 대상이 없는 경우 테스트 목적으로 127.0.0.1 (localhost) 를 사용할 수 있지만, 이는 자신의 시스템만 스캔한다는 점을 명심하십시오.

이제 명령을 실행해 보겠습니다. Xfce 터미널을 열고 다음 명령을 입력한 다음 Enter 키를 누르십시오.

nmap --script smb-enum-shares 192.168.1.1

중요: 192.168.1.1을 대상의 실제 IP 주소로 바꾸십시오. 로컬에서 테스트하는 경우 127.0.0.1을 사용할 수 있습니다.

출력은 SMB 공유 열거의 결과를 보여줍니다. 다음과 유사하게 보일 수 있습니다 (정확한 출력은 대상 시스템에 따라 다릅니다).

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00043s latency).
Not shown: 999 filtered ports
PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\192.168.1.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\192.168.1.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\192.168.1.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0

Nmap done: 1 IP address (1 host up) scanned in 2.54 seconds

이 출력은 Nmap 이 대상 시스템에서 발견할 수 있었던 SMB 공유를 보여줍니다. 공유 이름 (예: IPC$, ADMIN$, C$), 유형, 주석 및 플래그를 볼 수 있습니다. 이 정보는 잠재적인 공격 벡터 또는 잘못된 구성을 식별하는 데 유용할 수 있습니다.

nmap --script smb-enum-shares -p 445 127.0.0.1 로 445 포트 스캔

이 단계에서는 SMB 와 일반적으로 관련된 특정 포트인 445 를 스캔하는 데 집중합니다. 포트를 지정함으로써 스캔 범위를 좁히고 잠재적으로 더 빠르게 결과를 얻을 수 있습니다. 이전과 동일한 smb-enum-shares 스크립트를 사용하지만, 이번에는 Nmap 에게 포트 445 만 스캔하도록 지시합니다.

명령어를 분석해 보겠습니다.

  • nmap: 네트워크 매퍼 도구입니다.
  • --script smb-enum-shares: SMB 공유 열거에 사용할 NSE 스크립트를 지정합니다.
  • -p 445: 이 옵션은 Nmap 에게 포트 445 만 스캔하도록 지시합니다. 이 옵션이 없으면 Nmap 은 일반적으로 사용되는 여러 포트를 스캔합니다.
  • 127.0.0.1: 이것은 대상 IP 주소이며, 이 경우 localhost 입니다. 즉, 자체 시스템에서 실행 중인 SMB 서비스를 스캔하고 있습니다.

이제 Xfce 터미널을 열고 다음 명령을 실행합니다.

nmap --script smb-enum-shares -p 445 127.0.0.1

출력은 포트 445 에서 특히 SMB 공유 열거의 결과를 보여줍니다. 다음과 유사하게 보일 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0

Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds

출력이 이전 단계와 유사하지만, 이번에는 포트 445 를 특별히 타겟팅했음을 알 수 있습니다. SMB 가 특정 포트에서 실행 중임을 알고 있고 다른 포트를 불필요하게 스캔하지 않으려는 경우 유용할 수 있습니다.

nmap -v --script smb-enum-shares 192.168.1.1 로 상세 정보 추가

이 단계에서는 Nmap 스캔에 상세 정보를 추가합니다. 상세 정보는 더 자세한 출력을 제공하며, Nmap 이 무엇을 하고 있는지 이해하고 문제를 해결하는 데 도움이 될 수 있습니다. -v 옵션은 상세 수준을 높입니다.

명령어를 살펴보겠습니다.

  • nmap: 네트워크 매퍼 도구입니다.
  • -v: 이 옵션은 상세 수준을 높입니다. -v 옵션을 더 추가하면 (예: -vv) 상세 정보가 더욱 증가합니다.
  • --script smb-enum-shares: SMB 공유 열거에 사용할 NSE 스크립트를 지정합니다.
  • 192.168.1.1: 대상 IP 주소입니다. 대상을 실제 IP 주소로 바꾸는 것을 잊지 마십시오.

이제 Xfce 터미널을 열고 다음 명령을 실행합니다.

nmap -v --script smb-enum-shares 192.168.1.1

중요: 192.168.1.1을 대상의 실제 IP 주소로 바꾸십시오. 로컬에서 테스트하고 SMB 가 활성화되어 있지 않은 경우 출력에서 큰 차이를 보지 못할 수 있습니다.

출력은 이전 스캔보다 더 상세할 것입니다. 스캔 진행 상황, 실행 중인 스크립트 및 발생하는 모든 오류에 대한 자세한 정보를 볼 수 있습니다. 예를 들어 다음과 같은 출력을 볼 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 1 script for scanning.
Initiating Ping Scan at 10:10
Scanning 192.168.1.1 [4 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating Connect Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Discovered open port 445/tcp on 192.168.1.1
Completed Connect Scan at 10:10, 0.12s elapsed (1000 total ports)
Initiating Service scan at 10:10
Scanning 1 service on 192.168.1.1
Completed Service scan at 10:10, 6.41s elapsed (1 service total)
NSE: Starting runlevel 1 (of 1) scan.
NSE: Running script smb-enum-shares on 192.168.1.1.
Nmap scan report for 192.168.1.1
Host is up (0.00038s latency).
Not shown: 999 filtered ports
PORT    STATE SERVICE
445/tcp open  microsoft-ds
Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\192.168.1.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\192.168.1.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\192.168.1.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0

NSE: Script Post-scanning.
Nmap done: 1 IP address (1 host up) scanned in 7.01 seconds

상세 출력은 핑 스캔, DNS 확인, 연결 스캔, 서비스 스캔 및 smb-enum-shares 스크립트 실행을 포함하여 Nmap 스캔의 다양한 단계를 보여줍니다. 이 수준의 세부 정보는 디버깅 및 스캔 프로세스 이해에 매우 중요할 수 있습니다.

nmap --script smb-enum-shares -oN smb.txt 127.0.0.1 로 SMB 결과 저장

이 단계에서는 Nmap 스캔 결과를 파일에 저장하는 방법을 배웁니다. 이는 나중에 분석하거나 다른 사람과 결과를 공유하는 데 유용합니다. -oN 옵션을 사용하여 출력을 사람이 읽을 수 있는 "normal" 형식으로 저장합니다.

명령어를 분석해 보겠습니다.

  • nmap: 네트워크 매퍼 도구입니다.
  • --script smb-enum-shares: SMB 공유 열거에 사용할 NSE 스크립트를 지정합니다.
  • -oN smb.txt: 이 옵션은 Nmap 에게 출력을 smb.txt라는 파일에 normal 형식으로 저장하도록 지시합니다. 파일은 현재 디렉토리인 ~/project에 저장됩니다.
  • 127.0.0.1: 이것은 대상 IP 주소이며, 이 경우 localhost 입니다.

이제 Xfce 터미널을 열고 다음 명령을 실행합니다.

nmap --script smb-enum-shares -oN smb.txt 127.0.0.1

스캔이 완료된 후 터미널에서 출력을 볼 수 없습니다. 대신 결과는 ~/project 디렉토리의 smb.txt 파일에 저장됩니다.

파일이 생성되었고 스캔 결과를 포함하는지 확인하려면 cat 명령을 사용하여 파일의 내용을 표시할 수 있습니다.

cat smb.txt

터미널에 Nmap 스캔 결과가 출력되는 것을 볼 수 있습니다. 출력은 이전 단계에서 본 것과 유사해야 하지만, 이제 파일에도 저장됩니다.

## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023 as: nmap --script smb-enum-shares -oN smb.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0
## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 1.23 seconds

ls -l 명령을 사용하여 파일 크기 및 수정 날짜를 확인할 수도 있습니다.

ls -l smb.txt

이렇게 하면 크기, 수정 날짜 및 권한을 포함하여 smb.txt 파일에 대한 정보가 표시됩니다.

Xfce 터미널에서 SMB 공유 검토

이 단계에서는 이전 단계에서 식별된 SMB 공유를 검토합니다. cat 명령을 사용하여 Nmap 스캔 결과가 포함된 smb.txt 파일의 내용을 봅니다. 그런 다음 출력을 해석하고 잠재적인 보안 취약점을 식별하는 방법을 논의합니다.

먼저 Xfce 터미널을 열고 cat 명령을 사용하여 smb.txt 파일의 내용을 표시합니다.

cat smb.txt

출력에는 식별된 SMB 공유를 포함한 Nmap 스캔 결과가 표시됩니다. 예를 들어 다음과 같은 출력을 볼 수 있습니다.

## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023 as: nmap --script smb-enum-shares -oN smb.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0
## Nmap done at Fri Oct 27 10:20:01 2023 -- 1 IP address (1 host up) scanned in 1.23 seconds

출력을 분석해 보겠습니다.

  • \\127.0.0.1\IPC$: 이는 동일한 머신 또는 네트워크를 통해 프로세스 간의 통신에 사용되는 Inter-Process Communication 공유입니다. 일반적으로 숨겨져 있으며 (STYPE_IPC_HIDDEN) 시스템 기능에 사용됩니다.
  • \\127.0.0.1\ADMIN$: 이는 Windows 시스템 디렉토리에 대한 액세스를 제공하는 관리 공유입니다. 일반적으로 원격 관리를 위해 관리자가 사용합니다.
  • \\127.0.0.1\C$: 이는 C 드라이브의 기본 공유입니다. 관리자가 전체 C 드라이브에 원격으로 액세스할 수 있도록 합니다.

이러한 공유는 종종 Windows 시스템에 존재합니다. 그러나 권한을 검토하고 적절하게 보호되었는지 확인하는 것이 중요합니다. 예를 들어, ADMIN$C$ 공유는 일반적으로 관리자만 액세스할 수 있어야 합니다. 이러한 공유에 권한이 없는 사용자가 액세스할 수 있는 경우 보안 취약점으로 이어질 수 있습니다.

다음 단계에서는 이러한 결과를 배너 스캔과 비교하여 대상 시스템에 대한 자세한 정보를 수집합니다.

Xfce 터미널에서 배너 스캔 결과 비교

이 단계에서는 Nmap 을 사용하여 배너 스캔을 수행하고 이전 단계의 SMB 공유 열거 결과와 비교합니다. 배너 그래빙 (Banner grabbing) 을 통해 대상에서 실행 중인 운영 체제 및 서비스를 식별할 수 있으며, 이는 잠재적인 취약점을 식별하는 데 유용한 정보를 제공할 수 있습니다.

먼저 Nmap 을 사용하여 포트 445 에서 배너 스캔을 수행해 보겠습니다. Xfce 터미널을 열고 다음 명령을 실행합니다.

nmap -p 445 -sV 127.0.0.1

명령어를 분석해 보겠습니다.

  • nmap: 네트워크 매퍼 도구입니다.
  • -p 445: SMB 에 사용되는 포트인 포트 445 를 지정합니다.
  • -sV: 버전 감지를 활성화하여 대상 포트에서 실행 중인 서비스 및 버전 정보를 확인하려고 시도합니다.
  • 127.0.0.1: 이것은 대상 IP 주소이며, 이 경우 localhost 입니다.

명령의 출력은 포트 445 에서 실행 중인 서비스와 해당 버전 정보를 표시합니다. 예를 들어 다음과 같은 출력을 볼 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:25:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).

PORT    STATE SERVICE      VERSION
445/tcp open  microsoft-ds Windows 10 Pro 19042 microsoft-ds

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds

이 예에서 배너 스캔은 대상이 Windows 10 Pro 19042를 실행 중임을 보여줍니다. 이 정보는 이 운영 체제 버전에 특정한 잠재적 취약점을 식별하는 데 사용할 수 있습니다.

이제 이 정보를 이전 단계의 SMB 공유 열거 결과와 비교해 보겠습니다. 이전 단계에서 다음과 같은 SMB 공유를 식별했습니다: IPC$, ADMIN$, C$. 또한 대상이 Windows 10 Pro 19042 를 실행 중임을 알고 있습니다.

이 정보를 결합하여 대상 시스템 및 잠재적 취약점에 대한 보다 완전한 그림을 그리기 시작할 수 있습니다. 예를 들어, SMB 공유와 관련된 Windows 10 Pro 19042 의 알려진 취약점을 조사하고 대상 시스템이 취약한지 확인할 수 있습니다.

이 비교는 노력을 우선시하고 가장 가능성이 높은 공격 벡터에 집중하는 데 도움이 됩니다. 예를 들어, ADMIN$ 공유에 대한 무단 액세스를 허용하는 Windows 10 Pro 19042 의 알려진 취약점을 발견하면 이 취약점을 악용하는 데 노력을 집중할 수 있습니다.

요약

이 Lab 에서는 Nmap 과 smb-enum-shares 스크립트를 사용하여 대상 머신에서 SMB 공유를 열거하는 방법을 살펴보았습니다. SMB 가 네트워크 파일 공유 프로토콜이며, 공유를 열거하면 사용 가능한 리소스 및 잠재적 취약점을 포함하여 대상 시스템에 대한 귀중한 정보를 얻을 수 있다는 것을 배웠습니다. 기본 명령 nmap --script smb-enum-shares <target_ip>를 사용하여 열거를 수행했습니다.

또한 대상 포트 (445) 를 지정하고, -v 플래그로 상세도를 높이고, -oN 옵션을 사용하여 출력을 파일에 저장하는 연습을 했습니다. 마지막으로, Xfce 터미널에서 SMB 공유를 검토하고 결과를 배너 스캔과 비교하여 SMB 서비스에 대한 정보를 수집하는 다양한 방법을 시연했습니다.