소개
이 랩에서는 강력한 네트워크 스캔 도구인 Nmap 을 사용하여 네트워크에서 실행 중인 서비스를 발견하고 분석하는 방법을 배우게 됩니다. Nmap 은 네트워크 관리자와 보안 전문가에게 필수적인 도구로, 네트워크 검색 및 보안 감사에 일반적으로 사용됩니다.
습득하게 될 기술에는 기본적인 웹 서버 설정, Nmap 을 사용한 서비스 스캔 및 탐지, 스캔 결과 해석, 그리고 발견 사항을 효과적으로 문서화하는 것이 포함됩니다. 이러한 지식은 네트워크 보안 평가에 기본적이며, 실제 시나리오에서 잠재적인 시스템 취약점을 식별하는 데 널리 적용됩니다.
웹 서버 설정
이 단계에서는 로컬 머신에 기본적인 웹 서버를 설정합니다. 왜 이렇게 해야 할까요? 이 웹 서버는 나중에 Nmap 스캔 실습의 대상 역할을 할 것입니다. Nmap 은 네트워크 탐색 및 보안 감사를 위한 강력한 도구이며, 스캔할 로컬 웹 서버를 갖는 것은 안전하고 제어된 환경에서 Nmap 의 작동 방식을 이해하는 데 도움이 됩니다.
웹 서버란 무엇인가?
웹 서버는 웹에서 중요한 역할을 하는 소프트웨어입니다. 브라우저에서 웹사이트를 열면 웹 서버가 HTML 페이지, 이미지 또는 비디오와 같은 웹 콘텐츠를 요청에 응답하여 브라우저로 전송합니다. 이 랩에서는 Python 의 내장 기능을 활용하여 간단한 HTTP 서버를 만들 것입니다. HTTP (Hypertext Transfer Protocol) 는 웹에서 데이터 통신의 기반이며, Python 의 내장 서버를 사용하는 것은 웹 서버를 빠르고 쉽게 시작하는 방법입니다.
웹 디렉토리 및 콘텐츠 생성
먼저 터미널을 열어야 합니다. 터미널은 명령을 입력하여 컴퓨터의 운영 체제와 상호 작용할 수 있는 텍스트 기반 인터페이스입니다. 터미널을 열었으면 프로젝트 디렉토리로 이동합니다. 터미널에서 탐색하는 것은 컴퓨터의 파일 시스템을 이동하는 것을 의미합니다. 다음 명령을 사용하여 프로젝트 디렉토리로 이동합니다.
cd /home/labex/project이제 웹 서버 콘텐츠를 위한 새 디렉토리를 만들 것입니다. 디렉토리는 컴퓨터에서 파일을 저장할 수 있는 폴더와 같습니다.
mkdir명령을 사용하여 새 디렉토리를 만듭니다. 여기서-p플래그는 중요합니다. 상위 디렉토리 (생성하려는 디렉토리를 포함하는 디렉토리) 가 존재하지 않는 경우 자동으로 생성됩니다. 다음 명령을 실행합니다.mkdir -p services디렉토리를 만든 후에는 해당 디렉토리로 이동해야 합니다. 데스크톱에서 폴더를 여는 것처럼
cd명령을 사용하여 새로 생성된 디렉토리에 들어갑니다.cd services다음으로 간단한 HTML 파일을 만들 것입니다. HTML (Hypertext Markup Language) 은 웹 페이지를 만드는 표준 언어입니다. 이 파일은 웹 서버에서 제공됩니다. 다음 명령은
index.html이라는 파일을 만들고 그 안에 "Welcome to the mini fortress" 텍스트를 넣습니다.echo "Welcome to the mini fortress" > index.html마지막으로, 포트 8000 에서 Python HTTP 서버를 시작합니다. 포트는 네트워크 트래픽이 들어오거나 나갈 수 있는 컴퓨터의 문과 같습니다. 포트 8000 은 웹 서버 테스트에 일반적으로 사용되는 포트입니다. 다음 명령은 Python 의 내장 HTTP 서버 모듈을 사용하여 웹 서버를 시작합니다.
python3 -m http.server 8000이 명령을 실행하면 다음과 유사한 출력이 표시됩니다.
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...이는 웹 서버가 실행 중이며 요청을 처리할 준비가 되었음을 의미합니다.
웹 서버 확인
웹 서버가 올바르게 실행되고 있는지 확인하려면 새 터미널 창을 열어야 합니다. 첫 번째 터미널 창은 현재 웹 서버 프로세스에 의해 사용되고 있으므로 계속 실행 상태로 유지합니다. 닫으면 웹 서버가 중지됩니다.
새 터미널 창을 엽니다.
이제
curl명령을 사용하여 웹 서버에 액세스합니다.curl은 서버에서 데이터를 전송하거나 가져올 수 있는 명령줄 도구입니다. 다음 명령을 실행합니다.curl http://localhost:8000모든 것이 제대로 작동하면 메시지
Welcome to the mini fortress가 표시됩니다.이는 웹 서버가 실행 중이며 액세스할 수 있음을 확인합니다.
방금 설정한 웹 서버는 첫 번째 터미널 창에서 계속 실행됩니다. 이 창을 열어두고 다음 단계를 위해 서버를 실행 상태로 유지하십시오. 모든 추가 명령은 방금 연 새 터미널 창에서 실행해야 합니다.
Nmap 을 사용한 서비스 스캔
이 단계에서는 Nmap 이라는 강력한 도구를 사용하여 이전 단계에서 설정한 웹 서버 서비스를 스캔하고 감지합니다. 서비스 스캔은 사이버 보안의 중요한 부분입니다. 이는 네트워크에서 어떤 서비스가 실행 중인지, 그리고 공격에 취약할 수 있는지 이해하는 데 도움이 되기 때문입니다.
Nmap 이해
Nmap 은 Network Mapper 의 약자로, 무료 오픈 소스 유틸리티입니다. 네트워크 검색 및 보안 감사에 널리 사용됩니다. Nmap 은 네트워크의 대상 호스트에 원시 IP 패킷을 전송하여 작동합니다. 수신하는 응답을 기반으로 다음과 같은 몇 가지 중요한 사항을 파악할 수 있습니다.
- 첫째, 네트워크에서 어떤 호스트를 사용할 수 있는지 알려줍니다. 호스트는 컴퓨터, 서버 또는 네트워크에 연결된 모든 장치가 될 수 있습니다.
- 둘째, 해당 호스트가 제공하는 서비스를 결정할 수 있습니다. 서비스에는 웹 서버, 이메일 서버 또는 파일 공유 서비스 등이 포함될 수 있습니다.
- 셋째, 호스트가 실행 중인 운영 체제를 식별할 수도 있습니다. 이는 서로 다른 운영 체제가 서로 다른 보안 취약점을 가질 수 있기 때문에 유용합니다.
- 그리고 Nmap 은 네트워크의 호스트에 대해 다른 많은 특성을 발견할 수 있습니다.
기본 서비스 스캔 실행
스캔을 시작하기 전에 프로젝트 디렉토리에 있는지 확인해야 합니다. 프로젝트 디렉토리는 이 실험과 관련된 모든 파일이 저장되는 곳입니다. 프로젝트 디렉토리로 이동하려면 터미널에서
cd명령을 사용합니다.cd /home/labex/project이제 로컬 웹 서버에서 Nmap 서비스 스캔을 실행합니다. 로컬 웹 서버는 자체 머신에서 실행 중이며, Nmap 을 사용하여 포트 8000 에서 어떤 서비스가 실행 중인지 알아낼 것입니다.
sudo nmap -sV localhost -p 8000이 명령을 분석하여 각 부분이 무엇을 하는지 이해해 보겠습니다.
sudo: 이 옵션은 관리자 권한으로 명령을 실행하는 데 사용됩니다. 시스템의 일부 작업에는 관리자 권한이 필요하며, Nmap 은 적절한 스캔을 수행하기 위해 이러한 권한이 필요할 수 있습니다.nmap: 이것은 우리가 이야기해 온 네트워크 매핑 도구입니다. 스캔을 수행하는 데 사용하는 주요 명령입니다.-sV: 이 옵션은 버전 감지를 활성화합니다. Nmap 이 대상 포트에서 어떤 특정 서비스가 실행 중인지 식별하는 데 도움이 됩니다.localhost: 이것은 스캔하려는 대상입니다. 이 경우, 로컬 머신입니다.-p 8000: 이 옵션은 포트 8000 을 스캔하려는 것을 지정합니다. 포트는 컴퓨터의 문과 같으며, 서로 다른 서비스는 서로 다른 포트를 사용하여 통신합니다.
명령을 실행한 후 다음과 유사한 출력이 표시됩니다.
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:00 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.000094s latency). PORT STATE SERVICE VERSION 8000/tcp open http Python/3.10 http.server Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 6.31 seconds출력은 Nmap 이 포트 8000 에서 HTTP 서비스를 감지했음을 보여줍니다. 특히, 서비스가 Python 3.10 HTTP 서버로 식별되었습니다.
추가 분석을 위해 스캔 결과를 기록하려면 출력을 파일에 저장합니다. 이렇게 하면 나중에 결과를 참조하고 잠재적인 보안 문제를 확인할 수 있습니다.
sudo nmap -sV localhost -p 8000 > /home/labex/project/nmap_service_detection.txt이 명령은 이전과 동일한 Nmap 스캔을 실행하지만, 출력을 터미널에 표시하는 대신
nmap_service_detection.txt라는 파일로 리디렉션합니다.이제 저장된 파일의 내용을 보고 결과가 있는지 확인해 보겠습니다.
cat명령을 사용하여 터미널에서 파일의 내용을 표시합니다.cat /home/labex/project/nmap_service_detection.txt표시되는 내용은 이전에 Nmap 명령을 직접 실행했을 때 보았던 출력과 일치해야 합니다.
Nmap 출력 이해
Nmap 스캔의 출력을 자세히 살펴보고 각 부분이 무엇을 의미하는지 이해해 보겠습니다.
- Starting Nmap 7.80: 이 줄은 사용 중인 Nmap 의 버전을 나타냅니다. Nmap 의 서로 다른 버전은 서로 다른 기능과 성능을 가질 수 있습니다.
- Host is up: 이는 대상 (이 경우 로컬 머신) 이 네트워크 요청에 응답하고 있음을 보여줍니다. 호스트가 다운된 경우 Nmap 은 호스트에서 정보를 얻을 수 없습니다.
- PORT: 이 열은 스캔된 포트 번호를 나열합니다. 이 경우 포트 8000 입니다.
- STATE: 이는 포트의 상태를 보여줍니다. 열려 있음, 닫힘 또는 필터링됨일 수 있습니다. 열린 포트는 서비스가 해당 포트에서 수신 대기하고 연결을 수락하고 있음을 의미합니다.
- SERVICE: 이는 포트에서 실행 중인 서비스를 식별합니다. 출력에서는 HTTP 서비스입니다.
- VERSION: 이는 서비스 버전에 대한 세부 정보를 보여줍니다. 여기서는 HTTP 서비스가 Python 3.10 http.server 임을 알려줍니다.
이 정보는 보안 평가에 매우 중요합니다. 네트워크에 노출된 서비스가 무엇인지 알면 알려진 취약점이 있는지 확인할 수 있습니다. 이러한 서비스가 제대로 보호되지 않으면 공격자가 악용할 수 있습니다.
발견 사항 문서화
이 단계에서는 Nmap 을 사용하여 발견한 서비스 정보를 문서화하는 데 집중할 것입니다. 문서화는 보안 작업 세계에서 지도와 같습니다. 스캔 중에 발견한 모든 중요한 세부 정보를 기록할 수 있기 때문에 매우 중요합니다. 이 기록은 나중에 분석, 시간 경과에 따른 변경 사항 확인 또는 특정 규정 준수 요구 사항 충족을 위해 참조할 수 있습니다.
문서화의 중요성
전문적인 보안 평가 및 네트워크 감사에서 상세한 문서화는 다음과 같은 몇 가지 주요 역할을 합니다.
- 시스템 및 서비스의 스냅샷: 특정 시점에 어떤 시스템과 서비스가 있었는지에 대한 기록을 생성합니다. 이는 주어진 순간에 네트워크의 상태를 이해하는 데 유용합니다.
- 변경 사항 추적: 네트워크 인프라의 모든 변경 사항을 추적하는 데 도움이 됩니다. 서로 다른 시점의 문서를 비교하여 새로운 서비스, 제거된 시스템 또는 기타 변경 사항을 쉽게 파악할 수 있습니다.
- 규정 준수 증거: 다양한 규정 및 표준에서 요구하는 적절한 보안 검사를 수행했음을 증명합니다.
- 개선 계획: 보안 개선을 계획할 때 참조 자료 역할을 합니다. 문서화된 결과를 살펴보고 주의가 필요한 영역을 식별할 수 있습니다.
문서 파일 생성
1 단계: 프로젝트 디렉토리로 이동
먼저 프로젝트 디렉토리에 있는지 확인해야 합니다. 여기에서 문서 파일을 만들고 저장합니다. 이렇게 하려면 "change directory"의 약자인 cd 명령을 사용합니다.
cd /home/labex/project
2 단계: 새 파일 생성
이제 발견 사항을 문서화할 새 파일을 만들 것입니다. touch 명령을 사용합니다. 파일이 존재하지 않으면 touch는 지정된 이름으로 빈 파일을 생성합니다.
touch nmap_findings.txt
3 단계: 설명 헤더 추가
다음으로 문서 파일에 설명 헤더를 추가합니다. 이 헤더는 추가하려는 스캔 결과에 대한 몇 가지 컨텍스트를 제공합니다. echo 명령을 사용하여 텍스트를 출력하고 >> 연산자를 사용하여 파일에 추가합니다. >> 연산자는 이미 있는 내용을 덮어쓰지 않고 파일의 끝에 텍스트를 추가하기 때문에 중요합니다.
echo "Nmap has detected the following service running on localhost, port 8000:" >> nmap_findings.txt
4 단계: 상세 스캔 결과 추가
이제 상세한 Nmap 스캔 결과를 문서에 추가합니다. Nmap 스캔을 다시 실행하고 >> 연산자를 사용하여 결과를 파일에 추가합니다.
nmap -sV localhost -p 8000 >> nmap_findings.txt
5 단계: 문서 검토
마지막으로 완성된 문서를 검토해 보겠습니다. "concatenate"의 약자인 cat 명령을 사용하여 파일의 내용을 표시합니다.
cat nmap_findings.txt
이제 파일에는 헤더와 전체 Nmap 스캔 결과가 포함되어야 합니다.
Nmap has detected the following service running on localhost, port 8000:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
PORT STATE SERVICE VERSION
8000/tcp open http Python/3.10 http.server
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.31 seconds
보안 문서화 모범 사례
실제 시나리오에서 보안 발견 사항을 문서화할 때 고려해야 할 몇 가지 중요한 요소가 있습니다.
- 평가 날짜 및 시간: 스캔이 언제 수행되었는지 추적하는 데 도움이 되며, 이는 네트워크의 변경 사항 타임라인을 이해하는 데 유용합니다.
- 사용된 도구 (버전 번호 포함): 어떤 도구와 해당 버전을 사용했는지 아는 것은 재현 가능성과 스캔의 기능을 이해하는 데 중요합니다.
- 평가 범위: 테스트된 내용을 명확하게 정의합니다. 여기에는 특정 IP 주소, 포트 또는 시스템이 포함될 수 있습니다.
- 증거와 함께 상세한 발견 사항: 발견 사항에 대한 가능한 한 많은 세부 정보와 이를 뒷받침하는 증거를 제공합니다.
- 잠재적인 보안 영향: 발견 사항을 분석하고 잠재적인 보안 위험 또는 취약점을 식별합니다.
- 개선 권장 사항: 발견 사항을 기반으로 네트워크 보안을 개선하기 위한 단계를 제안합니다.
이 랩에서는 스캔 결과가 포함된 간단한 문서를 만들었지만, 전문적인 상황에서는 문서가 일반적으로 더 포괄적입니다.
요약
이 랩에서는 Nmap 을 사용하여 네트워크 서비스 검색 및 문서화에 필요한 필수 기술을 배웠습니다. 이러한 기술은 전 세계 전문가들이 사용하는 네트워크 보안 평가 실무의 기초입니다.
주요 내용은 기본 웹 서버 설정, Nmap 을 사용하여 실행 중인 서비스 감지, 스캔 결과 해석 및 발견 사항 문서화입니다. 이러한 기술은 네트워크 인벤토리, 보안 평가, 시스템 관리 및 규정 준수 확인과 같은 실제 시나리오에 적용할 수 있습니다. 네트워킹 및 보안 분야에서 발전함에 따라 Nmap 은 매우 유용한 도구가 될 것입니다. 네트워크 검색 기능을 향상시키기 위해 고급 Nmap 기능을 탐색해 보십시오.



