Android: przechwytywanie żądań HTTP z niezrootowanym urządzeniem z Androidem

88

Mam aplikację na Androida, która używa w niej słoika innej firmy. Żądanie HTTP jest wysyłane z zewnętrznego pliku jar do serwera, gdy aplikacja jest uruchomiona. Muszę przechwycić żądanie HTTP wysłane z pliku jar innej firmy. Zastanawiam się, czy istnieje łatwy sposób na wdrożenie z urządzeniem nierootowanym

Aby uruchomić: próbowałem pobrać "proxyDroid", ale potrzebuję zrootowanego telefonu Próbowałem też pobrać "shark for root" z "shark reader", który również wymaga zrootowanego urządzenia Próbowałem wielu innych aplikacji, które mogły przechwycić całe żądanie, ale wszystko, czego potrzebowałem jest zrootowanym urządzeniem

Potrzebuję czegoś, co Fiddler / Wireshark może zrobić dla Windows. Analizator pakietów sieciowych, który można łatwo zintegrować z aplikacją na Androida, który może podać obiekt żądania ze wszystkimi polami nagłówka.

Venkatesh
źródło
Czy to Twoja „aplikacja na Androida”?
CommonsWare,
Tak, moja aplikacja na Androida
Venkatesh,
Witaj @Venkatesh, czy udało Ci się kiedykolwiek przechwycić żądania HTTP z niezrootowanym Androidem?
@lalalalalala Nope. Nie mogłem tego osiągnąć za pomocą niezrootowanego urządzenia.
Venkatesh

Odpowiedzi:

77

Możesz zainstalować Charles - HTTP proxy / HTTP monitor / Reverse Proxy, który umożliwia programistom przeglądanie całego ruchu HTTP i SSL / HTTPS między ich maszyną a Internetem - na twoim komputerze PC lub MAC.

Kroki konfiguracji:

  • Pozwól swojemu telefonowi i komputerowi PC lub MAC w tej samej sieci LAN
  • Uruchom Charlesa, którego zainstalowałeś (domyślny port proxy to 8888)
  • Skonfiguruj konfigurację Wi-Fi w telefonie: ustaw adres IP delegata na adres IP komputera lub MAC, port delegata na 8888
  • Umieść swoją aplikację w telefonie. I monitoruj żądania http na Charlesie.
SFeng
źródło
4
ten samouczek działał dobrze: jaanus.com/blog/2012/02/12/…
Lionel
17
Niestety jest to shareware.
flawyte
1
Możesz spróbować alternatywnego pakietu odbijania, aby wykonać tę samą pracę. Jest bardzo potężny i darmowy: portswigger.net/burp
gerodim
Czy jest jakieś narzędzie, które zrobi to samo z ruchem przez gniazdo sieciowe? Mam na myśli samego Androida. (Znam wireshark / fiddler na PC)
Amol M Kulkarni
Co jest na Androida
mohsen
17

Właśnie zainstalowałem Drony, nie jest to shareware i nie wymaga rootowania na telefonie komórkowym z Androidem 3.x lub nowszym

https://play.google.com/store/apps/details?id=org.sandroproxy.drony

Przechwytuje żądania i są wyświetlane w dzienniku

Mauricio Gracia Gutierrez
źródło
Właśnie tego szukam, ale chcę dokładnego kodu źródłowego dla tej aplikacji. Czy możesz opublikować link do kodu źródłowego dla Androida?
Smit.Satodia
2
@ Smit.Satodia Nie wiem, czy udostępniają / publikują kod źródłowy, jeśli ktoś uzna, że ​​może to śmiało zamieścić link jako komentarz
Mauricio Gracia Gutierrez
2
Kod źródłowy można znaleźć tutaj: github.com/SuppSandroB/sandrop Pierwotnie był przechowywany na Google Code tutaj: code.google.com/archive/p/sandrop
GabLeRoux
1
@JanWytze, jeśli skontaktujesz się z programistami, może oni ci w tym pomogą.
Mauricio Gracia Gutierrez
17

Jest na to wiele sposobów, ale jednym z nich jest skrzypek

Konfiguracja Fiddlera

  1. Przejdź do opcji
  2. Na karcie HTTPS włącz opcję Przechwyć połączenia HTTPS i odszyfruj ruch HTTPS
  3. Na karcie Połączenia włącz opcję Zezwalaj komputerom zdalnym na łączenie
  4. Zrestartuj Fiddler

Konfiguracja Androida

  1. Połącz się z tą samą siecią
  2. Zmodyfikuj ustawienia sieciowe
  3. Dodaj proxy do połączenia z adresem IP twojego komputera (lub nazwą hosta) i domyślnym portem skrzypka (8888 / możesz to zmienić w ustawieniach)

Teraz możesz zobaczyć pełny dziennik ze swojego urządzenia w skrzypcach

Pełną instrukcję można znaleźć tutaj

Arash Hatami
źródło
2
Fiddler beta jest dostępny na macOS (w oparciu o mono). To dobra wiadomość, jeśli nie masz komputera.
MacKentoch
Dzięki, ale mam na myśli wszystkie komputery w tej odpowiedzi. PC / Laptop / etc ... :) @MacKentoch
Arash Hatami
6

Możesz użyć programu Fiddler jako webdebuggera http://www.telerik.com/fiddler/web-debugging

Fiddler to narzędzie do debugowania z oprogramowania telerik, które pomaga przechwycić każde żądanie inicjowane z komputera.

Obywatel Ken
źródło
4
Chociaż ten link może odpowiedzieć na pytanie, lepiej jest zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia. Odpowiedzi zawierające tylko łącze mogą stać się nieważne, jeśli połączona strona ulegnie zmianie
zohar
5

Teraz jest rok 2020, aby uzyskać najnowsze rozwiązanie, możesz użyć Burp Suite do wykrywania ruchu https bez rootowania urządzenia z Androidem.

Kroki:

  1. Zainstaluj pakiet Burp

  2. Włącz serwer proxy

  3. Zaimportuj certyfikat do telefonu z systemem Android

  4. Zmień konfigurację Wi-Fi na nasłuchiwanie proxy

  5. Zysk!

Napisałem pełny samouczek i zrzut ekranu, jak to zrobić, tutaj: https://www.yodiw.com/monitor-android-network-traffic-with-burp/

yodi
źródło
Byłoby miło skopiować dane z witryny, aby odpowiedzieć tutaj. Ponieważ Twoja witryna może ulec awarii. Z tego samego powodu SO zachęca do cytowania zamiast linków. Poza tym świetnym samouczkiem.
Mark
Chociaż, żeby być uczciwym, lepiej byłoby po prostu ulepszyć stackoverflow.com/a/39684919/5506988 niż napisać kolejną „odpowiedź”… W każdym razie świetna robota.
Mark
4

możesz użyć pakietu burp. wykonaj poniższą procedurę.

Skonfiguruj odbiornik Burp Proxy

W Burp przejdź do zakładki „Proxy”, a następnie zakładki „Options”. W sekcji „Proxy Listeners” kliknij przycisk „Add”.

W zakładce „Binding”, w polu „Bind to port:” wprowadź numer portu, który nie jest aktualnie używany, np. „8082”. Następnie wybierz opcję „Wszystkie interfejsy” i kliknij „OK”.

Skonfiguruj swoje urządzenie do korzystania z serwera proxy

W urządzeniu z systemem Android przejdź do menu „Ustawienia”.

Jeśli urządzenie nie jest jeszcze połączone z siecią bezprzewodową, której używasz, włącz przycisk „Wi-Fi” i dotknij przycisku „Wi-Fi”, aby uzyskać dostęp do menu „Wi-Fi”.

W tabeli „Sieci Wi-Fi” znajdź swoją sieć i dotknij jej, aby wyświetlić menu połączenia.

Wybierz „Połącz”. Jeśli skonfigurowałeś hasło, wprowadź je i kontynuuj.

Po nawiązaniu połączenia przytrzymaj przycisk sieci, aby wyświetlić menu kontekstowe. Kliknij „Modyfikuj konfigurację sieci”.

Upewnij się, że pole „Pokaż opcje zaawansowane” jest zaznaczone.

Zmień „Ustawienia proxy” na „Ręczne”, dotykając przycisku.

Następnie wprowadź adres IP komputera, na którym działa Burp w polu „Nazwa hosta proxy”. Wprowadź numer portu skonfigurowany wcześniej w sekcji „Odbiorniki proxy”, w tym przykładzie „8082”. Kliknij „Zapisz”.

Przetestuj konfigurację

W Burp przejdź do zakładki „Proxy Intercept” i upewnij się, że przechwytywanie jest włączone (jeśli na przycisku jest napisane „Intercept is off”, kliknij go, aby przełączyć stan przechwytywania).

Otwórz przeglądarkę na swoim urządzeniu z Androidem i przejdź do strony internetowej HTTP (możesz odwiedzić stronę internetową HTTPS po zainstalowaniu Burp's CA Certificate na swoim urządzeniu z Androidem).

Żądanie powinno zostać przechwycone w Burp.

Vis
źródło
2

SandroProxy wydaje się być lepszy niż Drony (tego samego programisty): Możesz (ale nie musisz) wygodnie przeglądać i analizować ruch w przeglądarce na komputerze.

Powinien działać również w emulatorach.

Nicolai Weitkemper
źródło
1

Ustaw https://mitmproxy.org/ jako proxy w tej samej sieci LAN

  • Otwarte źródło
  • Wbudowany Python 3
  • Możliwość instalacji przez pip
AlexisCaffa
źródło