A June 2024 IIE CAS master's thesis (author and advisor names redacted) built a genetic-algorithm + simulated-annealing evasion-traffic generator and, from Sept-Dec 2023, ran live tests against national government HTTP-censorship DPI middleboxes it labels 'RU,' 'KZ,' and 'IN,' plus open-source Snort2/3 and Suricata, cataloging per-target working evasion techniques (e.g. Host-header duplication and field-case manipulation defeat the RU target's Host-based filter; the IN target returns a ~1.2KB block page instead of dropping the connection) in a country-by-technique table, and benchmarked generation efficiency against the open-source 'Geneva' evasion tool from academic circumvention research. NOTE: neither 'ru' (Russia) nor 'in' (India) exists yet as a censor entry in this corpus's taxonomy -- flagged as new-censor candidates; 'kz' already maps to Kazakhstan, a confirmed TSG export site (K18).
在 2023 年 9 月至 12 月期间,本章设计了测试方法,使用规避攻击流量生成工具对国家 DPI 中间件(RU、IN、KZ)以及开源 DPI 中间件(Snort2/3 和 Suricata)进行实际测试...IN:DPI 中间件只能对 80 端口下的 HTTP 流量检测 Host 字段...它返回一个大约 1.2KB 大小的阻塞页面
Defense implications
- This IIE-CAS/MESA-adjacent lab is actively benchmarking evasion techniques against other nations' live censorship infrastructure, not only China's, including Kazakhstan -- a confirmed Geedge/TSG export site -- so weaknesses catalogued here may feed back into hardening the exported product itself, not just the domestic GFW.
- Host-header field duplication and case-randomization are documented as currently effective against at least one tested national censor's Host-based filter, but this is explicitly framed as input to a defense-hardening roadmap (see the companion ML-detector finding on this same thesis) -- treat these as time-limited, not durable, evasion primitives.
Related findings
An internal TSG operations/troubleshooting manual lays out TSG's full traffic pipeline (NIC -> mrzcpd/marsio capture driver -> sapp DPI engine -> firewall/proxy(KNI->TFE)/active-defense/WAN-NAT policy branches) and shows engineers using maat_redis_tool to pull the live Redis-synced blocking policy tables (TSG_SECURITY_COMPILE, TSG_OBJ_IP_ADDR, TSG_OBJ_APP_ID) and filter them by numeric policy/object ID to debug why a block rule isn't firing.
The internal 'MAAT网络流处理配置统一描述框架' engineering manual (v3.1.20, author name redacted, 2021) documents MAAT's Redis-synced rule-compilation framework and its RuleScan/Hyperscan-based pattern-matching engine (libmaatframe.so / librulescan), and records that RuleScan's fast-scan feature caused a production outage on 2019-03-19 and has been disabled ever since.
An internal MESA Lab research note directly measures and compares China's ('CN') HTTP censorship middlebox against Russia, India and an unlabeled 'HZ' system, plus open-source Snort2/Snort3/Suricata: China is characterized as inspecting Host- and keyword-based triggers (example trigger given: a request containing the parameter 'q=ultrasurf') across ALL ports rather than just 80/443, responding with a triple RST or an extra RST+ACK; an 8-technique HTTP-request-mangling evasion comparison table credits China's middlebox as vulnerable only to request-line whitespace insertion and HTTP-version tampering, fewer categories than the other three systems tested.
The same 2024 IIE CAS thesis proposes 'PED' (Packet-context based Evasion Detection): an XGBoost flow-feature pre-filter followed by a GRU-based autoencoder trained on packet-context features (inter-packet plus protocol-layer, including HTTP-layer fields) that flags DPI-evasion traffic via reconstruction error, reporting accuracy/ROC-AUC above 0.88/0.97 and generalizing to the public CICIDS and MAWI datasets; the thesis also proposes a deployable LAN-gateway evasion-detection prototype and four DPI-middlebox hardening recommendations (mimic Suricata's strict field validation, enforce RFC-compliant parsing, add ML-based anomaly detection, run regular red-team evaluations).
An internal 'MAAT Configuration Description Manual (String)' fully documents MAAT's rule-compilation model: per-field string matches (substring/prefix/suffix/exact/regex/AND-of-substrings/offset-anchored substrings) grouped into up to 8 AND/NOT clauses per compiled rule (conjunctive normal form), each carrying an action code (0=block, 1=monitor-only, 2=whitelist), blacklist and logging flags, and a floating-point execution-order field for safe rule reordering, plus the C scanning API (Maat_full_scan_string) and the file/JSON formats used to push rule updates to production.
Internal MAAT engineering Q&A notes detail the rule engine's filter hierarchy: a 'region' config matches on keyword / regex / IP / extended-IP(CIDR) / numeric / file-digest / text-similarity / FQDN fields; regions roll up via AND/OR into 'group' configs; groups roll up into an 8-clause-max 'compile' config in conjunctive normal form. Rule config is pushed via a Redis single-primary/multi-replica tree, and MAAT itself is not distributed — each production front-end box runs its own single MAAT instance that receives pushed config and calls the shared rulescan library to execute the actual scan.