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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
rustnet — 터미널에서 프로세스별 네트워크 모니터링과 심층 패킷 검사(DPI)를 제공합니다. 크로스 플랫폼이며 샌드박스 환경에서 실행됩니다. | Kitploit
도구/GitHubGitHub/domcyrus/rustnet
Packet Sniffing & AnalysisContainer SecurityForensicsInformation GatheringCloud SecurityThreat IntelligenceDNS AnalysisLog Analysis
GitHubdomcyrus/rustnet

rustnet

터미널에서 프로세스별 네트워크 모니터링과 심층 패킷 검사(DPI)를 제공합니다. 크로스 플랫폼이며 샌드박스 환경에서 실행됩니다.

저장소 보기
4.8k2231시간 41분 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

RustNet

터미널용 프로세스별 네트워크 모니터링: 딥 패킷 인스펙션을 지원하는 실시간 TCP, UDP, QUIC 연결, 기본적으로 샌드박스 처리됩니다.

Built With Ratatui Build Status Crates.io GitHub Stars License GitHub release Docker Image

English | 简体中文

RustNet demo

머신이 만드는 모든 연결, 해당 연결의 소유 프로세스, 사용 중인 프로토콜을 실시간으로 확인할 수 있습니다. tcpdump, X11 포워딩, root 파이핑이 필요 없습니다.

기능

  • 프로세스별 귀속: Linux의 eBPF, macOS의 PKTAP, Windows 및 FreeBSD의 네이티브 API를 통해 모든 TCP, UDP, QUIC 연결을 소유 프로세스에 매핑합니다. Wireshark와 tcpdump는 이 작업을 할 수 없으며, netstat/ss는 실시간 상태를 보여줄 수 없습니다.
  • 딥 패킷 인스펙션: 외부 디섹터 없이 HTTP, HTTPS/TLS(SNI 포함), DNS, SSH, FTP, QUIC, MQTT, BitTorrent, STUN, NTP, mDNS, LLMNR, DHCP, SNMP, SSDP, NetBIOS를 식별합니다.
  • 주석이 포함된 PCAPNG 내보내기: --pcapng-export는 프로세스, PID, 방향, DPI/SNI, GeoIP를 패킷별 주석으로 포함하는 Wireshark 호환 캡처를 작성합니다. Wireshark에서 열면 추가 처리 없이 모든 패킷에 소유 프로세스 이름이 이미 표시됩니다. 오프라인 상관 분석을 위한 JSONL 사이드카가 포함된 기존 --pcap-export도 제공됩니다.
  • 보안 샌드박싱: Landlock(Linux 5.13+), Seatbelt(macOS), 토큰 권한 강등 + job-object 자식 프로세스 차단(Windows). libpcap 초기화 직후 권한을 즉시 낮춥니다. SECURITY.md 참조.
  • TCP 네트워크 분석: 연결별 및 전체에 대한 실시간 재전송, 순서가 잘못된 패킷, 빠른 재전송 감지.
  • 스마트 연결 수명주기: 프로토콜 인식 타임아웃과 흰색 → 노란색 → 빨간색 부실(staleness) 표시기. t를 눌러 포렌식을 위해 기록(닫힌) 연결을 계속 표시할 수 있습니다.
  • Vim/fzf 스타일 필터링: port:, src:, dst:, sni:, process:, , 및 정규식 지원.

왜 RustNet인가?

RustNet은 단순 연결 도구(netstat, ss)와 패킷 분석기(Wireshark, tcpdump) 사이의 간극을 메웁니다:

  • 프로세스 귀속: 각 연결을 소유한 애플리케이션을 확인할 수 있습니다. Wireshark는 패킷만 볼 수 있고 소켓은 볼 수 없으므로 이 기능을 제공할 수 없습니다.
  • 연결 중심 보기: 연결별 상태, 대역폭, 프로토콜을 실시간으로 추적합니다.
  • SSH 친화적: TUI가 SSH를 통해 작동하므로 X11을 포워딩하거나 트래픽을 캡처하지 않고도 원격 서버에서 무슨 일이 일어나고 있는지 빠르게 확인할 수 있습니다.

RustNet은 패킷 캡처 도구를 보완합니다. RustNet을 사용하여 무엇이 연결을 만드는지 확인하세요. 직접 Wireshark 검사가 필요하면 --pcapng-export가 PID/프로세스 컨텍스트가 포함된 실시간 best-effort 패킷 주석을 작성합니다. 정리 시점 상관 분석에는 --pcap-export와 JSONL 사이드카, 선택적 scripts/pcap_enrich.py를 사용하세요. 자세한 내용은 PCAP Export 및 Comparison with Similar Tools를 참조하세요.

ratatui, libpcap, eBPF(libbpf-rs), DashMap, crossbeam, ring, MaxMind GeoLite2, Landlock 기반으로 구축되었습니다. 전체 의존성 분석은 ARCHITECTURE.md를 참조하세요.

eBPF 강화 프로세스 식별(Linux 기본값)

RustNet은 Linux에서 향상된 성능과 낮은 오버헤드의 프로세스 식별을 위해 기본적으로 커널 eBPF 프로그램을 사용합니다. 그러나 여기에는 중요한 제한 사항이 있습니다:

프로세스 이름 제한 사항:

  • eBPF는 커널의 comm 필드를 사용하며, 이는 16자로 제한됩니다.
  • 전체 실행 파일 경로가 아닌 작업/스레드 명령 이름을 표시합니다.
  • 다중 스레드 애플리케이션은 기본 프로세스 이름 대신 스레드 이름을 표시하는 경우가 많습니다.

실제 사례:

  • Firefox: "Socket Thread", "Web Content", "Isolated Web Co", "MainThread"으로 표시될 수 있습니다.
  • Chrome: "ThreadPoolForeg", "Chrome_IOThread", "BrokerProcess", "SandboxHelper"로 표시될 수 있습니다.
  • Electron 앱: "electron", "node" 또는 내부 스레드 이름으로 표시되는 경우가 많습니다.
  • 시스템 프로세스: "systemd-resolve" → "systemd-resolve"처럼 잘린 이름을 표시합니다.

폴백 동작:

  • eBPF 로드에 실패하거나 권한이 부족하면 RustNet은 자동으로 표준 procfs 기반 프로세스 식별로 폴백합니다.
  • 표준 모드는 전체 프로세스 이름을 제공하지만 CPU 오버헤드가 더 높습니다.
  • eBPF는 기본적으로 활성화되어 있으며 특별한 빌드 플래그가 필요 없습니다.

eBPF를 비활성화하고 procfs 전용 모드를 사용하려면 다음으로 빌드하세요:

root@kitploit:~
cargo build --release --no-default-features

기술 정보는 ARCHITECTURE.md를 참조하세요.

인터페이스 통계 모니터링

RustNet은 지원되는 모든 플랫폼에서 실시간 네트워크 인터페이스 통계를 제공합니다:

  • 개요 탭: 현재 속도, 오류, 드롭이 포함된 활성 인터페이스 표시
  • 인터페이스 탭(3 키): 모든 인터페이스에 대한 종합적인 지표가 포함된 상세 표
  • 크로스 플랫폼: Linux(sysfs), macOS/FreeBSD(getifaddrs), Windows(GetIfTable2 API)
  • 스마트 필터링: Windows는 가상/필터 어댑터를 자동으로 제외합니다.

인터페이스 통계 해석 및 플랫폼별 동작에 대한 자세한 문서는 USAGE.md를 참조하세요.

사용 가능한 지표:

  • 총 바이트 및 패킷(RX/TX)
  • 오류 카운터(수신 및 송신)
  • 패킷 드롭(큐 오버플로)
  • 충돌(레거시, 최신 네트워크에서는 거의 사용되지 않음)

통계는 성능 영향이 최소화된 백그라운드 스레드에서 2초마다 수집됩니다.

스크린샷

빠른 시작

설치

Homebrew (macOS / Linux):

root@kitploit:~
brew install rustnet

Ubuntu (25.10+):

root@kitploit:~
sudo add-apt-repository ppa:domcyrus/rustnet
sudo apt update && sudo apt install rustnet

Fedora (42+):

root@kitploit:~
sudo dnf copr enable domcyrus/rustnet
sudo dnf install rustnet

openSUSE Tumbleweed:

root@kitploit:~
sudo zypper addrepo https://download.opensuse.org/repositories/home:/domcyrus:/rustnet/openSUSE_Tumbleweed/home:domcyrus:rustnet.repo
sudo zypper refresh
sudo zypper install rustnet

Arch Linux:

root@kitploit:~
sudo pacman -S rustnet

Nix / NixOS:

root@kitploit:~
nix-shell -p rustnet
# Then inside the shell: sudo rustnet

crates.io에서:

root@kitploit:~
cargo install rustnet-monitor

Windows (Chocolatey):

root@kitploit:~
# Run in Administrator PowerShell
# Requires Npcap (https://npcap.com) installed with "WinPcap API-compatible Mode" enabled
choco install rustnet

기타 플랫폼:

  • FreeBSD: rustnet-bsd 릴리스에서 다운로드
  • Docker, 소스 빌드, 기타 Linux 배포판: 자세한 지침은 INSTALL.md 참조

RustNet 실행

패킷 캡처에는 상승된 권한이 필요합니다:

root@kitploit:~
# Quick start (all platforms)
sudo rustnet

# Linux: Grant capabilities to run without sudo (recommended)
sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' $(which rustnet)
rustnet

공통 옵션:

root@kitploit:~
rustnet -i eth0              # Specify network interface
rustnet --show-localhost     # Show localhost connections
rustnet --no-resolve-dns     # Disable reverse DNS lookups (enabled by default)
rustnet -r 500               # Set refresh interval (ms)
rustnet --theme classic      # Original full-color palette (default: muted)
rustnet --pcapng-export capture.pcapng  # Annotated PCAPNG for Wireshark

자세한 권한 설정은 INSTALL.md, 전체 옵션은 USAGE.md를 참조하세요.

capabilities를 설정했는데도 TUI에 eBPF unavailable이 계속 표시되면 문제 해결 섹션의 eBPF Unavailable Despite Capabilities Being Set 을 참조하세요.

키보드 컨트롤

자세한 키보드 컨트롤과 탐색 팁은 USAGE.md를 참조하세요.

필터링 및 정렬

빠른 필터링 예시:

root@kitploit:~
/google                        # Search for "google" anywhere
/port:443                      # Filter by port
/process:firefox               # Filter by process
/state:established             # Filter by connection state
/dport:443 sni:github.com      # Combine filters

정렬:

  • s를 눌러 정렬 가능한 열(Process, Addresses, Service, Application, State, Bandwidth)을 순환합니다.
  • S(Shift+s)를 눌러 정렬 방향을 전환합니다.
  • 대역폭 과다 사용 프로세스 찾기: "Bandwidth Total ↓"이 나타날 때까지 s를 누릅니다(업로드+다운로드 합산 속도 기준 정렬).

전체 필터링 구문과 정렬 가이드는 USAGE.md를 참조하세요.

고급 필터링 예시

키워드 필터:

  • port:44 - "44"를 포함하는 포트(443, 8080, 4433)
  • sport:80 - "80"을 포함하는 소스 포트
  • dport:443 - "443"을 포함하는 대상 포트
  • src:192.168 - "192.168"을 포함하는 소스 IP
  • dst:github.com - "github.com"을 포함하는 대상
  • process:ssh - "ssh"를 포함하는 프로세스 이름
  • sni:api - "api"를 포함하는 SNI 호스트 이름
  • app:openssh - OpenSSH를 사용하는 SSH 연결
  • state:established - 프로토콜 상태로 필터링
  • proto:tcp - 프로토콜 유형으로 필터링

상태 필터링:

  • state:syn_recv - 하프 오픈 연결(SYN 플러드 감지)
  • state:established - 설정된(established) 연결만
연결 수명주기 및 시각적 표시기

RustNet은 연결을 제거하기 전에 스마트 타임아웃과 시각적 경고를 사용합니다:

시각적 부실 표시기:

  • 흰색: 활성(타임아웃의 75% 미만)
  • 노란색: 부실(타임아웃의 75-90%)
  • 빨간색: 심각(타임아웃의 90% 초과)

프로토콜 인식 타임아웃:

  • HTTP/HTTPS: 10분(keep-alive 지원)
  • SSH: 30분(장시간 세션)
  • TCP 활성: 10분, 유휴: 5분
  • QUIC 연결됨: 3분(또는 피어의 transport-param 유휴 타임아웃이 있을 경우 해당 값); Initial/Handshaking: 60초
  • DNS: 30초
  • TCP CLOSED: 5초

예: HTTP 연결은 7.5분에 노란색, 9분에 빨간색으로 바뀌고 10분에 제거됩니다.

전체 타임아웃 세부 정보는 USAGE.md를 참조하세요.

문서

  • INSTALL.md - 모든 플랫폼의 상세 설치 지침, 권한 설정, 문제 해결
  • USAGE.md - 명령줄 옵션, 필터링, 정렬, 로깅을 포함한 전체 사용 가이드
  • SECURITY.md - Landlock 샌드박싱 및 권한 관리를 포함한 보안 기능
  • ARCHITECTURE.md - 기술 아키텍처, 플랫폼 구현, 성능 세부 정보
  • PROFILING.md - flamegraph 설정 및 최적화 팁이 포함된 성능 프로파일링 가이드
  • ROADMAP.md - 계획된 기능 및 향후 개선 사항
  • RELEASE.md - 유지 관리자를 위한 릴리스 프로세스

기여

기여를 환영합니다! 기여 방법에 대한 지침은 CONTRIBUTING.md를 참조하세요.

이 프로젝트에 기여한 사람들의 목록은 CONTRIBUTORS.md를 참조하세요.

라이선스

이 프로젝트는 Apache License, Version 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

감사의 말

  • 터미널 UI는 ratatui로 구축되었습니다.
  • 패킷 캡처는 libpcap 기반입니다.
  • tshark/wireshark/tcpdump, sniffnet, netstat, ss, iftop, bandwhich 같은 도구에서 영감을 받았습니다.
  • 일부 코드는 vibe 코딩되었습니다(OMG) / LLM 신들이 당신과 함께하시길

문서 이동 안내

일부 섹션은 더 나은 구성을 위해 전용 파일로 이동되었습니다:

  • 권한 설정: 지금은 INSTALL.md - Permissions Setup에 있습니다.
  • 설치 지침: 지금은 INSTALL.md에 있습니다.
  • 상세 사용법: 지금은 USAGE.md에 있습니다.
  • 아키텍처 세부 정보: 지금은 ARCHITECTURE.md에 있습니다.
도구 다운로드
state:
proto:
/(?i)pattern/
  • GeoIP 강화: 로컬 MaxMind GeoLite2를 통한 국가 조회. 네트워크 호출이 없습니다.
  • Kubernetes 귀속(선택적 kubernetes 기능): 연결을 해당 파드, 네임스페이스, 컨테이너에 매핑하여 세부 정보 창, JSON/PCAPNG 내보내기 및 pod:, ns:, container: 필터에 표시합니다. 공식 Docker 이미지에서 활성화되어 있습니다. 클러스터에서는 kubectl-rustnet 플러그인을 사용하여 임시 디버그 파드로 실행할 수 있습니다. 자세한 내용은 USAGE.md를 참조하세요.
  • 크로스 플랫폼: Linux, macOS, Windows, FreeBSD.
  • 개요
    실시간 통계와 스파크라인이 포함된 연결 테이블
    세부 정보
    연결별 SNI, 암호화, GeoIP, DPI
    그래프
    트래픽 차트, 앱 분포, 상위 프로세스
    인터페이스
    오류 및 드롭이 포함된 인터페이스별 RX/TX 기록
    키동작
    q종료(두 번 눌러 확인)
    Ctrl+C즉시 종료
    x모든 연결 지우기(두 번 눌러 확인)
    Tab 또는 ]다음 탭
    Shift+Tab 또는 [이전 탭
    1–5Overview / Details / Interfaces / Graph / Help 탭으로 이동
    ↑/k ↓/j위/아래 탐색
    g G첫 번째/마지막 연결로 이동
    Enter연결 세부 정보 보기
    Esc뒤로 가기 또는 필터 지우기
    c원격 주소 복사
    p서비스 이름/포트 전환
    d호스트 이름/IP 전환
    s S정렬 열 순환 / 방향 전환
    a프로세스 그룹화 전환
    Space프로세스 그룹 펼치기/접기
    ←/→ 또는 h/l그룹 접기/펼치기
    PageUp/PageDown 또는 Ctrl+B/F페이지 탐색
    t기록(닫힌) 연결 전환
    i시스템 정보 사이드바 전환
    r보기 재설정(그룹화, 정렬, 필터)
    /필터 모드 진입
    h도움말 전환
  • state:quic_connected - 활성 QUIC 연결
  • state:dns_query - DNS 쿼리 연결
  • 결합 예시:

    • sport:80 process:nginx - 포트 80의 Nginx 연결
    • dport:443 sni:google.com - Google로의 HTTPS
    • process:firefox state:quic_connected - Firefox QUIC 연결
    • dport:22 app:openssh state:established - 설정된 OpenSSH 연결