
레드팀 작업을 위한 서브도메인 열거 및 정찰 콘솔. 수동 + 능동 수집, 심층 상관 분석, 버킷 탐색, msfconsole 스타일 대화형 셸.
레드팀 작업을 위한 서브도메인 열거 및 정찰 도구입니다. 핵심 기능에는 API 키가 필요하지 않으며, 일회성 CLI로 실행하거나 msfconsole 스타일의 지속적인 대화형 콘솔로 실행할 수 있습니다.
승인받은 도메인에 대해서만 실행하십시오. 자세한 내용은 아래 "Legal" 항목을 참조하십시오.
setcap 필요),
일반 TCP 연결로의 자동 폴백 및 처음에 응답하지 않은 포트에 대한
재시도 패스 포함.set, show options, run, setup)과 일회성
플래그 기반 CLI 모두 동일한 엔진 위에 구축되어 있습니다.git clone https://github.com/Rebellionxkid/NoWRecon
cd NoWRecon
pip install -r requirements.txt
실제 SYN 스캔의 경우(이것이 없으면 도구는 TCP connect로 대체됩니다):
sudo setcap cap_net_raw+ep $(readlink -f $(which python3))
콘솔 (먼저 시작하는 것을 권장):
python -m subscout.cli
배너를 표시하고, 안내 방식의 설정 과정을 진행합니다(모드 선택: passive / active / deep / custom). 기본 프리셋을 제공하거나 모든 설정을 수동으로 구성할 수 있게 한 뒤, 프롬프트로 진입합니다:
nowrecon (example.com) > show options
nowrecon (example.com) > set MODE deep
nowrecon (example.com) > set EXPAND_ORG true
nowrecon (example.com) > run
...
nowrecon (example.com) > set DOMAIN other-target.com
nowrecon (other-target.com) > run
nowrecon (other-target.com) > exit
콘솔은 한 번의 스캔 후 종료되지 않습니다. 명령어:
set OPTION VALUE: 설정을 변경합니다. 예: set MODE deep.unset OPTION: 설정을 기본값으로 되돌립니다.show options: 모든 설정과 현재 값의 표를 표시합니다.show banner / banner: 시작 배너를 다시 출력합니다.setup: 안내식 구성 흐름을 다시 실행합니다.run (또는 scan): 현재 설정으로 스캔을 시작합니다.help: 모든 명령어를 나열합니다.스캔 중에 언제든 Enter를 누르면 현재 단계를 건너뛰고 다음 단계로 넘어갑니다.
플래그, 일회성 실행:
python -m subscout.cli example.com --mode deep --buckets --expand-org
| CLI 플래그 | 콘솔 옵션 | 설명 |
|---|---|---|
--mode | MODE | passive / active / deep |
--out-dir | OUT_DIR | json/csv/txt를 기록할 위치 |
--wordlist | WORDLIST | 사용자 지정 브루트포스 워드리스트 |
--db | DB | SQLite 이력/차이 데이터베이스 경로 |
--ptr-prefix | PTR_PREFIX | deep 모드 PTR 스윕의 CIDR 반경 |
--no-vhost | NO_VHOST | deep 모드 vhost 프로빙 비활성화 |
--dns-rate | DNS_RATE | 리졸버당 초당 최대 DNS 쿼리 수 |
--ip-rate | IP_RATE | 단일 대상 IP에 대한 초당 최대 HTTP 요청 수 |
--connect-timeout | CONNECT_TIMEOUT | TCP 연결 포트 스캔의 시도당 타임아웃 |
--expand-org | EXPAND_ORG | 형제 조직 도메인을 나열만 하지 않고 함께 스캔 |
--expand-mode | EXPAND_MODE | 형제 도메인 하위 스캔에 사용되는 모드 |
--buckets | BUCKETS | 브랜드로부터 클라우드 스토리지 버킷 이름 추측 |
--deep-brute | DEEP_BRUTE | 이미 발견된 이름에 대한 추가 패턴 변형 라운드 |
--github-token | GITHUB_TOKEN | GitHub 코드 검색 정찰용 토큰 |
--nsec-walk | NSEC_WALK | 전체 NSEC 존 워크 시도 (일반 NSEC만) |
--user-agent | USER_AGENT | 모든 요청에 사용할 사용자 지정 User-Agent |
--random-user-agent | RANDOM_USER_AGENT | 전체 실행에 걸쳐 무작위 실제 브라우저 User-Agent 사용 |
-v / --verbose | VERBOSE | 단계별 로그 라인 표시 |
--debug | DEBUG | 각 이름을 발견한 소스 표시 |
참고:
DEAD로 반환되면 CONNECT_TIMEOUT을
높이십시오 (기본값 3초). root/setcap 없이는 포트 스캔이 일반 TCP
연결로 대체되며, 부하가 걸린 대상이나 이 머신 자체가 대규모 동시
스캔으로 바쁜 경우 실제로 열려 있는 포트가 짧은 시간 창을 놓칠 수
있습니다. 모든 포트는 이미 자동으로 한 번 재시도되며, 타임아웃을
높이면 각 시도에 더 많은 시간이 주어질 뿐입니다.--debug는 해당 이름을 발견한 소스를 보여주는 추가 라인을 앞에
붙입니다. 출력을 깔끔하게 유지하기 위해 기본적으로 꺼져 있습니다.EXPAND_ORG는 후보 형제 도메인을 나열만 할 뿐 명시적으로 켜지
않으면 스캔하지 않습니다. 공통 소유의 증거는 스캔 권한과 같지
않습니다.deep 모드가 관련 없는 도메인을 끌어들이지 않는 방법이는 의도적인 설계 제약이었습니다:
core/resolver.py: is_wildcard_answer). 루트 존에
없더라도 *.dev.example.com의 캐치올이 잡힙니다./24로 제한되며
(Scope.ptr_scan_targets), CDN/클라우드/공유 호스팅 ASN의 IP에
대해서는 완전히 건너뜁니다 (Scope.is_shared_infra). Cloudflare의
/24를 스윕하면 수천 개의 무관한 테넌트가 반환될 것입니다.Scope.accept_ptr_result). 이름이 범위 내에 있어야 하고, 정방향
조회가 역방향 조회가 나온 것과 동일한 /24로 다시 귀결되어야
합니다. 확인되지 않은 PTR 레코드만으로는 아무것도 증명하지
못합니다.sources (passive, no key) ┐
sources (active: brute, AXFR) ├→ candidates → resolver (wildcard-aware)
dns_extra (SPF/DMARC/SRV) ┘ │
▼
permutation round (dnsgen-style)
│
▼ (deep mode only)
TLS SAN · HTTP probe + crawl · PTR sweep (FCrDNS) · vhost
│
▼
SQLite (history/diff) + JSON/CSV/TXT export
subscout/core/: 모델, 스코프/안티노이즈 규칙, 리졸버,
순열, DNS 레코드 파싱, 파이프라인 오케스트레이터.subscout/sources/: 플러그 가능한 패시브 수집 소스.subscout/enrich/: 딥 모드 상관 분석: ASN, TLS, HTTP, 크롤링, PTR,
vhost, 포트 스캔, 버킷, NS/NSEC, GitHub 코드 검색.subscout/storage/: SQLite 이력/차이 저장소와 JSON/CSV/TXT
내보내기.subscout/runner.py: CLI와 콘솔 양쪽에서 사용하는 공유 스캔 실행 및
결과 출력 로직.subscout/cli.py: 일회성, 플래그 기반 프런트 엔드 (Typer).subscout/console.py: 지속적인 msfconsole 스타일 콘솔.subscout/banner.py: 시작 배너.core/models.py, core/scope.py,
core/permutations.py, core/dns_extra.py, storage/)은 직접 작성하고
테스트했습니다. aiodns/httpx가 필요한 리졸버/파이프라인 테스트는
모의 객체로 작성되었지만 (tests/test_resolver.py,
tests/test_pipeline.py) 구문 검사 (py_compile)만 수행되었고 실제로
실행되지는 않았습니다. 이 도구에 의존하기 전에 정상적인 인터넷 접속이
가능한 머신에서 pip install -r requirements.txt && pytest를 실행하고,
직접 관리하는 도메인을 대상으로 테스트 스캔을 수행하여 와일드카드
필터링과 PTR 게이팅이 예상대로 동작하는지 확인하십시오.테스트 권한이 있는 도메인에 대해서만 이 도구를 실행하십시오. AXFR 시도, 브루트 포스, vhost 프로빙은 모두 대상의 인프라에 직접적으로 영향을 미칩니다.