Przejdź do głównej zawartości

Przechwytywanie na warstwie aplikacji

Niektóre programy są poza zasięgiem zarówno proxy, jak i karty sieciowej: używają przypinania certyfikatu, całkowicie ignorują proxy albo stosują własne szyfrowanie. Przechwytywanie na warstwie aplikacji obiera inną drogę: odczytuje tekst jawny bezpośrednio z wnętrza programu. Nie instaluje żadnego certyfikatu, nie konfiguruje proxy i nie przechwytuje na karcie sieciowej, więc wszystkie te “zabezpieczenia” po prostu nie mają zastosowania, a mimo to widzisz, co program naprawdę wysyła i odbiera. To najbardziej typowy martwy punkt zwykłych narzędzi do przechwytywania i sztandarowa cecha tego trybu.


1. To, dla czego inni nie uzyskają tekstu jawnego, tu jest osiągalne

Dział zatytułowany „1. To, dla czego inni nie uzyskają tekstu jawnego, tu jest osiągalne”
“Zabezpieczenie” docelowego programu Przechwytywanie przez proxy Przechwytywanie na karcie sieciowej Przechwytywanie na warstwie aplikacji
Przypinanie certyfikatu ❌ Nie łączy się / zgłasza błąd 🔒 Tylko tekst zaszyfrowany ✅ Tekst jawny
Ignorowanie proxy systemowego ❌ Nie da się przechwycić 🔒 Tylko tekst zaszyfrowany ✅ Tekst jawny
Własne / niestandardowe szyfrowanie ❌ Nie da się odszyfrować 🔒 Tylko tekst zaszyfrowany ✅ Tekst jawny

Zasada jest prosta: odczytuje tekst jawny bezpośrednio z wnętrza programu, bez pośrednika i bez dotykania certyfikatów, więc wszystkie te zabezpieczenia wymierzone w “pośrednika” i “certyfikat” po prostu nie mają zastosowania.

Rzeczywisty wynik: wybierz działający program i odczytaj wysyłany/odbierany przez niego tekst jawny bezpośrednio z jego wnętrza, wypisany pozycja po pozycji według kierunku (Wysłane ↑ / Odebr. ↓), z pełnym żądaniem HTTP w postaci tekstu jawnego w szczegółach


Nie grymasi przy bibliotekach kryptograficznych ani stosach technologicznych. Odczyt tekstu jawnego z wnętrza programu obejmuje o wiele więcej programów, niż potrafią proxy czy karta sieciowa:

  • Niezależnie od tego, czy program używa popularnej, czy niszowej biblioteki kryptograficznej, tekst jawny można odczytać z jego wnętrza.
  • Niezależnie od tego, czy jest to program natywny, czy aplikacja napisana z użyciem różnych frameworków wieloplatformowych (klienty na komputery, aplikacje wieloplatformowe…), da się go obsłużyć tak samo.
  • Objęte są nawet programy, które komunikują się przy użyciu wbudowanej kryptografii systemu operacyjnego, w tym .NET / PowerShell oraz inne programy korzystające z systemowego stosu sieciowego Windows. To często martwe punkty, z którymi inne narzędzia radzą sobie najgorzej, a tutaj tekst jawny i tak jest odczytywany z wnętrza.
  • Krótko mówiąc: przeglądarki, klienty na komputery, programy natywne… wiele celów, które gdzie indziej dają “tylko tekst zaszyfrowany”, tutaj jest tekstem jawnym.

Dla najtrudniejszych programów są jeszcze dwa środki:

  • “Ruch na poziomie gniazd”, niskopoziomowe rozwiązanie awaryjne: dla programów, które są odchudzone, mają usunięte symbole lub są napisane z użyciem nowszego stosu technologicznego (na przykład wyłącznie w Go, w Rust, albo korzystają z systemowego stosu sieciowego Windows), gdy zwykłe podejście nie może znaleźć ich punktu wejścia szyfrowania/odszyfrowania, włącz ten przełącznik, a narzędzie obierze niższą drogę, by przechwycić dane i mimo wszystko uzyskać tekst jawny, bez zależności od możliwości zlokalizowania punktu wejścia szyfrowania/odszyfrowania programu i bez zależności od karty sieciowej. W ten sposób da się obsłużyć wiele programów, na których inne narzędzia całkowicie się zacinają.
  • Przechwycenie “chwili uruchomienia”: wiele uwierzytelniania i uzgadniania połączenia dzieje się w mgnieniu, gdy program startuje po raz pierwszy. Najpierw go zamknij i pozwól narzędziu go uruchomić, a ten ruch z wczesnej fazy uruchamiania też zostanie przechwycony, więc nie umknie Ci to kluczowe pierwsze żądanie.

Nowa sesja · Przechwytywanie na warstwie aplikacji: wybierz działający program (lub podaj ścieżkę do programu) i odczytaj tekst jawny bezpośrednio z jego wnętrza; zaznacz “Uruchom cel ponownie”, aby przechwycić wczesną fazę uruchamiania, lub “Ruch na poziomie gniazd” jako niskopoziomowe rozwiązanie awaryjne


Tekst jawny odczytany z wnętrza przechodzi przez to samo przetwarzanie co przy każdej innej metodzie przechwytywania:

  • Wiele sposobów podglądu: strukturalny, upiększony tekst, hex oraz automatyczne wykrywanie, przełączane niezależnie dla każdego kierunku. Szczegóły w Podgląd i dekodowanie.
  • Automatyczna dekompresja i wykrywanie: automatycznie dekompresuje gzip / brotli / deflate / zstd (w tym wiele warstw jedna na drugiej) oraz automatycznie wykrywa i upiększa JSON, XML, formularze, protobuf / gRPC i inne.
  • Własne kodeki: dla zastrzeżonych / autorskich protokołów opartych na gniazdach napisz krótki skrypt, który nauczy narzędzie je odczytywać. Szczegóły w Dekodowanie własnych protokołów.

  • Najlepsze do: programów z przypinaniem certyfikatu, ignorujących proxy lub używających własnego / niestandardowego szyfrowania, gdzie ani proxy, ani karta sieciowa nie uzyskają tekstu jawnego.
  • Działa bezpośrednio na uruchomionym programie: wybierz działający program i odczytaj jego tekst jawny z wnętrza od razu, bez potrzeby restartowania go czy zmieniania jakichkolwiek jego ustawień (możesz też podać ścieżkę do programu i pozwolić narzędziu go uruchomić).
  • Celuje tylko w wybrany program: domyślnie nie rozszerza się automatycznie na wszystkie procesy potomne programu; programy wieloprocesowe / wielookienne mogą wymagać osobnego wyboru.
  • Kiedy przekazać do przechwytywania na poziomie systemu: wbudowane aplikacje systemowe w macOS, a także szczególnie oporne, głęboko ukryte aplikacje, odrzucają wszelką ingerencję z zewnątrz i ten tryb nie ma jak się do nich dostać; dla takich celów przełącz się na Przechwytywanie na poziomie systemu (które nie wchodzi do programu, lecz obserwuje z niższych warstw systemu).

6. Wybór spośród czterech lokalnych metod przechwytywania

Dział zatytułowany „6. Wybór spośród czterech lokalnych metod przechwytywania”
Twoja sytuacja Której użyć
Program, który już działa / używa przypinania certyfikatu / ignoruje proxy / używa własnego szyfrowania Przechwytywanie na warstwie aplikacji (ta strona)
Zwykły program, który można uruchomić poleceniem (przeglądarka / skrypt / CLI) Przechwytywanie na poziomie procesu (mniej kłopotliwe)
Chcesz zobaczyć cały ruch na maszynie lub ruch inny niż HTTP Przechwytywanie na karcie sieciowej
Wbudowane aplikacje systemowe w macOS / oporne aplikacje Przechwytywanie na poziomie systemu

Powiązane: Przechwytywanie przez proxy · Usuwanie przypinania certyfikatu · Podgląd i dekodowanie