
네트워크 정찰을 위한 Rust CLI: TCP/UDP 포트 탐색, 서비스 식별, DNS/TLS/HTTP 증거 수집, 그리고 상관 분석을 통한 공개 출처 사용자 이름 검색.
Raw Excess Scan
Rust로 구현한 경계가 설정된 정찰 및 증거 상관 분석.
RXScan은 네트워크 정찰, 공개 소스 검색, 조사, 증거 상관 분석을 하나의 CLI로 결합합니다.
호스트와 포트를 탐색하고, 관찰된 서비스를 식별하며, 경계가 설정된 프로토콜 및 웹 증거를 수집하고, 공개 제공자를 검색하며, 발견 사항을 상관 분석하고, 결과를 저장하여 나중에 분석 및 비교할 수 있습니다.
RXScan은 보고하는 내용에 대해 의도적으로 보수적입니다. 포트 번호가 서비스를 식별하지 않으며, HTTP 성공이 그 자체로 계정을 확인하지 않고, 불완전한 커버리지는 부정적인 결과와 구분됩니다.
저장소에서 빌드 및 설치:
git clone https://github.com/DarkRX1/RXScan.git
cd RXScan
cargo install --path . --locked
설치된 빌드 확인:
rxscan --version
rxscan --help
일반 정찰 스캔 실행:
rxscan example.test
공개 소스 검색:
rxscan search --username exampleuser
공개 발견 사항 조사 및 상관 분석:
rxscan investigate --username exampleuser
이것이 세 가지 주요 진입점입니다:
rxscan TARGET
rxscan search ...
rxscan investigate ...
기본 스캔은 recon 워크플로, 레벨 3, 균형 잡힌 실행 설정을 사용합니다.
rxscan example.test
정확한 포트 선택이 필요할 때 포트를 지정합니다:
rxscan example.test --ports 22,80,443
rxscan example.test --ports 1-1024
rxscan example.test --ports 22,80,443,8000-8100
전체 TCP 포트 범위 스캔:
rxscan example.test --all-ports
UDP 탐색은 명시적으로 지정합니다:
rxscan example.test --udp
유효한 계획과 추가 실행 세부 정보 표시:
rxscan example.test --explain
RXScan은 다음을 지원합니다:
rxscan example.test --scan-mode auto
rxscan example.test --scan-mode connect
rxscan example.test --scan-mode syn
TCP connect 스캔은 현재 RXScan이 지원 플랫폼에서 사용하는 이식 가능한 스캔 경로입니다.
Raw SYN 스캔은 필요한 capability가 있을 때 Linux의 IPv4에서 사용할 수 있습니다. 요청된 SYN 경로를 사용할 수 없을 때 RXScan은 connect 스캔을 SYN으로 조용히 표시하는 대신 유효한 폴백을 보고합니다.
UDP 스캔은 경계가 설정된 네이티브 프로브를 사용하며 옵트인 방식으로 유지됩니다.
현재 프로토콜 인식 UDP 탐색에는 DNS, NTP, SSDP와 같은 서비스에 대한 소규모 프로브가 포함됩니다.
UDP 무응답은 포트가 열려 있거나 닫혀 있다는 증거로 보고되지 않습니다. RXScan은 그 결과로 나오는 open|filtered 불확실성을 유지합니다.
RXScan은 포트 번호만으로 서비스를 할당하는 대신 관찰된 프로토콜 동작에서 서비스를 식별합니다.
현재 네이티브 식별은 다음을 포함한 일반적인 프로토콜을 다룹니다:
프로토콜과 사용 가능한 증거에 따라 관찰 내용에는 제품/버전 정보, 배너, HTTP 엔드포인트 및 제목, TLS 인증서 정보, SSH 신원 정보, 정규화된 기술 증거가 포함될 수 있습니다.
RXScan이 식별할 충분한 증거가 없을 때 알 수 없는 서비스는 알 수 없는 상태로 남습니다.
이러한 식별 프로브에는 인증이 필요하지 않습니다.
사용자 이름 검색은 다음을 통해 사용할 수 있습니다:
rxscan search --username exampleuser
일반 출력은 모든 부정적인 제공자 결과를 출력하는 대신 유용한 긍정적 및 불확실한 발견 사항에 집중합니다.
발견 사항은 관찰된 프로필, 다른 관찰된 리소스, 확인되지 않은 후보 위치를 구분할 수 있습니다.
예를 들어:
FINDINGS
✓ provider / exampleuser
Profile https://example.test/exampleuser
high · 94% · public profile
? another-provider / exampleuser
Candidate https://example.test/u/exampleuser
low · 25% · weak evidence
레이블은 의도적입니다:
| 레이블 | 의미 |
|---|---|
Profile | 관찰된 신원별 공개 프로필 |
Resource | 반드시 공개 프로필은 아닌 관찰된 신원별 리소스 |
Candidate | 확인되지 않은 신원별 위치 |
일반적인 제공자 홈페이지나 API 엔드포인트는 확인된 프로필 URL로 표시되지 않습니다.
RXScan은 또한 차단됨, 속도 제한됨, 알 수 없음, 오류, 스캔되지 않음과 같은 제공자 결과를 거짓 부정 결과로 변환하지 않고 구분하여 유지합니다.
전체 사람이 읽을 수 있는 결과 집합 표시:
rxscan search --username exampleuser --all
추가 실행 및 분류 세부 정보 표시:
rxscan search --username exampleuser --explain
공개 발견 사항은 RXScan의 조사 및 상관 분석 파이프라인을 통과할 수 있습니다:
rxscan investigate --username exampleuser
기본 보기는 계정, 유용한 URL, 신뢰도, 의미 있는 관계에 집중합니다.
정적 JavaScript, 스타일시트, 폰트, 이미지와 같은 보조 웹 리소스는 기반 증거와 관련이 있을 때 유지되지만 기본 사람 보고서를 지배하지 않습니다.
상세 보기는 수집된 관계 데이터를 더 많이 노출할 수 있습니다.
조사는 기본적으로 수동적입니다. 공개 증거를 통해 네트워크 대상을 발견한다고 해서 자동으로 네트워크 스캔이 승인되거나 트리거되지 않습니다.
RXScan은 관찰 내용을 보고, 조사, 그래프, 기록, 분석 경로에서 사용되는 유형화된 증거로 저장합니다.
프로젝트 전반에 걸쳐 몇 가지 규칙이 의도적으로 적용됩니다:
200만으로는 공개 계정이 존재한다는 것을 확립하지 않습니다;관찰과 해석 사이의 이러한 구분은 RXScan 설계의 핵심 부분입니다.
확인된 웹 서비스의 경우 RXScan은 다음과 같은 경계가 설정된 HTTP 관찰을 수집할 수 있습니다:
robots.txtsitemap.xml워크플로와 증거는 또한 경계가 설정된 크롤링, 기준선 검사, 관리되는 콘텐츠 탐색, 상황별 GET 쿼리 후속 조치를 허용할 수 있습니다.
DNS 관찰은 다음을 포함한 경계가 설정된 레코드 수집을 지원합니다:
TLS 관찰은 핸드셰이크 및 인증서 증거를 기록합니다. 이는 철저한 TLS 암호화 스위트 스캐너가 아닙니다.
네트워크 활동은 RXScan의 범위 정책을 따릅니다.
추가 허용 대상을 명시적으로 제공할 수 있습니다:
rxscan example.test --scope example.test
대상을 제외할 수도 있습니다:
rxscan example.test --exclude api.example.test
범위를 벗어난 작업은 해당 네트워크 접촉 전에 거부됩니다.
범위 적용은 우발적인 접촉을 줄입니다. 이는 운영자가 권한을 가지고 있다는 책임을 대체하지 않습니다.
RXScan은 스케줄링, 동시성, 재시도, 실행 시간, 호스트 확장, 증거 수집, 후속 활동과 같은 작업에 제한을 둡니다.
마감 시간이나 기타 실행 제한으로 인해 작업이 실행되지 못할 때 RXScan은 완료된 증거를 유지하고 남은 작업을 설명하는 대신 실행을 완전히 완료된 것으로 표시하지 않습니다.
이는 부분 네트워크 스캔에도 적용됩니다.
사람이 읽을 수 있는 출력은 대화형 사용을 위한 것입니다:
rxscan example.test
색상은 터미널에 적합할 때 자동으로 적용되며 다음과 같이 제어할 수 있습니다:
rxscan --color auto example.test
rxscan --color always example.test
rxscan --color never example.test
--explain은 일반적인 발견 사항 우선 보기에서 의도적으로 생략된 추가 플래너, 정책, 회계, 추론 정보를 노출합니다.
기계 판독 가능 출력은 별도로 사용할 수 있습니다:
rxscan example.test --format jsonl
rxscan example.test --output scan.jsonl
기계 출력에는 터미널 ANSI 스타일링이 포함되지 않습니다.
스캔은 체크포인트를 작성할 수도 있습니다:
rxscan example.test --checkpoint scan.rxscan
RXScan은 보고, 분석, 비교, 프로젝트 그래프 작업을 포함한 지속적 증거 및 오프라인 워크플로를 지원합니다.
예:
rxscan report scan.rxscan
rxscan diff old.rxscan new.rxscan
기록 비교는 커버리지를 인식합니다. 이후 스캔이 동일한 대상이나 증거 표면을 다루지 않았다면, 부재만으로 확인된 제거로 해석되지 않습니다.
RXScan은 현재 Linux를 대상으로 합니다.
Raw SYN 스캔은 Linux/IPv4 전용입니다. 다른 스캔 경로와 프로토콜 기능은 자체적인 capability 요구 사항을 가집니다.
다음을 실행하세요:
rxscan capabilities
현재 빌드/런타임이 사용할 수 있는 것을 검사합니다.
알려진 제한 사항은 다음과 같습니다:
RXScan은 신생 프로젝트입니다. 오래 확립된 네트워크 스캐너의 프로토콜 커버리지, 지문 코퍼스, 플랫폼 범위, 운영 이력을 갖춘 것으로 취급되어서는 안 됩니다.
RXScan은 정찰 도구이지 익스플로잇 프레임워크가 아닙니다.
다음을 자동으로 제공하지 않습니다:
네트워크 스캔은 소유하거나 명시적으로 평가 권한을 받은 시스템에만 사용해야 합니다.
요구 사항:
빌드:
cargo build --release --locked
실행:
./target/release/rxscan --help
테스트:
cargo test --locked
전체 프로젝트 검사:
cargo fmt --check
cargo check --all-targets --all-features
cargo clippy --all-targets --all-features -- -D warnings
cargo test --locked
git diff --check
cargo run -- search lint
네트워크 테스트는 공용 인터넷 서비스에 의존하기보다 결정론적 로컬 픽스처를 사용해야 합니다.
게시된 릴리스와 해당 노트는 GitHub Releases 페이지에서 확인할 수 있습니다.
v1.0.0 및 v1.0.1 태그는 잘못된 0.1.0 Cargo 패키지 메타데이터로 게시되었습니다. 해당 과거 태그는 의도적으로 변경하지 않고 남겨둡니다.
v1.0.2는 올바르게 버전이 지정된 첫 번째 1.x 릴리스입니다.
master의 개발은 최신 게시 릴리스보다 새로운 변경 사항을 포함할 수 있습니다.