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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ehids-agent — eBPF 기반의 Linux 호스트 기반 침입 탐지 시스템. | Kitploit
도구/GitHubGitHub/gojue/ehids-agent
Defensive ToolsDynamic Analysis (Sandboxing)Network MappingIntrusion DetectionPapers & ResearchLearning & EducationDNS AnalysisContainer Escape
GitHubgojue/ehids-agent

ehids-agent

eBPF 기반의 Linux 호스트 기반 침입 탐지 시스템.

저장소 보기
455862년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

영어 | 中文介绍

eHIDS 소개

eBPF 커널 기술로 구현된 HIDS demo입니다.

경고 eBPF 기반 데모일 뿐입니다. 대신 Tetragon / Tracee / falco를 사용하세요.

구현 및 기능:

  1. TCP 네트워크 데이터 캡처
  2. UDP 네트워크 데이터 캡처
  3. uprobe 모드에서 DNS 정보 캡처
  4. 프로세스 데이터 캡처
  5. uprobe 방식으로 JAVA RASP 명령 실행 시나리오 이벤트 캡처
  6. Go 프레임워크로 eBPF 구현, kprobe/uprobe 마운트 방식에 대한 다중 유형 이벤트의 추상화 구현.
  7. 개발자는 다음 세 가지 파일만 구현하면 됩니다:
    • 커널 모드 C 파일.
    • 사용자 모드 Go 파일.
    • 사용자 모드 이벤트 메시지 구조. 프레임워크가 자동으로 로드 및 실행합니다.
  8. 사용자는 logger 인터페이스에 따라 데이터 보고 및 처리를 구현할 수 있습니다. 예: ES\kafka 및 기타 로그 센터로 보고.

원리

참고: eBPF 공식 웹사이트

  1. 커널 모드에서 eBPF 코드는 C로 작성되며, llvm이 eBPF 바이트코드로 컴파일됩니다.
  2. 사용자 모드는 golang, cilium/ebpf 순수 Go 라이브러리로 작성되며, 커널이 eBPF 바이트코드를 로드하고 kprobe/uprobe HOOK이 해당 함수에 연결됩니다.
  3. 사용자 모드는 golang을 사용하여 이벤트 읽기, 디코딩 및 처리를 수행합니다.

계획

일정

저자는 소스 코드 관점에서 cilium, datadog, tracee, falco, kubeArmor와 같은 클라우드 네이티브 eBPF 기술로 구현된 런타임 보안 제품을 분석하고 있습니다. 분석이 완료되면 이 제품의 설계, 아이디어 및 기능을 계속 공유하겠습니다.

현재 진행 상황 및 변경 사항

  • 【완료】2021-12-09 Cilium eBPF 구현 메커니즘의 소스 코드 분석
  • 【완료】2021-12-19 Datadog의 eBPF 보안 탐지 메커니즘 분석
  • 【완료】2021-12-30 컨테이너 이스케이프 및 계정 숨김 rootkit을 구현하는 커널 상태 eBPF 프로그램
  • 【진행 중】2022-1-31 tracee eBPF 구현 메커니즘의 소스 코드 분석
  • ...

제품 특징

  1. 완벽한 기능 (네트워크, 프로세스, 파일, 이벤트)
  2. 모니터링
  3. 알림
  4. 퓨징
  5. 통계
  6. 조정
  7. 통합 관리 및 제어

사용 방법

  1. 커널 모드 부분은 리눅스 네이티브 클래스 라이브러리로 구현된 ebpf 프로그래밍 코드이며, clang(llvm)을 사용하여 바이트코드 컴파일을 수행합니다.
  2. 사용자 모드 부분은 golang의 cilium/ebpf 라이브러리로 작성되었으며, eBPF 바이트코드를 커널에 로드하고, hook 포인트에 마운트하며, 이벤트를 읽는 기능 등을 구현합니다.
  3. 이 프로젝트는 kprobe와 uprobe를 각각 사용하여 TCP 및 UDP의 네트워크 이벤트 캡처를 구현합니다.

개발 환경

  • UBUNTU 21.04 server
  • go version go1.17.2 linux/amd64
  • Ubuntu clang version 12.0.0-3ubuntu1~21.04.2
  • openjdk version "1.8.0_292"

환경 설치 단계

참고: CFC4N의 eBPF 개발 환경

  • sudo apt-get install -y make gcc libssl-dev bc libelf-dev libcap-dev clang gcc-multilib llvm libncurses5-dev git pkg-config libmnl-dev bison flex graphviz
  • sudo apt-get install -y make gcc clang llvm git pkg-config dpkg-dev gcc-multilib
  • cd ~/download/
  • sudo apt update
  • sudo apt-get source linux-image-$(uname -r)
  • sudo apt-get source linux-image-unsigned-$(uname -r)
  • sudo apt install libbfd-dev libcap-dev zlib1g-dev libelf-dev libssl-dev

컴파일 및 실행

컴파일

root@kitploit:~
git clone https://github.com/ehids/ehids-agent.git
cd ehids
make
./bin/ehids-agent

실행

다른 셸을 열고 네트워크 명령을 실행하여 네트워크 동작을 트리거합니다.

root@kitploit:~
wget www.cnxct.com

또는 Java 명령 실행 예제를 컴파일하고 실행하여 Java RASP 기능을 테스트합니다. Uprobe는 libjava.so의 JDK_execvpe 함수를 마운트하며, 해당 오프셋 주소는 0x19C30입니다. 다른 버전의 경우 직접 오프셋 주소를 찾으십시오.

root@kitploit:~
cd examples
javac Main.java
java Main

JAVA JDK 버전 정보

~$java -version

openjdk version "1.8.0_292"

OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1-b10)

OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

결과

root@kitploit:~
root@vmubuntu:/home/cfc4n/project/ehids# ./bin/ehids
2021/12/01 19:27:08 start to run EBPFProbeUJavaRASP probe
2021/12/01 19:27:08 start to run EBPFProbeKTCP probe
2021/12/01 19:27:08 start to run EBPFProbeKTCPSec probe
2021/12/01 19:27:08 start to run EBPFProbeKUDP probe
2021/12/01 19:27:08 start to run EBPFProbeUDNS probe
2021/12/01 19:27:08 probeName:EBPFProbeKTCPSec, probeTpye:kprobe, start time:07:23:49, PID:864, UID:101, AF:2, TASK:5systemd-resolv
2021/12/01 19:27:08 probeName:EBPFProbeKUDP, probeTpye:kprobe, PID:0, comm:systemd-resolve, qname:57.22.91.101.in-addr.arpa, qclass:1, qtype:12.
2021/12/01 19:27:09 probeName:EBPFProbeKTCP, probeTpye:kprobe, start time:19:31:19, family:AF_INET, PID:409744, command:curl, UID:0, rx:67408, tx:79, dest:118.31.44.218:20480, source:172.16.71.4, type:OUT, result:True
2021/12/01 19:27:10 probeName:EBPFProbeUJavaRASP, probeTpye:uprobe, JAVA RASP exec and fork. PID:409049, command:ifconfig, mode:MODE_VFORK

참고 자료

  • https://ebpf.io
  • https://github.com/trichimtrich/dns-tcp-ebpf
  • https://github.com/p-/socket-connect-bpf

eBPF의 악용 및 탐지 메커니즘

eBPF 기반 악용 및 탐지 메커니즘에 대한 기사가 美团安全应急响应中心의 위챗 공개 계정에 공유되었습니다. eBPF의 악용 및 탐지 메커니즘

위챗 그룹

참고사항

이 저장소는 Meituan의 공식 저장소가 아니며, 엔지니어들이 기여한 것입니다.

이 저장소는 Meituan에서 사용하는 전체 HIDS 버전을 포함하지 않으며, 간소화된 데모입니다. 전체 소스 코드를 자세히 보려면 https://www.cnxct.com/jobs/를 클릭하십시오.

도구 다운로드