
조직 네트워크 스캐닝을 위한 빠르고 포괄적인 도구
기능 • 사용법 • 설치 • 사용법 • 기여 • 추가 참고 사항
Domainim은 조직 네트워크 스캔을 위한 빠른 도메인 정찰 도구입니다. 이 도구는 OSINT, 무차별 대입, DNS 해석 등의 기술을 사용하여 조직의 구조에 대한 간략한 개요를 제공하는 것을 목표로 합니다.
현재 기능 (v1.0.1)-

가상 호스트명 열거
역방향 DNS 조회
와일드카드 서브도메인 감지 (무차별 대입용)
기본 TCP 포트 스캔
서브도메인을 입력으로 허용
결과를 JSON 파일로 내보내기
일부 기능은 작업 중입니다. 자세한 내용은 계획된 기능을 참조하세요.
이 프로젝트는 Sublist3r에서 영감을 받았습니다. 포트 스캐너 모듈은 NimScan을 기반으로 크게 작성되었습니다.
이 저장소를 소스에서 빌드할 수 있습니다-
git clone [email protected]:pptx704/domainim
nimble build
./domainim <domain> [--ports=<ports>]
또는 릴리스 페이지에서 바이너리를 다운로드할 수 있습니다. 바이너리는 Debian 기반 시스템에서만 테스트되었음을 유의하세요.
./domainim <domain> [--ports=<ports> | -p:<ports>] [--wordlist=<filename> | l:<filename> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<filename> | -o:<filename>]
<domain>은 열거할 도메인입니다. 서브도메인도 가능합니다.--ports | -p는 스캔할 포트를 문자열로 지정합니다. 다음 중 하나가 될 수 있습니다-
all - 모든 포트 스캔 (1-65535)none - 포트 스캔 건너뛰기 (기본값)t<n> - 상위 n개 포트 스캔 (nmap과 동일). 즉, t100은 상위 100개 포트를 스캔합니다. 최대값은 5000입니다. n이 5000보다 크면 5000으로 설정됩니다.80은 80번 포트를 스캔합니다80-100은 80부터 100번 포트를 스캔합니다80,443,8080은 80, 443, 8080번 포트를 스캔합니다80,443,8080-8090,t500은 80, 443, 8080~8090번 포트와 상위 500개 포트를 스캔합니다--dns | -d는 DNS 서버의 주소입니다. 유효한 IPv4 주소여야 하며 선택적으로 포트 번호를 포함할 수 있습니다-
a.b.c.d - 포트 53에서 의 DNS 서버 사용예시
./domainim nmap.org --ports=all./domainim google.com --ports=none --dns=8.8.8.8#53./domainim pptx704.com --ports=t100 --wordlist=wordlist.txt --rps=1500./domainim pptx704.com --ports=t100 --wordlist=wordlist.txt --outfile=results.json./domainim mysite.com --ports=t50,5432,7000-9000 --dns=1.1.1.1도움말 메뉴는 ./domainim --help 또는 ./domainim -h로 접근할 수 있습니다.
Usage:
domainim <domain> [--ports=<ports> | -p:<ports>] [--wordlist=<filename> | l:<filename> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<filename> | -o:<filename>]
domainim (-h | --help)
Options:
-h, --help 이 화면을 표시합니다.
-p, --ports 스캔할 포트. [기본값: `none`]
`all`, `none`, `t<n>`, 단일 값, 범위 값, 조합 가능
-l, --wordlist 서브도메인 무차별 대입을 위한 단어 목록. 유효하지 않은 파일이면 무차별 대입이 건너뛰어집니다.
-d, --dns DNS 해석기의 IP와 포트. 유효한 IPv4여야 하며 선택적으로 포트 포함 [기본값: 시스템 기본값]
-r, --rps 초당 DNS 쿼리 수 [기본값: 1024 req/s]
-o, --out 출력이 저장될 JSON 파일. 파일 이름은 `.json`으로 끝나야 합니다.
Examples:
domainim domainim.com -p:t500 -l:wordlist.txt --dns:1.1.1.1#53 --out=results.json
domainim sub.domainim.com --ports=all --dns:8.8.8.8 -t:1500 -o:results.json
결과의 JSON 스키마는 다음과 같습니다-
[
{
"subdomain": string,
"data": [
"ipv4": string,
"vhosts": [string],
"reverse_dns": string,
"ports": [int]
]
}
]
nmap.org에 대한 예시 JSON은 여기에서 확인할 수 있습니다.
기여를 환영합니다. 풀 리퀘스트나 이슈를 자유롭게 열어주세요.
이 프로젝트는 아직 초기 단계에 있습니다. 제가 알고 있는 몇 가지 제한 사항이 있습니다.
현재 사용 중인 두 엔진(Sublist3r에서 엔진이라고 부르는 방식)에는 일종의 응답 제한이 있습니다. dnsdumpster는 최대 100개의 서브도메인을 가져올 수 있습니다. crt.sh는 결과가 너무 많으면 결과를 무작위화합니다. crt.sh의 또 다른 문제는 때때로 SQL 오류를 반환한다는 것입니다. 따라서 일부 도메인의 경우 실행할 때마다 결과가 다를 수 있습니다. 앞으로 더 많은 엔진(적어도 무차별 대입 엔진)을 추가할 계획입니다.
포트 스캐너에는 ping 응답 시간 + 750ms의 제한 시간만 있습니다. 이로 인해 위음성이 발생할 수 있습니다. domainim은 포트 스캔을 위한 것이 아니라 빠른 개요를 제공하기 위한 것이므로 이러한 경우는 허용됩니다. 그러나 제한 시간을 늘리는 플래그를 추가할 계획입니다. 같은 이유로 필터링된 포트는 표시되지 않습니다. 더 포괄적인 포트 스캔을 위해서는 Nmap을 사용하는 것이 좋습니다. Domainim은 또한 속도 제한(있는 경우)을 우회하지 않습니다.
vhostname이 인쇄되는 방식이 반복을 불러일으키는 것처럼 보일 수 있습니다.

다음과 같이 인쇄하는 것이 더 나을 수 있습니다-
ack.nmap.org, issues.nmap.org, nmap.org, research.nmap.org, scannme.nmap.org, svn.nmap.org, www.nmap.org
↳ 45.33.49.119
↳ Reverse DNS: ack.nmap.org.
하지만 이전 테스트에서 모든 IP가 동일한 vhostname 집합을 공유하지 않는 경우도 발견했습니다. 그래서 이 방식을 유지하기로 결정했습니다.

DNS 서버에는 일종의 속도 제한이 있을 수 있습니다. 그래서 쿼리당 IPv4 해석에 무작위 지연(0300ms)을 추가했습니다. 이는 DNS 서버가 모든 쿼리를 한 번에 받지 않고 보다 자연스러운 방식으로 받도록 하기 위함입니다. 무차별 대입 방식의 경우 기본값은 01000ms이지만 --rps | -t 플래그를 사용하여 변경할 수 있습니다.
특히 저를 괴롭히는 한 가지 제한 사항은 DNS 해석기가 도메인의 모든 IP를 반환하지 않는다는 것입니다. 따라서 모든(또는 대부분의) IP를 얻으려면 여러 쿼리를 수행해야 합니다. 그러나 도메인에 몇 개의 IP가 있는지 알 수 있는 방법은 없습니다. 아직 이에 대한 해결책을 생각해내지 못했습니다. 또한 nim-ndns는 CNAME 레코드를 지원하지 않습니다. 따라서 도메인에 CNAME 레코드가 있으면 해석되지 않습니다. 이에 대해 작성자의 응답을 기다리고 있습니다.
현재는 가능한 와일드카드 서브도메인이 발견되면 무차별 대입이 건너뛰어집니다. 그 이유는 도메인에 와일드카드 서브도메인이 있으면 무차별 대입 시 가능한 모든 서브도메인의 IPv4가 해석되기 때문입니다. 그러나 이렇게 하면 유효한 서브도메인도 건너뛰어집니다(예: scanme.nmap.org는 와일드카드 값이 아님에도 건너뛰어집니다). 나중에 --force-brute | -fb 플래그를 추가하여 강제 무차별 대입을 가능하게 할 예정입니다.
서브도메인 입력에 대한 VHost 열거에도 비슷한 문제가 있습니다. 주어진 서브도메인으로 끝나는 URL이 반환되므로 비슷한 도메인의 서브도메인은 고려되지 않습니다. 예를 들어 ack.nmap.org에 대해 scannme.nmap.org는 인쇄되지 않지만 something.ack.nmap.org는 인쇄될 수 있습니다. nmap.org의 모든 서브도메인을 검색할 수 있지만 이는 서브도메인을 입력으로 사용하는 목적을 무색하게 만듭니다.
MIT 라이선스. 전체 텍스트는 LICENSE를 참조하세요.
a.b.c.da.b.c.d#n - 포트 e에서 a.b.c.d의 DNS 서버 사용--wordlist | -l - 단어 목록 파일의 경로입니다. 서브도메인 무차별 대입에 사용됩니다. 파일이 유효하지 않으면 무차별 대입이 건너뛰어집니다. SecLists에서 단어 목록을 얻을 수 있습니다. 릴리스 페이지에도 단어 목록이 제공됩니다.--rps | -r - 무차별 대입 중 초당 요청 수입니다. 기본값은 1024 req/s입니다. DNS 쿼리는 배치로 이루어지며 이전 배치가 완료된 후에만 다음 배치가 전송됩니다. 쿼리가 속도 제한을 받을 수 있으므로 값을 높여도 항상 더 빠른 결과를 보장하지는 않습니다.--out | -o - 출력 파일의 경로입니다. 출력은 JSON 형식으로 저장됩니다. 파일 이름은 .json으로 끝나야 합니다.