
멀티 소스 서브도메인 열거 도구로, 50개 이상의 수집 모듈, DNS 무차별 대입, 패시브 DNS 분석, 인증서 투명성, 검색 엔진 스크래핑, 서브도메인 인수 탐지 기능을 제공하여 정찰 작업을 수행합니다.
👊OneForAll은 강력한 서브도메인 수집 도구입니다 📝English Document
📢 이 문서를 꼭 읽어 주시기 바랍니다. OneForAll을 빠르게 익히는 데 도움이 됩니다!
OneForAll은 Python 3.6.0을 기반으로 개발 및 테스트되었으며, Python 3.6.0 이상의 버전이 필요합니다. Python 환경 설치는 Python 3 설치 가이드를 참고하세요. 다음 명령어로 Python 및 pip3 버전을 확인합니다.
python -V
pip3 -V
다음과 유사한 출력이 나타나면 Python 환경에 문제가 없는 것입니다.
Python 3.6.0
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python36\site-packages\pip (python 3.6)
해당 프로젝트는 개발 중이며 지속적으로 업데이트됩니다. 다운로드 시 git clone**을 사용하여 최신 코드 저장소를 클론하고, 이후 업데이트를 편리하게 진행하세요. Releases에서 다운로드하는 것은 권장하지 않습니다. Releases의 버전 업데이트가 느리고 업데이트가 불편하기 때문입니다.
본 프로젝트는 이미 Gitee에 미러링되어 있습니다. 중국 사용자는 Gitee를 통해 클론하는 것이 더 빠릅니다.
git clone https://gitee.com/shmilylty/OneForAll.git
또는:
git clone https://github.com/shmilylty/OneForAll.git
pip3를 사용하여 OneForAll의 의존성을 설치할 수 있습니다. 다음은 Windows 시스템에서 pip3를 사용한 의존성 설치 예시입니다. 참고: Python3가 시스템 Program Files 디렉터리(예: C:\Program Files\Python36)에 설치된 경우, 관리자 권한으로 명령 프롬프트(cmd)를 실행하여 다음 명령어를 수행하세요!
cd OneForAll/
python3 -m pip install -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
python3 oneforall.py --help
다른 플랫폼은 의존성 설치를 참고하세요. 의존성 설치 중 특정 라이브러리 컴파일이 실패하는 경우 자주 묻는 질문 및 답변.md 문서의 해결 방법을 참고하세요. 그래도 해결되지 않으면 그룹에 가입하여 문제를 보고해 주세요.
다음 명령어를 실행하여 프로젝트를 업데이트합니다 ( 및 의 수정 사항은 보존됩니다).
먼저 설정 파일을 다운로드하고 편집하여 자신의 api 및 개인 설정을 추가합니다. 원본 파일 구조를 유지하세요.
config
├── api.py
├── default.py
├── __init__.py
├── log.py
└── setting.py
이미지를 가져와서 실행합니다. ~/.config를 자신의 설정 파일 폴더 경로로 바꾸세요.
docker pull shmilylty/oneforall
docker run -it --rm -v ~/results:/OneForAll/results -v ~/.config:/OneForAll/config shmilylty/oneforall --target example.com run
매개변수는 명령어 끝에 직접 추가합니다. 결과는 로컬 디렉터리 ~/results에 출력됩니다. 다른 위치에 저장하려면 직접 수정하세요.
pip3를 통해 의존성을 설치한 경우 다음 명령어로 예제를 실행합니다.
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run
python3 oneforall.py --target example.com run 명령어를 예로 들면, OneForAll이 기본 매개변수로 정상 실행되면 results 디렉터리에 해당 결과가 생성됩니다.

example.com.csv는 각 메인 도메인 아래 서브도메인 수집 결과입니다.
all_subdomain_result_1583034493.csv는 OneForAll 실행 시 수집된 서브도메인의 전체 결과를 모은 파일로, example.com.csv를 포함합니다. 일괄 수집 시나리오에서 전체 결과를 편리하게 얻을 수 있습니다.
result.sqlite3는 각 OneForAll 실행 시 수집된 서브도메인의 SQLite3 결과 데이터베이스입니다. 데이터베이스 구조는 아래 그림과 같습니다.

example_com_origin_result와 같은 테이블은 각 모듈의 초기 서브도메인 수집 결과를 저장합니다.
example_com_resolve_result와 같은 테이블은 서브도메인을 해석한 결과를 저장합니다.
example_com_last_result와 같은 테이블은 이전 서브도메인 수집 결과를 저장합니다 (두 번 이상 수집해야 생성됨).
example_com_now_result와 같은 테이블은 현재 서브도메인 수집 결과를 저장합니다. 일반적으로 이 테이블을 참조하면 됩니다.
명령줄 매개변수는 자주 사용되는 몇 가지 기본 매개변수만 제공합니다. 더 자세한 매개변수 설정은 setting.py를 참조하세요. 명령줄 인터페이스에서 자주 사용해야 한다고 생각하는 매개변수나 부족한 부분이 있으면 피드백을 환영합니다. 잘 알려진 이유로 차단된 수집 인터페이스를 사용해야 하는 경우 먼저 setting.py에서 프록시를 구성하세요. 일부 수집 모듈은 API를 제공해야 합니다 (대부분 무료로 계정을 등록하여 얻을 수 있음). 사용하려면 api.py에서 API 정보를 구성하고, 사용하지 않으면 관련 오류 메시지를 무시하세요. (자세한 모듈은 수집 모듈 설명을 읽어보세요.)
OneForAll 명령줄 인터페이스는 Fire를 기반으로 구현되었습니다. Fire의 고급 사용 방법은 Fire CLI 사용을 참조하세요.
oneforall.py는 메인 프로그램 진입점입니다. oneforall.py는 brute.py, takerover.py 및 dbexport.py 등의 모듈을 호출할 수 있습니다. 서브도메인 브루트포싱을 위해 brute.py가 분리되었고, 서브도메인 인수 위험 검사를 위해 takerover.py가 분리되었으며, 데이터베이스 내보내기를 위해 dbexport.py가 분리되었습니다. 이러한 모듈은 독립적으로 실행될 수 있으며, 더 다양한 매개변수를 허용합니다. 이러한 모듈을 개별적으로 사용하려면 사용 도움말을 참조하세요.
❗참고: 사용 중 문제나 의문이 있을 경우 먼저 Issues에서 검색해 보시고, 자주 묻는 질문 및 답변도 참조하세요.
oneforall.py 사용 도움말
다음 도움말 정보는 최신이 아닐 수 있습니다. python oneforall.py --help를 사용하여 최신 정보를 확인하세요.
python oneforall.py --help
NAME
oneforall.py - OneForAll 도움말 정보
SYNOPSIS
oneforall.py COMMAND | --target=TARGET <flags>
DESCRIPTION
OneForAll은 강력한 서브도메인 수집 도구입니다
Example:
python3 oneforall.py version
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./domains.txt run
python3 oneforall.py --target example.com --valid None run
python3 oneforall.py --target example.com --brute True run
python3 oneforall.py --target example.com --port small run
python3 oneforall.py --target example.com --fmt csv run
python3 oneforall.py --target example.com --dns False run
python3 oneforall.py --target example.com --req False run
python3 oneforall.py --target example.com --takeover False run
python3 oneforall.py --target example.com --show True run
Note:
매개변수 alive의 선택 가능한 값 True, False는 각각 활성 서브도메인과 전체 서브도메인 결과 내보내기를 의미합니다.
매개변수 port의 선택 가능한 값은 'default', 'small', 'large'입니다. 자세한 내용은 config.py 구성을 참조하세요.
매개변수 fmt의 선택 가능한 형식은 'csv', 'json'입니다.
매개변수 path의 기본값은 None이며, OneForAll 결과 디렉터리 경로를 사용합니다.
ARGUMENTS
TARGET
단일 도메인 (둘 중 하나 필수 매개변수)
TARGETS
한 줄에 하나의 도메인 이름이 있는 파일 경로 (둘 중 하나 필수 매개변수)
FLAGS
--brute=BRUTE
s
--dns=DNS
DNS 서브도메인 해석 (기본값 True)
--req=REQ
HTTP 요청 서브도메인 (기본값 True)
--port=PORT
요청 검증 서브도메인의 포트 범위 (기본값 80번 포트만 검사)
--valid=VALID
활성 서브도메인 결과만 내보내기 (기본값 False)
--fmt=FMT
결과 저장 형식 (기본값 csv)
--path=PATH
결과 저장 경로 (기본값 None)
--takeover=TAKEOVER
서브도메인 인수 검사 (기본값 False)
프로젝트 주소: https://github.com/shmilylty/OneForAll
침투 테스트에서 정보 수집의 중요성은 말할 필요도 없으며, 서브도메인 수집은 정보 수집에서 필수적이고 매우 중요한 부분입니다. 현재 온라인에는 많은 서브도메인 수집 도구가 오픈소스로 제공되고 있지만, 다음과 같은 몇 가지 문제점이 있습니다.
이러한 문제점을 해결하기 위해 이 프로젝트가 탄생했습니다. 이름에서 알 수 있듯이 OneForAll은 다양한 장점을 모은 강력하고 포괄적이며 빠른 서브도메인 수집을 위한 궁극의 도구가 되기를 바랍니다. 🔨
현재 OneForAll은 개발 중이며, 분명 많은 문제와 개선할 점이 있습니다. 고수분들의 Issues 및 PR 제출을 환영합니다. 괜찮다면 작은 별표✨를 부탁드립니다. 현재 OneForAll 전용 교류 및 피드백 QQ 그룹👨👨👦👦이 있습니다: 824414244 (그룹 가입 확인: 정보 수집).
censys_api, certspotter, crtsh, entrust, google, spyse_api)axfr, 교차 도메인 정책 파일 검사 cdx, HTTPS 인증서 검사 cert, 콘텐츠 보안 정책 검사 csp, robots 파일 검사 robots, sitemap 파일 검사 sitemap, NSEC 레코드 활용 DNS 도메인 순회 dnssec, 추후 NSEC3 레코드 등 모듈 추가 예정)archivecrawl, , 해당 모듈은 아직 디버깅 중이며 추가 및 개선 예정)다른 훌륭한 아이디어가 있다면 꼭 알려주세요! 😎
자세한 내용은 디렉터리 구조 설명을 참조하세요.
본 프로젝트의 docs 디렉터리에는 추가 도움말과 설명이 제공됩니다. 예: 서브도메인 사전 출처 설명, 와일드카드 해석 판단 흐름.
이 훌륭한 Python 라이브러리들에 감사드립니다!
이 프로젝트는 SemVer 언어화 버전 형식을 사용하여 버전을 관리합니다. 변경 기록을 참조하여 변경 사항을 확인할 수 있습니다.
자세한 내용은 추후 개발 계획을 참조하세요.
고수분들의 프로젝트 개선에 대한 기여를 진심으로 환영합니다!
기여자 문서에서 모든 기여자와 그들의 기여 내용을 확인할 수 있습니다. OneForAll을 더욱 강력하고 편리하게 만들어 주신 그분들께 감사드립니다.
이 프로젝트가 도움이 되셨다면 커피 한 잔을 후원해 주시면 감사하겠습니다 :)

이 프로젝트는 GPL-3.0 라이선스에 따라 배포됩니다. 자세한 내용은 LICENSE를 참조하세요.
오픈소스로 제공된 각 서브도메인 수집 프로젝트에 감사드립니다!
A-Team의 열정적이고 이타적인 문제 해결에 감사드립니다!
본 도구는 정당한 법적 권한을 얻은 기업 보안 구축에만 사용해야 합니다. 본 도구를 사용하는 동안 모든 행동이 해당 지역의 법률 및 규정을 준수하는지 확인해야 합니다. 본 도구를 사용하는 과정에서 불법 행위가 발생할 경우 모든 책임은 사용자 본인에게 있으며, 본 도구의 모든 개발자 및 기여자는 어떠한 법적 책임 및 연대 책임도 지지 않습니다. 본 계약의 모든 조항을 완전히 읽고 이해하고 동의하지 않는 경우 본 도구를 설치하거나 사용하지 마십시오. 본 도구를 사용하거나 다른 명시적 또는 묵시적 방식으로 본 계약을 수락하는 경우 본 계약을 읽고 이에 구속되는 것에 동의하는 것으로 간주됩니다.
/config/setting.py/config/api.pygit stash # 로컬 변경사항 임시 저장
git fetch --all # 프로젝트 업데이트 가져오기
git pull # 다운로드 및 덮어쓰기
git stash pop # 로컬 변경사항 복원
자세한 내용은 필드 설명을 참조하세요.
commoncrawlbevigil_api, binaryedge_api, bufferover, cebaidu, chinaz, chinaz_api, circl_api, cloudflare, dnsdb_api, dnsdumpster, hackertarget, ip138, ipv4info_api, netcraft, passivedns_api, ptrarchive, qianxun, rapiddns, riddler, robtex, securitytrails_api, sitedossier, threatcrowd, wzpc, ximcx)srv, 도메인의 DNS 레코드 중 MX, NS, SOA, TXT 레코드 쿼리를 통한 서브도메인 수집)alienvault, riskiq_api, threatbook_api, threatminer, virustotal, virustotal_api, 해당 모듈은 아직 추가 및 개선 예정)ask, baidu, bing, bing_api, duckduckgo, exalead, fofa_api, gitee, github, github_api, google, google_api, shodan_api, so, sogou, yahoo, yandex, zoomeye_api). 검색 모듈에서 특수 검색 엔진을 제외한 일반 검색 엔진은 자동 제외 검색, 전체 검색, 재귀 검색을 지원합니다.txt, csv, json을 지원합니다.