
secator - 침투 테스터의 스위스 나이프
<h1 align="center">
<img src="https://assets.kitploit.com/production/public/readmes/6300/dc9ae605fb3dd81cb606836bd853e391122c4acde19b8554c2db00fcaa28a6e5.png" width="400">
</h1>
<h4 align="center">펜테스터의 스위스 나이프.</h4>
<p align="center">
<!-- <a href="https://goreportcard.com/report/github.com/freelabz/secator"><img src="https://goreportcard.com/badge/github.com/freelabz/secator"></a> -->
<img src="https://img.shields.io/badge/python-3.6-blue.svg">
<a href="https://github.com/freelabz/secator/releases"><img src="https://img.shields.io/github/release/freelabz/secator"></a>
<a href="https://github.com/freelabz/secator/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-BSL%201.1-brightgreen.svg"></a>
<a href="https://pypi.org/project/secator/"><img src="https://img.shields.io/pypi/dm/secator"></a>
<a href="https://twitter.com/freelabz"><img src="https://img.shields.io/twitter/follow/freelabz.svg?logo=twitter"></a>
<a href="https://youtube.com/@FreeLabz"><img src="https://img.shields.io/youtube/channel/subscribers/UCu-F6SpU0h2NP18zBBP04cw?style=social&label=Subscribe%20@FreeLabz"></a>
<a href="https://discord.gg/nyHjC2aTrq"><img src="https://img.shields.io/discord/695645237418131507.svg?logo=discord"></a>
</p>
<p align="center">
<a href="#features">기능</a> •
<a href="#supported-commands">지원 명령어</a> •
<a href="#install-secator">설치</a> •
<a href="#usage">사용법</a> •
<a href="https://docs.freelabz.com">문서</a> •
<a href="https://discord.gg/nyHjC2aTrq">Discord에 참여하세요!</a>
</p>
`secator`는 보안 평가에 사용되는 작업 및 워크플로우 실행기입니다. 수십 개의 잘 알려진 보안 도구를 지원하며 펜테스터와 보안 연구자의 생산성을 향상시키기 위해 설계되었습니다.
# 기능

* **엄선된 명령어 목록**
* **통합된 입력 옵션**
* **통합된 출력 스키마**
* **CLI 및 라이브러리 사용**
* **Celery를 이용한 분산 옵션**
* **간단한 작업부터 복잡한 워크플로우까지**
* **사용자 정의 가능**
## 지원 도구
`secator`는 다음 도구를 통합합니다:
<!-- START_TOOLS_TABLE -->
| 이름 | 설명 | 카테고리 |
|----------------------------------------------------------------|----------------------------------------------------------------------------------|-------------------|
| [arjun](https://github.com/s0md3v/Arjun) | HTTP 파라미터 검색 도구. | `url/fuzz/params` |
| arp | 시스템 ARP 캐시를 표시합니다. | `ip/recon` |
| [arpscan](https://github.com/royhills/arp-scan) | ARP를 사용하여 CIDR 범위에서 활성 호스트를 스캔합니다. | `ip/recon` |
| [bbot](https://github.com/blacklanternsecurity/bbot) | 다목적 스캐너. | `vuln/scan` |
| [bup](https://github.com/laluka/bypass-url-parser) | 40X 우회 도구. | `url/bypass` |
| [cariddi](https://github.com/edoardottt/cariddi) | 엔드포인트, 비밀, API 키, 확장자, 토큰 등을 크롤링합니다. | `url/crawl` |
| [dalfox](https://github.com/hahwul/dalfox) | 강력한 오픈 소스 XSS 스캐닝 도구. | `url/fuzz` |
| [dirsearch](https://github.com/maurosoria/dirsearch) | 고급 웹 경로 무차별 대입 도구. | `url/fuzz` |
| [dnsx](https://github.com/projectdiscovery/dnsx) | dnsx는 다양한 retryabledns 라이브러리 실행을 위해 설계된 빠르고 다목적 DNS 툴킷입니다. | `dns/fuzz` |
| [feroxbuster](https://github.com/epi052/feroxbuster) | Rust로 작성된 간단하고 빠르며 재귀적인 콘텐츠 검색 도구 | `url/fuzz` |
| [ffuf](https://github.com/ffuf/ffuf) | Go로 작성된 빠른 웹 퍼저. | `url/fuzz` |
| [fping](https://github.com/schweikert/fping) | 네트워크 호스트에 ICMP 에코 프로브를 보냅니다. ping과 비슷하지만 훨씬 뛰어납니다. | `ip/recon` |
| [gau](https://github.com/lc/gau) | AlienVault의 Open Threat Exchange, Wayback Machine, Common Crawl, URLScan에서 알려진 URL을 가져옵니다. | `pattern/scan` |
| [getasn](https://github.com/Vulnpire/getasn) | IP 주소에서 ASN 정보를 가져옵니다. | `ip/probe` |
| [gf](https://github.com/tomnomnom/gf) | grep의 래퍼로, 특정 항목을 grep하는 데 도움을 줍니다. | `pattern/scan` |
| [gitleaks](https://github.com/gitleaks/gitleaks) | git 저장소, 파일, stdin에서 비밀번호, API 키, 토큰과 같은 비밀을 감지하는 도구입니다. | `secret/scan` |
| [gospider](https://github.com/jaeles-project/gospider) | Go로 작성된 빠른 웹 스파이더. | `url/crawl` |
| [grype](https://github.com/anchore/grype) | 컨테이너 이미지 및 파일 시스템을 위한 취약점 스캐너. | `vuln/scan` |
| [h8mail](https://github.com/khast3x/h8mail) | 이메일 정보 및 비밀번호 조회 도구. | `user/recon/email` |
| [httpx](https://github.com/projectdiscovery/httpx) | 빠르고 다목적 HTTP 툴킷. | `url/probe` |
| [jswhois](https://github.com/jschauma/jswhois) | JSON 형식의 WHOIS | `domain/info` |
| [katana](https://github.com/projectdiscovery/katana) | 차세대 크롤링 및 스파이더링 프레임워크. | `url/crawl` |
| [maigret](https://github.com/soxoj/maigret) | 사용자 이름으로 개인에 대한 기록을 수집합니다. | `user/recon/username` |
| [mapcidr](https://github.com/projectdiscovery/mapcidr) | 주어진 서브넷/CIDR 범위에 대해 여러 작업을 수행하는 유틸리티 프로그램입니다. | `ip/recon` |
| [msfconsole](https://docs.rapid7.com/metasploit/msf-overview/) | Metasploit 프레임워크에 접근하고 작업하기 위한 CLI. | `exploit/attack` |
| [naabu](https://github.com/projectdiscovery/naabu) | Go로 작성된 포트 스캐닝 도구. | `port/scan` |
| [nmap](https://github.com/nmap/nmap) | 네트워크 매퍼는 네트워크 검색 및 보안 감사를 위한 무료 오픈 소스 유틸리티입니다. | `port/scan` |
| [nuclei](https://github.com/projectdiscovery/nuclei) | 간단한 YAML 기반 DSL을 기반으로 한 빠르고 사용자 정의 가능한 취약점 스캐너. | `vuln/scan` |
| [search_vulns](https://github.com/ra1nb0rn/search_vulns) | 제품 이름 또는 CPE로 소프트웨어의 알려진 취약점을 검색합니다. | `vuln/recon` |
| [searchsploit](https://gitlab.com/exploit-database/exploitdb) | ExploitDB 기반의 익스플로잇 검색기. | `exploit/recon` |
| [sshaudit](https://github.com/jtesta/ssh-audit) | SSH 서버 및 클라이언트 보안 감사 (배너, 키 교환, 암호화, MAC, 압축 등). | `ssh/audit/security` |
| [subfinder](https://github.com/projectdiscovery/subfinder) | 빠른 수동 서브도메인 열거 도구. | `dns/recon` |
| [testssl](https://github.com/testssl/testssl.sh) | SSL/TLS 보안 스캐너. 암호, 프로토콜 및 암호화 결함 포함. | `dns/recon/tls` |
| [trivy](https://github.com/aquasecurity/trivy) | 포괄적이고 다재다능한 보안 스캐너. | `vuln/scan` |
| [trufflehog](https://github.com/trufflesecurity/trufflehog) | TruffleHog를 사용하여 git 저장소 및 파일 시스템에서 비밀을 찾는 도구. | `secret/scan` |
| [urlfinder](https://github.com/projectdiscovery/urlfinder) | 텍스트에서 URL을 찾습니다. | `pattern/scan` |
| [wafw00f](https://github.com/EnableSecurity/wafw00f) | 웹 애플리케이션 방화벽 지문 인식 도구. | `waf/scan` |
| [whois](https://github.com/mboot-github/WhoisDomain) | whois 도구는 도메인 이름과 IP 주소에 대한 등록 정보를 검색합니다. | |
| [wpprobe](https://github.com/Chocapikk/wpprobe) | 빠른 워드프레스 플러그인 열거 도구. | `vuln/scan/wordpress` |
| [wpscan](https://github.com/wpscanteam/wpscan) | 워드프레스 보안 스캐너. | `vuln/scan/wordpress` |
| [x8](https://github.com/Sh1Yo/x8) | Rust로 작성된 숨겨진 파라미터 검색 도구. | `url/fuzz/params` |
| [xurlfind3r](https://github.com/hueristiq/xurlfind3r) | 간단하고 수동적이며 효율적인 방식으로 주어진 도메인의 URL을 발견합니다 | `url/recon` |
<!-- END_TOOLS_TABLE -->
새로운 도구 추가를 요청하려면 이슈를 열어 주시기 바랍니다. 단, 요청 전에 해당 도구가 당사의 선택 기준을 충족하는지 확인해 주세요. 그렇지 않더라도 `secator`에 통합하고 싶다면 직접 연결할 수 있습니다 ([개발자 가이드](https://docs.freelabz.com/for-developers/writing-custom-tasks) 참조).
## secator 설치
<details>
<summary>Bash</summary>
```sh
bash -c "$(curl -fsSL https://raw.githubusercontent.com/freelabz/secator/main/scripts/install_universal.sh)"
```
***참고:** 선택적 플래그 `--version`, `--templates`, `--addons`, `--tools`를 지원합니다. 자세한 내용은 스크립트를 `--help`와 함께 실행하세요.*
</details>
<details>
<summary>Pipx</summary>
```sh
pipx install secator
```
***참고:** [pipx](https://pipx.pypa.io/stable/installation/)가 설치되어 있어야 합니다.*
</details>
<details>
<summary>Pip</summary>
```sh
pip install secator
```
</details>
<details>
<summary>Docker</summary>
```sh
docker run -it --rm --net=host -v ~/.secator:/root/.secator freelabz/secator --help
```
볼륨 마운트 `-v`는 모든 secator 보고서를 호스트 머신에 저장하는 데 필요하며, `--net=host`는 호스트 네트워크에 대한 전체 액세스를 허용하기 위해 권장됩니다.
이 명령어를 별칭으로 지정하여 더 쉽게 실행할 수 있습니다:
```sh
alias secator="docker run -it --rm --net=host -v ~/.secator:/root/.secator freelabz/secator"
```
이제 secator를 베어메탈에 설치된 것처럼 실행할 수 있습니다:
```
secator --help
```
</details>
<details>
<summary>Docker Compose</summary>
```sh
git clone https://github.com/freelabz/secator
cd secator
docker-compose up -d
docker-compose exec secator-client secator --help
```
</details>
***참고:*** Docker 또는 Docker Compose 설치 방식을 선택한 경우 다음 섹션을 건너뛰고 바로 [사용법](#usage)으로 이동할 수 있습니다.
## 사용법
```sh
secator --help
```
### 사용 예제
`secator`로 할 수 있는 전체 치트시트를 보려면 다음 명령어의 출력을 읽어보세요:
```sh
secator cheatsheet
```
퍼징 작업 실행 (`ffuf`):
```sh
secator x ffuf http://testphp.vulnweb.com/FUZZ
```
URL 크롤 워크플로우 실행:
```sh
secator w url_crawl http://testphp.vulnweb.com
```
호스트 스캔 실행:
```sh
secator s host mydomain.com
```
사용 가능한 모든 작업/워크플로우/스캔을 나열하려면:
```sh
secator x --help
secator w --help
secator s --help
```
시스템에 어떤 언어나 도구가 설치되어 있는지 (버전 포함) 확인하려면:
```sh
secator health
```
### 쿼리
`secator`를 사용하면 `secator query` (또는 `secator q`) 명령어로 모든 이전 보고서를 쿼리하고 쿼리를 재사용할 수 있습니다.
`secator q <arg>`는 인수를 세 단계로 해석합니다:
1. **저장된 쿼리 이름** — `<arg>`가 저장된 쿼리와 일치하면 해당 표현식이 사용됩니다.
2. **필터 표현식** — `<arg>`가 필터처럼 보이면 (`==`, `<`, `~=`, `&&`, … 포함), 그대로 전달됩니다.
3. **자연어** — 그렇지 않으면 AI 채팅으로 전송됩니다 (`secator x ai --mode chat`).
```sh
# 원시 표현식을 직접 실행
secator q "vulnerability.tags ~= 'kev' && vulnerability.confidence == 'high'" # KEV (알려진 익스플로잇 취약점) + 높은 신뢰도 취약점
secator q "vulnerability.severity == 'critical' && vulnerability.tags ~= 'exploitable' && vulnerability.confidence == 'high'" # 치명적 + 익스플로잇 가능 + 높은 신뢰도 취약점
secator q "vulnerability.severity_nb < 2 && vulnerability.confidence == 'high'" # 심각도 > 높음 + 높은 신뢰도 취약점
secator q "exploit.cves ~= 'CVE-2021-44521'" # 취약점 CVE-2021-44521에 대해 발견된 익스플로잇
secator q "port" -f "{host} {port} {service_name}" | cut -d " " -f2 | sort | uniq -c | sort -nr | head -n 15 # 상위 15개 포트
secator q "port" -f "{host} {port} {service_name}" | cut -d " " -f3,4,5,6 | awk 'NF > 0' | sort | uniq -c | sort -nr | head -n 15 # 상위 15개 서비스
secator q "technology" -f "{product}/{version}" | sort | uniq -c | sort -nr | head -n 15 # 상위 15개 기술
secator q "port.state == 'open'" -rf scans/23,tasks/10 # 스캔 23 및 작업 10의 결과만
# 쿼리 저장 및 실행
secator c set queries.critical_vulns "vulnerability.severity_nb < 2" # 쿼리 저장
secator c get queries # 저장된 쿼리 목록
secator q critical_vulns -f "{vulnerability.matched_at}" -ws secator.cloud # 워크스페이스에서 저장된 쿼리 실행 + 대상 추출
# 자연어 질문 (AI 채팅 작업 실행)
secator q "Analyze my workspace data"
```
`secator q`는 `secator r show`와 동일한 옵션을 허용합니다 (`-o/--output`,
`-d/--time-delta`, `-f/--format`, `-w/-ws/--workspace`, `--driver`, `--dedupe`),
추가로 `-rf/--report-filter`를 사용하여 쿼리 범위를 특정 실행기 경로로 제한할 수 있습니다 (`r show`의 `REPORT_QUERY` 인수와 동일). AI 채팅 경로에서는 워크스페이스와 프롬프트만 사용됩니다.
### 셸 완성
`secator`는 bash, zsh, fish에 대한 셸 완성을 지원합니다. 다음 항목에 대한 자동 완성을 제공합니다:
- 작업 이름 (예: `nmap`, `httpx`, `nuclei`)
- 워크플로우 이름 (예: `url_crawl`, `subdomain_recon`)
- 스캔 이름 (예: `host`, `domain`, `network`)
- CLI 옵션: `--profiles`, `--workspace`, `--driver`, `--output`
셸 완성을 설치하려면:
**Bash:**
```sh
secator util completion --shell bash --install
source ~/.bashrc
```
**Zsh:**
```sh
secator util completion --shell zsh --install
source ~/.zshrc
```
**Fish:**
```sh
secator util completion --shell fish --install
```
설치 후 탭 완성을 사용할 수 있습니다:
```sh
secator x n<TAB> # nmap, naabu, nuclei 등으로 완성
secator w url_<TAB> # url_crawl, url_fuzz, url_dirsearch 등으로 완성
secator x nmap --profiles ag<TAB> # aggressive로 완성
```
## 도구 설치
`secator`는 처음 사용할 때 도구를 자동으로 설치합니다. 이 동작을 방지하려면 `security.autoinstall_commands`를 `false`로 설정하세요. `secator config set security.autoinstall_commands false` 또는 `SECATOR_SECURITY_AUTOINSTALL_COMMANDS=0`을 사용할 수 있습니다.
모든 도구를 설치하려면 다음을 실행할 수 있습니다:
```sh
secator install tools
```
## 애드온 설치
`secator`용 애드온이 제공됩니다. 자세한 내용은 [문서](https://docs.freelabz.com/getting-started/installation#installing-addons-optional)를 확인하세요.
예를 들어, `mongodb` 애드온을 사용하면 실행기 결과를 MongoDB로 보낼 수 있습니다.
## 더 알아보기
`secator`에 대해 더 깊이 알아보려면 다음을 확인하세요:
* 전체 [문서](https://docs.freelabz.com)
* 시작 [튜토리얼 비디오](https://youtu.be/-JmUTNWQDTQ?si=qpAClDWMXo2zwUK7)
* [Medium 게시글](https://medium.com/p/09333f3d3682)
* 소셜 미디어 팔로우: Twitter의 [@freelabz](https://twitter.com/freelabz), YouTube의 [@FreeLabz](https://youtube.com/@FreeLabz)
## 통계
<a href="https://star-history.com/#freelabz/secator&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=freelabz/secator&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=freelabz/secator&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=freelabz/secator&type=Date" />
</picture>
</a>