
대상 지정을 위한 활성 호스트 및 URL 목록을 생성하며, MassDNS, Masscan 및 nmap을 자동화하여 도달 불가능한 호스트를 걸러내고 서비스 정보를 수집합니다.
타겟팅을 위한 활성 호스트 및 URL 목록을 생성하여 Massdns, Masscan 및 nmap 사용을 자동화하여 도달 불가능한 호스트를 필터링합니다.
도메인 이름 입력 파일이 주어지면, 이 스크립트는 MassDNS를 자동화하여 확인할 수 없는 호스트를 걸러내고, 그 결과를 Masscan에 전달하여 호스트에 도달 가능한지와 어떤 포트에서 작동 중인지 확인합니다. 그런 다음 스크립트는 추가 타겟팅(예: gobuster 또는 dirsearch와 같은 도구에 전달하거나 HTTP 요청 만들기)에 사용할 전체 URL 목록, 도달 가능한 도메인 이름 목록, 도달 가능한 IP 주소 목록을 생성합니다. 선택적 마지막 단계로, 이 축소된 호스트 목록에 nmap 버전 스캔을 실행하여 이전에 확인된 호스트가 작동 중인지 검증하고 열린 포트에서 서비스 정보를 수집할 수 있습니다.
이 스크립트는 수천 개의 서브도메인이 있는 apex 도메인에서 수집한 서브도메인 열거와 같은 대규모 도메인 집합에 특히 유용합니다. 이러한 대규모 목록의 경우 nmap 스캔은 시간이 너무 오래 걸립니다. 이 스크립트의 목표는 먼저 덜 정확하지만 훨씬 빠른 MassDNS를 사용하여 확인할 수 없는 도메인을 제거함으로써 입력 목록의 크기를 빠르게 줄이는 것입니다. 그런 다음 Masscan이 MassDNS의 출력을 받아 호스트가 도달 가능한지와 어떤 포트에서 작동 중인지 추가로 확인합니다. 스크립트는 이 결과를 구문 분석하여 발견된 활성 호스트 목록을 생성합니다.
이제 호스트 목록은 추가 스캔/테스트에 적합할 정도로 충분히 줄어들어야 합니다. 한 단계 더 나아가고 싶다면 스크립트에 도달 가능한 호스트 목록에 대해 nmap 스캔을 실행하도록 지시할 수 있으며, 이는 호스트 목록이 짧아지면 더 합리적인 시간이 소요됩니다. nmap을 실행한 후 Masscan이 제공한 오탐(false positive)은 필터링됩니다. 원시 nmap 출력은 일반적인 nmap XML 형식으로 저장되며, 버전 탐지로부터의 추가 정보는 SQLite 데이터베이스에 추가됩니다.

nmap 스캔 옵션을 사용하는 경우 이 도구는 이미 nmap이 설치되어 있다고 가정합니다
참고: 설치 스크립트 실행은 이미 MassDNS와 Masscan이 설치되어 있지 않거나 이 리포지토리 내에 다시 설치하려는 경우에만 필요합니다. 스크립트를 실행하지 않으면 인수로 각 실행 파일의 경로를 제공할 수 있습니다. 또한 스크립트는 MassDNS에 포함된 리졸버 목록이 {massDNS_directory}/lists/resolvers.txt에 위치할 것으로 예상합니다.
git clone https://github.com/allyomalley/LiveTargetsFinder.git
cd LiveTargetsFinder
sudo pip3 install -r requirements.txt
(선택 사항)
chmod +x install_deps.sh
./install_deps.sh
이미 MassDNS와 Masscan이 설치되어 있지 않고 직접 설치하는 것을 선호한다면, 문서의 지침을 참조하십시오:
이 스크립트는 macOS와 Linux에서만 테스트했습니다. Python 스크립트 자체는 Windows에서도 작동해야 하지만, MassDNS와 Masscan의 설치는 다를 수 있습니다.
python3 liveTargetsFinder.py [domainList] [options]
liveTargetsFinder.py 내에 하드코딩되어 있습니다. 필요에 따라 편집하십시오(87번 및 97번 라인).-s(--hashmap-size)는 특히 성능상의 이유로 선택되었습니다. 대부분 이 값을 증가시킬 수 있을 것입니다.-c 25 -o J -r ./massdns/lists/resolvers.txt -s 100 -w massdnsOutput -t A targetHosts--max-rate 인수입니다. 이 값을 조정하고 싶을 것입니다.
-iL ipFile -oD masscanOutput --open-only --max-rate 5000 -p80,443 --max-retries 10--script http-server-header.nse,http-devframework.nse,http-headers -sV -T4 -p80,443 -oX {output.xml}설치 스크립트를 실행한 경우:
python3 liveTargetsFinder.py --target-list victim_domains.txt
설치 스크립트를 실행하지 않은 경우:
python3 liveTargetsFinder.py --target-list victim_domains.txt --massdns-path ../massdns/bin/massdns --masscan-path ../masscan/bin/masscan
nmap 스캔을 수행하고 기본 DB 경로(liveTargetsFinder.sqlite3)에 쓰거나 추가:
python3 liveTargetsFinder.py --target-list victim_domains.txt --nmap
nmap 스캔을 수행하고 지정된 데이터베이스에 쓰거나 추가:
python3 liveTargetsFinder.py --target-list victim_domains.txt --nmap --db-path serviceinfo_victim.sqlite3
입력: victimDomains.txt
| 플래그 | 설명 | 기본값 | 필수 |
|---|
--target-list | 도메인 목록이 포함된 입력 파일 (예: google.com) | 예 | |
--massdns-path | MassDNS 실행 파일 경로 (기본값이 아닌 경우) | ./massdns/bin/massdns | 아니요 |
--masscan-path | Masscan 실행 파일 경로 (기본값이 아닌 경우) | ./masscan/bin/masscan | 아니요 |
--nmap | 발견된 활성 호스트에 대해 nmap 버전 탐지 스캔 실행 | 비활성화됨 | 아니요 |
--db-path | --nmap 옵션을 사용할 경우 추가할 데이터베이스 경로 제공 (존재하지 않으면 생성됨) | output/liveTargetsFinder.sqlite3 | 아니요 |
| 파일 | 설명 | 예시 |
|---|
| output/victimDomains_targetUrls.txt | 도달 가능한 활성 URL 목록 | https://github.com, http://github.com |
| output/victimDomains_domains_alive.txt | 활성 도메인 이름 목록 | github.com, google.com |
| output/victimDomains_ips_alive.txt | 활성 IP 주소 목록 | 10.1.0.200, 52.3.1.166 |
| 제공되거나 기본 DB 경로 | 활성 호스트 및 실행 중인 서비스 정보를 저장하는 SQLite 데이터베이스 | |
| output/victimDomains_massdns.txt | MassDNS의 원시 출력 (ndjson 형식) | |
| output/victimDomains_masscan.txt | Masscan의 원시 출력 (ndjson 형식) | |
| output/victimDomains_nmap.txt | nmap의 원시 출력 (XML 형식) |