
커널 수준의 iptables 백도어로, RFC 3514 악성 비트가 설정된 모든 패킷을 수락하여 방화벽 규칙을 우회합니다. Linux용 인트리 및 아웃오브트리 빌드를 포함합니다.
iptable_eviliptable_evil는 iptables를 위한 매우 특수한 백도어로, 악의 플래그(evil bit)가 설정된 모든 패킷을 방화벽 규칙에 관계없이 허용합니다.
첫 번째 구현은 iptable_evil.c에 있으며, iptables에 테이블을 추가하고 커널 헤더를 수정하여 자리를 확보해야 합니다.
두 번째 구현은 ip_tables 코어 모듈과 그 종속 모듈을 수정한 버전으로, 모든 악의 패킷을 허용합니다.
Linux 커널 버전 5.8.0-48에서 테스트했지만, iptables의 완전한 구현이 있는 거의 모든 커널 버전에 적용 가능해야 합니다.
RFC3514는 2003년 4월 1일에 발행되었으며, IP 조각 오프셋 필드의 이전에 사용되지 않던 최상위 비트를 보안 플래그로 정의합니다.
RFC를 준수하는 시스템에서 해당 비트 위치의 1은 악의 의도를 나타내며 패킷이 차단됩니다.
기본적으로 이 비트는 꺼져 있지만, IP 패킷 전체를 조립하는 경우(일부 해킹 도구에서 수행) 소프트웨어에서 켜거나 Linux 커널에서 이 패치를 사용하여 켤 수 있습니다(이 리포지토리에 여기에 미러링되어 있습니다).
Linux 커널이 패킷을 수신하면 iptables에 의해 처리되며, 구성된 규칙에 따라 사용자 공간으로 전송되거나, 거부되거나, 수정됩니다.
특히 각 iptables 테이블은 ip_tables.c의 ipt_do_table 함수를 사용하여 주어진 패킷을 수락할지 결정합니다.
악의 비트가 설정된 모든 패킷을 자동으로 수락하고 추가 처리를 건너뛰도록 수정했습니다.
또한 모든 악의 패킷을 수락하고 다른 패킷은 표준 테이블로 전달하는 다른 테이블(iptable_evil.c)을 추가하려고 시도했지만, 패킷을 다음 테이블로 전달하는 방법을 알아내지 못했고 ipt_do_table 백도어로도 개념 증명으로 충분하다고 판단했습니다.
한 수업의 컴퓨팅 보안 분야에서 상당히 큰 프로젝트를 수행하고 보고서를 작성해야 했는데, 이 아이디어가 멋져 보였습니다. 아마 교수님은 이보다 더 간단한 작업을 기대하셨을지도 모르지만 ¯\_(ツ)_/¯.
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 -Liptables -t evil -L (출력이 혼란스럽겠지만 모듈이 로드됩니다)이 방법은 훨씬 더 쉽고 빠르지만, evil 테이블을 지원하지 않으며 커널을 "오염(tainted)" 상태로 표시합니다.
이 방법으로 생성된 ko 파일을 정확히 동일한 커널 버전의 다른 컴퓨터에 복사하는 것이 가능해야 하지만, 테스트해보지는 않았습니다.
make 실행rmmod iptable_*rmmod ip_tablesinsmod ip_tables.koinsmod iptable_filter.ko이를 테스트하려면 이 패치를 사용하여 전체 커널을 다시 빌드하거나 Scapy와 같은 도구를 사용하여 자체 패킷을 생성해야 합니다.
저는 이미 evil 테이블을 위해 커널을 빌드하고 있었기 때문에 첫 번째 옵션을 선택했습니다.
첫 번째 스크린샷에서는 모든 트래픽이 iptables에서 차단된 VM에 SSH 연결이 이루어지고 있지만, 두 번째 스크린샷에서 알 수 있듯이 패킷에 악의 비트가 설정되어 있어 연결이 가능합니다.

악의 비트를 설정하지 않은 VM에서 백도어가 적용된 VM에 연결하면 SSH 연결이 결국 타임아웃됩니다.

백도어 및 비백도어 SSH 연결의 패킷 캡처는 이 리포지토리의 docs/ 폴더에서 확인할 수 있습니다.
iptables_uwu (주로 연구할 항목의 이름을 제공하기 위한 것): https://github.com/benjojo/iptables-uwuiptables 작동 방식과 타겟 및 모듈을 추가하는 방법에 대한 매우 상세한 설명: https://inai.de/documents/Netfilter_Modules.pdf