Artykuł przeznaczony wyłącznie do celów edukacyjnych i testowych — np. testowania bezpieczeństwa własnych systemów. Użycie na systemach, do których nie masz uprawnień, może być nielegalne.
Wstęp
Neostrada biznes to bliźniacze rozwiązanie do domowej Neostrady, przeznaczone dla firm. Główną zaletą tego rozwiązania jest możliwość otrzymania 8-IP`kowej podsieci, co w efekcie daje możliwość uzyskania 5 stałych publicznych IP - Funbox jest naszą bramą i zajmuje 6ty adres IP. Jeżeli więc udało by się go pozbyć zyskamy 6ty publiczny adres IP do wykorzystania.
Ale w czym problem?
W domowej wersji Neostrady nie mamy problemu uzyskania danych do logowania PPPoE - login i hasło dostępne są z poziomu panelu klienta Orange. Jeżeli więc tylko mieliśmy odrobinę szczęścia i udało nam się uzyskać od Orange ONT, to świat stoi przed nami otworem i nie ma większych przeciwwskazań by zamiast routera od Orange podłączyć własny router. Jeżeli nie mieliśmy szczęścia uzyskać ONT, możemy spróbować na własną rękę nabyć i skonfigurować własne ONT np od firmy Leox - ale to temat na inny artykuł...
W biznesowej wersji dostępu do danych PPPoE nie mamy... Za to bez większych problemów dostajemy ONT + Router. Dawniej był to Zyxel, który autoryzował się do serwera PPPoE przez PAP - nieszyfrowaną transmisję, co w dość prosty sposób umożliwiało podejrzenie loginu i hasła. Obecne routery Orange (np LBB150) używają do autoryzacji CHAP czyli szyfrowaną transmisję, co uniemożliwia podejrzenie hasła w logach. Przed próbą "wydobycia" tych danych dziś staniemy.
Idea i założenia.
Zasada działania uwierzytelnienia CHAP w PPPoE wygląda następująco:
1) Serwer (np. dostawca internetu) wysyła wyzwanie (CHALLENGE) – losowy ciąg bajtów.
2) Klient (np. router) oblicza odpowiedź – używa swojego hasła i challenge, tworząc skrót (hash MD5) i wysyła odpowiedź (RESPONSE) do serwera.
3) Serwer sam oblicza oczekiwaną odpowiedź – jeśli zgadza się z tą od klienta, uwierzytelnianie kończy się sukcesem.
Znając więc challenge i oczekiwany response moglibyśmy zastosować metodę brute-force, generować kolejno hasła i sprawdzać kiedy oczekiwany response będzie się zgadza. Z moich obserwacji, na podstawie haseł, które niegdyś udało mi się wydobyć z routerów Zyxel od Orange, które to korzystały z nieszyfrowanej metody PAP, zauważyłem pewien wzorzec generowanych przez Orange haseł. Otóż zawsze składamy się one z 8-miu znaków, z czego pierwsze 5 to małe litery a kolejne 3 znaki to cyfry. W ten oto sposób wystarczyło by sprawdzić hasła od aaaaa000 do zzzzz999. To mocno zawęża zakres oszukiwania, mimo że to wciąż blisko 12 miliardów kombinacji
Zaczynamy zabawę
Musimy zacząć od zdobycia 3 wartości, które później użyjemy do wydobycia hasła. Są to:
- ID - jednobajtowy identyfikator sesji
- CHALLENGE - czyli losowa wartość jaką wyśle serwer PPPoE - wartość ta musi posiadać długość 16-bitów czyli 32 znaki.
- RESPONSE - czyli wartość jaką po zaszyfrowaniu wyśle router do serwera PPPoE.
Sposób generowania RESPONSE jest następujący: response = MD5(ID + password + challenge)
Etap 1. Stawiamy serwer PPPoE.
Możemy to zrobić na routerze z np OpenWRT. Możemy użyć do tego laptop z linuxem. Ja użyłem stary router EdgerRouter ER-X bo w standardzie na wszystko co potrzebujemy.
Jeżeli wszystko zrobiliśmy poprawnie powinniśmy zacząć logować transmisję wymiany danych między routerem, który chce się podłączyć do serwera PPPoE a naszym "fikcyjnym" serwerem tej usługi. Rzucić w oczy powinien nam się login, który będzie tak widoczny czystym tekstem - nasz pierwszy mały sukces.
*) UWAGA: jeżeli posiadamy router Zyxela, który to do autoryzacji wykorzystuje PAP, zamiast CHAP, to w pliku pppoe-server-options zamiast require-chap wpiszmy require-pap i w logach powinniśmy ujrzeć hasło podane czystym tekstem. Dalsza część artykułu jest dla osób z nowszymi routerami np LBB150.
W drugiej konsoli uruchamiany program tcpdump i logujemy ruch z interfejsu do którego podpięliśmy router Orange:
Cytat
tcpdump -i eth4.35 -w /tmp/capture.pcap
Czekamy tak dłuższą chwilę, po czym przerywany tcpdump kombinacją klawiszy CTRL+C, zgrywamy zapisany plik do komputera z windows (np przez WinSCP) i...
ETAP 2. Wydobycie danych
... pobieramy program Wireshark (może być wersja portable), w którym to otwieramy w nim nasz plik capture.pcap. Zauważymy, że co jakiś czas pojawiają się tam pakiety Challenge i Response.
Challenge może mieć różną długość (Value Size) - my szukamy takiej pary, która zgodnie z tym co było mówione wcześniej ma dokładnie 16 bitów, czyli 32 znaki.
Gdy takowi znajdziemy, zapisujemy:
- Identifier - to nasze ID
- Challenge - Value
Oraz z następującego po nim Response, zapisujemy Value (zwrócić należy uwagę by ID i Size (16bit) były takie same jak dla Challenge.
Mamy więc wszystkie 3 dane potrzebne to naszego "ataku".
Etap 3. Brute-force
Jak osoba, która nie jest programistą może napisać program to łamania CHAP? Może zapytać ChatGPT Serio... podając mu wszystkie założenia skryptu/programu, odkrytą specyfikę budowy haseł, sposób prezentacji oraz wykorzystanie wielowątkowości, udało mi/mu/nam(?) się stworzyć działający "cracker" do CHAP. Początkowo klęczała wydajność - skrypt napisany w Pythonie sprawdzał ok 5000 H/s (haseł na sekundę). To sprawiało, że sprawdzenie wspomnianych 12 mld haseł zajęło by blisko 20 dni. Po kilku zmianach i przejściu na kod C/C++ wydajność znacząco wzrosła - mowa tu o kilku milionach haseł na sekundę Taka wydajność pozwala na sprawdzenie haseł w mniej niż 10min na wydajnym sprzęcie!
Teraz jest już z górki:
1) uruchamiamy program
2) podajemy ID, które wcześniej musimy zamienić na postać hex (system 16-tkowy): np 77 z przykładu to 4D
3) podajemy CHALLENGE
4) podajemy RESPONSE
5) wpisujemy ilość wątków procesora, które chcemy użyć do generowania haseł (obciążenie sięgnie 100%)
i czekamy...
Jeżeli poprawnie wydobyliśmy dane z wiresharka to po dłuższej chwili naszym oczom powinien pojawić komunikat:
Tym oto sposobem mamy wszystko co potrzebne by Funbox mógł powędrować do kartonu a my możemy śmiało skonfigurować połączenie PPPoE na własnym routerze.
Słowo na koniec
Całe to "wydobywanie" hasła było dla mnie miłą przygodą oraz pewnym doświadczeniem i nie będę ukrywał, że pomyślny finał, jakim było ujawnienie hasła do PPPoE, sprawiło wielki uśmiech na mojej twarzy. Z drugiej strony kompletnie nie rozumiem polityki Orange i utrudnianie swoim klientom (na dodatek biznesowym) możliwości uzyskania danych do PPPoE. Mam nadzieję, że choć jednej osobie artykuł się przyda, a dla pozostałych, którzy go po prostu przeczytali, był miłą lekturą, która pozwoli poszerzyć im swoją wiedzę.
PozdrawiamEdytowany przez shibby dnia 20-06-2025 08:48
Router:Unifi Cloud Gateway Max Switch:Unifi USW-Lite-16-PoE Switch:Unifi USW-Flex-Mini - szt. 2 Wi-Fi:Unifi U6-Lite - szt. 2 Proxmox VE:i5-13400T, 64GB RAM, 2x 512GB NVMe, 4x 2TB SSD VM #1:Synology SA6400 VM #2:Debian, WWW VM #3: Home Assistant OS
· Łącznie użytkowników: 24,126 · Najnowszy użytkownik: goldi111
Czat
Musisz się zalogować, aby opublikować wiadomość.
amikot
13-06-2025 19:58
to forum wygląda na martwe
Maniek91PL
15-05-2025 19:35
witam! było coś gdzieś o obsłudze asus mesh w tomato moze? chętnie bym przetestował u rodziców
servee
24-01-2025 18:18
Światłowód + mediakonwenter. Ekranowana skrętka nie jest wymagana, taką sytuację już zastałem. Zamierzam ją wymienić na zwykłą. Da to coś?
shibby
17-01-2025 07:45
a ta skrętka ekranowana o której piszesz to jakiś wkopany przewód do bramy/furtki/kamer y zewn? Jak tak to jego też przez zabezpieczenie podepnij.
shibby
17-01-2025 07:43
no to pora zabezpieczyć kable LAN zabezpieczeniami przeciwprzepięciow ymi - tanio nie będzie. Jak przychodzi ci internet? Skrętką czy światłem? Jak skrętką to zacząłbym od tego.
servee
12-01-2025 12:52
Ponownie padły mi wszystkie porty sieciowe w routerze - to już 3-ci w 6 m-cy. Podejrzany to ekranowana, nieuziemiona skrętka - 12mb. Czy jest to możliwe?
dawidt
21-12-2024 01:09
siema
Maniek91PL
06-11-2024 22:37
dzięki !
maxikaaz
29-10-2024 14:27
@Maniek91PL - Administration=> Admin Access, i tam masz "Allow Wireless Access" do zaznaczenia
Maniek91PL
26-10-2024 22:07
siemka! ktoś przypomni co się ustawiało jeśli nie mogę wejść od strony wifi do tomato? od lan działa