
OSINT 아카이브에서 URL을 추출하여 보안 인사이트를 제공합니다
OSINT 아카이브에서 보안 인사이트를 위한 URL을 추출합니다.
Urx는 Wayback Machine과 Common Crawl 같은 OSINT 아카이브에서 URL을 수집하기 위해 설계된 명령줄 도구입니다. 효율성을 위해 Rust로 구축되었으며, 비동기 처리를 활용하여 여러 데이터 소스를 신속하게 쿼리합니다. 이 도구는 지정된 도메인에 대한 URL 정보를 수집하는 과정을 단순화하여, 보안 테스트와 분석을 비롯한 다양한 목적에 사용할 수 있는 포괄적인 데이터셋을 제공합니다.
--cdx-endpoint URL로 다른 CDX 인덱스 서버(국가 웹 아카이브, 사설 pywb, OutbackCDX)를 코드 변경 없이 연결-H, --cookie, --user-agent는 urx가 대상에 보내는 모든 요청(--check-status, --extract-links, --extract-js-endpoints, --expand-specs)에 적용되며, 아카이브에는 의도적으로 절대 전송되지 않음--match-regex / --filter-regex)으로 결과 필터링--meta-*): 수집 후 모든 제공자에 걸쳐 최초/최종 캡처 날짜, 기록된 MIME 타입, 기록된 상태를 균일하게 필터링urx example.com/shop은 범위를 CDX 쿼리 자체에 밀어넣어(url=example.com/shop*) 대규모 사이트의 하위 트리가 클라이언트 측에서 필터링되는 대신 전체 인덱스의 일부만 소비하도록 함--scope-file): 프로그램 자체의 *.example.com / !admin.example.com 목록을 그대로 사용하며, 반복 가능하고 합집합으로 처리되며 제외가 항상 우선--dedup-similar)wordlist — 대상이 구성된 경로 세그먼트와 매개변수 이름을 id·해시·날짜 없이 제공--params(대상 전체의 매개변수 인벤토리), --params-by-endpoint(어떤 엔드포인트가 무엇을 받는지), --fuzz-placeholder FUZZ(매개변수 시그니처당 하나의 템플릿화된 URL, ffuf 또는 dalfox에 바로 사용 가능)first_seen, last_seen, mime, archive_status, digest가 CDX 아카이브가 보고한 모든 URL과 함께 추가 네트워크 비용 없이 반환됨--stream): 각 제공자가 URL을 보고하는 즉시 기록되므로, 가장 느린 아카이브를 기다리지 않고 파이프라인이 즉시 작동 시작--archive-body) — 더 이상 존재하지 않는 페이지도 포함했던 링크를 여전히 제공하며, CDX digest 중복 제거 덕분에 고유 본문당 한 번의 요청--extract-js-endpoints로 아카이브된 JavaScript도 마이닝: 빌드 해시로 명명된 번들은 사이트가 재배포되는 순간 404가 되며, 아카이브는 그 API 표면이 여전히 존재하는 유일한 장소--archive-body-dir)로 어떤 링크 추출기도 찾지 않는 것 — 개발자 주석, 인라인 자격 증명, 내부 호스트명 — 을 grep할 코퍼스로 확보, 추가 요청 없이--expand-specs): OpenAPI 3.x, Swagger 2.0, GraphQL introspection 문서(JSON 또는 YAML)를 기술된 모든 라우트로 변환 — 한 번의 요청으로 문서화된 전체 표면 확보--check-status는 Location, Content-Length, Content-Type도 기록하며, --check-title은 HTML <title>을 추가--archived-discovery): Wayback Machine이 보유한 모든 고유 버전을 대상으로 하므로, 2015년의 Disallow:가 사이트가 이후 언급을 중단한 경로를 여전히 알려줌urx cache 하위 명령: stats, list, prune, drop <domain>, clear
cargo install urx
### Homebrew에서```bash
# https://formulae.brew.sh/formula/urx
brew install urx
git clone https://github.com/hahwul/urx.git cd urx cargo build --release
컴파일된 바이너리는 `target/release/urx`에서 사용할 수 있습니다.
### Docker에서
[ghcr.io/hahwul/urx](https://github.com/hahwul/urx/pkgs/container/urx)
### 셸 자동 완성
`urx`는 자체 완성 스크립트를 생성하므로, 실제로 설치된 바이너리의 플래그와 항상 일치합니다.```bash
# zsh — any directory on your $fpath works
urx --completions zsh > ~/.zfunc/_urx
# (make sure ~/.zfunc is on the fpath, then `compinit`)
# bash
urx --completions bash > ~/.local/share/bash-completion/completions/urx
# fish
urx --completions fish > ~/.config/fish/completions/urx.fish
powershell과 elvish도 지원됩니다. 이 플래그에는 대상 도메인이 필요하지 않습니다.
urx --manpage > ~/.local/share/man/man1/urx.1 man urx
## 사용법
### 기본 사용법```bash
# Scan a single domain
urx example.com
# Scan multiple domains
urx example.com example.org
# Scan domains from a file
cat domains.txt | urx
Usage: urx [OPTIONS] [DOMAINS]... [COMMAND]
Commands: cache Inspect and maintain the URL cache: stats, list, prune, drop ..., clear
Arguments: [DOMAINS]... Domains to fetch URLs for
Options: -c, --config Config file to load --provider-config Separate provider config file holding only API keys (default: $XDG_CONFIG_HOME/urx/provider-config.toml). CLI/env > provider-config > main config. --completions Print a shell completion script (bash, zsh, fish, powershell, elvish) to stdout and exit --manpage Print the roff man page to stdout and exit -h, --help Print help -V, --version Print version
Input Options:
--files ... Read URLs directly from files (supports WARC, URLTeam compressed, and text files)
--domain-list File of newline-separated domains to scan (repeatable; merged with positional DOMAINS and stdin; # comments allowed)