(część 1sza)

Filtrowanie, ciąg dalszy.

Problem: Chcę żeby router ADSL restartował mi się o 4 w nocy (Neostrada rozłącza co 24h i jak akurat router wstał o 18.00 to następny disconnect będzie o tej samej porze) automatycznie.

Rozwiązanie: Router nie ma shella ani innej metody zdalnego rebootu więc muszę zesniffować jaki request powoduje reboot.

sniffing załatwia proste tcpdump -w dump -s 0 -i eth0 -n port 80 and host 10.254.254.1 i w rezultacie dostajemy dumpa z samymi requestami

Teraz chcemy z requestów wyciągnąć listę zapytań, z klikania przeglądarki wiemy że ma w sobie ciąg html:
http.request.uri contains "html"

Jeżeli nie jesteśmy pewni czego szukać to http.request da listę requestów, którą można potem wycinać przez eliminację np.
http.request and ! (http.request.uri contains ".gif" or http.request.uri contains ".css" or http.request.uri contains ".js" )
Rezultat powinien wyglądać mniej-więcej tak:

Możemy oznaczać interesujące nas pakiety klikając w niego prawym

-> Colorize Conversation lub po prostu C-(0-9). Kolejne opcje to (menu Edit)

  • Mark packet  – (C-m) oznacza pakiet (domyślnie czarny kolor tła) – potem można skakać między tak oznaczonymi pakietami używając (C-N) i (C-B). Uzywając C-M można oznaczyć “wszystkie widoczne” (pokazywane przez aktualny filtr)
  • Ignore packet – (C-d) (niestety) pakiet nie zniknie z głównego widoku (nie ma też opcji “Hide ignored”) ale będzie uznawany przez filtry wiresharka jako”niewidoczny” – średnio użyteczna opcja. C-D ignoruje wszystkie widoczne pakiety
  • Set Time Reference (C-t) – Czas odebrania każdego następnego pakietu będzie liczony od ostatniego pakietu oznaczonego takim tagiem, tzn jeżeli pakiety 3, 6 i 10 oznaczymy tym tagiem to czas przy pakiecie 44 będzie różnicą między czasem otrzymania pakietu 44 i 10 a dla pakietu 8 będzie to różnica czasu pomiędzy 8 i 6. Chyba że akurat zmienimy wyświetlanie czasu na czas “rzeczywisty” a nie relatywny

W rezultacie naszego grzebania powstało nam coś takiego:

W tym przypadku nie jest to aż tak przydatne ale kolorowanie się przydaje ;]

Ale wracając do “zadania”, z tego co widzimy wynika że request nie leci po SSLu (widać hasło wysyłane przez Auth Basic), cookie nie są używane a reset polega prawdopodobnie na zrobieniu zwykłego GETa na odpowiedni URL z odpowiednimi credentials. Patrząc w strumień (Follow Conversation) widzimy że ostatni request zwraca nam ten sam tekst jaki pojawia się na stronie routera po kliknięciu reboot i voila, mamy nasz cel ;]

Teraz tylko curl -u admin:admin http://10.254.254.1/rebootinfo.cgi i router zrebootowany

W następnej części (kiedyś): Analiza i podsłuchiwanie SIP, rozkodowywanie i podsłuchiwanie SSL