소개
이 랩에서는 dnsenum 도구를 사용하여 DNS 열거를 수행하고 대상 도메인의 인프라에 대한 중요한 정보를 발견하는 방법을 배우게 됩니다. 도구 설치, 적절한 대상 선택, 스캔 실행, 그리고 서브도메인 및 DNS 레코드와 같은 결과 해석을 실습할 것입니다.
이 랩은 도구 설정, 대상 확인 및 명령 실행을 다루면서 체계적인 DNS 정찰에 대한 실질적인 경험을 제공합니다. DNS 데이터 분석을 통해 보안 취약점을 식별하는 데 필요한 필수 기술을 개발하게 됩니다.
dnsenum 설치
이 단계에서는 도메인의 DNS 인프라에 대한 정보를 수집하는 데 사용되는 DNS 열거 유틸리티인 dnsenum 도구를 설치합니다. DNS 열거는 잠재적인 공격 표면을 식별하는 데 도움이 되는 사이버 보안의 기본적인 정찰 기술입니다. dnsenum 도구는 서브도메인, DNS 레코드 (예: A, MX, NS 레코드) 및 대상 도메인의 네트워크 구성에 대한 기타 유용한 정보를 발견하는 프로세스를 자동화합니다.
시작하기 전에, 이 특정 디렉토리 구조를 사용하는 이유를 이해해 봅시다. ~/project 디렉토리는 도구를 정리하기 위해 준비된 깨끗한 작업 공간입니다. 이는 실제 보안 평가에서도 좋은 관행입니다.
먼저, 기본 작업 디렉토리에 있는지 확인합니다.
cd ~/project
다음 명령은 dnsenum이 제대로 작동하는 데 필요한 Perl 및 여러 Perl 모듈을 설치합니다. Perl 은 dnsenum이 작성된 스크립팅 언어이며, 다른 모듈은 네트워킹 및 DNS 기능을 제공합니다.
dnsenum에 필요한 종속성을 설치합니다.sudo apt-get update && sudo apt-get install -y perl libnet-dns-perl libnet-netmask-perl libnet-ip-perl
이제 공식 GitHub 저장소에서 실제 dnsenum 도구를 다운로드합니다. GitHub 는 개발자가 이와 같은 오픈 소스 프로젝트를 공유하는 곳입니다.
공식 저장소에서
dnsenum을 다운로드합니다.git clone https://github.com/fwaeytens/dnsenum.git
다운로드 후, 도구의 파일에 접근하기 위해 dnsenum 디렉토리로 들어가야 합니다. 여기에는 메인 스크립트 dnsenum.pl이 있습니다.
dnsenum디렉토리로 이동합니다.cd dnsenum
마지막으로, 도움말 메뉴를 확인하여 설치가 성공적으로 완료되었는지 확인합니다. 이는 새로운 도구를 사용할 때 중요한 단계입니다. 실제 대상에 대해 실행하기 전에 옵션을 이해해야 합니다.
도움말 메뉴를 확인하여 설치를 확인합니다.
perl dnsenum.pl --help도구의 사용 정보와 사용 가능한 옵션을 볼 수 있습니다. 이 출력은 다양한 유형의 DNS 열거 작업에
dnsenum과 함께 사용할 수 있는 모든 명령과 스위치를 보여줍니다.
대상 도메인 선택
이 단계에서는 DNS 열거를 위한 적절한 대상 도메인을 선택합니다. DNS 열거는 도메인과 관련된 모든 DNS 레코드를 발견하는 프로세스이며, 이를 통해 보안 전문가는 웹사이트의 인프라를 이해할 수 있습니다. 적절한 대상을 선택하는 것은 윤리적인 보안 테스트에 매우 중요합니다. - 우리는 항상 승인된 도메인 또는 example.com 과 같은 특수 테스트 도메인을 사용합니다.
먼저, 올바른 작업 디렉토리에 있는지 확인합니다. 여기에서 모든 DNS 열거 파일을 저장합니다.
cd ~/project/dnsenum이 랩에서는 example.com 을 대상 도메인으로 사용합니다. 이 도메인은 IANA(Internet Assigned Numbers Authority) 에서 문서화 및 테스트를 위해 특별히 예약되어 있어 DNS 열거 기술을 배우기에 완벽합니다. 기억하세요: 실제 보안 평가에서는 항상 도메인을 스캔하기 전에 적절한 권한을 받아야 합니다.
기본적인 DNS 조회를 통해 도메인에 연결할 수 있는지 확인해 보겠습니다. 이 명령은 도메인 이름을 IP 주소로 확인할 수 있는지 확인합니다.
nslookup example.com도메인의 IP 주소를 보여주는 DNS 확인 정보를 볼 수 있습니다. 오류가 발생하면 인터넷 연결을 확인하십시오.
대상 도메인을 저장할 텍스트 파일을 생성합니다. 이 파일은 나중에 dnsenum 에서 사용됩니다.
echo "example.com" > target_domain.txt대상 파일의 내용을 확인하여 올바르게 생성되었는지 확인합니다.
cat target_domain.txt출력은
example.com을 표시해야 합니다. 이 간단한 확인 단계는 열거 프로세스의 후반 단계에서 오류를 방지하는 데 도움이 됩니다.
DNS 열거 실행
이 단계에서는 이전에 설치한 dnsenum 도구를 사용하여 대상 도메인에 대해 DNS 열거를 수행합니다. DNS 열거는 보안 전문가가 서브도메인, DNS 레코드 및 기타 네트워크 정보를 발견하여 도메인의 디지털 인프라를 매핑하는 데 도움이 되는 기본적인 정찰 기술입니다.
먼저, 도구가 있는 dnsenum 디렉토리로 이동합니다. 이렇게 하면 필요한 모든 파일이 있는 올바른 위치에서 작업하게 됩니다.
cd ~/project/dnsenum기본 열거를 사용하여 대상 도메인 (example.com) 에 대해 dnsenum 을 실행합니다.
--enum플래그는 도구에 표준 DNS 열거를 수행하도록 지시합니다.perl dnsenum.pl --enum example.com이 기본 스캔은 다음을 포함한 중요한 DNS 정보를 공개합니다.
- 호스트 주소 (도메인을 IP 에 매핑하는 A 레코드)
- 네임 서버 (권한 있는 DNS 서버를 보여주는 NS 레코드)
- 메일 서버 (이메일 인프라에 대한 MX 레코드)
- 무차별 대입 추측을 통한 일반적인 서브도메인
보다 포괄적인 결과를 얻기 위해 추가 매개변수를 사용하여 스캔을 강화합니다. 이 심층 스캔은 대상에 대한 철저한 정보가 필요한 경우 유용합니다.
perl dnsenum.pl --enum -f dns.txt --threads 5 example.com이 고급 명령은 다음과 같습니다.
- 일반적인 명명 패턴을 테스트하기 위해 서브도메인 단어 목록 (dns.txt) 을 사용합니다.
- 스캔 프로세스를 가속화하기 위해 5 개의 병렬 스레드로 실행됩니다.
- 역방향 조회 및 영역 전송 시도를 포함한 철저한 검사를 수행합니다.
다음을 표시하는 출력을 주의 깊게 검토합니다.
- 발견된 서브도메인 (대상 시스템에 대한 잠재적 진입점)
- IP 주소 (서비스가 호스팅되는 위치 표시)
- 다양한 DNS 레코드 유형 (A, MX, NS 등 서비스 구성 공개)
- 영역 전송 시도 (잘못 구성된 DNS 서버 테스트)
서브도메인 및 레코드 검토
이 단계에서는 DNS 열거 결과를 분석하여 서브도메인 및 다양한 DNS 레코드를 식별합니다. DNS 열거는 도메인 네트워크의 구조를 드러내는 중요한 정찰 기술입니다. 이러한 결과를 검토하여 대상 도메인이 서비스를 구성하는 방식을 이해하고 추가 조사를 위한 잠재적 진입점을 식별할 수 있습니다.
먼저, 스캔 데이터가 저장된 dnsenum 결과 디렉토리로 이동합니다.
cd ~/project/dnsenum이 디렉토리에는 이전 DNS 열거 스캔의 출력 파일이 포함되어 있습니다. 도메인에 대한 구조화된 데이터를 포함하는 XML 형식의 출력을 사용합니다.
이전 스캔의 XML 출력 파일을 봅니다.
cat dnsenum_example.com.xml이 명령은 수집된 모든 DNS 정보를 포함하는 원시 XML 데이터를 표시합니다. 이 파일에는 몇 가지 중요한 DNS 레코드 유형이 포함되어 있습니다.
- 호스트 주소 (A 레코드) - 도메인 이름을 IP 주소에 매핑합니다.
- 네임 서버 (NS 레코드) - 도메인에 대한 권한 있는 DNS 서버
- 메일 서버 (MX 레코드) - 이메일 전송을 담당하는 서버
- 발견된 서브도메인 - 기본 도메인 아래의 추가 도메인
대규모 결과 집합으로 작업할 때 가독성을 높이기 위해 특정 레코드 유형을 필터링할 수 있습니다.
grep -E "<host>|<a>" dnsenum_example.com.xml이 grep 명령은 호스트 항목과 해당 IP 주소만 추출하여 어떤 도메인 이름이 어떤 IP 로 확인되는지 쉽게 확인할 수 있도록 합니다.
열거 중에 발견된 서브도메인만 보려면:
grep "<host>" dnsenum_example.com.xml | cut -d'>' -f2 | cut -d'<' -f1이 파이프라인은 먼저 모든 호스트 항목을 찾은 다음 cut 을 사용하여 XML 태그 사이의 도메인 이름만 추출합니다. 서브도메인은 추가 서비스 또는 잠재적으로 취약한 시스템을 드러낼 수 있습니다.
도메인의 DNS 인프라에 중요한 네임 서버를 검토합니다.
grep -A1 "<nameserver>" dnsenum_example.com.xml-A1 플래그는 각 네임 서버 항목과 그 다음 줄을 표시하여 태그와 실제 서버 이름을 모두 제공합니다.
도메인에 대한 이메일 전송을 처리하는 메일 서버를 확인합니다.
grep -A1 "<mx>" dnsenum_example.com.xmlMX 레코드는 메일 서버의 우선 순위와 호스트 이름을 보여줍니다. 이러한 레코드는 민감한 통신을 처리하므로 보안 평가에서 자주 대상이 됩니다.
열거 데이터 저장
이 단계에서는 향후 참조 및 보고를 위해 DNS 열거 결과를 적절하게 저장하고 정리합니다. 적절한 문서는 기록을 유지하고, 결과를 추적하며, 팀 구성원과 결과를 공유하는 데 도움이 되므로 사이버 보안 평가에 필수적입니다.
먼저, dnsenum 출력 파일이 있는 올바른 디렉토리에 있는지 확인합니다. 모든 후속 명령이 이 디렉토리의 파일로 작동하므로 중요합니다.
cd ~/project/dnsenum결과에 대한 타임스탬프가 있는 디렉토리를 만듭니다. 디렉토리 이름에 날짜를 사용하면 여러 스캔을 연대순으로 정리하는 데 도움이 됩니다.
-p플래그는 상위 디렉토리가 없는 경우 생성합니다.mkdir -p results/$(date +%Y-%m-%d)모든 관련 파일을 결과 디렉토리로 복사합니다. 여기서는 dnsenum 의 XML 출력 파일을 정리된 저장 위치로 이동합니다.
cp dnsenum_example.com.xml results/$(date +%Y-%m-%d)/사람이 읽을 수 있는 요약 보고서를 만듭니다. 이 스크립트는 XML 파일에서 주요 정보를 추출하여 간단한 텍스트 보고서로 형식을 지정합니다.
grep명령은 특정 데이터를 필터링하는 반면,cut명령은 XML 태그 사이의 관련 부분만 추출합니다.{ echo "DNS 열거 보고서 - $(date)" echo "==============================" echo -e "\n발견된 서브도메인:" grep "<host>" dnsenum_example.com.xml | cut -d'>' -f2 | cut -d'<' -f1 echo -e "\n네임 서버:" grep -A1 "<nameserver>" dnsenum_example.com.xml | grep "<host>" | cut -d'>' -f2 | cut -d'<' -f1 } > results/$(date +%Y-%m-%d)/report.txt모든 것이 올바르게 복사되었는지 확인하기 위해 저장된 파일을 확인합니다.
ls -l명령은 권한 및 타임스탬프를 포함한 자세한 파일 정보를 표시합니다.ls -l results/$(date +%Y-%m-%d)/간편한 공유를 위해 결과를 압축합니다. tar 명령은 파일을 함께 묶는 반면, gzip 압축 (z 옵션) 은 전송을 위해 파일 크기를 줄입니다.
tar -czvf example.com_enum_results.tar.gz results/$(date +%Y-%m-%d)/
요약
이 랩에서는 사이버 보안 목적으로 dnsenum 도구를 사용하여 DNS 열거를 수행하는 방법을 배웠습니다. 이 과정은 윤리적 고려 사항을 강조하면서 도구 설치, 도메인 연결 확인, 기본 DNS 조회를 수행하는 것을 다루었습니다.
저장소 복제, 디렉토리 탐색, 도움말 메뉴를 통한 설치 확인을 포함한 필수 단계를 연습했습니다. 이 랩에서는 안전한 연습 도메인으로 example.com 을 사용하여 적절한 도구 설정 및 대상 유효성 검사 기술을 시연했습니다.



