Zmiana adresu IP
ważność wysokamierzonysposób ip_change
Porównanie aktualnego IP z poprzednim skanem DNS. Nieoczekiwana zmiana to przejęcie domeny lub migracja bez wiedzy agencji.
Pierwszy skan domeny tylko zapisuje wzorzec; ustalenie otwiera dopiero kolejny skan z innym adresem.
WIKI
artykuł z 16.09.2026 · źródeł 8Zmiana adresu IP to parametr monitoringu stron internetowych, który porównuje adresy IPv4 zwrócone dla domeny w bieżącym zapytaniu DNS z adresami zapamiętanymi przy poprzednim pomiarze. Możliwe wyniki to: adresy bez zmian, inny zbiór adresów niż poprzednio, pierwszy pomiar, który tylko zapisuje punkt odniesienia, albo brak odpowiedzi, przy którym porównania nie da się wykonać. Adres IPv4 hosta przechowuje rekord A z 32-bitowym adresem internetowym, a host z kilkoma adresami ma kilka rekordów A [2].
Jak działa
Pomiar zestawia dwie migawki. Pierwsza odpowiedź dla domeny staje się wzorcem, a każdą kolejną porównuje się z nim jako zbiór adresów. Kolejność rekordów nie powinna mieć znaczenia: RFC 1794 zauważa, że protokół DNS nie gwarantuje kolejności, a wczesne mechanizmy równoważenia obciążenia celowo rotowały rekordy adresowe metodą round-robin [3]. Po wykryciu różnicy nowy zbiór zwykle zastępuje wzorzec, żeby ta sama zmiana nie była zgłaszana w każdym kolejnym pomiarze.
Na wynik wpływa czas życia rekordu. TTL to limit czasu, przez który rekord może leżeć w pamięci podręcznej; ustala go administrator strefy [1]. RFC 1034 zaleca, by przed zapowiedzianą zmianą obniżyć TTL, a po zmianie przywrócić dawną wartość, co ogranicza niespójność w okresie przejścia [1]. Dwa kolejne pomiary mogą więc przez pewien czas widzieć raz stary, raz nowy adres, zależnie od tego, co pamięta pytany resolver.
Sama różnica adresów nie mówi, co się stało. Tę samą obserwację daje dostawca CDN, zaplanowana przeprowadzka serwera i przejęcie konta DNS, dlatego pomiar jest punktem wyjścia do rozróżnienia, a nie rozstrzygnięciem.
Standardy i specyfikacje
- RFC 1034 i RFC 1035 definiują pole TTL i rekord A: 32-bitowy adres w danych rekordu, wiele rekordów A dla hosta z wieloma adresami oraz czas przechowywania w pamięci podręcznej [1] [2].
- RFC 1794 (1995, dokument informacyjny) opisuje równoważenie obciążenia przez DNS. Odpowiedź zawiera wiele adresów, a w opisanym wdrożeniu adresy losowo przestawiano co 300 sekund. W takiej zmiennej strefie TTL rekordów musi być bardzo niski [3].
- RFC 4786 definiuje anycast jako udostępnianie tego samego adresu usługi w wielu odrębnych lokalizacjach, tak że pakiety trafiają do jednej z nich [4].
- NIST SP 800-128 definiuje konfigurację bazową (ang. baseline configuration) jako zestaw specyfikacji przejrzany i uzgodniony w danym momencie, który można zmieniać tylko przez procedury kontroli zmian [8]. Monitorowanie konfiguracji ma wykrywać, kiedy stan faktyczny odbiega od zatwierdzonego wzorca, czyli nieautoryzowaną zmianę [8].
Zagrożenia i skutki
Przejęcie DNS. Dyrektywa CISA ED 19-01 z 22 stycznia 2019 r. opisywała kampanię, w której napastnik po zdobyciu danych logowania zmieniał rekordy A, MX lub NS i kierował ruch na własną infrastrukturę [7]. Dyrektywa nakazywała sprawdzić, czy publiczne rekordy DNS wskazują zamierzone miejsca; CISA zamknęła ją 8 stycznia 2026 r. [7]. Szerzej o przejęciu domeny pisze artykuł Rozwiązywanie DNS.
Migracja poza kontrolą zmian. NIST SP 800-128 wśród przyczyn nieautoryzowanych zmian wymienia zmiany przypadkowe, działania osób, które nie znają procesu kontroli zmian albo uważają, że ich nie dotyczy, oraz opóźnienie między wprowadzeniem zmiany a aktualizacją wzorca [8]. Nieautoryzowana zmiana może świadczyć o ataku albo o tym, że procedury nie są przestrzegane, dlatego NIST zaleca analizować jej przyczynę [8]. Przeniesienie strony na inny serwer bez wiedzy osób, które ją utrzymują, wygląda z zewnątrz tak samo jak zmiana wprowadzona przez napastnika.
Fałszywe alarmy przy CDN. Dla rekordu obsługiwanego przez proxy Cloudflare zapytanie DNS zwraca adresy anycast Cloudflare zamiast adresu serwera źródłowego [5]. Zakresy tych adresów są wspólne dla wszystkich hostów za proxy [6]. TTL takich rekordów wynosi 300 sekund i nie da się go zmienić; krótki czas ma sprawić, że zmiana przypisanego adresu anycast szybko zacznie obowiązywać [5]. Inny adres w odpowiedzi nie oznacza wtedy zmiany serwera ani hostingu. Podobnie przy równoważeniu obciążenia przez DNS: jeśli zawartość puli rekordów zmienia się co kilka minut [3], porównanie pełnych zbiorów zgłosi zmianę przy każdej takiej rotacji.
Zmiana niewidoczna. Proxy działa też w drugą stronę i ukrywa przeprowadzkę: odwiedzający dostaje adres Cloudflare zamiast prawdziwego adresu serwera źródłowego [6]. Migracja serwera za CDN nie zmienia więc odpowiedzi DNS, a porównanie rekordów A jej nie wykryje.
Przykłady
| Obserwacja | Wynik porównania | Typowa przyczyna |
|---|---|---|
| Te same adresy w innej kolejności | bez zmian | rotacja round-robin [3] |
| Jeden adres zastąpiony innym, TTL wcześniej obniżony | zmiana | zapowiedziana migracja serwera [1] |
| Adresy z zakresów CDN zamiast adresu serwera | zmiana | włączenie proxy, adresy anycast [5] [6] |
| Inny adres CDN przy niezmienionej konfiguracji | zmiana | dostawca zmienił przydział adresu anycast [5] |
| Nowy adres i zmienione rekordy NS lub MX | zmiana | przejęcie konta DNS [7] |
| Nowy adres, którego nikt nie zatwierdził | zmiana | migracja poza procesem kontroli zmian [8] |
| Migracja serwera schowanego za proxy | bez zmian | adres źródłowy ukryty za CDN [6] |
| Brak odpowiedzi albo nazwa nie istnieje | nie da się porównać | awaria DNS, wygaśnięcie domeny — patrz Rozwiązywanie DNS |
- [1] RFC 1034 — Domain Names: Concepts and Facilities · IETF
- [2] RFC 1035 — Domain Names: Implementation and Specification · IETF
- [3] RFC 1794 — DNS Support for Load Balancing · IETF
- [4] RFC 4786 — Operation of Anycast Services · IETF
- [5] Proxy status — Cloudflare DNS docs · Cloudflare
- [6] Cloudflare IP addresses — Cloudflare Fundamentals docs · Cloudflare
- [7] Emergency Directive 19-01 — Mitigate DNS Infrastructure Tampering · CISA
- [8] SP 800-128 — Guide for Security-Focused Configuration Management of Information Systems · NIST
STATS
wyniki z systemu · tylko liczby zbiorczeTen parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.
Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.
- Przebiegów
- 33sposób ip_change
- W 30 dni
- 0przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- —33 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 22.09.2026Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.
| Obszar i ważność | Bezpieczeństwo · wysoka (B15) |
|---|---|
| Workflow i częstotliwość | creato_ping_security_v2 · P3 działa na LAB247Skaner 2.0, rytm „p3” / „bezpieczenstwo”: premium co 6 h, reszta co 24 h (tier 1–3), co 9 dni (tier 4) · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu. |
| Sonda i helper | sposób ip_change · CREATO_PING/helpers/ip_change.py |
| Testy |
|
| Typ wyniku | 0 albo 1 ustalenie ip_changed na stronę w przebiegu; w szczegółach stary i nowy zbiór adresów, w dowodzie obie listy |
| Jednostka | brak — wynik jakościowy (zbiór adresów IPv4 z rekordów A względem wzorca z poprzedniego przebiegu) |
| Próg i reguła | Timeout zapytania 3,0 s — stała w helperze, poza config.py. Reguła: posortowane listy adresów różne = zmiana; wystarczy jeden adres dodany albo usunięty z puli. |
| Gdzie leżą pokrętła | CREATO_PING/helpers/ip_change.py → diff_ips, _resolve_a (timeout 3,0 s), check_batch (concurrency 20), _BASELINE_FILENAMECREATO_PING/helpers/security_runner.py → do_writera (bramka gate z polityki; sito powagi zniknęło 18.09)CREATO_PING/config/incident_policy.toml → [finding] ip_changedCREATO_PING/config/wyjatki_falszywych_alarmow.toml → wąskie wyjątki per strona |
| Retencja odczytów | Surowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Do LAB247 ten kanał nie idzie (do bazy serwisu jadą dziś tylko sprawdzenia dostępności), więc poza odczytem zostaje werdykt w tabeli `werdykty` i sprawa w tabeli `sprawy`. |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/ip_change.py · CREATO_PING/helpers/security_runner.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/skaner/adapter_clickup.py · CREATO_PING/skaner/sprawy.py · CREATO_PING/helpers/tests/test_ip_change.py · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026 |
ip_changed: bramka polityki otwarta (gate=true) → sprawa w skanerze → Zmiana adresu serwera — waga 3 → ocena 5–6 (żółty), status strony „sredni”, dopóki sprawa jest otwarta. Zmianę serwerów nazw i rekordów poczty zgłasza ta sama sonda integralności DNS jako `dns_ns_changed` i `dns_mx_changed` — obie o wadze 3, obie z bramką otwartą.
| Kod | Finding | Severity | Pewność | Skutek | Finding / alarm | Waga → ocena | Co zrobić |
|---|---|---|---|---|---|---|---|
| B15.01 | Zmiana adresu IPip_changed | Wysoka | Niepewne | do weryfikacji | tak / nie | waga 3 → ocena 5–6 (żółty) | Potwierdź migrację i zaktualizuj oczekiwany IP. |
| Kod i klucz | B15.01 · ip_changed · w tabeli typów |
|---|---|
| Co znaczy | IP z DNS różni się od poprzedniego skanu — migracja hostingu albo przejęcie domeny. |
| Kiedy powstaje | Tylko p3. Rekordy A domeny (dnspython, timeout 3 s) porównane jako posortowana lista z baseline w {CREATO_PING_STATE_DIR}/ip_baseline.json; finding, gdy nowa lista jest niepusta, baseline dla domeny istnieje i posortowane listy się różnią. Pierwszy skan (brak baseline) albo brak rekordów A = brak findingu.Logika: diff_ips, ip_change.py:65–86. Baseline nadpisywany każdą niepustą odpowiedzią, więc zmiana alarmuje tylko w jednym cyklu. |
| Severity · pewność | Wysoka · Niepewne |
| Skutek dla strony | do weryfikacji · zakłada Finding · alarm nie |
| Waga → ocena | waga 3 → ocena 5–6 (żółty) |
| Klasyfikacja | MITRE ATT&CK 19.2: T1584.001 Compromise Infrastructure: Domains (ślad)OCSF 1.9.0: Detection Finding (class_uid 2004) |
| Rekord OCSF | finding_info.analytic.uid = "B15.01" · analytic.name = "ip_changed" · finding_info.types = ["B15 Zmiana adresu IP"] |
| Co zrobić | Potwierdź migrację i zaktualizuj oczekiwany IP. |
| Wersje typu |
|
LOOP
bez pętliTrafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Ten parametr nie przeszedł jeszcze żadnej pętli. Kolejność po pierwszych pięciu grupach ustali miara trafności.