Skip to content

通过魔改http报文逃过gfw关键词检测 #7

@bieberg0n

Description

@bieberg0n
Owner

受到西厢计划第三季的启发,本人在近日不停地构造乱七八糟的http报文,测试能否逃过gfw的关键词检测.实验站点为sis001.

已知关键词检测分三步:协议检测,拆包,关键词匹配.通过缩小范围,本人发现其协议判断基于头部关键词"GET / ",匹配逻辑可能为:
GET -> 第一个回车 -> 是否为键值对(a:b) -> a是否为host -> 是的话开始匹配后面的域名,否的话跳到下一个回车,继续第三步.
也就是说,就算请求的是sis001.com.cn也会触发封锁.

所以能够逃过检测的报文可以这样:

(报头GET前有内容,如果是回车的话部分服务器勉强能响应这种报文)
\nGET / HTTP/1.1\nHost:sis001.com.cn\nConnection:close\n\n

或者这样:

(夹了一个非键值对的内容,多数服务器可以正常响应这种报文)
GET / HTTP/1.1\na\nHost:sis001.com.cn\nConnection:close\n\n

发送了这种报文后包括sis001等网站就能正常返回页面而不会被reset了.

如果gfw要修补这种漏洞,我觉得其实可以直接匹配第一个遇到的"\nHost:",再匹配后面的域名就行了.

参考资料:
HTTP URL/深度关键词检测
翻墙路由器的原理与实现

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @bieberg0n

        Issue actions

          通过魔改http报文逃过gfw关键词检测 · Issue #7 · bieberg0n/blog