CS3640
How might a middlebox detect that a client is trying to access a prohibited destination and/or prohibited information?
How might a middlebox detect that a client is trying to access a prohibited destination and/or prohibited information?
Having detected something it wants to prevent, how might a middlebox block a connection?
$ dig dw.com
C:\> nslookup dw.com
$ dig dw.com ; <<>> DiG 9.16.27-Debian <<>> dw.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38878 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 3ac724b645b5a654a84cbd86638e0171387afb6f2a19e232 (good) ;; QUESTION SECTION: ;dw.com. IN A ;; ANSWER SECTION: dw.com. 183 IN A 194.55.26.46 dw.com. 183 IN A 194.55.30.46 ;; Query time: 0 msec ;; SERVER: 128.255.1.3#53(128.255.1.3) ;; WHEN: Mon Dec 05 14:34:25 UTC 2022 ;; MSG SIZE rcvd: 95
95.85.120.6 is the IP address of a host located in Turkmenistan.
(It's not a DNS server though!)
What happens when you send a DNS query through the firewall hosts that surround Turkmenistan's network?
$ dig @95.85.120.6 dw.com
C:\> nslookup dw.com 95.85.120.6
$ dig @95.85.120.6 dw.com ; <<>> DiG 9.16.27-Debian <<>> @95.85.120.6 dw.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31984 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;dw.com. IN A ;; ANSWER SECTION: dw.com. 30 IN A 127.0.0.1 ;; Query time: 247 msec ;; SERVER: 95.85.120.6#53(95.85.120.6) ;; WHEN: Mon Dec 05 14:37:07 UTC 2022 ;; MSG SIZE rcvd: 40
Reference: Bidirectional DNS, HTTPS, HTTP injection in Turkmenistan.
159.226.244.24 is the IP address of a host located in China. (Also not a DNS server.)
$ dig @159.226.244.24 dw.com
C:\> nslookup dw.com 159.226.244.24
$ dig @159.226.244.24 dw.com ; <<>> DiG 9.16.27-Debian <<>> @159.226.244.24 dw.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35901 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;dw.com. IN A ;; ANSWER SECTION: dw.com. 237 IN A 31.13.87.9 ;; Query time: 220 msec ;; SERVER: 159.226.244.24#53(159.226.244.24) ;; WHEN: Mon Dec 05 14:47:44 UTC 2022 ;; MSG SIZE rcvd: 40
Reference: How Great is the Great Firewall? Measuring China's DNS Censorship.
The DNS injection systems in Turkmenistan and China are bidirectional, meaning they don't make a distinction between inbound and outbound packets.
This property makes them easy to study.
(Remote censorship measurement systems like Censored Planet take advantage of this and other properties, to measure levels of censorship without needing a physical presence in another country.)
Not all forms of censorship are this easy to test and see.
What can a client do to circumvent a block of some desired destination/information?
ssh -D server
)All-in-one systems:
The censor can use the system too, and study how it works.
What prevents a censor from discovering all your proxy IP addresses and blocking them?
The key question is:
What does it cost a censor to block the system?
Protocol obfuscation is not enough.
You need to somehow protect the endpoints too.
https://github.com/net4people/bbs, a censorship circumvention forum that I manage.
https://ntc.party/, another active forum.
https://snowflake.torproject.org/, run a browser extension to become a temporary proxy.
https://ooni.org/, install an app to measure censorship.
David Fifield