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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dnsmonster — 수동 DNS 캡처 및 모니터링 툴킷 | Kitploit
도구/GitHubGitHub/fenkohq/dnsmonster
Packet Sniffing & AnalysisInformation GatheringNetwork SecurityThreat IntelligenceDNS AnalysisLog Analysis
GitHubfenkohq/dnsmonster

dnsmonster

수동 DNS 캡처 및 모니터링 툴킷

저장소 보기
360601914일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

빌드 상태 Go 버전 최신 버전 라이선스 열린 이슈

dnsmonster를 위한 관리형 SaaS 솔루션을 탐색 중입니다! 피드백과 요구 사항을 공유하여 패시브 DNS 모니터링의 미래를 함께 만들어 주세요: 간단한 설문 조사 참여

목차

  • Dnsmonster
  • 주요 기능
  • 설치
    • Linux
      • 컨테이너
      • 수동 빌드
      • 정적 빌드
    • Windows
    • FreeBSD 및 MacOS
  • 아키텍처
    • Docker를 사용한 올인원 설치
      • 올인원 데모
    • 엔터프라이즈 배포
  • 설정
    • 명령줄 옵션
    • 환경 변수
    • 설정 파일
    • 보존 정책은 무엇인가요?
  • 샘플링 및 스킵
    • 전처리 샘플링
    • 도메인 스킵
    • 도메인 허용
    • Clickhouse SELECT 쿼리의 SAMPLE
  • 지원되는 입력
  • 지원되는 출력
  • 로드맵
  • 관련 프로젝트

Dnsmonster

Golang 기반의 패시브 DNS 모니터링 프레임워크입니다. dnsmonster는 DNS 트래픽을 위한 패킷 스니퍼를 구현합니다. pcap 파일, 라이브 인터페이스 또는 dnstap 소켓에서 트래픽을 수락할 수 있으며, 일반 컴퓨터에서 초당 20만 개 이상의 DNS 쿼리를 인덱싱할 수 있는 것으로 입증된 바와 같이 초당 수십만 개의 DNS 쿼리를 인덱싱하고 저장하는 데 사용할 수 있습니다. 확장 가능하고 단순하며 사용하기 쉽도록 설계되어 보안 팀이 기업의 DNS 트래픽에 대한 세부 사항을 이해하는 데 도움을 줍니다. dnsmonster는 DNS 대화를 추적하지 않고, 들어오는 대로 DNS 패킷을 인덱싱하는 것을 목표로 합니다. 또한 최종 사용자의 프라이버시를 침해하지 않도록 설계되어, 레이어 3 IP(IPv4 및 IPv6)를 마스킹할 수 있어 팀이 개별 사용자에게 쿼리를 추적하지 않고 집계된 데이터에 대한 추세 분석을 수행할 수 있습니다. 블로그 게시물

1.x 이전 버전의 코드는 베타 품질로 간주되며 변경 사항이 있을 수 있습니다. 각 릴리스 간의 주요 변경 사항 목록과 잠재적 데이터 손실을 완화하는 방법을 확인하려면 각 태그의 릴리스 노트를 참조하십시오.```mermaid graph TD subgraph Input B1["network input"] B2["pcap file"] B3["dnstap socket"] end

subgraph "Process"
    C1["Sampling based of ratio"]
    C2["Packet Process"]
    C3["Dispatcher"]
    O11["Output1"]
    O12["Domain Skip (optional)"]
    O13["Domain Allow (optional)"]
    O21["Output2"]
    O22["Domain Skip (optional)"]
    O23["Domain Allow (optional)"]
    O31["Output3"]
    O32["Domain Skip (optional)"]
    O33["Domain Allow (optional)"]
end

B1 --> Process
B2 --> Process
B3 --> Process

C1 --> C2
C2 --> C3
C3 --> O11
C3 --> O21
C3 --> O31

O11 --> O12 --> O13
O21 --> O22 --> O23
O31 --> O32 --> O33

subgraph Output
    Splunk
    Syslog
    H["ClickHouse"]
    Postgres
    Kafka
    I["JSON File"]
    Influx
    Elastic
    J["stdout"]
    Parquet
    Sentinel
end

O13 --> H
O23 --> I
O33 --> J
# 주요 기능

- 리눅스의 `afpacket` 및 제로 카피 패킷 캡처 사용 기능.
- BPF 지원
- 개인정보 보호 강화를 위한 IP 주소 마스킹 기능
- 전처리 샘플링 비율 설정 기능
- 특정 도메인/접미사/접두사를 스토리지에 기록하지 않도록 '건너뛰기' `fqdn` 목록을 가질 수 있는 기능
- 특정 도메인에 대한 액세스를 기록하는 데 사용되는 '허용' 도메인 목록을 가질 수 있는 기능
- 건너뛰기 및 허용 도메인 파일/URL의 핫 리로드
- 출력 스트림별로 구성 가능한 로직을 갖춘 모듈식 출력.
- ClickHouse의 TTL 속성을 사용한 자동 데이터 보존 정책
- ClickHouse 출력용 내장 Grafana 대시보드.
- 단일 정적으로 링크된 바이너리로 배포 가능
- 환경 변수, 명령줄 옵션 또는 구성 파일을 사용하여 구성 가능
- ClickHouse의 SAMPLE 기능을 사용하여 출력 샘플링 가능
- `prometheus` 및 `statstd`를 사용하여 메트릭 전송 가능
- ClickHouse의 내장 LZ4 스토리지 덕분에 높은 압축률
- DNS Over TCP, 조각화된 DNS(udp/tcp) 및 IPv6 지원
- Unix 소켓 또는 TCP를 통한 [dnstap](https://github.com/dnstap/golang-dnstap) 지원
- Splunk 및 Microsoft Sentinel과의 내장 SIEM 통합

# 설치

## Linux

`dnsmonster`를 시작하는 가장 좋은 방법은 릴리스 섹션에서 바이너리를 다운로드하는 것입니다. 바이너리는 `musl`에 대해 정적으로 빌드되었으므로 대부분의 배포판에서 즉시 작동합니다. `afpacket` 지원을 위해서는 커널 3.x+를 사용해야 합니다. 최신 Linux 배포판(CentOS/RHEL 7+, Ubuntu 14.0.4.2+, Debian 7+)은 3.x+ 버전과 함께 제공되므로 즉시 작동합니다. 배포판이 사전 컴파일된 버전에서 작동하지 않는 경우, 세부 정보와 함께 이슈를 제출하고 이 섹션 [수동 빌드](#build-manually)를 사용하여 `dnsmonster`를 수동으로 빌드하세요.

### 컨테이너

`dnsmonster`는 원시 패킷 캡처 기능을 사용하므로 Docker/Podman 데몬은 컨테이너에 해당 기능을 부여해야 합니다.```
sudo docker run --rm -it --net=host --cap-add NET_RAW --cap-add NET_ADMIN --name dnsmonster ghcr.io/mosajjal/dnsmonster:latest --devName lo --stdoutOutputType=1

수동으로 빌드하기

  • libpcap 사용 시: go, libpcap-devel, linux-headers 패키지가 설치되어 있는지 확인하세요. 패키지 이름은 사용 중인 배포판에 따라 다를 수 있습니다. 그런 다음 저장소를 클론하고 go build ./cmd/dnsmonster를 실행하기만 하면 됩니다.```sh git clone https://github.com/mosajjal/dnsmonster --depth 1 /tmp/dnsmonster cd /tmp/dnsmonster go get go build -o dnsmonster ./cmd/dnsmonster
- `libpcap` 없이:
`dnsmonster`는 `libpcap`에서 한 가지 함수만 사용하는데, 그것은 `tcpdump` 스타일 필터를 BPF 바이트코드로 변환하는 것입니다. BPF 지원 없이도 괜찮다면 `libpcap` 없이 `dnsmonster`를 빌드할 수 있습니다. 다른 모든 플랫폼에서는 패킷 캡처가 `libpcap`으로 대체되므로 하드 종속성이 됩니다. (*BSD, Windows, Darwin)```sh
git clone https://github.com/mosajjal/dnsmonster --depth 1 /tmp/dnsmonster 
cd /tmp/dnsmonster
go get
go build -o dnsmonster -tags nolibpcap ./cmd/dnsmonster

위 빌드는 ARMv7 (RPi4) 및 AArch64에서도 작동합니다.

정적 빌드

libpcap.a 사본이 있다면, 이를 dnsmonster에 정적으로 링크하여 완전히 정적으로 빌드할 수 있습니다. 아래 코드에서 /root/libpcap-1.9.1/libpcap.a를 사용자의 사본 위치로 변경하십시오.``` git clone https://github.com/mosajjal/dnsmonster --depth 1 /tmp/dnsmonster cd /tmp/dnsmonster/ go get go build --ldflags "-L /root/libpcap-1.9.1/libpcap.a -linkmode external -extldflags "-I/usr/include/libnl3 -lnl-genl-3 -lnl-3 -static"" -a -o dnsmonster ./cmd/dnsmonster

정적으로 링크된 바이너리가 어떻게 만들어지는지에 대한 자세한 내용은 [이](https://github.com/fenkohq/dnsmonster/blob/main/Dockerfile) Dockerfile을 참조하세요.

## Windows

Windows에서 빌드하는 것은 Linux와 거의 동일합니다. `npcap`이 설치되어 있는지 확인하기만 하면 됩니다. 저장소를 클론하고 (`--history 1` 작동), `go get`과 `go build ./cmd/dnsmonster`를 실행하세요.

앞서 언급했듯이, Windows용 바이너리 릴리스는 [npcap](https://nmap.org/npcap/#download)이 설치되어 있어야 합니다. 설치 후 바이너리는 별도의 설정 없이 작동합니다. Windows 10 환경에서 테스트되었으며 문제 없이 실행되었습니다. `--devName` 매개변수에 제공할 인터페이스 이름을 찾고 스니핑을 시작하려면 다음을 수행해야 합니다:

  - 관리자 권한으로 cmd.exe를 열고 다음을 실행하세요: `getmac.exe`, 그러면 인터페이스의 MAC 주소와 Transport Name 열이 있는 테이블이 표시됩니다. 예: `\Device\Tcpip_{16000000-0000-0000-0000-145C4638064C}`
  - `cmd.exe`에서 `dnsmonster.exe`를 다음과 같이 실행하세요:```sh
dnsmonster.exe --devName \Device\NPF_{16000000-0000-0000-0000-145C4638064C}

참고로 getmac.exe에서 \Tcpip를 \NPF로 변경한 후 dnsmonster.exe에 전달해야 합니다.

FreeBSD 및 MacOS

Linux 및 Windows와 거의 동일하며, git, libpcap 및 go가 설치되어 있는지 확인한 후 동일한 지침을 따릅니다:```sh git clone https://github.com/mosajjal/dnsmonster --depth 1 /tmp/dnsmonster cd /tmp/dnsmonster go get go build -o dnsmonster ./cmd/dnsmonster

# 아키텍처

## Docker를 사용한 올인원 설치

![기본 AIO 다이어그램](https://raw.githubusercontent.com/fenkohq/dnsmonster/HEAD/static/dnsmonster-basic.svg)

예제 다이어그램에서 DNS 서버 트래픽의 송신/수신을 캡처한 후, DNSMonster 서버에 도달하기 전에 선택적 패킷 집계 계층이 추가됩니다. DNS 서버에서 나가는 아웃바운드 데이터는 DNS 팜의 캐시 및 성능 분석을 수행하는 데 매우 유용합니다. 집계기를 사용할 수 없는 경우, 두 TAP을 DNSMonster에 직접 연결하고 두 개의 DNSMonster 에이전트가 트래픽을 감시하도록 할 수 있습니다.

`./autobuild.sh`를 실행하면 여러 컨테이너가 생성됩니다:

* `dnsmonster`의 여러 인스턴스가 모든 인터페이스에서 트래픽을 감시합니다. 인터페이스 목록은 `autobuild.sh` 실행 중에 입력하라는 메시지가 표시됩니다.
* `clickhouse` 인스턴스가 `dnsmonster`의 출력을 수집하고 모든 로그/데이터를 데이터 및 로그 디렉토리에 저장합니다. 두 디렉토리는 `autobuild.sh` 실행 중에 입력하라는 메시지가 표시됩니다.
* `grafana` 인스턴스가 `clickhouse` 데이터를 조회하고 미리 구축된 대시보드를 제공합니다.

### 올인원 데모

[![AIO 데모](https://raw.githubusercontent.com/fenkohq/dnsmonster/HEAD/static/aio_demo.svg)](static/aio_demo.svg)

## 엔터프라이즈 배포

![기본 AIO 다이어그램](https://raw.githubusercontent.com/fenkohq/dnsmonster/HEAD/static/dnsmonster-enterprise.svg)

# 구성
도구 다운로드