Przekierowanie portów – czyli kontrola komputera z końca świata

Dzisiaj dowiesz się jak przekierować porty w routerze w celu udostępnienia usługi sieciowej lub urządzenia w rozległej sieci Internet. Dzięki tej poradzie będziesz mógł przetestować payload Metaspolit Framework uruchomiony nawet na drugim końcu świata (poza siecią LAN). Mówiąc prościej, będziesz mógł przejąć pełną kontrolę nad komputerem znajdującym się nawet w Ameryce. Innym zastosowaniem może być udostępnienie strony internetowej za pomocą programu XAMPP swoim znajomym lub kamery IP poza sieć lokalną.

My dzisiaj zademonstrujemy przykład przekierowania portów dla ładunku windows/meterpreter/reverse_tcp z pakietu Metasploit Framework. Użyjemy w tym poradniku trzech routerów: TP-Link, D-Link i Thomson. Oczywiście w analogiczny sposób zrobisz to na swoim innym urządzeniu. Warunkiem koniecznym jest posiadanie routera, który posiada w swoich opcjach możliwość przekierowania portów (port forwarding) no i oczywiście publicznego zewnętrznego adresu IP.

Przekierowanie portów w SZYBKIEJ teorii

Zastanówmy się po co przekierowywać porty. W uproszczeniu mówiąc zazwyczaj każdy Jan Kowalski oddzielony jest od sieci Internet za pomocą urządzenia nazywanego routerem i związane jest to z mało ciekawym dla Ciebie pojęciem maskarady (NAT). Gdy na swoim komputerze wykorzystujesz aplikacje internetowe dla przykładu tworzysz serwer gry komputerowej to wtedy występuje pewien problem…

Spójrz na poniższy schemat i zadaj sobie pytanie: jak osoba z zewnątrz (internetu) ma podłączyć się do gry, skoro nie wie czy Ty jesteś komputerem o adresie wewnętrznym IP 192.168.0.2, 192.168.0.3 a może jednak jesteś tabletem 192.168.0.4? Zazwyczaj osoba ta zna tylko Twój zewnętrzny adres IP X.X.X.X i port internetowy na którym działa usługa lub gra np: 16666.

Przekierowanie portów - poradnik i schemat sieci LAN
Schemat typowej sieci komputerowej w topologi gwiazdy

Przekierowanie portów to tak naprawdę prosta konfiguracja routera, która w odpowiedni sposób pokieruje ruchem pomiędzy internetem a siecią LAN. Wskazujemy w niej pod jakim adresem IP w sieci wewnętrznej działa dana usługa sieciowa (w naszym przykładzie serwer gry komputerowej).

Przykładowo w języku naturalnym mogło by to wyglądać tak:

Hej routerze! Na komputerze w naszej sieci LAN o adresie 192.168.0.3, działa serwer gry komputerowej na porcie 16666.

Dlatego mój routerze masz wszystkich ludzi z Internetu, którzy będą chcieli się połączyć z portem 16666 przekierować na komputer 192.168.0.3.

Będę grał w grę! 😉

Za każdym razem jeżeli chciałbyś udostępnić jakąś usługę sieciową typu serwer HTTP (strona internetowa na Twoim komputerze) lub urządzenie typu kamera IP będziesz musiał skonfigurować przekierowanie portów.

Alternatywnym rozwiązaniem jest podpięcie internetu bezpośrednio do danego komputera zamiast przez router. Wtedy powinien on uzyskać zewnętrzny adres IP X.X.X.X bez dodatkowych ustawień.

Port forwarding w SZYBKIEJ praktyce

Przejdźmy do części praktycznej z poradnika o przekierowaniu portów. W gruncie rzeczy konfiguracja jest bardzo prosta. W pierwszym kroku wejdź do ustawień routera. Wyszukaj w tym celu wiersz poleceń w swoim systemie operacyjnym Microsoft Windows i wpisz tam komendę ipconfig.

Teraz wpisz bramę domyślną w swojej przeglądarce internetowej, a następnie zaloguj się tam do panelu administracyjnego routera. Uwaga! Jeśli chcesz sprawdzić ten adres w systemie Linux to użyj polecenia ifconfig.

Jak sprawdzić adres ip routera
Brama domyślna czyli adres internetowy routera

Przekierowanie portów w Thomson TWG870UG

W przypadku routera Thomson często wykorzystywanego przez dostawcę UPC wystarczy przejść w celu przekierowania portów na podstronę Advanced -> Forwarding -> Create IPv4.

alt
Panel routera Thomson UPC i przekierowywanie w nim portów

Wypełnij dane następująco:

  • Local IP Adress – lokalny adres IP komputera lub urządzenia (na którym działa usługa internetowa do udostępnienia),
  • Local Start Port – lokalny port na którym działa usługa internetowa,
  • Local End Port – lokalny port na którym działa usługa internetowa,
  • External Start Port – przychodzące połączenie do routera na porcie,
  • External End Port – przychodzące połączenie do routera na porcie,
  • Description – dowolny opis reguły przekierowania,
  • Protocol – typ protokołu bezstratny TCP/stratny UDP,
  • Enabled On – aktywacja przekierowania.

Pamiętaj o ustawieniu enabled na On!

Co ciekawe mamy możliwość ustawienia całego zakresu portów (czyli od jakiejś wartości, aż do). Służy do tego właśnie local start port i local end port. Połączenia przychodzące do routera (external port) mogą być też inne od tych na lokalnym komputerze w sieci LAN. Dzięki temu możemy w naszej lokalnej sieci utworzyć wiele serwerów tej samej gry. Wystarczy w jej konfiguracji ustawić różne porty i stworzyć odpowiednie reguły w routerze.

Jak przetłumaczyć całą regułę na ludzki język?

Jeżeli do routera przyjdzie połączenie od portu 16666 do 16666 to przekieruj je na komputer 192.168.0.10 na jego porty od 16666 do 16666.

Przekierowanie w TP-LINK TL-WR841N

W celu konfiguracji przekierowania portów w routerze TP-LINK zaloguj się do routera i przejdź do opcji Forwarding -> Virtual Servers.

Jak przekierować porty w tp-link
Przekierowanie portów w routerach TP-Link

Opcje zademonstrowane na powyższym obrazku są analogiczne do tych z routera Thomsona. Service Port to port na lokalnym komputerze, natomiast internal port to port na którym przychodzi połączenie z internetu do routera.

Przekierowanie w D-Link Dl-524

W przypadku routera D-Link wystarczy wejść do Advenced -> Virtual Server i wykonać wszystko analogicznie do operacji zademonstrowanych dla poprzednich routerów.

d-link ustawienia portów (odblokowywanie portów)
Przekierowanie portów w routerach firmy D-Link

Metaspolit Framework- przykład praktyczny

W pierwszym kroku wygenerujmy payload z zewnętrznym adresem IP. Żeby sprawdzić swój zewnętrzny adres IP wystarczy, że w swojej wyszukiwarce internetowej wpiszesz „mój adres IP” i odnajdziesz odpowiednią stronę internetową wyświetlającą po prostu go. W moim przypadku jest to adres IP 31.X.X.XNa blogu był już poradnik jak wygenerować payload, poniżej znajduje się tylko szybkie przypomnienie.

msfvenom port forwarding tutorial
Generowanie ładunku msfvenom w Kali Linux 2016.2 z zewnętrznym adresem IP. Ładunek będzie uruchomiony w systemie Microsoft Windows 10

Następnie przekierowujemy porty w swoim routerze. Wewnętrzny adres IP w systemie Kali Linux sprawdzisz za pomocą polecenia w terminalu ifconfig. Oczywiście numery wszystkich portów są tylko przykładowe.

Thomson router UPC - przekierowywanie portów Metasploit Framework
Przekierowany port 16666 w routerze na komputer z systemem Kali Linux o wewnętrznym adresie IP 192.168.0.16

Teraz wystarczy uruchomić nasłuchiwanie połączeni zwrotnego typu reverse_tcp. Pamiętaj aby ustawić parametr lhost z zewnętrznym adresem IP! Pozostaje nam ostatecznie wysłanie wygenerowanego w poprzednich krokach złośliwego ładunku .exe do komputera z systemem Microsoft Windows, który może znajdować się nawet na drugim końcu świata.

msfconsole przekierowanie portów i multi/handler exploit
Nasłuchiwanie połączenia z ładunkiem reverse_tcp i zewnętrznym adresem IP w pakiecie Metaspolit Framework

Jak widać na powyższym zrzucie ekranu udało nam się połączyć z komputerem znajdującym się poza siecią LAN. Teraz wpisz w konsoli polecenie help, aby dowiedzieć się nieco więcej o meterpreterze. Jeżeli wszystko robisz dobrze, a nie udaje się Tobie połączyć to sprawdź jeszcze ustawienia swojej zapory sieciowej (firewall). Dodatkowo upewnij się, że masz publiczny zewnętrzny adres IP (telefon do dostawcy Internetu lub zerknij na umowę).

Ćwiczenie dodatkowe z przekierowania portów

W ramach treningu warto w swoim systemie Microsoft Windows uruchomić serwer stron internetowych XAMPP. Następnie spróbuj przekierować w ustawieniach routera port 80 i 443 na swój komputer z Windows. Teraz sprawdź czy wpisując swój zewnętrzny adres IP w swojej przeglądarce internetowej lub kolegi wyświetla się odpowiednia strona internetowa z Twojego komputera.

Być może chciałbyś w tym miejscu zapytać, czy zamiast adresu IP można sobie utworzyć adres www typu haker.edu.pl. Oczywiście że tak! Wystarczy że zakupisz sobie gdzieś domenę i odpowiednio skonfigurujesz serwery DNS. Jednak z doświadczenia powiem Ci, ze hosting na swoim komputerze w skali roku jest dużo droższy niż profesjonalny hosting taki jak np: hekko.pl. Ewentualnie zostają jeszcze tzn. aliasy.

Na dzisiaj byłoby to na tyle. Zapraszamy Ciebie oczywiście do polubienia naszego fanpage haker.edu.pl kanału na YouTube. Być może zainteresuje Cię jeszcze wpis o tym jak złamać hasło do swojego routera. Powodzenia! 🙂

45 thoughts to “Przekierowanie portów – czyli kontrola komputera z końca świata”

    1. no przydał by sie taki poradnik od zera (Omówienie kilku naj. luk typu przepełnienie bufora na stosie i stercie, wykorzystywanie debuggerów i pisanie exploitów, najlepiej w kilku językach). Sam przeczytałem m. in. „Bezpieczny system w praktyce” G. Weidman, gdzie jest to jakoś wytłumaczone, ale jest to właśnie tak „nijak” opisane.

  1. W obrazku z thomsonem chyba jest błąd, bo wpisaliscie 192.168.0.0.10, a wydaje mi się, że powinno być 192.168.0.10

    1. Masz w 100% racje. Na samym końcu wpisu z adresem 192.168.0.16 jest już dobrze w Thomsonie, bo wtedy fizycznie testowałem czy działa. Brawo za spostrzegawczość! Robo! 🙂

    1. A czy w Windowsie też masz w tym trzecim oktecie adresu wartość .50.? Jeżeli nie to prawdopodobnie nie ustawiłeś w VMWare Player lub VirtualBox w ustawieniach wirtualnej maszyny w zakładce sieć połączenia mostkowego (bridged). Wtedy DHCP z routera nada Ci zapewne dobry adres IP. Jeśli nie to prawdopodobnie w ustawieniach routera masz możliwość wybrania z jakiego zakresu mają być wydawane adresy IP (gdzieś w ustawieniach o nazwie DHCP).

  2. W przypadku ataku zdalnego odpowiedni wybór exploita możemy określić poprzez przeskanowanie poszczególnych hostów w poszukiwaniu otwartych portów i nasłuchujących programów. A jak to jest w przypadku wykorzystaniu luk w oprogramowaniu po stronie klienta? W jaki sposób mogę się dowiedzieć z jakiego oprogramowania korzysta dana osoba? Maltego? Z góry dziękuję za odpowiedź.

    1. W ten sam sposób bo host może być serwerem/prywatnym komputerem/urządzeniem/drukarką/telefonem. Jest to dowolne urządzenie sieciowe. Nawet skanując drukarkę, która ma opcje drukowania przez Wi-Fi (obecnie prawie wszystkie marketówki) odnajdziesz np: otwarte porty.

      Różnica jest taka, że użytkownicy domowi są chronieni przez router i firewall w routerze (NAT), a serwery nie ponieważ muszą być dostępne całkowicie w sieci Internet. Stąd jak przeskanujesz użytkownika domowego to zobaczysz otwarte porty… ale routera. No chyba że przekierował porty i ma u siebie jakiś serwer. Możesz zrobić eksperyment i zainstalować serwer stron internetowych XAMPP u siebie. Potem otwórz port 80 (HTTP) i użyj skanera dowolnego (nmap, openVAS, nessus etc). Zobaczysz co się stanie.

      Nie ma sensu audytować komputerów użytkowych z zewnątrz. Tak się nigdy nie robi. W firmach audyt jest z wnętrza sieci zazwyczaj całego LAN i wszystkich urządzeń, a z zewnątrz testuje się tylko usługi sieciowe typu serwer http/strona internetowa/serwer baz danych o ile nie jest lokalny.

      Cyberprzestępcy zazwyczaj najpierw włamują się do sieci lokalnej, aby potem zaatakować konkretny komputer. Przykład: atakują serwer HTTP z sieci firmowej (na którym jest serwer pocztowy/strona internetowa) tylko po to, aby dostać się do jego sieci wewnętrznej LAN. Tam już może sobie sniffować będąc nawet w innym kraju lub próbuje się dostać już na konkretny komputer pracownika Jana Kowalskiego.

      Inny przykład: jak wyciekają bazy danych/pliki prywatne z chmury, dane firmowe skoro komputery na których są one nie są podłączone do Internetu? Te komputery są zazwyczaj tylko w intranecie (sieć wewnętrzna firmowa), a cyberprzestępca dostał się do dowolnego komputera z sieci który ma dostęp do Internetu np: komputer na portierni. Potem dokonał infiltracji dalszych części sieci. Czasami nawet jedzie fizycznie na miejsce (patrz książka sztuka podstępu kevina mitnicka).

    1. W wpisie o payload była opisana różnica pomiędzy połączeniem bind_tcp, a reverse_tcp. W przypadku bind_tcp to komputer na którym jest uruchomiony payload oczekuje połączenia więc Ty się z nim łączysz. Wynika z tego, że to tamten komputer musi mieć przekierowane porty u siebie i publiczny adres IP. To Ty się z nim wtedy łączysz. Wykorzystuje się to głównie w audycie publicznie dostępnych usług internetowych bo jeśli są dostępne w internecie (np: strona internetowa) to oznacza, że mogą być serwerem.

      W innych przypadkach stosuje się odwrócone połączenie (stąd reverse_tcp nazwa) bo wtedy komputer ze zdalnej sieci nie musi konfigurować przekierowania portów, mieć publicznego adresu IP itd. To on wtedy łączy się z Tobą.

      Ale odpowiadając na Twoje pytanie: miej więcej działamy tak samo.

    1. Generuje się w folderze bieżącym Linux (wpisz polecenie pwd w konsoli Linux to dowiesz się w jakim folderze jesteś).

  3. Elo. Mam problem. Jak chce zainstalować pakiet libreoffice to wyskakuje błąd „E: Nie udało się odnaleźć pakietu libreoffice” . O co chodzi ?

    1. Może nie masz publicznego zewnętrznego adresu IP? Zadzwoń do dostawcy internetu i zapytaj. Z tego co widzę w Internecie, ten router ma możliwość przekierowywania portów. Kwestia adresu.

  4. „Niskopoziomowy szukacz luk i projektant malware”
    Projektant malware?Czy to w ogóle legalne? To brzmi jak dobra specjalizacja. Nie chce się czepiać, ale według polskiego prawa tworzenie złośliwego oprogramowania jest przestępstwem.

    1. Podasz obecną podstawę prawną? Podpowiem: szukaj w kodeksie karnym rozdziale XXXIII przestępstwa przeciwko ochronie informacji. Pytam ponieważ sam pisałem malware w mojej pracy magisterskiej… Nawet w moim zakładzie na uczelni były prowadzone badania na ten temat. Instytuty firm tworzących oprogramowanie ochronne również tworzą zarówno malware jak i exploity w celach badawczych… Ostatnio nawet w Polsce zostało złagodzone prawo dotyczące przestęp informatycznych (w skrócie: gdy wykonujesz audyt bez zgody i zgłosisz tylko administratorowi systemu/strony wykryte luki. Wcześniej musiałeś mieć zgodę, teraz nic Ci nie grozi gdy działasz w dobrej wierze).

  5. Dzięki za uświadomienie. Chciałbym się Ciebie doradzić jaka wiedza jest niezbędna, aby być malware researcherem? Jaką wiedzę uznałbyś za minimalną wymaganą do rozpoczęcia pracy jako malware researcher oraz czy jest coś takiego jak penetracyjne testy socjotechniczne i czy można zostać zatrudnionym tylko jako specjalista w tej dziedzinie? Z góry dziękuję za odpowiedź.

    1. Ja jestem programistą po studiach. Nie odpowiem Ci na to pytanie bo się na tej branży nie znam. Nawet po kilku całosemestralnych przedmiotach dotyczących ASM nie czułbym się na siłach analizować obce zaawansowane aplikacje (takimi dzisiaj jest malware). Podstawa to napewno kilkuletnie doświadczenie z etatu na stanowisku związanym z assemblerem. Tak są takie testy socjotechnicznie i wykonuje je się w celu sprawdzenia czy kadra w firmie jest odpowiednio przeszkolona z zakresu bezpieczeństwa i podawania informacji osobą nieuprawnionym do nich. Wyniki ich również umieszcza się w raporcie końcowym z rekomendacjami jak to naprawić. Tylko to nie są testy że tworzysz sobie stronkę phishingową. Każdy test jest rozpisywany, staranie przemyślany i wykonywany tylko w kontekście danej firmy. Prywatne dane pracowników nie są nikomu potrzebne. Trzeba po prostu sprawdzić czy procedury są dobre. Polecam książkę Kevina Mitnika Sztuka podstępu (nieco już stara).

      Możesz zostać zatrudniony w tej dziedzinie, ale to raczej osoby z wykształceniem związanym głównie z psychologią opracowują takie testy wyłudzające.

  6. Dziękuję za odpowiedź. Chciałbym się jeszcze doradzić jaki zakres wiedzy jest wymagany od informatyka śledczego? Czy niezbędna jest wiedza na temat bezpieczeństwa systemów informatycznych?

    1. Na tym blogu nie ma praktycznie nic z informatyki śledczej chociaż jest to bardzo powiązany temat. Na pewno niezbędne są studia wyższe techniczne (najlepiej informatyka/teleinformatyka i pokrewne II stopnia (mgr)). Nie masz szans składając CV w państwówce bez nich bo raczej sam nic nie otworzysz na starcie bez doświadczenia. Warto również zainwestować te kilka tysięcy złotych w certyfikacje potwierdzającą kwalifikacje przykładowo ISFCE CEE. Oczywiście im więcej masz kursów certyfikowanych tym lepiej.

    1. W informatyce śledczej raczej stanowiska są tylko na państwówce, więc tam raczej nie masz szans. W innych miejscach masz, tylko tak jak gdzieś pisałem trzeba mieć poświadczenie swojej wiedzy kursami z certyfikatami. Koszt pojedynczego kursu z informatyki z certyfikatem to najczęściej okolice 9-13 tysięcy złotych. Na studiach często każdy semestr przedmiotu jest nazywany „kursem” i często jako student masz dostęp do certyfikacji za darmo lub obniżonej nawet o 90%.

  7. Witam.
    Bawiłem się ostanio tworzeniem backdoorow do sieci lokalnej jak i zewnetrznej. 100% stworzonych do sieci zewnetrznej nie dziala a do sieci lan wrecz przeciwnie. Sprawdzilem nmapem porty na moim komputerze i odziwo wszystkie sa zamkniete. Przekierowalem port na swoj komputer zgodnie z powyzszym wpisem lecz bez skutkow. Skonczyly mi sie juz pomysly co to moze byc. Prosze o pomoc.

    1. Jeśli masz jakiś serwer w sieci, przekierowałeś na niego porty i za pomocą skanowania portów nic nie wykrywa (skanując zewnętrzne IP) to znaczy że nie masz publicznego adresu IP i musisz kupić go u operatora internetowego.

  8. Witam, (router netgear jnr1010)
    Próbowałam przekierować porty w nim, aby umożliwić sobie granie ze znajomymi przez internet. Mimo przekierowania portów na programie tunngle wciąż wyskakuje mi informacja o tym, że port jest zamknięty, przez co z żadnym graczem nie mogę się połączyć. Wie ktoś co mogę zrobić? Chciałam dzwonić do dostawcy internetu ale nawet nie wiem jak mam sprecyzować swoją prośbę i tak teraz jestem w kropce. Będę wdzięczna za pomoc, pozdrawiam

    1. Zadzwoń do dostawcy internetowego z pytaniem, czy Twój adres IP zewnętrzny jest publiczny, czyli umożliwia bycie serwerem w grach i programach. Zazwyczaj jest to opcja dodatkowo płatna co miesiąc i większość osób takowego adresu IP nie ma bo by ich zabrakło na świecie (dlatego wymyślili już dłuższe adresy IPv6). W takim przypadku nie ma nawet co przekierować portów bo to i tak nic nie da. Cytuje z tego wpisu zresztą:

      Dodatkowo upewnij się, że masz publiczny zewnętrzny adres IP (telefon do dostawcy Internetu lub zerknij na umowę)

  9. da się to zrobić jakoś inaczej? np. przez VPS (na linuxie ale nie kali) chodzi mi o to żeby nie mieć publicznego ip w domu

  10. Jest program kórym mógłby być za za darmo taki kórym otwiera program do hackowani bo jestem jeszcze początkowym hakerzy i czy mógłby Pan mi pomóc w tej sprawie i dać jakieś wskazówki

    1. Nie ma programu. Porty otwiera się ręcznie w konfiguracji routera po zalogowaniu się do niego. Innej możliwości nie ma.

  11. Przy opisie przekierowania portów na Thomsonie chyba powinno być odwrotnie (Protocol:) UDP – stratny, TCP – niestratny 😉

  12. A ja chciałbym bardzo prosić o ewentualną poradę w temacie.
    Poszukuję mobilnego routera na kartę SIM, który możliwa przekierowanie portów.
    Mam mobilny internet LTE z usługa stałego publicznego IP i szukam urządzenia, które będzie „współpracowało” z Kalim jako maszyną wirtualną i umożliwiało „nasłuchiwanie” listenerów.
    Czy ktoś korzysta i może doradzić?

  13. Dziękuję za pomoc, mam ruter z airamx z publicznym ip i w końcu mi zadziałało wszystko jak należy dzieki temu poradnikowi,
    pozdrawiam

  14. Dzień dobry
    Zastanawiam się nad tym jak zrobić przekierowanie dla serwera Windows 10 VPN w routerze TP-Link.
    O ile się orientuje to ten VPN pracuje wyłącznie na porcie 1723. przy użyciu protokołu PPTP.
    Chciałbym by łączenie z internetu korzystało z innego portu np: 89.123.xx.xxx:3331 i trafiało do lokalnego komputera na port 1723.
    Czy będzie dobrze jeśli Service Port wpiszę 1723, a w internal port 3331? We wszystkich poradnikach zapisy w obu polach są identyczne i podobno takie są zalecenia. Jednak nie chciałbym by VPN wychodził na zewnątrz używając standardowego portu.
    Dziękuję za odpowiedzi.
    Pozdrawiam

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *