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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
iptable_evil — 커널 수준의 iptables 백도어로, RFC 3514 악성 비트가 설정된 모든 패킷을 수락하여 방화벽 규칙을 우회합니다. Linux용 인트리 및 아웃오브트리 빌드를 포함합니다. | Kitploit
도구/GitHubGitHub/flamingspork/iptable_evil
ExploitationIDS/IPS EvasionNetwork SecurityLearning & EducationRed Teaming
GitHubflamingspork/iptable_evil

iptable_evil

커널 수준의 iptables 백도어로, RFC 3514 악성 비트가 설정된 모든 패킷을 수락하여 방화벽 규칙을 우회합니다. Linux용 인트리 및 아웃오브트리 빌드를 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

iptable_evil

iptable_evil는 iptables를 위한 매우 특수한 백도어로, 악의 플래그(evil bit)가 설정된 모든 패킷을 방화벽 규칙에 관계없이 허용합니다.

첫 번째 구현은 iptable_evil.c에 있으며, iptables에 테이블을 추가하고 커널 헤더를 수정하여 자리를 확보해야 합니다. 두 번째 구현은 ip_tables 코어 모듈과 그 종속 모듈을 수정한 버전으로, 모든 악의 패킷을 허용합니다.

Linux 커널 버전 5.8.0-48에서 테스트했지만, iptables의 완전한 구현이 있는 거의 모든 커널 버전에 적용 가능해야 합니다.

악의 비트(Evil Bit) 설명

RFC3514는 2003년 4월 1일에 발행되었으며, IP 조각 오프셋 필드의 이전에 사용되지 않던 최상위 비트를 보안 플래그로 정의합니다. RFC를 준수하는 시스템에서 해당 비트 위치의 1은 악의 의도를 나타내며 패킷이 차단됩니다.

기본적으로 이 비트는 꺼져 있지만, IP 패킷 전체를 조립하는 경우(일부 해킹 도구에서 수행) 소프트웨어에서 켜거나 Linux 커널에서 이 패치를 사용하여 켤 수 있습니다(이 리포지토리에 여기에 미러링되어 있습니다).

백도어는 어떻게 작동하나요?

Linux 커널이 패킷을 수신하면 iptables에 의해 처리되며, 구성된 규칙에 따라 사용자 공간으로 전송되거나, 거부되거나, 수정됩니다.

특히 각 iptables 테이블은 ip_tables.c의 ipt_do_table 함수를 사용하여 주어진 패킷을 수락할지 결정합니다. 악의 비트가 설정된 모든 패킷을 자동으로 수락하고 추가 처리를 건너뛰도록 수정했습니다.

또한 모든 악의 패킷을 수락하고 다른 패킷은 표준 테이블로 전달하는 다른 테이블(iptable_evil.c)을 추가하려고 시도했지만, 패킷을 다음 테이블로 전달하는 방법을 알아내지 못했고 ipt_do_table 백도어로도 개념 증명으로 충분하다고 판단했습니다.

왜 이 작업을 했나요?

한 수업의 컴퓨팅 보안 분야에서 상당히 큰 프로젝트를 수행하고 보고서를 작성해야 했는데, 이 아이디어가 멋져 보였습니다. 아마 교수님은 이보다 더 간단한 작업을 기대하셨을지도 모르지만 ¯\_(ツ)_/¯.

빌드

인트리 빌드(In-Tree Build)

evil 테이블은 커널 헤더 수정이 필요하므로, 전체 트리 빌드를 통해 생성된 커널을 실행해야 설치할 수 있습니다.

  • replace-existing의 내용을 커널 소스 트리에 복사하고 기존 파일을 덮어씁니다.
  • iptable_evil.c를 linux-X.Y.Z/net/ipv4/netfilter에 복사합니다.
  • (선택 사항) ip_tables.c를 linux-X.Y.Z/net/ipv4/netfilter에 복사합니다.
  • 배포판 절차에 따라 커널을 컴파일합니다(패키지가 생성되어야 함).
  • 패키지 파일을 설치합니다.
  • 새 커널로 재부팅합니다.
  • iptables -t filter -L
  • iptables -t evil -L (출력이 혼란스럽겠지만 모듈이 로드됩니다)

아웃트리 빌드(Out-of-Tree Build)

이 방법은 훨씬 더 쉽고 빠르지만, evil 테이블을 지원하지 않으며 커널을 "오염(tainted)" 상태로 표시합니다. 이 방법으로 생성된 ko 파일을 정확히 동일한 커널 버전의 다른 컴퓨터에 복사하는 것이 가능해야 하지만, 테스트해보지는 않았습니다.

  • make 실행
  • rmmod iptable_*
  • rmmod ip_tables
  • insmod ip_tables.ko
  • insmod iptable_filter.ko

테스트/데모

이를 테스트하려면 이 패치를 사용하여 전체 커널을 다시 빌드하거나 Scapy와 같은 도구를 사용하여 자체 패킷을 생성해야 합니다. 저는 이미 evil 테이블을 위해 커널을 빌드하고 있었기 때문에 첫 번째 옵션을 선택했습니다.

첫 번째 스크린샷에서는 모든 트래픽이 iptables에서 차단된 VM에 SSH 연결이 이루어지고 있지만, 두 번째 스크린샷에서 알 수 있듯이 패킷에 악의 비트가 설정되어 있어 연결이 가능합니다. 차단되었어야 할 SSH 연결 스크린샷 예약 비트가 설정된 Wireshark 스크린샷

악의 비트를 설정하지 않은 VM에서 백도어가 적용된 VM에 연결하면 SSH 연결이 결국 타임아웃됩니다. 타임아웃되는 SSH 연결 스크린샷 예약 비트가 설정되지 않은 Wireshark 스크린샷

백도어 및 비백도어 SSH 연결의 패킷 캡처는 이 리포지토리의 docs/ 폴더에서 확인할 수 있습니다.

커널 버전

  • 5.8.0-48-generic (Ubuntu 20.04)

추가 정보 및 자료

  • 악의 비트를 발명한 RFC 3514: https://tools.ietf.org/html/rfc3514
  • Ben Cox의 악의 비트 소개: https://blog.benjojo.co.uk/post/evil-bit-RFC3514-real-world-usage
  • Ben Cox의 iptables_uwu (주로 연구할 항목의 이름을 제공하기 위한 것): https://github.com/benjojo/iptables-uwu
  • 다소 오래되었지만 iptables 작동 방식과 타겟 및 모듈을 추가하는 방법에 대한 매우 상세한 설명: https://inai.de/documents/Netfilter_Modules.pdf
  • https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
  • Bootlin의 Elixir 검색은 커널에서 식별자를 찾는 데 grep보다 훨씬 사용하기 쉽습니다: https://elixir.bootlin.com/linux/v5.8/source/net/ipv4/netfilter/ip_tables.c#L225
  • Ubuntu 문서는 커널을 빌드하는 방법을 설명합니다: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
도구 다운로드