Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/maverickaayush/onus
ReconnaissanceVulnerability ScannersNetwork MappingPort ScanningDNS & Subdomain EnumerationWeb SecurityPenetration TestingLearning & EducationAI Security
GitHubmaverickaayush/onus

ONUS

로컬 호스팅, 에어갭(air-gapped) 환경의 VAPT 플랫폼으로, 8개의 병렬 스캐닝 모듈을 실행하고, 발견 항목을 CVSS v3.1로 결정론적으로 점수화하며, 로컬 LLM을 통한 선택적 AI 생성 해결 방안과 함께 PDF 보고서를 생성합니다.

10228일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기웹사이트

ONUS - 자동 취약성 평가 및 침투 테스트

License: MIT CI

ONUS - 공격자가 발견하기 전에 보안 위험을 찾아내세요.

maverickaayush가 제작했습니다.

로컬 호스팅, 에어갭(air-gapped) 방식의 VAPT 도구: 승인된 대상 도메인을 지정하면 8개의 스캐닝 모듈을 병렬로 실행하고, 모든 발견 항목을 결정론적으로(CVSS v3.1) 점수화하며, 로컬 LLM을 통해 선택적으로 AI 생성 평이한 영어 설명을 추가하고, PDF 보고서와 실시간 웹 대시보드를 생성합니다. 외부 API 호출 없음 - 모든 것이 자체 네트워크에서 실행됩니다.

ONUS 실행 방법은 두 가지입니다:

  • 자체 호스팅(이 저장소): docker compose up → 도메인 입력 → 인증 확인란 체크 → 스캔. 계정, 로그인, 이메일 인증 불필요 - 설계상 단일 운영자용이며, 아래의 모든 내용은 이 경로를 기준으로 합니다.
  • 호스팅: 관리형 인스턴스가 **tryonus.tech**에서 운영 중입니다. 계정/OAuth 로그인, 스캔 큐, 사용자별 기록과 같은 프로덕션 전용 기능을 추가로 제공하며, 이러한 기능은 이 저장소에서 기본적으로 꺼져 있어 자체 호스팅이 단순하게 유지됩니다. 자체 호스팅 vs 호스팅을 참조하세요.

기능

  • 8개의 병렬 스캐닝 모듈 (Celery) - 네트워크 정찰(포트/서비스/서브도메인/DNS/WHOIS), 웹 애플리케이션 스캐닝(ZAP + Nikto + Katana), SSL/TLS 구성, HTTP 보안 헤더, OWASP Top 10 검사, 기술 핑거프린팅/WAF 탐지, CVE 스캐닝(Nuclei), 디렉터리 열거(FFUF).
  • 결정론적 CVSS v3.1 점수화 - 심각도, CVSS 점수/벡터, 우선순위, OWASP 카테고리는 규칙 카탈로그에서 계산되며 LLM이 추측하지 않습니다. 동일한 스캔을 두 번 실행하면 바이트 단위로 동일한 숫자 필드가 생성됩니다.
  • 신뢰도 검증 - 발견 항목은 수동적으로 재확인(비파괴적 재관찰만)되며, 조용히 삭제되지 않고 confirmed / probable / unverified로 태그됩니다.
  • 선택적 로컬 AI 분석 - Ollama + Qwen 2.5 7B가 점수화된 발견 항목을 평이한 영어 설명과 조치 단계로 변환합니다. 완전히 에어갭 처리되며, 이 기능 없이도 도구가 작동합니다(아래 빠른 시작 참조).
  • 컨텍스트 인식형 실행 가능한 조치 - 모든 발견 항목은 구체적인 다음 단계로 끝납니다. 안정적인 문제는 결정론적 템플릿을 사용하고, 진정으로 컨텍스트에 종속적인 문제는 AI를 사용합니다. 또한 관리형 플랫폼 탐지(Vercel / Cloudflare / Netlify / GitHub Pages / …)를 통해 플랫폼 소유 TLS 발견 항목이 해당 계층을 누가 제어하는지와 다음에 무엇을 해야 하는지를 알려주므로, 불가능한 "서버 구성 편집" 조언 대신 실제 실행 가능한 지침을 제공합니다.
  • PDF 보고서 + 웹 대시보드 - WeasyPrint로 렌더링된 보고서와 Next.js 대시보드, 둘 다 동일하게 점수화/설명 처리된 발견 항목으로 구동됩니다.

자체 호스팅 vs 호스팅

자체 호스팅 기본 경로는 의도적으로 단순하게 설계되었습니다: 가입 없음, 이메일 인증 없음, OAuth 없음. 호스팅 전용 기능(인증, 스캔 큐)은 기본적으로 꺼진 구성 플래그(REQUIRE_AUTH=false, HOSTED_QUEUE_ENABLED=false; 구성 참조) 뒤에 있으며 docker-compose.yml에는 설정되어 있지 않으므로 ONUS를 로컬에서 실행할 때 로그인을 요구하지 않습니다. 설정이 전혀 필요 없으신가요? **tryonus.tech**의 호스팅 사이트를 사용하세요.

스크린샷

새 스캔실시간 스캔 상태
새 스캔 양식스캔 상태 페이지
보고서 대시보드스캔 탐색
보고서 대시보드스캔 탐색 대시보드

아키텍처

root@kitploit:~
domain → [recon | webscan | ssl_tls | headers | owasp | tech_fingerprint | nuclei | enumeration] (parallel, Celery)
       → any module failed/timed out? → pause for operator retry/continue/cancel
       → aggregator (dedup + OWASP-map + sort)
       → confidence verification (passive re-observation)
       → deterministic CVSS scoring
       → Ollama (Qwen 2.5 7B) AI analysis
       → WeasyPrint PDF + PostgreSQL
       → dashboard / PDF download
6계층 아키텍처 다이어그램

6개 계층: Next.js 프론트엔드 → FastAPI → Celery/Redis → 8개의 병렬 스캐닝 모듈 → Ollama (Qwen 2.5 7B) → WeasyPrint PDF + 대시보드. 전체 세부 사항은 ARCHITECTURE.md(스키마, 계약, 가드레일)와 docs/QUICK_REF.md(일반적인 변경 사항 빠른 조회)에서 확인할 수 있습니다.

사전 요구 사항

  • Docker + Docker Compose v2
  • 약 8GB의 여유 디스크. 빌드된 이미지의 총 용량은 약 6.8GB(백엔드와 워커는 각각 약 3.25GB - Nuclei 템플릿과 Playwright를 통한 헤드리스 Chromium을 번들하며, 여기에 약 270MB의 프론트엔드가 추가됨)이며, 빌드 자체에도 그 위에 추가 여유 공간이 필요합니다.
  • 약 6GB의 여유 RAM. ZAP 사이드카만 해도 4GB로 제한되어 있으며(mem_limit: 4g), Postgres, Redis, API, 워커, 프론트엔드가 그와 함께 실행됩니다.
  • 첫 빌드는 양호한 연결 환경에서 약 10-15분이 소요됩니다.

빠른 시작

위의 사전 요구 사항을 확인하세요: 약 8GB 디스크와 약 6GB RAM이 필요하며, 첫 빌드는 10-15분이 소요됩니다.

root@kitploit:~
cp .env.example .env
cp backend/subfinder-config/provider-config.yaml.example backend/subfinder-config/provider-config.yaml
docker compose up -d
docker compose ps        # wait for zap to report healthy (~2 min)

**http://localhost:3000**을 열고 도메인을 입력한 뒤 인증 확인란을 체크하고 스캔을 시작하세요.

로그인, 가입, 이메일 인증이 없습니다. 자체 호스팅 ONUS는 기본적으로 단일 운영자용입니다 - 대시보드를 열고 스캔하는 사이에 계정 단계가 없습니다.

Ollama 설치 없이도 작동합니다. CVSS/심각도/우선순위 점수화는 항상 결정론적입니다(analysis/cvss_scorer.py) - Ollama가 실행되지 않으면 발견 항목은 AI 생성 문구 대신 규칙 기반 설명 템플릿이 적용됩니다. 활성화하려면 아래의 "선택 사항: AI 생성 설명 활성화"를 참조하세요.

이 도구를 실행하는 데 API 키가 전혀 필요 없습니다. 이 도구가 감싸는 모든 스캐닝 도구(nmap, ZAP, Nikto, testssl.sh, Nuclei, Amass, Naabu, httpx, WhatWeb, WAFW00F, FFUF)와 Ollama 자체는 키 없이도 완전히 작동합니다. 위의 subfinder 구성 복사 단계가 유일한 선택적 예외입니다 - 빈 템플릿으로 두어도 괜찮으며, subfinder는 무료/공개 소스만 사용하여 실행됩니다. 서브도메인 열거를 강화하려면 시작 전에 해당 파일에 최대 2개의 무료 티어 키를 추가할 수 있습니다: GitHub 개인 액세스 토큰과 ProjectDiscovery Chaos API 키 - provider-config.yaml.example 내부의 주석을 참조하세요.

선택 사항: AI 생성 설명 활성화

Ollama는 호스트에서 네이티브로 실행되므로(Docker가 아님) 호스트의 GPU를 직접 사용할 수 있습니다; 컨테이너는 host.docker.internal을 통해 접근합니다.

  1. 호스트에 Ollama 설치: https://ollama.com/install.sh
  2. 모델 가져오기: ollama pull qwen2.5:7b
  3. Docker 컨테이너에서 Ollama에 접근할 수 있게 설정 (Ollama는 기본적으로 127.0.0.1 전용으로, Docker의 브리지 네트워크는 접근할 수 없음):
    root@kitploit:~
    sudo systemctl edit ollama
    
    [Service] 아래에 추가:
    root@kitploit:~
    [Service]
    Environment="OLLAMA_HOST=0.0.0.0:11434"
    
    저장한 다음:
    root@kitploit:~
    sudo systemctl daemon-reload && sudo systemctl restart ollama
    
    참고: 이렇게 하면 Docker뿐만 아니라 로컬 네트워크에서도 Ollama에 접근할 수 있게 됩니다 - 개인 머신에서는 문제없지만, 공유 머신에서는 방화벽 규칙을 추가할 만합니다.
  4. 확인: curl http://localhost:11434/api/tags
  5. 백엔드/워커가 이를 인식하도록 재시작: docker compose restart backend worker

선택 사항: 연습용 대상

compose 파일은 또한 자체 승인 대상 없이 스캐너를 시험해 볼 수 있도록 12개의 의도적으로 취약한 연습용 앱(Juice Shop, DVWA, bWAPP, Mutillidae, NodeGoat, ModSecurity WAF 뒤의 DVWP/WordPress, Metasploitable2, WebGoat)을 정의합니다. 이들은 Compose 프로필 뒤에 게이트되어 있어 기본적으로 빌드/시작되지 않습니다:

root@kitploit:~
docker compose --profile targets up -d

경고: 이들은 의도적으로 취약하며 일부는 실제 백도어가 포함된 서비스입니다 (Metasploitable2는 활성 vsftpd 백도어를 탑재합니다). targets 프로필은 인터넷이나 공유 네트워크에서 접근할 수 없는 머신에서만 실행하세요 - 공개 클라우드 인스턴스나 노출된 호스트에서는 절대 실행하지 마세요.

대부분은 사전 빌드된 이미지로 실행되며 추가로 필요한 것이 없습니다. 두 개(nodegoat와 dvwp-wordpress)는 이 저장소에 포함되지 않은 소스에서 빌드되므로 먼저 클론해야 합니다:

root@kitploit:~
git clone https://github.com/OWASP/NodeGoat nodegoat-src
git clone https://github.com/vavkamil/dvwp dvwp-src

실행 시 게시되는 포트: Juice Shop :3001, DVWA :8081, bWAPP :8083, Mutillidae :8084, NodeGoat :8085, DVWP(WAF, TLS 경유) :8444, WebGoat :8082. Metasploitable2는 실제 백도어/인증 없는 네트워크 서비스를 노출하므로 호스트 포트를 게시하지 않습니다(Docker 내부 네트워크를 통해 backend/worker에서만 접근 가능).

구성

.env(.env.example에서 복사)를 통해 설정하는 환경 변수:

위의 POSTGRES_PASSWORD/SECRET_KEY 기본값은 데모 전용입니다 - 로컬/개인 인스턴스에서는 괜찮지만, 다른 사람이 접근할 수 있는 환경에 배포하기 전에 둘 다 변경하세요. 이제 이것은 권고 사항이 아니라 강제 사항입니다: ONUS_ENV=production을 설정하면(또는 호스팅 인증을 켜면) 둘 중 하나라도 기본값/플레이스홀더인 동안 백엔드가 시작을 거부합니다. 강력한 키는 python -c "import secrets; print(secrets.token_urlsafe(48))"로 생성하세요.

호스팅 전용 기능은 기본적으로 꺼져 있습니다. REQUIRE_AUTH(계정 / OAuth 로그인)와 HOSTED_QUEUE_ENABLED(스캔 큐)는 모두 기본값이 false이며 docker-compose.yml에 설정되어 있지 않으므로 자체 호스팅 ONUS는 로그인이나 큐 뒤에 가둬지지 않습니다. 의도적으로 다중 사용자 호스팅 배포를 구축하지 않는 한 꺼진 상태로 두세요 - 관리형 tryonus.tech 인스턴스가 바로 이 기능들을 켜는 곳입니다.

분석 (선택 사항)

ONUS는 기본적으로 분석 기능이 없습니다 - 아무것도 로드되지 않으며 브라우저 밖으로 나가는 데이터가 없습니다. 자체 배포에서 익명 제품 사용 지표를 수집하려면 단일 Google Analytics 4 측정 ID를 설정하세요:

root@kitploit:~
NEXT_PUBLIC_GA_ID=G-XXXXXXXXXX

이는 프론트엔드 빌드 타임 변수이므로 프론트엔드 빌드 환경에서 설정하세요(Vercel/호스트 환경 변수, 또는 로컬 npm run build의 경우 frontend/.env.local). 설정하면 GA는 프로덕션 빌드에서만 로드되며 페이지 뷰와 몇 가지 제품 이벤트(예: scan_started, scan_completed, report_downloaded)를 추적합니다. 커스텀 이벤트는 frontend/lib/analytics.ts의 타입화된 헬퍼를 통해 전달됩니다 - trackEvent('scan_started').

개인정보 보호: 익명의 낮은 카디널리티 사용 이벤트만 전송됩니다 - 스캔된 도메인, 스캔 결과, 발견 항목, 보고서 내용, 인증 상태 또는 개인 데이터는 절대 전송되지 않습니다. NEXT_PUBLIC_GA_ID를 설정하지 않으면 ONUS는 이전과 정확히 동일하게 동작합니다; 분석은 전적으로 옵트인 방식입니다.

API 문서

FastAPI는 대화형 Swagger 문서를 자동으로 생성합니다 - 백엔드가 실행 중이면 **http://localhost:8000/docs**를 여세요.

중지

root@kitploit:~
docker compose down

로그

root@kitploit:~
docker compose logs -f backend worker

테스트 및 검증

root@kitploit:~
pip install -r backend/requirements-dev.txt
pytest backend/tests

이 글을 작성하는 시점 기준 655개의 자동화된 백엔드 테스트가 있습니다. 단위/통합 테스트 스위트 외에도 이 도구는 개발 중에 엔드투엔드로 검증되었습니다: 9개의 의도적으로 취약한 연습용 애플리케이션(DVWA, Juice Shop, Mutillidae, NodeGoat, bWAPP, WebGoat, Metasploitable2, WAF 뒤의 DVWP/WordPress)과 1개의 승인된 공개 대상(testphp.vulnweb.com)에 대해 79회의 실제 스캔이 실행되고 124개의 PDF 보고서가 생성되었습니다 - 가상의 수치가 아닙니다. 명시적으로 테스트 승인을 받은 대상만 스캔하세요 - 개발 중 사용된 연습용 대상은 docs/test_findings.md를 참조하세요.

문서

  • ARCHITECTURE.md - 전체 아키텍처, 스키마, 그리고 변경 시 절대 깨지면 안 되는 계약. 중요한 변경 전에 이 문서를 읽으세요.
  • docs/QUICK_REF.md - 실행 명령, 폴더 역할, "이 변경은 어디서 해야 하나요."
  • docs/scanners.md - 각 스캐닝 모듈의 타이밍/플래그 설계 배경.
  • docs/ai.md - Ollama 타임아웃/컨텍스트 튜닝, 점수화가 LLM에서 완전히 분리된 이유.
  • docs/docker.md - Docker 차이점 메모 및 빌드 시 주의사항.
  • docs/troubleshooting.md - 모든 모듈/단계를 개별적으로 수동 테스트하는 방법.
  • docs/roadmap.md - 과거 빌드 순서(빌드 완료).
  • CONTRIBUTING.md - 개발 환경 설정, 테스트, PR 기대 사항.

라이선스

MIT - LICENSE 참조.

승인된 사용만 허용

명시적인 서면 승인 없이 대상을 스캔하는 것은 IT Act 2000(인도) 및 이에 상응하는 국제 법령에 따라 불법입니다. 이 도구는 모든 스캔에서 인증 확인을 요구하며 책임 추적을 위해 운영자와 타임스탬프를 기록합니다.

도구 다운로드
자체 호스팅(이 저장소)호스팅(tryonus.tech)
설정docker compose up없음 - 사이트만 열면 됨
로그인없음 - 단일 운영자계정 / Google / GitHub OAuth
스캔 흐름도메인 → 인증 확인란 → 스캔로그인 후 동일
추가 기능-스캔 큐, 사용자별 기록, 호스팅 이메일
실행 환경자체 네트워크, 에어갭관리형 클라우드
변수기본값용도
POSTGRES_PASSWORDvapt_secure_2025데이터베이스 비밀번호
SECRET_KEYchange_me_to_a_long_random_string백엔드 비밀 키
ALLOWED_HOSTSlocalhost,127.0.0.1FastAPI 허용 호스트
OLLAMA_URLhttp://host.docker.internal:11434백엔드/워커가 Ollama에 접근하는 주소
SCAN_TIMEOUT_MULTIPLIER1.5모든 모듈의 도구/Celery 타임아웃을 확장 - 실제 환경의 대상은 실험실 대상보다 느리므로, 실험실 튜닝 타이밍에는 1.0으로 낮추세요
MAX_CONCURRENT_SCANS3동시 스캔 상한(리소스 고갈 방지/대상 부하 완화 가드, DB 연결 풀 크기도 결정)
ONUS_ENVdevelopmentdevelopment(자체 호스팅 localhost - 약한 비밀 키는 경고만) 또는 production(약한 SECRET_KEY/Postgres 비밀번호는 치명적인 시작 실패를 유발)