Powershell-də Reverse socks5 proksi yazırıq. 1-ci hissə

3 hissədən ibarət tədqiqat və inkişaf haqqında hekayə. 1-ci hissə kəşfiyyat xarakterlidir.
Bir çox fıstıq ağacı var - daha çox fayda.

Problem problemi

Pentestlər və RedTeam kampaniyaları zamanı VPN, RDP, Citrix və s. kimi Müştərinin standart alətlərindən istifadə etmək həmişə mümkün olmur. daxili şəbəkəyə daxil olmaq üçün lövbər kimi. Bəzi yerlərdə standart VPN XİN-dən istifadə edərək işləyir və ikinci amil kimi bir aparat nişanı istifadə olunur, digərlərində ona vəhşicəsinə nəzarət edilir və VPN girişimiz dərhal görünən olur, necə deyərlər, bütün bunlara səbəb olur, lakin digərlərində var sadəcə olaraq belə bir vasitə yoxdur.

Belə hallarda biz daima “əks tunellər” adlanan - daxili şəbəkədən xarici resursla və ya idarə etdiyimiz serverlə əlaqə yaratmalıyıq. Belə bir tunelin içərisində biz artıq Müştərilərin daxili resursları ilə işləyə bilərik.

Bu qayıdış tunellərinin bir neçə növü var. Onlardan ən məşhuru, əlbəttə ki, Metrpreterdir. Ters port yönləndirməli SSH tunelləri də haker kütlələri arasında böyük tələbatdır. Əks tunelin həyata keçirilməsi üçün kifayət qədər çox vasitə var və onların bir çoxu yaxşı öyrənilmiş və təsvir edilmişdir.
Əlbəttə ki, öz növbəsində, təhlükəsizlik həllərinin tərtibatçıları kənarda dayanmırlar və bu cür hərəkətləri aktiv şəkildə aşkar edirlər.
Məsələn, MSF seansları Cisco və ya Positive Tech-dən müasir IPS tərəfindən uğurla aşkar edilir və əks SSH tuneli demək olar ki, hər hansı bir normal firewall tərəfindən aşkarlana bilər.

Buna görə də, yaxşı RedTeam kampaniyasında diqqətdən kənarda qalmaq üçün qeyri-standart vasitələrdən istifadə edərək tərs tunel qurmalı və şəbəkənin real iş rejiminə mümkün qədər uyğunlaşmalıyıq.

Gəlin oxşar bir şey tapmağa və ya icad etməyə çalışaq.

Bir şey icad etməzdən əvvəl, hansı nəticəyə nail olmaq istədiyimizi, inkişafımızın hansı funksiyaları yerinə yetirməli olduğunu başa düşməliyik. Maksimum gizli rejimdə işləməyimiz üçün tunel üçün tələblər nə olacaq?

Aydındır ki, hər bir hal üçün bu cür tələblər çox fərqli ola bilər, lakin iş təcrübəsinə əsaslanaraq əsas olanlar müəyyən edilə bilər:

  • Windows-7-10 ƏS-də işləmək. Əksər korporativ şəbəkələr Windows istifadə etdiyi üçün;
  • müştəri ips istifadə edərək axmaq dinləmədən qaçmaq üçün serverə SSL vasitəsilə qoşulur;
  • Qoşularkən müştəri avtorizasiya ilə proxy server vasitəsilə işi dəstəkləməlidir, çünki Bir çox şirkətlərdə internetə çıxış proksi vasitəsilə baş verir. Əslində, müştəri maşını hətta bu barədə heç nə bilmir və proxy şəffaf rejimdə istifadə olunur. Amma biz belə funksionallığı təmin etməliyik;
  • müştəri hissəsi yığcam və daşına bilən olmalıdır;
    Aydındır ki, Müştərinin şəbəkəsində işləmək üçün siz OpenVPN-i müştəri maşınına quraşdıra və serverinizə tam hüquqlu tunel yarada bilərsiniz (xoşbəxtlikdən openvpn müştəriləri proxy vasitəsilə işləyə bilər). Lakin, birincisi, bu, həmişə işləməyəcək, çünki biz orada yerli admin olmaya bilərik, ikincisi, o qədər səs-küy yaradacaq ki, layiqli SIEM və ya HIPS dərhal bizi “söyləyəcək”. İdeal olaraq, müştərimiz sözdə inline əmr olmalıdır, məsələn, bir çox bash qabıqları həyata keçirilir və əmr xətti ilə işə salınır, məsələn, söz makrosundan əmrləri yerinə yetirərkən.
  • tunelimiz çox yivli olmalı və eyni vaxtda bir çox əlaqəni dəstəkləməlidir;
  • klient-server əlaqəsi bir növ avtorizasiyaya malik olmalıdır ki, tunel göstərilən ünvan və portda serverimizə gələn hər kəs üçün deyil, yalnız müştərimiz üçün qurulsun. İdeal olaraq, pişiklər və ya orijinal domenlə əlaqəli peşəkar mövzular olan açılış səhifəsi "üçüncü tərəf istifadəçiləri" üçün açılmalıdır.
    Məsələn, Müştəri tibb təşkilatıdırsa, o zaman klinika əməkdaşının daxil olduğu resursu, əczaçılıq məhsulları ilə səhifəni, diaqnozun təsviri olan Vikipediyanı və ya Dr.Komarovskinin bloqunu yoxlamaq qərarına gələn informasiya təhlükəsizliyi inzibatçısı üçün və s. .açmalıdır.

Mövcud vasitələrin təhlili

Öz velosipedinizi yenidən ixtira etməzdən əvvəl, mövcud velosipedlərin təhlilini aparmalı və ona həqiqətən ehtiyacımız olub-olmadığını başa düşməlisiniz və yəqin ki, belə funksional velosipedə ehtiyac barədə düşünən tək biz deyilik.

İnternetdə axtarış (adətən google-a baxırıq), həmçinin Github-da “ters corab” açar sözlərindən istifadə etməklə axtarış çox nəticə vermədi. Əsasən, hamısı tərs port yönləndirməsi və onunla əlaqəli hər şey ilə ssh tunellərinin qurulmasına gəlir. SSH tunellərinə əlavə olaraq, bir neçə həll yolu var:

github.com/klsecservices/rpivot
Kaspersky Lab-dakı uşaqlardan tərs tunelin uzun müddətdir həyata keçirilməsi. Ad bu skriptin nə üçün nəzərdə tutulduğunu aydın şəkildə göstərir. Python 2.7-də həyata keçirilən tunel aydın mətn rejimində işləyir (indi demək dəbdədir - salam RKN)

github.com/tonyseek/rsocks
Python-da başqa bir tətbiq, həm də aydın mətndə, lakin daha çox imkanlarla. O, modul kimi yazılmışdır və həlli layihələrinizə inteqrasiya etmək üçün API-yə malikdir.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
İlk keçid Golang-da əks sox tətbiqinin orijinal versiyasıdır (geliştirici tərəfindən dəstəklənmir).
İkinci keçid, Golanqda da əlavə xüsusiyyətlərlə düzəlişimizdir. Versiyamızda biz SSL tətbiq etdik, NTLM avtorizasiyası ilə proksi vasitəsilə işləyirik, müştəridə avtorizasiya, səhv parol olduqda açılış səhifəsi (daha doğrusu açılış səhifəsinə yönləndirmə), çox yivli rejim (yəni bir neçə nəfər) tunellə eyni vaxtda işləyə bilər) , müştərinin sağ olub-olmadığını müəyyən etmək üçün pingləmə sistemi.

github.com/jun7th/tsoks
Python-da "Çinli dostlarımızdan" tərs soxun həyata keçirilməsi. Orada tənbəl və "ölümsüz" üçün çinlilər tərəfindən yığılmış və istifadəyə hazır olan hazır binar (exe) var. Burada, yalnız Çin Tanrısı bilir ki, bu binar əsas funksionallıqdan başqa nələri ehtiva edə bilər, ona görə də öz təhlükəniz və riskinizlə istifadə edin.

github.com/securesocketfunneling/ssf
Reverse sox və daha çoxunu həyata keçirmək üçün C++-da olduqca maraqlı layihə. Ters tunelə əlavə olaraq, o, port yönləndirməni edə bilər, əmr qabığı yarada bilər və s.

MSF ölçməçi
Burada, necə deyərlər, şərh yoxdur. Bütün az və ya çox savadlı hakerlər bu şeylə çox tanışdırlar və təhlükəsizlik alətləri ilə nə qədər asanlıqla aşkar edilə biləcəyini başa düşürlər.

Yuxarıda təsvir edilən bütün alətlər oxşar texnologiyadan istifadə edərək işləyir: əvvəlcədən hazırlanmış icra edilə bilən ikili modul şəbəkə daxilindəki maşında işə salınır və bu, xarici serverlə əlaqə yaradır. Server əlaqələri qəbul edən və onları müştəriyə ötürən SOCKS4/5 serverini idarə edir.

Yuxarıda göstərilən vasitələrin hamısının dezavantajı ondan ibarətdir ki, ya Python, ya da Golang müştəri maşınına quraşdırılmalıdır (məsələn, şirkət direktorunun və ya ofis işçilərinin maşınlarında Python-un quraşdırıldığını tez-tez görmüsünüzmü?) və ya əvvəlcədən yığılmış alətlər binar (əslində python) bu maşına sürüklənməlidir və bir şüşədəki skript) və bu binar faylı artıq orada işə salın. Və bir exe yükləmək və sonra onu işə salmaq həm də yerli antivirus və ya HIPS üçün imzadır.

Ümumiyyətlə, nəticə özünü göstərir - bizə powershell həlli lazımdır. İndi pomidorlar üzərimizə uçacaq - deyirlər ki, powershell onsuz da sındırılıb, ona nəzarət olunur, bloklanır və s. və s. Əslində hər yerdə deyil. Biz məsuliyyətlə bəyan edirik. Yeri gəlmişkən, bloklamadan yan keçməyin bir çox yolu var (burada yenə salam RKN haqqında dəbli bir ifadə var 🙂), powershell.exe -> cmdd.exe-nin axmaq adının dəyişdirilməsindən başlayaraq powerdll ilə bitən və s.

İxtira etməyə başlayaq

Aydındır ki, əvvəlcə Google-a baxacağıq və... bu mövzuda heç nə tapa bilməyəcəyik (kimsə tapıbsa, şərhlərdə linklər göndərin). Yalnız var həyata keçirilməsi Powershell-də Corab5, lakin bu, bir sıra mənfi cəhətləri olan adi "birbaşa" soxdur (onlar haqqında daha sonra danışacağıq). Əlbətdə ki, əlinizin yüngül bir hərəkəti ilə onu tərs birinə çevirə bilərsiniz, ancaq bu, yalnız bir yivli sox olacaq, bu da bizə lazım olan şey deyil.

Beləliklə, biz hazır bir şey tapmadıq, ona görə də hələ də təkərimizi yenidən kəşf etməliyik. Velosipedimiz üçün əsas götürəcəyik inkişafımız Golang-da tərs sox və biz bunun üçün bir müştərini powershell-də tətbiq edirik.

RSocksTun
Beləliklə, rsockstun necə işləyir?

RsocksTun (bundan sonra rs) əməliyyatı iki proqram komponentinə - Yamux və Socks5 serverinə əsaslanır. Socks5 serveri adi yerli corabdır5, müştəri üzərində işləyir. Və ona qoşulmaların multipleksləşdirilməsi (multitreading haqqında xatırlayırsınız?) Yamux () istifadə edərək təmin edilir.daha bir multipleksor). Bu sxem bir neçə müştəri socks5 serverini işə salmağa və onlara xarici əlaqələri paylamağa, onları bir TCP bağlantısı vasitəsilə (demək olar ki, meterpreter-də olduğu kimi) müştəridən serverə yönləndirməyə imkan verir və bununla da çox yivli rejimi həyata keçiririk, onsuz biz sadəcə ola bilməyəcəyik. daxili şəbəkələrdə tam işləməyi bacarır.

Yamux-un necə işləməsinin mahiyyəti ondan ibarətdir ki, o, hər bir paket üçün 12 baytlıq başlıq şəklində həyata keçirərək əlavə şəbəkə axın qatını təqdim edir. (Burada oxucunu proqram axınının "mövzu" ilə çaşdırmamaq üçün bilərəkdən mövzu deyil, "axın" sözündən istifadə edirik - bu məqalədə bu anlayışdan da istifadə edəcəyik). Yamux başlığında axın nömrəsi, axını quraşdırmaq/sonlandırmaq üçün bayraqlar, ötürülən baytların sayı və ötürmə pəncərəsinin ölçüsü var.

Powershell-də Reverse socks5 proksi yazırıq. 1-ci hissə

Bir axını quraşdırmaq/xitam verməklə yanaşı, yamux qurulmuş rabitə kanalının işinə nəzarət etməyə imkan verən saxlama mexanizmini həyata keçirir. Yamux sessiyası yaradılarkən canlı mesaj mexanizminin işləməsi konfiqurasiya edilir. Əslində, parametrlərdən yalnız iki parametr var: aktivləşdirmək/deaktiv etmək və paketlərin saniyələr ərzində göndərilmə tezliyi. Keepalive mesajları yamux serveri və ya yamux müştərisi tərəfindən göndərilə bilər. Saxlanılan mesajı qəbul edərkən, uzaq tərəf qəbul etdiyi eyni mesaj identifikatorunu (əslində nömrə) göndərməklə ona cavab verməlidir. Ümumiyyətlə, keepalive eyni pingdir, yalnız yamux üçün.

Multipleksorun bütün işləmə texnikası: paket növləri, əlaqənin qurulması və dayandırılması bayraqları və məlumat ötürmə mexanizmi aşağıda ətraflı təsvir edilmişdir. spesifikasiyalar yamuxa.

Birinci hissəyə yekun

Beləliklə, məqalənin birinci hissəsində biz tərs tunellərin təşkili üçün bəzi vasitələrlə tanış olduq, onların üstünlükləri və çatışmazlıqlarına baxdıq, Yamux multipleksorunun işləmə mexanizmini öyrəndik və yeni yaradılmış powershell modulu üçün əsas tələbləri təsvir etdik. Növbəti hissədə biz modulun özünü praktiki olaraq sıfırdan inkişaf etdirəcəyik. Ardı var. dəyişmə :)

Mənbə: www.habr.com

Добавить комментарий