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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
synipopt — IPv4 SYN with IP options, 실행당 하나의 랩 대상, CVE-2026-98432 연구용. 헤더 오프셋 파서, 회귀 테스트, 그리고 고장 난 자동 익스플로이터에 대한 포스트모템. | Kitploit
도구/GitHubGitHub/raahilmw/synipopt
Defensive ToolsPacket Sniffing & AnalysisVulnerability AnalysisExploitationFuzzingNetwork SecurityPapers & Research
GitHubraahilmw/synipopt

synipopt

IPv4 SYN with IP options, 실행당 하나의 랩 대상, CVE-2026-98432 연구용. 헤더 오프셋 파서, 회귀 테스트, 그리고 고장 난 자동 익스플로이터에 대한 포스트모템.

저장소 보기
24일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

synipopt

2026년 10월에 패치된 Linux 커널 IPv4 TCP use-after-free인 CVE-2026-98432에 대한 단일 대상 프로브입니다.

IP 옵션을 포함하는 IPv4 SYN을 구성하고(기본적으로 24바이트의 NOP 바이트로, IHL을 11로 높임), 이를 하나의 호스트로 전송한 뒤 패턴 매칭 대신 헤더 오프셋으로 응답을 읽습니다. 패킷 로직은 오프라인에서도 동작합니다. 드라이 런은 구성된 패킷을 출력하고 다시 파싱하며, hex 분석기는 캡처된 트래픽을 파싱하고, 테스트 스위트는 root도 네트워크도 필요로 하지 않습니다.

이것이 아닌 것

대상 목록 처리는 없고, Shodan 연동도 없으며, 배치 모드도 없습니다. 실행당 하나의 주소만 처리하며, CLI는 --allow-public을 전달하지 않는 한 랩 대역 외의 주소는 거부합니다. 이 도구는 대상에 대한 소유권이 있거나 테스트에 대한 서면 허가가 있다고 가정합니다.

설치

python3 -m pip install -e ".[test]"

Python 3.9 이상. 표준 라이브러리만 사용합니다.

빠른 시작

드라이 런, 권한 없음, 패킷 전송 없음:

synipopt --dry-run --target 192.0.2.10

원본 스크립트의 로그에서 SYN-ACK로 보고된 패킷을 파싱:

synipopt --analyze-hex "$(cat docs/fixtures/original-log-packet.hex)"

랩 VM을 프로브하고 옵션을 포함한 SYN과 일반 SYN을 비교:

sudo synipopt --target 192.168.56.101 --dport 443 --retries 3 --compare --log probe.jsonl

패킷

기본 구성, 전송 시 64바이트:

  • IP 헤더: 44바이트 (IHL 11), 24바이트의 0x01 NOP 채움
  • TCP 헤더: 20바이트, SYN 플래그, IPv4 의사 헤더에 대한 체크섬
  • 전체 길이 필드: 64

옵션을 포함한 SYN이 ireq->ireq_opt를 요청 소켓에 설정하는 원인입니다. 커널은 옵션 블록을 컴파일하며, 순수 NOP 채움은 빈 블록으로 컴파일되므로, 기본 구성에 대한 SYN-ACK는 IP 옵션 없이 돌아옵니다. 페이로드를 포함하는 옵션, 예를 들어 record route는 에코됩니다. 개발 중 리스닝 소켓에 대해 측정한 결과:

SYN 옵션SYN-ACK IP 헤더에코된 옵션
24 NOP 바이트20바이트 (IHL 5)없음
Record Route, 12바이트32바이트 (IHL 8)12바이트
없음20바이트 (IHL 5)없음

두 가지 사실 모두 랩 작업에 중요합니다. 응답의 헤더 길이는 스택이 옵션 블록을 유지했는지 알려주며, 올바른 파서는 TCP 헤더를 오프셋 20이 아닌 IHL * 4에서 시작합니다.

원본 스크립트가 잘못한 것

이 저장소의 배경이 된 유포 스크립트(cve_2026_98432_auto.zip)는 자체 실행 로그를 함께 배포했습니다. 그 로그의 모든 "성공적인" SYN-ACK는 reply_sport=257과 tcp_seq=16843009를 가집니다. 이는 NOP 채움 바이트입니다. 0x0101은 257이고 0x01010101은 16843009입니다. 파서는 패킷 어디에서든 플래그 비트를 스캔하여 오프셋 55, 즉 옵션 패딩 내부에 도달했습니다. 해당 84바이트 패킷을 올바르게 파싱하면 IHL 5, 프로토콜 TCP, 그리고 플래그 바이트가 0x00인 TCP 세그먼트가 나오며, SYN도 ACK도 없습니다.

페이로드는 스크립트 자체가 구성한 SYN입니다(오프셋 20에 0x4b). 외부 헤더는 커널의 것으로, 스크립트가 IP_HDRINCL을 설정하지 않았기 때문에 Linux가 자체 IPv4 헤더를 만들고 구성된 패킷을 페이로드로 받아들였습니다. 스크립트가 구성한 것은 패킷으로 전송된 적이 없습니다. 두 가지 실패가 겹쳤습니다. 패킷은 설계대로 전송되지 않았고, 파서는 채움 바이트를 응답으로 읽었습니다.

dork 단계는 키 없이는 무력했습니다. 이 단계는 --shodan-key 또는 SHODAN_KEY를 읽었으며, 둘 다 없으면 192.168.56.101(VirtualBox 호스트 전용 기본값)을 targets.txt에 기록하고 계속 진행했습니다. 키가 있으면 공용 호스트를 Shodan에 질의하고 그들을 향해 발사했을 것이며, 이는 어떤 랩 도구에도 필요 없고 저장소가 제거되는 결과를 낳습니다.

synipopt는 단일 패킷 전송 아이디어를 유지하고, 타게팅 단계를 제거하며, 휴리스틱 파서를 헤더 오프셋 파싱으로 교체하고, 기존 로그 값을 tests/test_packet.py의 회귀 테스트로 전환합니다.

CVE 사실

CVE-2026-98432, Linux 커널 IPv4 네트워킹, use-after-free, Linux CNA 기준 CVSS 3.1 9.8. Red Hat은 이를 Critical(RHSB-2026-016)로 평가하며 RHEL 8, 9, 10 및 OpenShift를 영향을 받는 제품으로 나열합니다.

경쟁 조건은 수정 커밋에서 설명된 대로다: tcp_v4_syn_recv_sock()는 ireq->ireq_opt를 복사 없이 자식 소켓(newinet->inet_opt)으로 이전한다. 다른 CPU가 동일한 요청 소켓에 대한 재전송된 SYN을 처리하고 tcp_check_req()에서 SYN-ACK를 보낼 수 있다. tcp_v4_send_synack()과 inet_csk_route_req()는 rcu_read_lock() 아래에서만 ireq->ireq_opt를 읽고, 이어서 ip_build_and_send_pkt()와 ip_options_build()가 opt->optlen을 두 번 읽는다. 요청 소켓이 리스너 락 없이 처리되기 때문에(커밋 079096f103fa), SYN-ACK가 아직 구성되는 동안 자식이 해제될 수 있다. 자식 소켓에는 SOCK_RCU_FREE가 없고, inet_sock_destruct()가 inet_opt를 일반 kfree()로 해제했기 때문에 ip_options_build()가 해제된 메모리를 읽을 수 있었다.

메인라인 수정은 커밋 e3f33b0a1d89d738e2b913dab519226eaf76e15b, "ipv4: free inet_opt and ireq_opt after an RCU grace period"(Eric Dumazet, 2026-10-05 병합)이다. 이 커밋은 inet_sock_destruct()와 tcp_v4_reqsk_destructor()에서 kfree()를 kfree_rcu()로 교체한다. 같은 커밋은 요청 소켓 마이그레이션(net.ipv4.tcp_migrate_req=1 또는 BPF reuseport 프로그램)을 통한 두 번째 경로도 언급하는데, 여기서 inet_reqsk_clone()이 이전 요청 소켓과 그 클론 사이에 ireq_opt를 공유한다.

Red Hat의 임시 완화책은 IP 옵션을 포함한 인바운드 IPv4 TCP 패킷을 드롭한다:

table inet cve_2026_98432 {
    chain input {
        type filter hook input priority -310; policy accept;
        ip protocol tcp ip hdrlength > 5 counter drop
    }
}

--compare는 정확히 그 필터를 검사한다: 옵션을 포함한 SYN은 응답이 없고, 일반 SYN은 응답을 받는다.

출처:

  • https://www.cve.org/CVERecord?id=CVE-2026-98432
  • https://git.kernel.org/linus/e3f33b0a1d89d738e2b913dab519226eaf76e15b
  • https://access.redhat.com/security/vulnerabilities/RHSB-2026-016
  • https://www.bleepingcomputer.com/news/security/critical-linux-kernel-flaw-allows-remote-root-attacks-on-mptcp-servers/
  • https://thehackernews.com/2026/10/linux-kernel-tcp-flaw-with-98-cvss.html

실험 개요

네트워크 상의 프로브로는 메모리 손상을 입증할 수 없다. 프로브가 보여줄 수 있는 것은: 호스트가 IP 옵션을 포함한 SYN에 응답하는지, SYN-ACK가 해당 옵션을 에코하는지, 그리고 hdrlength 필터가 경로에 위치하는지 여부다.

  1. CVE-2026-98432에 대한 벤더 수정 이전 커널을 사용하는 VM을 부팅한다. uname -r을 배포판의 보안 권고와 대조해 확인한다.
  2. VM에서 옵션을 포함한 패킷을 감시한다: tcpdump -ni eth0 'tcp and (ip[0] & 0x0f) > 5'
  3. 실험 호스트에서: sudo synipopt --target VM_IP --dport 22 --retries 5 --compare --log run.jsonl
  4. JSONL을 읽는다: reply_kind가 응답을 분류하고 tcp 블록이 파싱된 헤더를 담는다. ip_options_len은 에코를 보여주며, 이는 페이로드가 있는 옵션 블록(record route, timestamp)에서 나타난다. 순수 NOP 채움은 컴파일되어 사라지고 20바이트 헤더로 돌아온다.
  5. 메모리 안전성 신호를 확인하려면 KASAN으로 테스트 커널을 빌드하고 dmesg를 감시한다. 네트워크 상에서는 패킷 처리만 보인다.

안전

소유하거나 테스트 권한이 있는 호스트를 테스트하라. 기본 가드는 RFC 1918, 루프백, 링크 로컬, CGNAT, 문서용 대역 외의 주소를 거부한다. --allow-public은 통제하는 호스트에 대한 승인된 작업을 위해 존재한다. 제3자에게 조작된 SYN을 발사하는 것은 이 도구의 용도가 아니다.

테스트

python3 -m pytest -q

테스트 스위트는 체크섬 속성, 빌드 및 파싱 왕복, 옵션 길이 제한, 응답 분류(SYN-ACK, RST, ICMP, 잘못된 흐름), CLI 가드 및 드라이 런, 그리고 회귀 픽스처로서의 원본 로그 패킷을 다룬다. CI는 Python 3.10과 3.12에서 실행된다.

출처

Shodan 도킹과 원시 SYN 경쟁 프로브를 결합한 유포 중인 자동 익스플로잇 스크립트에서 파생되었다. 이 재작성은 네트워크 수준의 아이디어를 유지하고, 대량 타겟팅 단계를 제거하며, 휴리스틱 파서를 헤더 오프셋 파싱으로 교체한다. 원본 실행 로그 값은 테스트 픽스처로 보존된다.

문서는 antislop 및 humanizer 작성 규칙을 따른다.

라이선스

MIT, LICENSE 참조.

도구 다운로드