{"id":17048189,"url":"https://github.com/darkk/rkn-git-flow","last_synced_at":"2025-10-19T15:38:10.276Z","repository":{"id":44563805,"uuid":"149801820","full_name":"darkk/rkn-git-flow","owner":"darkk","description":"О сниферах в московском метро и бранчах блоклистов РКН","archived":false,"fork":false,"pushed_at":"2019-12-01T21:13:53.000Z","size":7897,"stargazers_count":26,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-26T10:36:20.992Z","etag":null,"topics":["lulz","metameta"],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darkk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-21T18:22:13.000Z","updated_at":"2024-12-30T13:22:17.000Z","dependencies_parsed_at":"2022-09-02T19:41:08.525Z","dependency_job_id":null,"html_url":"https://github.com/darkk/rkn-git-flow","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkk%2Frkn-git-flow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkk%2Frkn-git-flow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkk%2Frkn-git-flow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkk%2Frkn-git-flow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darkk","download_url":"https://codeload.github.com/darkk/rkn-git-flow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248594141,"owners_count":21130312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lulz","metameta"],"created_at":"2024-10-14T09:51:17.647Z","updated_at":"2025-10-19T15:38:05.213Z","avatar_url":"https://github.com/darkk.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"Данные к [докладу](https://slides.ooni.io/2018/CIF/) на [CryptoInstallFest 5 (22 сентября 2018)](https://cryptofest.ru/).\n\ntl;dr\n=====\n\nПредположительно:\n\n- МаксимаТелеком или аплинки ([МТС](traceroute/2018-09-20-16-11-03.png)? [Мегафон](traceroute/2018-09-20-16-10-42.png)?) слушают трафик в поисках Socks5 проксей\n- по результатам \"прослушки\" [ходит сканер](scanner-pcap/)\n- некоторые провайдеры блокируют IP адреса раньше, чем РКН добавляет адрес в \"общие\" выгрузки\n\n![славный график](the_fastest_draw.png)\n\nДетали\n======\n\nПри использовании Socks5 для соединения с Telegram из сети `MT_FREE`\nМосковского Метро (провайдер МаксимаТелеком) через полчаса-час на адрес Socks5\nприходит сканер с адреса `178.176.30.221` из \"клиентской\" [сети Мегафона](https://stat.ripe.net/178.176.30.221),\nсудя по PTR записям вида `clients-221.30.176.178.misp.ru.`.\n\nСканер портов проверят доступность TCP порта полу-открытым сканированием (SYN, SYN-ACK, RST).\nПосле успешной проверки сканер пытается установить Socks5 соединение с сервером\nиз подсети Telegram `91.108.56.186:443` и произвести обмен данными с ним.\n\nЧерез час-полтора после прихода сканера _НЕКОТОРЫЕ_ провайдеры начинают блокировать\nдоступ к просканированному серверу: МГТС, МТС, Мегафон, Yota, Билайн и др.\n\nЕщё через час-полтора IP адрес появляется в \"выгрузке\" и \"дельтах\", при этом\nотметка времени `ts` у IP-адреса соответствует времени появления в выгрузке и\n\"отстаёт\" от времени начала блокировки на выделенных провайдерах.\n\nМеханика эксперимента\n=====================\n\n- установить [haproxy](ansible/templates/haproxy.cfg), перенаправляющий Socks5 и TLS трафик на разные бэкенды (nginx с [preread](http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html) работать не будет, т.к. он читает минимум 5 байт, а первый пакет хэндшейка Socks5 \u0026mdash; 3 или 4 байта)\n- выделить зонды RIPE Atlas в России, которые находятся в сетях, фильтрующих по списку РКН\n- запустить измерение SSLCert на сервер с этих зондов с периодичностью 3 минуты для проверки доступности TCP порта\n- перевести телефон в оффлайн\n- сконфигурировать Telegram на использование сервера\n- подключиться к сети `MT_FREE` в метро, сделать круг по кольцевой линии, отключиться от `MT_FREE`\n- удалить прокси-сервер из Telegram клиента (чтоб случайно не подключиться к нему через оператора сотовой связи или другого провайдера)\n- подождать несколько часов и завершить измерение через RIPE Atlas\n\nТаймлайн эксперимента s5tg-01\n=============================\n\n- 00:32 приход сканера\n- 00:47 наблюдается блокировка на Yota\n- 00:52 наблюдается блокировка на МГТС\n- 01:38 в выгрузке с `updateTime=\"2018-09-20T01:38:00+03:00\"` ещё нет блокировки\n- 01:57 блэкхол на [looking glass Beeline](lg/beeline-2018-09-20-02-00-02.png)\n- 03:07 в \"предыдущей\" выгрузке с `updateTime=\"2018-09-20T03:07:00+03:00\"` всё ещё нет блокировки\n- 03:30 `\u003cip ts=\"2018-09-20T03:30:00+03:00\"\u003e45.56.118.171\u003c/ip\u003e` \u0026mdash; первая известная выгрузка с блокировкой данного IP\n\nГрафики по другим эксприментам с данными RIPE Atlas:\n\n- [s5tg-02](https://nbviewer.jupyter.org/github/darkk/rkn-git-flow/blob/master/atlas-vis-02.ipynb), \"предыдущая\" выгрузка отстоит от `ts` на 4 минуты\n- [s5tg-03](https://nbviewer.jupyter.org/github/darkk/rkn-git-flow/blob/master/atlas-vis-03.ipynb), \u0026mdash;\u0026quot;\u0026mdash; на 4 минуты\n- [s5tg-04](https://nbviewer.jupyter.org/github/darkk/rkn-git-flow/blob/master/atlas-vis-04.ipynb), \u0026mdash;\u0026quot;\u0026mdash; на 5 минут\n- [s5tg-05](https://nbviewer.jupyter.org/github/darkk/rkn-git-flow/blob/master/atlas-vis-05.ipynb), \u0026mdash;\u0026quot;\u0026mdash; на 11 минут\n\nСпасибо\n=======\n\n- сообществу [CTF в Петербурге](https://t.me/spbctf) за королевский подгон багофичи сети `MT_FREE` в МосМетро\n- [Неугомонному Филу](http://usher2.club/) и его источникам за данные о \"выгрузках\"\n- [Дмитрию R16 Морозовскому](https://t.me/Dmarck) за данные о \"дельтах\"\n- проекту [RIPE Atlas](https://atlas.ripe.net/landing/get-involved/) и операторам зондов за измерительный инструмент\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkk%2Frkn-git-flow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarkk%2Frkn-git-flow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkk%2Frkn-git-flow/lists"}