
증거 중심의 Go 기반 DAST 스캐너로, 웹 앱과 API를 크롤링한 뒤 재현 가능한 증거와 함께 적응형 SQLi, XSS, RCE, SSRF, 인증 검사를 실행합니다.
고급 웹 보안 스캐너
엔드포인트를 발견하고, 웹 애플리케이션을 테스트하며, 증거를 검사합니다.
설치 · 사용법 · 워크플로 · 프로파일 · 커버리지 · 리포트 · 후원 · 기능 · 변경 이력
AKCA는 Go로 작성된 오픈소스 증거 중심의 동적 애플리케이션 보안 테스트(DAST) 스캐너입니다. HTTP 및 브라우저 보조 크롤링, JavaScript 분석, API 가져오기, 적응형 능동 테스트, 수동 검사, 재현 가능한 증거를 하나의 명령줄 워크플로로 결합합니다.
많은 스캐너는 애플리케이션을 크롤링한 다음 발견된 모든 엔드포인트에 광범위한 페이로드 세트를 전송합니다. 이 전략은 불필요한 트래픽을 발생시키고, 방어 시스템을 작동시키며, 상당한 수동 분류가 필요한 약한 신호를 만들어낼 수 있습니다. AKCA는 더 맥락적인 접근 방식을 취합니다. 먼저 대상에 대해 학습하고, 발견된 공격 표면을 모델링한 다음, 기술 스택, 파라미터, 인증 상태, WAF 동작, 사용 가능한 검증 기능에 따라 테스트를 선택합니다.
AKCA는 다음과 같이 설계되었습니다:
목표는 대상을 소진시키거나 압도하는 것이 아닙니다. 신중한 요청과 유용한 증거로 실제 취약점을 찾는 것입니다.
AKCA는 Acunetix, Invicti/Netsparker, Burp Suite Professional과 같은 성숙한 상용 플랫폼과 기능 또는 탐지 동등성을 주장하지 않습니다. 이러한 제품들은 숙련된 팀이 수년에 걸쳐 구축한 것입니다. AKCA는 한 명의 개발자가 개인 시간을 활용해 독립적으로 유지 관리하며, 기존 보안 도구에서 영감을 받고 독창적인 아이디어와 커뮤니티 피드백으로 만들어졌습니다. 현재 우선순위는 단순하고 유용하며 투명한 스캐너입니다. 그래픽 인터페이스는 엔진이 충분히 안정적이고 신뢰할 수 있게 되면 계획되어 있습니다.
실시간 엔진 상태, 리소스 텔레메트리, 확인된 발견 사항이 표시된 AKCA v0.2.4 스캔 세션.
Go 1.25 이상이 필요합니다.```bash go install github.com/akha-security/akca/engine/cmd/akca@latest akca --version
<details>
<summary>명령어를 찾을 수 없나요? PATH를 설정하세요.</summary>
기본 Go 설치의 경우, Go 바이너리 디렉터리를 현재 터미널의 `PATH`에 추가하세요.
**Linux / macOS**```bash
export PATH="$(go env GOPATH)/bin:$PATH"
세션 간에 유지하려면 해당 줄을 셸 구성에 추가하세요.
Windows PowerShell```powershell $env:Path += ";$(go env GOPATH)\bin"
이후 세션에서는 동일한 디렉터리를 사용자 `Path` 환경 변수에 추가하세요. `GOBIN`을 구성한 경우에는 해당 디렉터리를 대신 사용하세요.
</details>
### 사전 빌드된 바이너리
[GitHub Releases](https://github.com/akha-security/akca/releases/latest)에서 빌드를 다운로드하세요. 릴리스에는 체크섬 검증을 위한 `SHA256SUMS.txt`가 포함되어 있습니다.
| 플랫폼 | 아키텍처 | 에셋 |
| --- | --- | --- |
| Linux | x64 / ARM64 | `akca-linux-amd64` / `akca-linux-arm64` |
| macOS | Intel / Apple Silicon | `akca-darwin-amd64` / `akca-darwin-arm64` |
| Windows | x64 | `akca-windows-amd64.exe` |
Linux 또는 macOS에서는 다운로드한 파일을 실행 가능하게 만드세요. Linux x64의 경우:```bash
chmod +x akca-linux-amd64
./akca-linux-amd64 --help
Windows에서는 다운로드한 파일의 이름을 akca.exe로 바꾸고 PowerShell에서 .\akca.exe --help를 실행하세요. 아래 예시들은 akca가 PATH에 있다고 가정합니다.
브라우저 기반 검사에는 Chrome, Chromium 또는 Edge가 필요합니다.
AKCA는 본인이 소유하거나 테스트 권한이 있는 시스템에서만 사용하세요. 예시 URL을 권한이 부여된 대상으로 교체하세요.
akca -u https://example.com
기본 프로필은 `full`입니다. HTML 보고서를 저장하려면:```bash
akca -u https://example.com -f html -o report.html
SQL 인젝션, XSS, 서버 측 인젝션 검사(SSTI 포함)를 실행합니다:```bash akca -u https://example.com -m sql,xss,rce
패시브 검사 실행:```bash
akca -u https://example.com -m passive
Passive 스캔은 탐지 및 검사를 위해 여전히 요청을 전송합니다.
세션 쿠키를 제공하세요:```bash akca -u https://example.com -c "session=YOUR_SESSION_COOKIE"
또는 인증 헤더:```bash
akca -u https://example.com -H "Authorization: Bearer YOUR_TOKEN"
일부 권한 부여 검사는 단일 세션을 넘어 추가적인 신원이나 상태 구성이 필요합니다.
akca -u https://api.example.com --api-spec ./openapi.yaml -m api
Discovery는 OpenAPI/Swagger, RAML, Postman, HAR, GraphQL, WSDL, protobuf, AsyncAPI 입력과 지원되는 ZIP 번들을 지원합니다. 테스트 범위는 가져온 프로토콜과 작업에 따라 달라집니다.
### 프록시를 통해 트래픽 검사```bash
akca -u https://example.com -p http://127.0.0.1:8080
akca --help를 실행하면 사용 가능한 모든 옵션을 확인할 수 있습니다.
일상적인 간단한 도움말은 akca -h를, 전체 옵션 참조는 akca --help를 사용하세요. 스캔 대상은 -u 또는 --url로 명시적으로 지정해야 합니다.
-m으로 프로필을 선택하거나, 쉼표로 여러 개를 조합할 수 있습니다.
실행 여부는 발견된 엔드포인트, 구성, 사용 가능한 검증 기능 및 스캔 제한에 따라 달라집니다. 전체 기능 가이드는 FEATURES.md를 참조하세요.
AKCA는 단계별 파이프라인을 사용하여 이후 검사가 이전에 학습한 사실을 활용할 수 있도록 합니다:
커버리지는 명시적입니다. 건너뛰거나, 실패하거나, 예산이 제한되거나, 완료되지 않은 대상은 불완전한 커버리지로 기록되며, 조용히 깨끗한 보안 결과로 처리되지 않습니다.
다음 목록은 구현된 탐색 엔진과 보안 테스트 패밀리를 설명합니다. 개별 검사는 발견된 표면, 스캔 프로필, 구성, 안전 정책 및 검증 전제 조건이 적용 가능할 때만 실행됩니다. 나열된 기능이 취약점의 모든 변형이 탐지된다는 것을 보장하지는 않습니다.
총 요청 예산 및 최대 기간을 설정합니다:```bash akca -u https://example.com --request-budget 5000 --time-budget 30m
또는 발견된 URL/메서드 조합으로부터 모듈 예산을 계산합니다:```bash
akca -u https://example.com --requests-per-target 200
AKCA는 모듈, URL, 파라미터에 걸쳐 제한된 모듈 예산을 분배합니다. 사용되지 않은 할당량은 이후 작업으로 이월됩니다. 양수 --request-budget은 --requests-per-target보다 우선합니다.
기본적으로 모듈 스캔에는 요청 할당량이 없습니다. 예산 중단은 불완전한 커버리지로 보고됩니다. 이후 작업에서 사용되지 않은 예산이 반환되더라도 중단된 대상은 자동으로 재개되지 않습니다. 어떤 예산 설정도 모든 취약점의 탐지를 보장하지 않습니다.
연결된 API/서비스 서브도메인은 기본 대상 범위 밖에 있습니다. 동일한 루트 아래의 연결된 서브도메인을 포함하려면:```bash akca -u https://www.example.com --include-linked-api-subdomains
### 전체 스캔이 더 오래 걸리는 이유
AKCA의 기본 전체 스캔은 가능한 한 짧은 완료 시간이 아니라 커버리지와 증거 품질을 중심으로 설계되었습니다. 따라서 실행 시간은 얕은 HTTP 크롤링 후 중단하거나 단일 응답 차이만으로 취약점을 보고하는 도구와 직접 비교할 수 없습니다.
포괄적인 실행이 더 오래 걸릴 수 있는 이유는 AKCA가 다음과 같은 작업을 수행하기 때문입니다:
- 클라이언트 렌더링 경로를 위한 브라우저 세션을 유지하고, 지연 로드되는 애플리케이션 청크를 포함한 JavaScript를 검사합니다.
- 일반적인 오류, 불안정한 페이지, WAF 응답으로 인한 오탐을 줄이기 위해, 유망한 결과를 발견 사항으로 승격하기 전에 대조군과 함께 재검증합니다.
- 모듈이 더 강력한 증명을 요구할 때 신원, 상태, 콜백을 인식하는 검사를 수행합니다.
- 속도만을 유일한 성공 지표로 삼지 않고 대상의 페이싱, 재시도, 요청 예산, 대역 외 관찰 시간을 준수합니다.
스캔 시간은 애플리케이션 크기, 응답 지연, 인증 흐름, 방어 제어, 구성된 범위에 따라 달라집니다. 더 빠른 피드백을 원하면 `-m`으로 관련 모듈만 선택하거나 명시적인 크롤링, 요청, 시간 예산을 적용하십시오. 속도와 동시성은 권한이 부여된 대상이 추가 트래픽을 안전하게 처리할 수 있을 때만 높이십시오. 더 짧은 스캔이 반드시 더 완전한 스캔은 아닙니다.
## 보고서
`-f`로 출력 형식을 선택하고 `-o`로 파일 경로를 지정하십시오:```bash
akca -u https://example.com -f html -o report.html
지원 형식: HTML, JSON, Markdown, CSV, SARIF. 각 실행은 새로운 스캔을 시작합니다.
HTML 보고서는 자체 포함형이며 AKCA 로고, 위험 및 심각도 요약, 취약점 통계, 구조화된 발견 상세 정보, 확장 가능한 HTTP 증거를 포함합니다. 요청 및 응답 탭은 통합 보기, 전체 내용 확장, 복사를 지원합니다. 발견 사항이 일치하는 응답 값을 보존하는 경우, AKCA는 이를 노란색으로 강조 표시하여 반사된 페이로드나 노출된 비밀을 찾는 데 도움을 줍니다. 수동 비밀 발견 사항은 일치 항목 주변의 발췌 내용을 유지합니다.
모듈에 따라 발견 사항에는 다음이 포함됩니다:
타이밍 발견 사항, 누락된 헤더, 외부 콜백은 강조 표시할 응답 텍스트가 없을 수 있습니다. 해당 검증 컨텍스트가 관련 증거를 제공합니다.
스캐너가 완전한 원시 트랜잭션을 저장한 경우, 보고서는 이를 정확히 보존합니다. 오래되었거나 구조화된 증거만 있는 경우, 요청 라인, 정렬된 헤더, 헤더/본문 구분자, 표준 HTTP 응답 사유 구문을 갖춘 기존의 Burp 스타일 HTTP 레이아웃으로 렌더링됩니다. 전송 캡처 제한으로 인해 응답이 잘린 경우, 보고서는 이를 명시적으로 알려주며, 저장된 부분을 사용할 수 없는 완전한 응답으로 제시하지 않습니다.
저장된 발견 사항 재현:```bash akca replay --finding 42
Reports는 기본적으로 인식된 자격 증명을 마스킹합니다. 원시 저장 증거는 재생을 위해 보존됩니다. 원시 내보내기가 필요할 때만 스캔 구성에서 `redact_reports`를 `false`로 설정하거나 보고서 API에서 `redact=false`를 사용하십시오. 공유하기 전에 보고서를 검토하십시오. 자동 마스킹은 모든 애플리케이션별 비밀을 인식할 수 없습니다.
### 크롤링 및 증명 구성
크롤러는 각 크롤링 단계 동안 쿠키와 브라우저 저장소를 포함한 하나의 브라우저 세션을 유지합니다. 명시적인 비양식 탭과 확장 가능한 패널을 탐색하며, 양식을 자동으로 채우거나 제출하지 않습니다. 브라우저 요청은 여전히 범위와 요청 예산을 준수합니다. 필수 타사 정적 종속성의 경우 정확한 호스트 이름을 별도로 구성하십시오:```json
{
"browser_resource_domains": ["cdn.example.com"],
"redact_reports": true
}
이것은 해당 호스트에 대한 GET/HEAD 스크립트, 스타일시트, 이미지, 폰트 및 미디어 요청만을 허용하며, 자격 증명 및 사용자 정의 헤더를 제거합니다. 해당 호스트를 활성 스캔 범위에 추가하거나 교차 출처 API 호출을 허용하지 않습니다. 차단된 브라우저 종속성은 커버리지 갭 이벤트를 생성합니다.
발견된 URL은 방문할 수 없는 경우에도 유지됩니다. 대기 중인 작업이 있는 상태에서 크롤링이 예산을 소진하면 부분 스캔과 0이 아닌 CLI 종료 코드가 생성됩니다. 모듈 사전 점검 메시지는 누락된 신원/상태 정책과 구성된 검증 기능을 구분합니다.
구성되지 않은 속도 제한 검사는 취약점 발견이 아닌 관찰을 생성합니다. 구성된 임계값 증명에는 window_seconds도 필요합니다. 요청이 해당 윈도우 내에 맞지 않으면 검사는 불확정입니다. SQLi는 400 응답이나 산술 평가만으로는 증거로 간주하지 않습니다. 400/422 응답에서 새로운 벤더별 SQL 오류는 재생 및 제어 검증 경로를 통과해야 합니다.
릴리스 세부 정보는 CHANGELOG.md를 참조하세요.
AKCA는 후원이나 개인 기부를 받지 않습니다. 코드 기여, 테스트, 문서화, 사려 깊은 피드백은 언제나 환영합니다.
Projeye maddi olarak destek olmak istiyorsanız, bana göndermek yerine Mehmetçik Vakfı, AFAD, Türk Kızılay veya Çocuk Hizmetleri Genel Müdürlüğü aracılığıyla desteklenen güvenilir sosyal yardım çalışmalarından birine bağış yapmanızı rica ediyorum. Mümkünse bağışınızı kızım Akça Aktaş adına yapın. Bağıştan sonra X üzerinden @caneraktas_ hesabına mesaj göndermeniz beni gerçekten çok mutlu eder.
If you would like to support the project financially, please donate to a reputable charity in your country that helps children, disaster-affected communities, veterans, or people in urgent need. When possible, make the donation in the name of my daughter, Akça Aktaş. You are welcome to share it with me on X at @caneraktas_; knowing that this project inspired a helpful act would mean a great deal to me.
Build from source:```bash git clone https://github.com/akha-security/akca.git cd akca/engine go build -buildvcs=false -trimpath -o ../akca ./cmd/akca
Windows에서는 실행 파일 이름으로 `-o ../akca.exe`를 사용하세요.
`engine` 디렉터리에서 검사를 실행하세요:```bash
go test ./... -count=1
go vet ./...
go run ./cmd/akca benchmark --strict
벤치마크는 관측된 코퍼스를 측정합니다. 구현 세부 사항과 검증 한계에 대해서는 아키텍처 가이드와 검증 감사를 참고하세요.
기여를 환영합니다. 풀 리퀘스트를 열기 전에 CONTRIBUTING.md와 행동 강령을 읽어 주세요. AKCA의 취약점은 SECURITY.md를 통해 신고해 주세요.
Apache License 2.0 · Copyright 2026 AKHA Security contributors.
| 프로필 | 검사 항목 |
|---|
full | 활성화된 모든 능동 및 수동 모듈; 기본값 |
sql | SQL 및 NoSQL 인젝션 |
xss | 반사형, 저장형, DOM, 블라인드 XSS; 관련 클라이언트 측 검사 |
rce | 명령어 인젝션, SSTI, 역직렬화 및 관련 검사 |
api | API 노출, BOLA/IDOR, BFLA, 매스 어사인먼트 및 토큰 검사 |
graphql | GraphQL 스키마 및 오퍼레이션 검사 |
ssrf | SSRF, XXE 및 관련 대역 외 검사 |
auth | 인증, 인가, CSRF 및 쿠키/헤더 검사 |
passive | 메타데이터, TLS, 보안 헤더, 시크릿 및 컴포넌트 분석 |
fuzz | 경로, 노출된 아티팩트, 트래버설 및 관련 검사 |
| 옵션 | 목적 |
|---|
--request-budget 5000 | 디스커버리, 재시도, 리다이렉트를 포함한 총 요청 수 제한 |
--requests-per-target 200 | 발견된 URL/메서드 조합으로부터 모듈 예산 산출 |
--crawler-budget 1000 | 디스커버리 요청 제한 |
--time-budget 30m | 스캔 시간 제한 |
--rate-limit 5 | 초당 요청 수 제한 |
--concurrency 4 | 동시 워커 수 제한 |