Det Àr ingen hemlighet att övervakningen av blockeringar enligt listan över förbjöd information i Ryssland leds av det automatiserade systemet "Revisor". Hur det fungerar beskrivs bra hÀr i denna , bilden dÀrifrÄn:

Direkt hos leverantören installeras :
Modulen "Agent Revisor" Ă€r en strukturell del av det automatiserade systemet "Revisor" (AS "Revisor"). Detta system Ă€r avsett för att övervaka att kommunikationsoperatörer följer kraven pĂ„ begrĂ€nsning av Ă„tkomsten enligt bestĂ€mmelserna i artiklarna 15.1-15.4 i den federala lagen av den 27 juli 2006 â 149-ЀР"Om information, informationsteknik och skydd av information".
Huvudsyftet med att skapa AS "Revisor" Ă€r att sĂ€kerstĂ€lla övervakning av kommunikationsoperatörernas efterlevnad av kraven i artiklarna 15.1-15.4 i den federala lagen av den 27 juli 2006 â 149-ЀР"Om information, informationsteknik och skydd av information" nĂ€r det gĂ€ller att upptĂ€cka faktiska fall av Ă„tkomst till förbjuden information och fĂ„ bevisande material (data) om brott mot begrĂ€nsning av Ă„tkomst till förbjuden information.
Med tanke pÄ att mÄnga leverantörer, om inte alla, har installerat denna enhet hos sig sjÀlva, borde det ha blivit ett stort nÀtverk av provtagare-signaler liknande och Ànnu mer, men med stÀngd Ätkomst. Men en signal Àr ÀndÄ en signal för att sÀnda signaler Ät alla hÄll, och vad hÀnder om vi fÄngar dem och ser vad vi har fÄngat och hur mycket?
Innan vi rÀknar, lÄt oss titta pÄ varför detta ens kan vara möjligt.
Lite teori
Agenter kontrollerar tillgÄngen till resurser, inklusive via HTTP(S) förfrÄgningar, som denna till exempel:
TCP, 14678 > 80, "[SYN] Seq=0"
TCP, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
TCP, 14678 > 80, "[ACK] Seq=1 Ack=1"
HTTP, "GET /somepage HTTP/1.1"
TCP, 80 > 14678, "[ACK] Seq=1 Ack=71"
HTTP, "HTTP/1.1 302 Found"
TCP, 14678 > 80, "[FIN, ACK] Seq=71 Ack=479"
TCP, 80 > 14678, "[FIN, ACK] Seq=479 Ack=72"
TCP, 14678 > 80, "[ACK] Seq=72 Ack=480"
FörfrÄgan bestÄr förutom av nyttolasten ocksÄ av en anslutningsinstallationsfas: utbyte SYN och SYN-ACK, och en avslutningsfas för anslutningen: FIN-ACK.
Registret över förbjuden information innehÄller flera typer av blockeringar. Det Àr uppenbart att om en resurs blockeras baserat pÄ IP-adress eller domÀnnamn, sÄ kommer vi inte att se nÄgra förfrÄgningar. Detta Àr de mest destruktiva typerna av blockeringar som leder till att alla resurser pÄ en IP-adress eller all information pÄ en domÀn blir otillgÀnglig. Det finns ocksÄ en typ av blockering "per URL". I det hÀr fallet mÄste filtreringssystemet analysera HTTP-huvudet för att exakt avgöra vad som ska blockeras. Innan dess, som nÀmnts ovan, mÄste en anslutningsinstallation ske som man kan försöka spÄra, eftersom det sannolikt Àr att filtret kommer att slÀppa igenom den.
För detta behöver man vÀlja en lÀmplig ledig domÀn med blockeringstypen "per URL" och HTTP, för att underlÀtta arbetet för filtreringssystemet, helst en lÀnge övergiven, för att minimera oönskad trafik förutom frÄn agenter. Denna uppgift visade sig vara ganska enkel, det finns mÄnga lediga domÀner i registret över förbjuden information och för alla smaker. DÀrför köptes domÀnen, kopplades till IP-adresser pÄ VPS med igÄngsatt Fungerar libdns korrekt? => Kör och rÀkningen inleddes.
Revision av "Revisorerna"
Jag förvÀntade mig att se periodiska toppar av förfrÄgningar, som skulle indikera en kontrollerad aktivitet. Man kan inte sÀga att jag inte alls sÄg detta, men det fanns verkligen ingen tydlig bild:
Vilket inte Àr förvÄnande, Àven pÄ en helt överflödig domÀn pÄ en aldrig anvÀnd IP kommer det att komma en massa oönskad information, sÄ Àr den moderna Internet-vÀrlden. Men lyckligtvis behövde jag bara förfrÄgningar till en specifik URL, sÄ alla skannrar och lösenordsryckare hittades snabbt. Det var ocksÄ ganska enkelt att förstÄ var det var överflöd av identiska förfrÄgningar. DÀrefter sammanstÀllde jag frekvenserna för IP-adresser och gick igenom hela toppen manuellt för att separera dem som övervakade de tidigare stegen. Dessutom klippte jag bort alla kÀllor som bara skickade ett paket, det var inte mÄnga av dem. Och resultatet blev detta:
En kort lyrisk avstickare. Lite mer Àn ett dygn senare skickade min hostingleverantör ett meddelande av ganska otydlig karaktÀr, som sa att pÄ era resurser finns en resurs frÄn den förbudna listan av RKN, dÀrför blockeras den. Först trodde jag att de hade blockerat mitt konto, men sÄ var det inte. Sedan tÀnkte jag att de bara varnade mig om nÄgot jag redan visste. Men det visade sig att hosten hade aktiverat sitt filter innan min domÀn och jag hamnade dÀrmed under dubbel filtrering: frÄn bÄde leverantörerna och hosten. Filtret slÀppte igenom endast slutpunkterna av förfrÄgningarna: FIN-ACK och RST skÀrande all HTTP vid den förbudna URL:en. Som syns i diagrammet ovan, efter de första dygnen började jag fÄ mindre data, men jag fick dem ÀndÄ, vilket rÀckte för uppgiften att rÀkna kÀllorna till förfrÄgningar.
Nu till saken. Enligt min mening Àr det helt klart synligt tvÄ toppar varje dag, den första mindre, efter midnatt i Moskva, den andra nÀrmare klockan 6 pÄ morgonen med svans fram till klockan 12 pÄ dagen. Toppen intrÀffar inte exakt pÄ samma tid. Först ville jag identifiera IP-adresser som endast föll inom dessa perioder och varje under alla perioder, baserat pÄ antagandet att kontroller av agenter sker periodiskt. Men efter noggrann granskning upptÀckte jag ganska snabbt perioder som föll inom andra intervaller, med andra frekvenser, ner till en förfrÄgan varje timme. Sedan tÀnkte jag pÄ tidszonerna och hur det kanske ligger till, och sedan förstod jag att systemet kanske överhuvudtaget inte Àr globalt synkroniserat. Dessutom kommer NAT förmodligen att spela en roll, och samme agent kan göra förfrÄgningar frÄn olika offentliga IP-adresser.
Eftersom mitt ursprungliga mĂ„l inte var precision, rĂ€knade jag faktiskt alla adresser som förekom pĂ„ en vecka och fick â 2791. Antalet TCP-sessioner som upprĂ€ttats frĂ„n en adress Ă€r i genomsnitt 4, med en median pĂ„ 2. Topp-sessioner pĂ„ adress: 464, 231, 149, 83, 77. Max frĂ„n 95% av urvalet â 8 sessioner pĂ„ adress. Medianen Ă€r inte sĂ€rskilt hög, jag pĂ„minner om att diagrammet visar en tydlig daglig periodicitet, sĂ„ man kunde förvĂ€nta sig nĂ„got runt 4 till 8 över 7 dagar. Om man tar bort alla sessioner som förekommit en gĂ„ng, sĂ„ fĂ„r man precis en median pĂ„ 5. Men jag kunde inte utesluta dem efter ett tydligt kriterium. TvĂ€rtom visade stickprovskontrollen att de har relation till förfrĂ„gningarna av den förbudna resursen.
Adresser Ă€r viktiga, men i internetvĂ€rlden Ă€r autonoma system â AS, som det finns. 1510, i genomsnitt 2 adresser per AS med ett medianvĂ€rde pĂ„ 1. Toppadresser för AS: 288, 77, 66, 39, 27. Det högsta i 95% av urvalet â 4 adresser per AS. HĂ€r Ă€r medianen förvĂ€ntad â en agent per leverantör. Toppresultaten Ă€r ocksĂ„ förvĂ€ntade â den innehĂ„ller stora aktörer. I ett stort nĂ€tverk kanske agenter behöver finnas i varje region dĂ€r operatören Ă€r verksam, vi fĂ„r inte glömma bort NAT. Om vi ser pĂ„ lĂ€nderna, blir maksimumen: 1409 â RU, 42 â UA, 23 â CZ, 36 frĂ„n andra regioner, som inte Ă€r RIPE NCC. FörfrĂ„gningar frĂ„n utanför Ryssland fĂ„ngar uppmĂ€rksamhet. Det kan kanske förklaras av geolokalisationsfel eller felaktigheter frĂ„n registratorerna vid dataregistrering. Eller av det faktum att ett ryskt företag kan ha icke-ryska rötter eller ha en utlĂ€ndsk filial för att det Ă€r enklare, naturligtvis nĂ€r man har att göra med den utlĂ€ndska organisationen RIPE NCC. En del Ă€r tveklöst överflödig, men det Ă€r svĂ„rt att skilja den pĂ„ ett tillförlitligt sĂ€tt, eftersom resursen Ă€r blockerad, och under andra dagar Ă€r det under dubbelblockering och de flesta sessioner bestĂ„r av utbyte av nĂ„gra tjĂ€nstepaket. Vi kommer överens om att detta Ă€r en liten del.
Dessa siffror kan redan jĂ€mföras med antalet leverantörer i Ryssland. Ă€r licenser för "TjĂ€nster för dataöverföring, exklusive röst" â 6387, men detta Ă€r en kraftigt uppblĂ„st uppskattning, inte alla dessa licenser gĂ€ller just internetleverantörer som behöver ha en agent. I RIPE NCC-zonen Ă€r ett liknande antal AS registrerade i Ryssland â 6230, av vilka inte alla Ă€r leverantörer. och fick 3940 företag Ă„r 2017, och detta Ă€r snarare en överskattning. I vilket fall har vi ett antal exponerade AS som Ă€r tvĂ„ och en halv gĂ„nger mindre. Men hĂ€r Ă€r det viktigt att förstĂ„ att AS inte strikt motsvarar en leverantör. Vissa leverantörer har ingen egen AS, andra har mer Ă€n en. Om vi antar att agenter verkligen finns hos alla, betyder det att nĂ„gon filtrerar starkare Ă€n andra, sĂ„ deras förfrĂ„gningar Ă€r oidentifierbara frĂ„n skrĂ€ppost om de ens nĂ„r fram. Men för grova bedömningar Ă€r det helt acceptabelt, Ă€ven om nĂ„got kan ha gĂ„tt förlorat pĂ„ grund av min slarv.
Om DPI
Trots att min hostingleverantör aktiverade sin filter frÄn andra dagen, kan man utifrÄn informationen frÄn den första dagen dra slutsatsen att blockeringarna fungerar effektivt. Endast 4 kÀllor lyckades ta sig igenom och har fullstÀndiga HTTP- och TCP-sessioner (som i exemplet ovan). Ytterligare 460 kan skicka GET, men sessionen bryts omedelbart pÄ RST. Observera TTL:
TTL 50, TCP, 14678 > 80, "[SYN] Seq=0"
TTL 64, TCP, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
TTL 50, TCP, 14678 > 80, "[ACK] Seq=1 Ack=1"
HTTP, "GET /filteredpage HTTP/1.1"
TTL 64, TCP, 80 > 14678, "[ACK] Seq=1 Ack=294"
#Detta skickade filtret
TTL 53, TCP, 14678 > 80, "[RST] Seq=3458729893"
TTL 53, TCP, 14678 > 80, "[RST] Seq=3458729893"
HTTP, "HTTP/1.1 302 Found"
#Och detta Àr ett försök av den ursprungliga noden att fÄ en förlust
TTL 50, TCP ACKed unseen segment, 14678 > 80, "[ACK] Seq=294 Ack=145"
TTL 50, TCP, 14678 > 80, "[FIN, ACK] Seq=294 Ack=145"
TTL 64, TCP, 80 > 14678, "[FIN, ACK] Seq=171 Ack=295"
TTL 50, TCP Dup ACK 14678 > 80 "[ACK] Seq=295 Ack=145"
#Den ursprungliga noden förstÄr att sessionen Àr bruten
TTL 50, TCP, 14678 > 80, "[RST] Seq=294"
TTL 50, TCP, 14678 > 80, "[RST] Seq=295"
Variationer av detta kan variera: fÀrre RST eller fler retransmissioner - beroende pÄ vad filtret skickar till den ursprungliga noden. I vilket fall som helst Àr detta den mest pÄlitliga mallen som visar att den förbjudna resursen verkligen begÀrdes. Dessutom finns det alltid ett svar som dyker upp i sessionen med TTL större Àn i de föregÄende och kommande paketen.
FrÄn resten syns inte ens GET:
TTL 50, TCP, 14678 > 80, "[SYN] Seq=0"
TTL 64, TCP, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
#Detta skickade filtret
TTL 53, TCP, 14678 > 80, "[RST] Seq=1"
Eller sÄ hÀr:
TTL 50, TCP, 14678 > 80, "[SYN] Seq=0"
TTL 64, TCP, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
TTL 50, TCP, 14678 > 80, "[ACK] Seq=1 Ack=1"
#Detta skickade filtret
TTL 53, TCP, 14678 > 80, "[RST, PSH] Seq=1"
TTL 50, TCP ACKed unseen segment, 14678 > 80, "[FIN, ACK] Seq=89 Ack=172"
TTL 50, TCP ACKed unseen segment, 14678 > 80, "[FIN, ACK] Seq=89 Ack=172"
#Ă
ter igen filtret, flera gÄnger
TTL 53, TCP, 14678 > 80, "[RST, PSH] Seq=1"
...
Skillnaden syns alltid tydligt i TTL om nÄgot kommer frÄn filtret. Men ofta kan det faktiskt inte komma nÄgot alls:
TCP, 14678 > 80, "[SYN] Seq=0"
TCP, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
TCP Retransmission, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
...
Eller sÄ hÀr:
TCP, 14678 > 80, "[SYN] Seq=0"
TCP, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
TCP, 14678 > 80, "[ACK] Seq=1 Ack=1"
#Det har gÄtt nÄgra sekunder utan trafik
TCP, 80 > 14678, "[FIN, ACK] Seq=1 Ack=1"
TCP Retransmission, 80 > 14678, "[FIN, ACK] Seq=1 Ack=1"
...
Och allt detta upprepas och upprepas och upprepas, som man kan se i grafen, verkligen mer Àn en gÄng, varje dag.
Om IPv6
Bra nyhet â den finns. Jag kan bekrĂ€fta att det frĂ„n 5 olika IPv6-adresser görs periodiska förfrĂ„gningar till den blockerade resursen, precis det beteende som jag förvĂ€ntade mig av Agenterna. En av IPv6-adresserna omfattas inte av filtreringen och jag ser en fullstĂ€ndig session. FrĂ„n tvĂ„ andra adresser har jag sett var och en bara en ofullstĂ€ndig session, dĂ€r en av dem avbröts av RST filtreringen, den andra av tidsbegrĂ€nsningen. Sammanlagt 7.
Eftersom antalet adresser Àr fÄ har jag noggrant studerat alla, och det visar sig att det egentligen bara finns 3 leverantörer dÀr, de kan fÄ stÄende ovationer! En annan adress Àr en molntjÀnst i Ryssland (filteras inte), en annan Àr ett forskningscenter i Tyskland (finns det filter?). Men varför de kontrollerar tillgÀngligheten av blockerade resurser enligt ett schema Àr en bra frÄga. De tvÄ som ÄterstÄr har gjort vardera en förfrÄgan och Àr utanför Rysslands grÀnser, och den ena av dem filtreras (trots allt pÄ transiten?).
Blockeringar och Agenter Àr en stor broms för IPv6, vars införande redan gÄr lÄngsamt. Det Àr sorgligt. De som har löst detta problem till fullo kan vara stolta över sig sjÀlva.
Avslutningsvis
Jag har inte jagat 100% noggrannhet, ber om ursĂ€kt för det, hoppas att nĂ„gon vill upprepa detta arbete med större noggrannhet. För mig var det viktigt att förstĂ„ om denna metod överhuvudtaget skulle fungera. Svaret Ă€r â ja, det kommer. De siffror som erhĂ„llits Ă€r i första hand, och jag tror att de Ă€r ganska pĂ„litliga.
Vad mer skulle kunna göras och vad jag inte orkade göra â rĂ€kna förfrĂ„gningar till DNS. De filtreras inte, men ger inte heller stor noggrannhet eftersom de bara fungerar för domĂ€nen och inte för hela URL:en. Periodiskheten borde vara synlig. Om man kombinerar detta med det som syns direkt i förfrĂ„gningarna, kan det hjĂ€lpa till att separera det överflödiga och fĂ„ mer information. Kanske till och med identifiera DNS-utvecklarna som anvĂ€nds av leverantörerna och mycket mer.
Jag hade absolut ingen aning om att min VPS-leverantör skulle aktivera sin egen filtrering ocksĂ„. Kanske Ă€r det en vanlig praxis. I slutĂ€ndan skickar RKN en begĂ€ran om att ta bort resursen till leverantören. Men jag blev inte förvĂ„nad över det, och pĂ„ nĂ„got sĂ€tt gynnade det till och med mig. Filtreringen fungerade mycket effektivt och skar bort alla korrekta HTTP-förfrĂ„gningar till den blockerade URL:en, men de felaktiga, som tidigare hade passerat genom leverantörens filter, nĂ„dde fram, om Ă€n bara i form av avslutningar: FIN-ACK och RST â minus pĂ„ minus och nĂ€stan en plus. Förresten, IPv6-hosting filtrerades inte. SjĂ€lvklart pĂ„verkade detta kvaliteten pĂ„ det insamlade materialet, men det gav Ă€ndĂ„ möjlighet att se periodiciteten. Det visade sig vara en viktig punkt nĂ€r man vĂ€ljer plattform för placering av resurser, glöm inte att frĂ„ga om hur man hanterar förfrĂ„gningar frĂ„n RKN och listan över förbjudna webbplatser.
I början jÀmförde jag AS "Revisor" med . Denna jÀmförelse Àr fullt berÀttigad och ett stort nÀtverk av Agenter kan vara till nytta. Till exempel, för att bestÀmma kvaliteten pÄ tillgÄngen till resurser frÄn olika leverantörer i olika delar av landet. Man kan rÀkna fördröjningar, man kan skapa grafer, man kan analysera allt detta och se förÀndringar som sker bÄde lokalt och globalt. Det Àr inte den mest direkta vÀgen, men astronomer anvÀnder ju "standardljus", varför inte anvÀnda Agenter? Genom att veta (eller hitta) deras standardbeteende kan man bestÀmma förÀndringar som sker runt dem och hur det pÄverkar kvaliteten pÄ de tjÀnster som tillhandahÄlls. Och dessutom behöver man inte sjÀlv placera prover i nÀtverket, de har redan placerats av Roskomnadzor.
Ytterligare en punkt jag vill ta upp Ă€r att varje verktyg kan vara ett vapen. AS "Revisor" Ă€r ett slutet nĂ€tverk, men Agenterna avslöjar allt och alla genom att skicka förfrĂ„gningar till alla resurser pĂ„ den förbjudna listan. Att fĂ„ tag pĂ„ en sĂ„dan resurs utgör faktiskt inga problem. SĂ„ledes berĂ€ttar leverantörerna genom Agenter, omedvetet, mer om sitt nĂ€t Ă€n vad som kanske vore klokt: typer av DPI och DNS, Agentens plats (centrala noden och tjĂ€nstenĂ€tverket?), nĂ€tverksmarkörer för fördröjningar och förluster â och det Ă€r bara det mest uppenbara. Precis som nĂ„gon kan övervaka Agenter för att förbĂ€ttra tillgĂ„ngen till sina resurser, kan nĂ„gon göra det av andra skĂ€l och det finns inga hinder för detta. Det har blivit ett tveeggat och mycket multifacetterat verktyg, vilket vem som helst kan övertyga sig om.
KĂ€lla: habr.com
