Nmap 과 DNS 를 활용한 Kali 정보 수집 실습

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 Kali Linux 를 활용한 정보 수집 (Reconnaissance) 의 핵심인 네트워크 스캐닝과 DNS 쿼리 기술을 학습합니다. 강력한 네트워크 스캐닝 도구인 nmap을 사용하여 대상 시스템의 열린 포트와 서비스를 식별하고, dnsrecon을 통해 DNS 정보를 수집하는 과정을 직접 경험해 보게 됩니다. 초보자를 위해 설계된 이 실습은 독립적인 클라우드 호스트에서 실행되는 안전한 LabEx VM 환경 내에서 단계별 지침을 제공합니다. 여러분은 nmap으로 포트 스캔을 수행하고, 스크립트를 사용하여 서비스를 상세히 조사하며, DNS 레코드를 조회하고 분석을 위해 발견한 내용을 저장하는 법을 익힐 것입니다. 터미널을 열면 Kali Linux 컨테이너의 셸에 자동으로 연결되므로, 별도의 설정 없이 즉시 실습을 시작할 수 있습니다.

이 과정은 학습과 실습을 돕기 위해 단계별 지침을 제공하는 가이드형 실습입니다. 각 단계를 주의 깊게 따라가며 실무 경험을 쌓으세요. 통계에 따르면 이 실습은 초급 수준이며, 87%의 수료율과 학습자들로부터 100%의 긍정적인 평가를 기록하고 있습니다.

Nmap 설치 및 기본 스캔 실행

첫 번째 단계에서는 강력한 네트워크 스캐닝 도구인 nmap을 설치하고 사용하여 대상 시스템의 열린 포트를 식별하는 방법을 배웁니다. 포트 스캐닝은 정보 수집의 기본 기술로, 머신에서 어떤 서비스가 실행 중인지 파악하고 잠재적인 취약점을 발견하는 데 도움을 줍니다. 이 단계는 초보자를 위해 세부적인 내용까지 안내하도록 설계되었습니다.

LabEx VM 환경에서 터미널을 열면 Kali Linux 컨테이너의 셸에 자동으로 연결됩니다. 컨테이너를 수동으로 시작하거나 셸에 진입할 필요가 없으며, 모든 환경이 이미 준비되어 있습니다.

시작하기 전에 nmap이 무엇인지 이해해 봅시다. Network Mapper 의 약자인 nmap은 패킷을 보내고 응답을 분석하여 네트워크상의 호스트와 서비스를 탐색하는 도구입니다. 열린 포트는 대개 웹 서버나 SSH 와 같이 실행 중인 서비스를 나타내며, 이는 추가 분석을 위한 진입점이 될 수 있습니다.

이제 nmap을 설치하고 기본 스캔을 수행해 보겠습니다. 다음 지침을 주의 깊게 따라주세요.

  1. 먼저, 최신 버전의 nmap을 설치할 수 있도록 패키지 목록을 업데이트합니다. 터미널에 다음 명령어를 입력하고 Enter 키를 누르세요.

    apt update

    이 명령어는 사용 가능한 패키지 목록을 갱신합니다. 완료까지 몇 초 정도 걸릴 수 있으며, 업데이트 과정이 화면에 표시됩니다.

  2. 다음으로, 아래 명령어를 입력하여 nmap을 설치합니다.

    apt install -y nmap

    -y 플래그는 확인 메시지 없이 자동으로 설치를 승인합니다. 설치가 완료될 때까지 잠시 기다려 주세요. 설치 진행 상황이 화면에 나타납니다.

  3. nmap 설치가 완료되면, 연습하기에 안전한 대상인 localhost(현재 사용 중인 컨테이너, IP 주소 127.0.0.1) 를 대상으로 기본 스캔을 실행해 봅니다. 다음 명령어를 입력하세요.

    nmap localhost

    이 명령어는 localhost에서 가장 흔히 사용되는 포트들을 스캔합니다. 잠시 후 다음과 유사한 결과가 출력됩니다 (실제 내용은 다를 수 있습니다).

    Starting Nmap 7.91 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00010s latency).
    Not shown: 997 closed ports
    PORT     STATE SERVICE
    80/tcp   open  http
    ...
    Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

    출력 결과에서 Host is up은 대상에 접근 가능함을 확인해 줍니다. 표에는 열린 포트, 상태 (open은 접근 가능함을 의미), 그리고 관련 서비스 (예: 80 번 포트의 http) 가 나열됩니다. 이 정보는 시스템에서 어떤 서비스가 구동 중인지 이해하는 데 도움을 줍니다.

이 단계를 통해 nmap을 설치하고 기본적인 포트 스캐닝을 수행하는 방법을 익혔습니다. 안전한 대상을 통해 열린 포트를 식별함으로써 정보 수집의 첫걸음을 뗐습니다. 다음 단계에서는 스캔 결과를 나중에 분석할 수 있도록 저장하는 방법을 알아보겠습니다. 다음으로 넘어가기 전에 nmap 명령어 실행에 익숙해졌는지 확인하세요.

Nmap 스캔 결과를 파일로 저장하기

nmap으로 기본 스캔을 수행해 보았으니, 이제 나중에 참고할 수 있도록 스캔 결과를 파일로 저장하는 방법을 배워보겠습니다. 결과를 저장하는 것은 정보 수집에서 필수적인 기술로, 발견한 내용을 문서화하고 스캔을 다시 실행할 필요 없이 나중에 분석할 수 있게 해줍니다. 이 단계는 이전 단계와 직접 연결되므로, 계속하기 전에 기본 nmap 스캔을 완료했는지 확인하세요.

Linux 의 출력 리다이렉션 (Output redirection) 기능을 사용하면 명령어 결과를 터미널에 표시하는 대신 파일에 저장할 수 있습니다. > 기호를 사용하면 출력을 지정된 파일에 기록하며, 파일이 이미 존재할 경우 내용을 덮어씁니다. 결과는 기본 작업 영역인 Kali Linux 컨테이너의 /root 디렉토리에 저장하겠습니다.

다음 지침에 따라 nmap 스캔 결과를 저장해 보세요.

  1. localhost에 대해 다시 nmap 스캔을 수행하고, 그 결과를 /root 디렉토리의 nmap_scan.txt 파일로 리다이렉션합니다. 터미널에 다음 명령어를 입력하세요.

    nmap localhost > /root/nmap_scan.txt

    > 기호가 nmap localhost 명령어의 출력을 /root/nmap_scan.txt 파일로 보냅니다. 결과가 파일에 저장되기 때문에 터미널에는 아무것도 표시되지 않습니다. 스캔이 완료될 때까지 몇 초간 기다립니다.

  2. 출력이 성공적으로 저장되었는지 확인하기 위해 다음 명령어를 입력하여 파일 내용을 확인합니다.

    cat /root/nmap_scan.txt

    다음과 유사한 내용이 출력되어야 합니다.

    Starting Nmap 7.91 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00010s latency).
    Not shown: 997 closed ports
    PORT     STATE SERVICE
    80/tcp   open  http
    ...
    Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

    이를 통해 스캔 결과가 /root/nmap_scan.txt에 성공적으로 저장되었음을 확인할 수 있습니다. 출력을 파일로 저장하는 것은 정보 수집 작업 중에 발견한 사항들을 체계적으로 기록하는 실용적인 방법입니다.

이 단계에서는 문서화를 위해 nmap 출력을 파일로 리다이렉션하는 방법을 배웠습니다. 이 기술은 다음 단계에서 더 고급 스캔 기법을 다룰 때 유용하게 쓰일 것입니다. 다음으로 넘어가기 전에 파일에 저장된 결과를 확인했는지 다시 한번 점검하세요.

Nmap 스크립트를 이용한 서비스 열거

기본 스캐닝 기술을 바탕으로, 이번 단계에서는 nmap 스크립트를 사용하여 열린 포트에서 실행 중인 서비스에 대한 상세 정보를 수집하는 서비스 열거 (Service Enumeration) 를 소개합니다. 서비스 열거는 정보 수집의 핵심적인 부분으로, 알려진 취약점이 있을 수 있는 특정 서비스 버전을 식별하는 데 도움을 줍니다. 이 단계는 nmap이 설치되어 있고 이전 스캔들을 완료했다고 가정합니다.

서비스 열거는 단순히 열린 포트를 찾는 것을 넘어, 해당 포트에서 실행 중인 정확한 소프트웨어와 버전을 파악하는 것을 목표로 합니다. nmap은 NSE(Nmap Scripting Engine) 라는 스크립팅 엔진을 제공하며, 여기에는 서비스 상세 정보와 잠재적인 문제를 탐지하기 위한 사전 제작된 스크립트들이 포함되어 있습니다. 이번 단계에서는 버전 탐지를 위해 -sV 플래그를 사용합니다.

다음 지침에 따라 localhost의 서비스를 열거해 보겠습니다.

  1. localhost에 대해 버전 탐지 기능을 포함한 nmap 스캔을 실행합니다. 터미널에 다음 명령어를 입력하세요.

    nmap -sV localhost

    -sV 플래그는 nmap이 열린 포트를 조사하여 상세한 서비스 및 버전 정보를 가져오도록 지시합니다. 스캔이 완료될 때까지 기다리세요. 기본 스캔보다 몇 초 더 걸릴 수 있습니다. 다음과 유사한 결과가 출력됩니다.

    Starting Nmap 7.91 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00010s latency).
    Not shown: 997 closed ports
    PORT     STATE SERVICE VERSION
    80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
    ...
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

    출력 결과에서 80 번 포트에서 실행 중인 서비스의 버전 (예: Apache httpd 2.4.41) 을 확인할 수 있습니다. 특정 버전에는 알려진 취약점이 있을 수 있으므로 이 정보는 매우 가치가 높습니다.

  2. 이 버전 탐지 스캔 결과를 /root 디렉토리의 service_scan.txt 파일에 저장합니다. 다음 명령어를 입력하세요.

    nmap -sV localhost > /root/service_scan.txt

    이전과 마찬가지로 > 기호가 출력을 지정된 파일로 리다이렉션합니다.

  3. 파일 내용을 확인하여 출력이 잘 저장되었는지 검토합니다.

    cat /root/service_scan.txt

    위에서 보았던 상세한 결과가 파일에 그대로 저장되어 있는 것을 확인할 수 있습니다.

이 단계를 통해 nmap을 사용하여 서비스 열거를 수행하고 대상 시스템에 대한 더 깊은 통찰력을 얻는 방법을 배웠습니다. 다음 단계에서는 다른 도구를 사용하여 DNS 정보 수집을 탐구해 보겠습니다. 버전 탐지 스캔을 실행하고 결과를 저장하는 방법을 완전히 이해했는지 확인한 후 이동하세요.

dnsrecon 설치 및 DNS 쿼리 실행

이번 단계에서는 도메인에 대한 DNS 정보를 수집하는 도구인 dnsrecon을 사용하여 DNS 정보 수집으로 초점을 옮겨보겠습니다. DNS 열거는 서브도메인, 메일 서버 및 기타 인프라 세부 정보를 식별하는 데 도움을 주며, 이는 대상의 온라인 자산을 파악하는 데 매우 중요합니다. 이 단계는 초보자를 위해 설계되었으며 Kali Linux 컨테이너 셸에서 작업한다고 가정합니다.

DNS(도메인 네임 시스템) 는 example.com과 같은 도메인 이름을 컴퓨터가 통신에 사용하는 IP 주소로 변환합니다. DNS 레코드에는 호스트의 IP 주소 (A 레코드), 메일 서버 (MX 레코드) 등과 같은 정보가 포함됩니다. dnsrecon은 이러한 레코드를 조회하여 도메인 설정에 대한 세부 정보를 찾아내는 도구입니다. 이 실습에서는 연습을 위한 안전한 대상으로 example.com을 사용합니다.

다음 지침에 따라 dnsrecon을 설치하고 사용해 보세요.

  1. 최신 버전의 dnsrecon을 설치할 수 있도록 패키지 목록을 업데이트합니다.

    apt update

    패키지 목록이 갱신될 때까지 기다립니다.

  2. 다음 명령어를 입력하여 dnsrecon을 설치합니다.

    apt install -y dnsrecon

    -y 플래그는 설치를 자동으로 승인합니다. 설치가 완료될 때까지 잠시 기다려 주세요.

  3. 설치가 완료되면 example.com에 대해 기본적인 DNS 열거를 실행합니다.

    dnsrecon -d example.com

    -d 옵션은 조회할 도메인을 지정합니다. 명령어를 실행하면 다음과 유사한 결과가 나타납니다.

    [*] Performing General Enumeration of Domain: example.com
    [*] DNSSEC is not configured for example.com
    [*] SOA ns.icann.org 199.4.138.53
    [*] NS ns.icann.org 199.4.138.53
    [*] A example.com 93.184.216.34
    [*] AAAA example.com 2606:2800:220:1:248:1893:25c8:1946
    [*] MX example.com 0 .
    [*] TXT example.com "v=spf1 -all"
    [*] Enumeration Complete.

    이 출력은 example.com의 다양한 DNS 레코드를 보여주며 구성에 대한 통찰력을 제공합니다.

    • SOA (Start of Authority): 영역 (Zone) 에 대한 관리 정보를 포함합니다.
    • NS (Name Server): 도메인에 대해 권한이 있는 서버 목록을 보여줍니다.
    • A (Address): 도메인 이름을 IPv4 주소로 매핑합니다.
    • AAAA (IPv6 Address): 도메인 이름을 IPv6 주소로 매핑합니다.
    • MX (Mail Exchanger): 도메인의 이메일 수신을 담당하는 메일 서버를 지정합니다.
    • TXT (Text): 임의의 텍스트를 포함하며, 여기서는 SPF(v=spf1 -all) 와 같은 인증 목적으로 사용되는 경우가 많습니다.
  4. DNS 열거 결과를 /root 디렉토리의 dns_results.txt 파일에 저장합니다.

    dnsrecon -d example.com > /root/dns_results.txt

    > 기호를 사용하여 출력을 파일로 저장합니다.

  5. 파일 내용을 확인하여 결과가 저장되었는지 확인합니다.

    cat /root/dns_results.txt

    방금 확인한 DNS 열거 결과가 파일에 저장되어 있어야 합니다.

이 단계를 통해 dnsrecon을 사용한 DNS 정보 수집 방법을 익히고 중요한 도메인 정보를 수집해 보았습니다. 다음 단계에서는 지금까지 발견한 모든 내용을 하나의 요약 파일로 결합해 보겠습니다. 저장된 DNS 결과를 확인한 후 다음으로 진행하세요.

요약

이 실습에서는 Kali Linux 도구들을 사용하여 대상 시스템에 대한 정보를 수집하는 필수적인 정보 수집 기술을 학습했습니다. 먼저 nmap을 설치하고 안전한 로컬 대상 (localhost) 에 대해 기본 포트 스캐닝을 수행하여 열린 포트와 Apache 웹 서버와 같은 관련 서비스를 식별했습니다. 그런 다음 이러한 결과를 문서화를 위해 파일로 저장했습니다. 이어서 nmap 스크립트를 활용한 서비스 열거를 통해 상세한 버전 정보를 파악하는 방법을 탐구했으며, 마지막으로 dnsrecon을 사용한 DNS 정보 수집을 통해 example.com의 도메인 레코드를 조회해 보았습니다. 네트워크 스캐닝과 정보 수집에 관한 이러한 기초 기술은 모의 해킹과 네트워크 보안 감사의 핵심적인 토대가 됩니다.