Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
BaconSampler — 의심스러운 비콘 형태의 콜백을 위해 아웃바운드 트래픽을 탐지합니다. 정해진 시간마다 반복해서 돌아온다면 아침 식사가 아닐 테니까요. | Kitploit
도구/GitHubGitHub/logisek/baconsampler
Packet Sniffing & AnalysisReconnaissanceForensicsInformation GatheringNetwork SecurityThreat IntelligenceIntrusion DetectionDNS AnalysisLog Analysis
GitHublogisek/baconsampler

BaconSampler

의심스러운 비콘 형태의 콜백을 위해 아웃바운드 트래픽을 탐지합니다. 정해진 시간마다 반복해서 돌아온다면 아침 식사가 아닐 테니까요.

20168개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
저장소 보기
공유
# Bacon Sampler

아웃바운드 트래픽을 스니핑하여 의심스러운 비콘 같은 콜백을 찾아냅니다. 정해진 시간마다 계속 돌아온다면, 아침 식사는 아닐 테니까요.

## 아웃바운드 연결 (Windows + libpcap)

Bacon Sampler는 경량 아웃바운드 연결 캐처로, 네트워크 트래픽의 지글거림을 스니핑하고 "비콘 같은" 행동(멀웨어가 본사로 전화하는 듯한 주기적이고 느린 콜백)을 플래그합니다.

수동적으로 아웃바운드 연결과 DNS 조회를 모니터링한 후, 일정한 간격, 반복되는 목적지, 이상한 지터, 일관된 바이트 크기 등 정상적인 브라우징보다는 봇이 명령을 확인하는 것처럼 보이는 패턴을 강조합니다.

Beacon Scanner의 맛있는 버전이라고 생각하세요. 무언가가 매번 같은 시간에 다시 나타난다면... 우리는 베이컨을 샘플링하는 중입니다.

## 기능

- 선택적 netstat PID 상관 관계를 포함한 Pcap 캡처
- 역 DNS 및 GeoIP (오프라인 데이터베이스 또는 무료 온라인 조회)
- 프로토콜, 원격 포트 범위 및 IP CIDR 필터
- 그룹 요약 (원격 IP, 프로세스 또는 국가별) 및 선택적 상위 N
- 비콘 같은 활동 탐지 (저속 콜백)
- 의심스러운 연결 + DNS 쿼리 행동 패턴 탐지
- CSV/JSON 내보내기 및 파생 요약 파일
- 모든 테이블이 포함된 선택적 HTML 보고서

## 사전 요구 사항

- Windows 11
- Python 3.10+
- Npcap (권장) - "WinPcap API 호환 모드로 Npcap 설치" 옵션 선택
- 오프라인 IP 국가 조회용 GeoIP 데이터베이스:
  - MaxMind GeoLite2 Country (`.mmdb`) 또는 DB-IP Lite (`.mmdb`)
  - IP2Location LITE (`.BIN`)
- 전체 가시성을 위해 PowerShell을 관리자 권한으로 실행

## 설치

```powershell
pip install -r requirements.txt
```

GeoIP 데이터베이스를 다운로드하고 경로를 기록해 두세요:
- GeoLite2 또는 DB-IP Lite (`.mmdb`)
- IP2Location LITE (`.BIN`)

무료 온라인 조회를 선호한다면 이 단계를 건너뛰고 `--geoip-online`을 사용할 수 있습니다.

## 사용법

### 사용 예시 (일반적인 조합)

인터페이스 목록:

```powershell
python capture_outbound.py --list-interfaces
```

인덱스로 인터페이스 선택:

```powershell
python capture_outbound.py --interface 0
```

여러 인터페이스 사용 (반복 가능):

```powershell
python capture_outbound.py --interface "Ethernet" --interface "Wi-Fi"
```

또는 쉼표로 구분된 이름 사용:

```powershell
python capture_outbound.py --interfaces "Ethernet,Wi-Fi"
```

Pcap 전용 캡처 (A) + 오프라인 GeoIP:

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
```

Pcap + netstat 상관 관계 (B) + 오프라인 GeoIP:

```powershell
python capture_outbound.py --mode pcap_plus_netstat --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
```

Pcap + netstat 합집합 (A+B):

```powershell
python capture_outbound.py --mode both --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
```

온라인 GeoIP (무료, 속도 제한 있음, 디스크에 캐시됨):

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi
```

IPinfo 토큰을 사용한 온라인 GeoIP:

```powershell
$env:IPINFO_TOKEN="your_token_here"
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo
```

또는 토큰을 명시적으로 전달:

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo --geoip-online-token "your_token_here"
```

온라인 GeoIP 타임아웃 및 재시도 조정:

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi --geoip-timeout 2.5 --geoip-retries 1
```

역 DNS 비활성화 (더 빠른 실행):

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --no-dns
```

DNS 타임아웃 조정:

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --dns-timeout 0.5
```

패킷 수로 캡처 제한:

```powershell
python capture_outbound.py --mode pcap --duration 60 --packet-limit 5000
```

프로토콜, 원격 포트 및 IP CIDR로 필터링:

```powershell
python capture_outbound.py --filter-protocol tcp --filter-port 80,443,1000-2000 --allow-ip 1.2.3.0/24 --deny-ip 1.2.3.4/32
```

그룹 요약 및 상위 N:

```powershell
python capture_outbound.py --group-by remote_ip,process --top 10
```

연결별 총 바이트 추적:

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --track-bytes
```

진행률 출력 비활성화:

```powershell
python capture_outbound.py --no-progress
```

콘솔 출력 비활성화:

```powershell
python capture_outbound.py --no-console
```

### 사용 예시 (고급 조합)

Pcap + netstat 합집합 (A+B) + 온라인 GeoIP + pcap, CSV, HTML 쓰기:

```powershell
python capture_outbound.py --mode both --duration 20 --interface "Ethernet,Wi-Fi" --geoip-online ipapi --pcap-out "C:\Path\capture.pcap" --csv "C:\Path\outbound.csv" --html "C:\Path\outbound.html"
```

Pcap 전용 + 출력 폴더 + 사용자 지정 CSV/JSON 이름:

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --output-dir "C:\Path\Reports" --csv "C:\Path\Reports\outbound.csv" --json "C:\Path\Reports\outbound.json"
```

비콘 같은 활동 탐지 (저속 콜백):

```powershell
python capture_outbound.py --duration 300 --beacon-min-duration 120 --beacon-min-interval 60 --beacon-max-interval 1800 --beacon-max-jitter 10 --beacon-min-packets 6 --beacon-max-rate 0.05
```

패턴 탐지 (일정한 간격, 지터, 반복 목적지, 일관된 크기):

```powershell
python capture_outbound.py --duration 300 --track-bytes --pattern-high-jitter 120 --pattern-repeat-destination 4 --pattern-max-byte-jitter 64 --dns-pattern-min-queries 4
```

필터링과 함께 엄격한 비콘 + 패턴 임계값:

```powershell
python capture_outbound.py --duration 600 --filter-protocol tcp --filter-port 443 --track-bytes --beacon-min-duration 180 --beacon-min-interval 90 --beacon-max-interval 900 --beacon-max-jitter 5 --beacon-min-packets 8 --pattern-high-jitter 60 --pattern-repeat-destination 5 --pattern-max-byte-jitter 32
```

DNS 중심 캡처 (빠른 DNS 조회 + DNS 패턴):

```powershell
python capture_outbound.py --duration 180 --dns-timeout 0.25 --dns-pattern-min-queries 5 --pattern-repeat-destination 3
```

### 출력

- 기본적으로 콘솔 테이블
- CSV: `outbound_connections.csv`
- JSON: `outbound_connections.json`
- HTML: `--html "report.html"`
- 비콘 발견: `*_beacon_findings.csv` / `*_beacon_findings.json`
- 연결 패턴: `*_connection_patterns.csv` / `*_connection_patterns.json`
- DNS 패턴: `*_dns_patterns.csv` / `*_dns_patterns.json`
- 고유 연결: `*_unique_connections.csv` / `*_unique_connections.json`
- 고유 프로세스: `*_unique_processes.csv` / `*_unique_processes.json`
- 그룹 요약: `*_group_remote_ip*.csv/json`, `*_group_process*.csv/json`, `*_group_country*.csv/json`

사용자 지정 CSV/JSON 출력 경로:

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --csv "C:\Path\outbound.csv" --json "C:\Path\outbound.json"
```

모든 출력을 폴더로 보내기:

```powershell
python capture_outbound.py --mode pcap --duration 20 --output-dir "C:\Path\Reports"
```

HTML 출력 쓰기:

```powershell
python capture_outbound.py --html "outbound.html"
```

pcap 파일 쓰기:

```powershell
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --pcap-out "capture.pcap"
```

## 명령줄 옵션

- `--mode {pcap,pcap_plus_netstat,both}`: 캡처 전략 (기본값: `pcap`)
- `--duration SECONDS`: 캡처 지속 시간 (기본값: `15`)
- `--packet-limit COUNT`: N개 패킷 후 중지 (`0` = 무제한)
- `--list-interfaces`: Npcap 인터페이스 표시 후 종료
- `--interface NAME`: 캡처 인터페이스 이름 (반복 가능)
- `--interfaces "NAME,NAME"`: 쉼표로 구분된 인터페이스 이름
- `--filter-protocol tcp,udp`: 프로토콜 필터 (반복 또는 쉼표 구분)
- `--filter-port 80,443,1000-2000`: 원격 포트 필터
- `--allow-ip CIDR`: 허용할 원격 IP CIDR
- `--deny-ip CIDR`: 차단할 원격 IP CIDR
- `--group-by remote_ip,process,country`: 그룹 요약 출력
- `--top N`: 그룹 요약을 상위 N 행으로 제한
- `--beacon-min-duration SECONDS`: 비콘 탐지 최소 지속 시간
- `--beacon-min-packets COUNT`: 비콘 탐지 최소 패킷 수
- `--beacon-min-interval SECONDS`: 비콘 탐지 최소 평균 간격
- `--beacon-max-interval SECONDS`: 비콘 탐지 최대 평균 간격
- `--beacon-max-jitter SECONDS`: 비콘 탐지 최대 간격 지터
- `--beacon-max-rate PPS`: 비콘 탐지 최대 초당 패킷 수
- `--pattern-high-jitter SECONDS`: 무작위 패턴에 대한 간격 지터 임계값
- `--pattern-repeat-destination COUNT`: 반복 목적지 플래그 최소 연결 수
- `--pattern-max-byte-jitter BYTES`: 일관성을 위한 최대 바이트 크기 범위
- `--dns-pattern-min-queries COUNT`: 패턴 플래그 최소 DNS 쿼리 수
- `--csv PATH`: CSV 출력 경로 (기본값: `outbound_connections.csv`)
- `--json PATH`: JSON 출력 경로 (기본값: `outbound_connections.json`)
- `--html PATH`: HTML 보고서 출력 경로
- `--pcap-out PATH`: 캡처된 패킷을 pcap으로 저장
- `--output-dir PATH`: 모든 출력 파일을 이 디렉터리에 저장
- `--no-console`: 콘솔 테이블 출력 비활성화
- `--no-progress`: 진행률 출력 비활성화
- `--log-json`: 경고/오류를 stderr에 JSON 라인으로 출력
- `--track-bytes`: 가능할 때 연결별 총 바이트 추적
- `--geoip-db PATH`: GeoIP 데이터베이스 경로 (`.mmdb` 또는 IP2Location `.BIN`)
- `--geoip-db-type {auto,maxmind,dbip,ip2location}`: GeoIP DB 유형 (기본값: `auto`)
- `--geoip-online {ipapi,ip-api,ipinfo}`: 무료 온라인 GeoIP 서비스 사용 (속도 제한 있음)
- `--geoip-online-token TOKEN`: 온라인 GeoIP 제공자 API 토큰 (예: IPinfo)
- `--geoip-cache-path PATH`: 온라인 GeoIP 캐시 JSON 경로 재정의
- `--geoip-timeout SECONDS`: 온라인 GeoIP 요청 타임아웃 (기본값: `3.0`)
- `--geoip-retries COUNT`: 온라인 GeoIP 재시도 횟수 (기본값: `2`)
- `--no-dns`: 역 DNS 조회 비활성화
- `--dns-timeout SECONDS`: DNS 조회 타임아웃 (기본값: `2.0`)

## 출력 데이터

주 출력 (`--csv/--json`)에는 다음 필드가 포함됩니다:

- `protocol`, `local_ip`, `local_port`
- `remote_ip`, `remote_port`, `remote_hostname`, `remote_fqdn`, `remote_country`
- `pid`, `process_name`, `packet_count`
- `duration_seconds`, `avg_interval_seconds`, `interval_jitter_seconds`
- `first_seen`, `last_seen`, `source`
- `byte_count` (`--track-bytes` 활성화 시)

파생 출력에는 다음이 포함됩니다:

- 고유 연결: `remote_ip`, `remote_port`, `remote_hostname`, `remote_fqdn`, `remote_country`
- 고유 프로세스: `pid`, `process_name`, `connection_count`, `unique_remote_ips`
- 그룹 요약: `remote_ip`, `process`, 또는 `country`별 개수 및 고유 메트릭
- 비콘 발견: 주 출력 필드 + `beacon_reason`
- 연결 패턴: 주 출력 필드 + `pattern_type`/`pattern_reason`,
  `byte_min`/`byte_max`/`byte_range` (`--track-bytes` 사용 시), 대상 합계
- DNS 패턴: `dns_query`, `query_count`, 해석기 IP/포트, 패턴 세부 정보, 그리고
  `byte_min`/`byte_max`/`byte_range` (`--track-bytes` 사용 시)

## 참고 사항

- 관리자 권한 PowerShell을 사용하여 승격된 트래픽을 캡처하고 PID를 매핑하세요.
- `--mode pcap_plus_netstat`는 캡처된 연결에만 PID/프로세스 데이터를 보강합니다.
- `--mode both`는 netstat 전용 연결을 최종 출력에 추가합니다.
- 패킷 캡처가 실패하거나 Npcap/scapy가 없으면 스크립트는 netstat 전용 결과로 대체하고
  출력을 쓴 후 종료 코드 `2`로 종료됩니다.
- `--log-json`은 경고/오류를 JSON 라인으로 포맷합니다 (수집에 유용).
- `--duration`은 초 단위입니다.
- `--packet-limit`은 남은 시간과 관계없이 N개 패킷 후 캡처를 중지합니다.
- `--no-dns`는 역 DNS 확인을 건너뜁니다 (호스트명/FQDN이 비어 있음).
- `--dns-timeout`은 DNS 조회 타임아웃(초)을 제어합니다.
- 온라인 GeoIP 결과는 `--geoip-cache-path`로 재정의하지 않는 한 출력 디렉터리(또는 작업 디렉터리)의 `geoip_online_cache.json`에 캐시됩니다.
- `--geoip-db-type auto`는 파일 확장자를 사용합니다: `.mmdb` -> MaxMind/DB-IP, `.BIN` -> IP2Location.
- IPinfo는 국가 전체 이름 대신 ISO 국가 코드(예: `US`)를 반환합니다.
- DNS 패턴 감지는 pcap 모드에서 캡처된 DNS 쿼리 패킷에서 파생됩니다.
- `--geoip-db`를 생략하면 `--geoip-online`을 사용하지 않는 한 `remote_country` 열이 비어 있습니다.
- `--geoip-db`와 `--geoip-online`을 모두 설정하면 데이터베이스가 사용됩니다.
- `--filter-port`는 원격 포트(아웃바운드 대상)에 적용됩니다.
- `--track-bytes`는 `byte_count` 열을 추가하고 크기 일관성 패턴을 활성화합니다.
도구 다운로드