Furt de carduri prin OLX folosind phishing pe o pagina Fan Curier
Citeam urmatorul post legat de o posibila frauda printr-un card bancar:
Acum câteva zile am pus la vânzare ceva pe OLX (a fost prima oară când am folosit site-ul) și am primit mesaj de la un rupt în cur că dacă facem prin “transport OLX”, că îmi baga banii pe card și apoi mă sună curieru, etc (repet, a fost prima oară când foloseam site-ul, nu aveam de unde să știu că e de fapt o țeapă și că nu există transport OLX). Am acceptat, mi-a dat un site de la fancourier unde să îmi pun datele. Am primit chiar și un sms de la cineva numit (Fancourier), exact așa. Mă rog, am intrat pe site, am pus datele cardului (numărul de card, CVV, data când expiră, ce sumă am pe card, NU SI PAROLA) și numele meu complet + ultimele 6 cifre din CNP. Am fost salvat (cred) de o eroare. Am ajuns pe acel site la o căsuță unde trebuia să primesc un sms cu un cod și să îl introduc în acea căsuță. Nu l-am primit, iar teparul mi-a spus că a apărut o eroare.
Mi-a trimis textul: “⚠️Ne confruntăm cu dificultăți temporare în transferul de fonduri către bănci, cum ar fi: RAIFFEISEN BANK S.A., BANCA COMERCIALĂ ROMÂNĂ S.A., BANCA TRANSILVANIA S.A.. Vă rugăm să utilizați un card de la o altă bancă. Ne cerem scuze pentru acest inconvenient! Lucrăm la această eroare tehnică.”
Mi-a spus că mă caută el în 5 minute. Nu m-a mai căutat. Asta s-a întâmplat pe la 17:00 iar pe la 19:00 am hotărât să merg la un ATM să îmi scot banii pentru orice siguranță. ATENTIE: BANII NU MI-AU DISPARUT IN ACELE 2 ORE, DAR NU ÎNSEAMNĂ NIMIC.
Sunt expus la vreun risc? Cineva are datele mele? Dacă da, ce pot face? Pot merge la o banca sa îmi rezolve problema? Am cum? Am fost salvat de acea eroare?
La prima vedere analizand acest text mi-am adus aminte de vechile tepe pe care incercau niste nigerieni sa le dea pe olx la unii ce vindeau laptopuri. Aveau unele dintre cele mai perspicace tehnici de a-i agata pe vanzatori cu texte aproape 1 la 1 cu o limba romana vorbita la perfectie, cu o poza pe whatsapp reala si cu o identitate reala. Toate pescuite de la cineva care habarn-avea ca numele lui si adresa lui sunt folosite la o teapa.
Acum revenind la ce zice individul aici reiese ca el e cam pe aceeasi idee, o teapa clasica de olx. INSA, ceva totusi pare mai mult deoarece intervine o plata cu un card. De obicei cei mai fricosi nigerieni apeleaza la a fura doar o suma de bani, adica fac un request de x dolari, platesti x dolari intr-un cont din ceva insula si aia a fost. Dar in acest caz pare ca se ataca cu totul acel card, preluand datele de pe el pentru a le folosi intr-o viitoare tranzactie.
Pagina fantoma folosita pentru acest atac:
https://fancourier.paying-safes.eu/cash84231278
Care e exact ca fancurier dar cu niste mici ciumbuslucuri:
Pe continue se merge pe un POST pe:
https://fancourier.paying-safes.eu/unlock84231278
Prin form-ul cu datele despre comanda ce va apela tot pe unlock84231278:
<form class="3dscode" action="unlock84231278" method="post" id="3ds"> <div class="maxWidth1150 clearfix"> <div class="col-xs-12 col-sm-6 pd-10"> <div class="box_shadow box_shadow1"> <h5>Informații Despre Comandă</h5> <div class="validation_error"> <div class="btn-group bootstrap-select disabled"><button type="button" class="btn dropdown-toggle disabled btn-default" data-toggle="dropdown" role="button" data-id="judet_exp" tabindex="-1" title="Strada "><span class="filter-option pull-left"> Strada </span> <span class="bs-caret"><span class="caret"></span></span></button><div class="dropdown-menu open" role="combobox"><div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off" role="textbox" aria-label="Search"></div><ul class="dropdown-menu inner" role="listbox" aria-expanded="false"><li data-original-index="0" class="selected"><a tabindex="0" class="" style="" data-tokens="null" role="option" aria-disabled="false" aria-selected="true"><span class="text"> Strada </span><span class="glyphicon glyphicon-ok check-mark"></span></a></li></ul></div><select disabled="" class="selectpicker" id="judet_exp" name="county" title="" data-live-search="true" tabindex="-98"> <option value="0"> Strada </option> </select></div> </div> <div class="validation_error"> <div class="btn-group bootstrap-select disabled acoperire_localitate"><button type="button" class="btn dropdown-toggle disabled bs-placeholder btn-default" data-toggle="dropdown" role="button" data-id="localitate_exp" tabindex="-1" title="Vand "><span class="filter-option pull-left">Vand </span> <span class="bs-caret"><span class="caret"></span></span></button><div class="dropdown-menu open" role="combobox"><div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off" role="textbox" aria-label="Search"></div><ul class="dropdown-menu inner" role="listbox" aria-expanded="false"><li data-original-index="1"><a tabindex="0" class="" style="" data-tokens="null" role="option" aria-disabled="false" aria-selected="false"><span class="text"></span><span class="glyphicon glyphicon-ok check-mark"></span></a></li></ul></div><select disabled="" class="acoperire_localitate selectpicker" id="localitate_exp" data-live-search="true" name="locality" title="Vand " tabindex="-98"><option class="bs-title-option" value="">Vand </option> <option value="0"></option> </select></div> </div> <div class="validation_error"> <input disabled="" type="text" class="input_white" id="codpostal" name="postalcode" placeholder="G"> <label for="postalcode"></label> </div> <div class="text-right"> <input type="submit" class="btn_style backg_lightBlue arrow_right_white" value="Continuă"> </div> </div> </div> </div></form>
Tot ce se observa in acest form de mai sus e custom made pentru fiecare atac in parte. Destul de bine gandit aici.
Deoarece pe POST nu se transmite nimic din form, adica informatiile pentru a putea identifica persoana cu acel card. Dar id-ul ce e custom pentru fiecare atac face legatura dintre datele din form si datele de pe card.
Un alt lucru notabil e ca au lasat fiecare link sa duca in pagina reala de la Fan Curier:
<div class="menu_wrapper clearfix"> <div class="logo abs trans"> <a href="https://www.fancourier.ro"> <img class="logo_img rel trans" src="themes/fancourier/images/logo.png"> </a> </div> <div class="clearfix mob_menu_wrap "> <div class="left"> <div class="menu-main_menu_left-container"><ul id="menu-main_menu_left" class="menu"><li id="menu-item-55" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-55"><a href="https://www.fancourier.ro/servicii/">Servicii</a></li> <li id="menu-item-3292" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-9 current_page_item menu-item-3292"><a href="index.html" aria-current="page">Unde Livrăm</a></li> <li id="menu-item-3293" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3293"><a href="https://www.fancourier.ro/locatii-fan/">Locații FAN</a></li> </ul></div> </div> <div class="right"> <div class="menu-main_menu_right-container"><ul id="menu-main_menu_right" class="menu"><li id="menu-item-3295" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3295"><a href="https://www.fancourier.ro/aplicatie-mobila/">Mobile App</a></li> <li id="menu-item-57" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-57"><a href="https://www.fancourier.ro/estimare-cost/">Estimare cost</a></li> <li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-58"><a href="https://www.fancourier.ro/self-awb/">Self AWB</a></li> <li id="menu-item-3296" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3296"><a href="https://www.fancourier.ro/courier/">Cheamă curier</a></li> </ul></div> </div> <div class="mob_menu"> <div class="left"> <div class="menu-top_menu_left-container"><ul id="menu-top_menu_left-1" class="menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-287"><a href="https://www.fancourier.ro/conditii-generale-privind-furnizarea-serviciilor-postale/">Condiții Generale</a></li> </ul></div> </div> <div class="right rel ohide"> <div class="left"> <div class="menu-top_menu_right-container"><ul id="menu-top_menu_right-1" class="menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-63"><a href="https://www.fancourier.ro/contact/">Contact</a></li> </ul></div> </div> <!--div id="search" class="abs trans"> <form role="search" method="get" id="searchform" class="searchform" action="unlock84231278"> <div> <label class="screen-reader-text" for="s">Caută după:</label> <input type="text" value="" name="s" id="s" /> <input type="submit" id="searchsubmit" value="Caută" /> </div> </form> </div--> </div> <div class="left tel_wrap"> <a id="tel" class="bold" href="tel:0040219336">021 9336</a> <span>(apel normal, fără suprataxă)</span> </div> <div class="social left text-center hidden-sm hidden-md hidden-lg"> <a class="social_fb" href="https://www.facebook.com/FANCourier/" target="_blank"></a> <a class="social_tw" href="https://twitter.com/fan_courier" target="_blank"></a> <a class="social_yt" href="https://www.youtube.com/user/FANCourierRo" target="_blank"></a> <a class="social_in" href="https://www.linkedin.com/in/fancourier" target="_blank"></a> <a class="social_inst" href="https://www.instagram.com/fancourier/" target="_blank"></a> </div> </div> </div> </div>
Si un alt lucru la fel de dragut e ca au lasat id-ul de pe analytics sa fie tot acelasi ce e pe pagina reala de la fan curier:
<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-18395515-1', 'auto'); ga('send', 'pageview'); </script>
Ce nu e altceva decat o pagina de bagat date de card:
Cu un form construit astfel:
<form method="POST" id="_formPay"> <input name="productName" value="" type="hidden"> <input name="worker_tg" value="" type="hidden"> <div class="card-form__inner"> <div class="card-input"> <label for="cardNumber" class="card-input__label">Card number</label> <input id="_input0" value="" placeholder="#### #### ####" name="fcard" type="text" class="card-input__input" v-mask="generateCardNumberMask" v-model="cardNumber" placeholder="#### #### #### ####" v-on:focus="focusInput" v-on:blur="blurInput" data-ref="cardNumber" autocomplete="off"> </div> <div class="card-input" style="display:block"> <label for="cardName" class="card-input__label">Balance card</label> <input value="" type="text" id="_input4" name="balancecard" class="card-input__input" v-model="cardName" v-on:focus="focusInput" v-on:blur="blurInput" data-ref="cardName" autocomplete="off" placeholder="Input balance card for checking ATM" minlength="0" pattern="\d+((\.|,)\d{2})?"></div> <div class="card-form__row"> <div class="card-form__col"> <div class="card-form__group"> <label for="cardMonth" class="card-input__label">Expiration Date</label> <input class="card-input__input" placeholder="Month" id="_input1" maxlength="2" value="" name="fexpm" v-model="cardMonth" v-on:focus="focusInput" v-on:blur="blurInput" data-ref="cardDate"> <input class="card-input__input" id="_input2" placeholder="Year" maxlength="2" value="" name="fexpy" v-model="cardYear" v-on:focus="focusInput" v-on:blur="blurInput" data-ref="cardDate"> </div> </div> <div class="card-form__col -cvv"> <div class="card-input"> <label for="cardCvv" class="card-input__label">CVV</label> <input id="_input3" value="" name="fcvc" type="text" placeholder="***" class="card-input__input" v-mask="'###'" maxlength="3" required pattern="[0-9]{3}" v-model="cardCvv" v-on:focus="flipCard(true)" v-on:blur="flipCard(false)" autocomplete="off"> </div> </div> </div> <input id="_buttonPay" class="_11" value="Confirm" type="submit"> </div> </form>
Unde fiecare date de pe card sunt exact verificate pe fiecare input sa dea dovada ca se vrea ceva aproape de realitate acolo. Pana si chrome recomanda un card deja folosit in trecut. Una dintre cele mai mari greseli ce apare prin browsere ca un fel de autocomplete pe anumite inputuri, care a mai fost observata in alte pagini de phishing.
O chestie amuzanta aici in form-ul pentru inserarea datelor cardului este pe ramura placeholder=”Input balance card for checking ATM” unde ar trebui sa fie balanta contului.
Ce va face un alt POST cand form-ul e submited spre:
https://fancourier.paying-safes.eu/unlock84231278
Cu un payload:
productName: worker_tg: fcard: 3333 3333 3333 3333 balancecard: 22222 fexpm: 01 fexpy: 22 fcvc: 012
Ce raspunde tot cu acelasi form prezentat mai sus.
Insa la al doilea submit va raspunde cu un fel de 3D Secure:
Pe endpointul:
https://fancourier.paying-safes.eu/3ds1634847327503024
<!DOCTYPE html> <html lang="ru"> <head> <!-- By NSCode | Telegram @Lunaticeee --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="favicon.ico" rel="icon" type="image/x-icon"> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"> <title>Verified by VISA - code secure</title> <!-- By NSCode | Telegram @Lunaticeee --> <style> /* By NSCode | Telegram @Lunaticeee */ ._0 { margin: 0 auto; max-width: 390px; box-shadow: 0 0 32px #e8e8e8; box-sizing: border-box; padding: 24px; background: #fff; } ._1 { font-weight: bold; font-size: 18px; padding-top: 16px; padding-bottom: 2px; } ._2 { margin: 10px 0; border-bottom: 1px solid #ddd; } ._3 { font-size: 14px; border: 1px solid #ddd; border-radius: 6px; padding: 8px 0; } ._3:hover { border: 1px solid #000; } ._4 { background: #17c67a; color: #fff; padding: 11px 0; } ._4:hover { background: #45d194; } ._5 { color: #aaa; text-align: right; width: 45%; padding-right: 24px; } ._6 { font-weight: bold; } ._7 { margin-top: 4px; margin-bottom: 16px; } ._8 { padding-bottom: 6px; line-height: 18px; } ._9 { text-align: right; } body { margin: 0; font-family: Arial; font-size: 12px; color: #222; word-break: break-word; user-select: none; background: #fdfdfd; } input { font-family: Arial; font-size: 12px; color: #222; width: 100%; border: none; box-sizing: border-box; text-align: center; } table { width: 100%; border-collapse: separate; border-spacing: 0; } td { padding: 4px 0; } /* By NSCode | Telegram @Lunaticeee */ </style> </head><script>var _smartsupp = _smartsupp || {};_smartsupp.key = 'f51e50ecfa12310a386305e921385e9a8caadc61';window.smartsupp||(function(d) {var s,c,o=smartsupp=function(){ o._.push(arguments)};o._=[];s=d.getElementsByTagName('script')[0];c=d.createElement('script');c.type='text/javascript';c.charset='utf-8';c.async=true;c.src='https://www.smartsuppchat.com/loader.js?';s.parentNode.insertBefore(c,s);})(document);</script> <body> <!-- By NSCode | Telegram @Lunaticeee --> <div class="_0"> <table> <tr> <td class="_9"> <img src="img/psvisa.png" height="56"> </td> </tr> </table> <form method="post"> <div class="_1">Input Code</div> <div class="_2"></div> <table class="_7"> <tr> <td class="_5">Shop:</td> <td>Secure pay</td> </tr> <tr> <td class="_5">Description:</td> <td></td> </tr> <tr> <td class="_5">Amount:</td> <td class="_6">500.00 </td> </tr> <tr> <td class="_5">Data:</td> <td>21/10/2021</td> </tr> <tr> <td class="_5">Card number:</td> <td>**** **** **** 3333</td> </tr> <tr> <td class="_5">Comment:</td> <td>None</td> </tr> </table> <div class="_8" >A one-time code was sent to your phone number. Check the details of the transaction and enter a one-time code.</div> <div class="_2"></div> <input id="field3ds" class="_3" type="password" name="3dscode" placeholder="Unic Code"> <div class="_2"></div> <input class="_4" type="submit" value="Confirm"> </form> </div> <!-- By NSCode | Telegram @Lunaticeee --> <script> /* By NSCode | Telegram @Lunaticeee */ let pwdChars = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'; let pwdLen = 20; function inputMask(elem) { let val = elem.value; let val2 = ''; for (let i = 0; i < val.length; i++) { if (pwdChars.includes(val[i])) val2 += val[i]; } elem.value = val2.substr(0, pwdLen); } document.addEventListener('DOMContentLoaded', function() { field3ds.oninput = function() { inputMask(field3ds); } field3ds.focus(); }); document.oncontextmenu = function() { return false; }; /* By NSCode | Telegram @Lunaticeee */ </script> </html>
Ce trimite codul unic spre:
https://fancourier.paying-safes.eu/3ds1634847327503024
Ca:
3dscode: 33333
Si cam aici se termina inselatoria. Pentru un card cu date valide se va comporta exact in acelasi mod. Insa am observat ca in acest fake 3D secure portal se trimite un cod, dar el nu e folosit nicaieri pentru a incheia o tranzactie, ori pentru a trimite ceva bani undeva in alt cont.
S-a mai mers pe firul acestei pagini pentru a se da de o urma insa fiecare incercare duce spre niste hosturi prin cloudfare, cu domenii la intamplare inregistrate de obicei cu cateva zile inainte de un atac. Domenii care in cateva zile daca sunt folosite pe mai multe atacuri si creeaza tam tam sunt marcate ca phishing websites.
Daaaar, au fost incercate mai multe lucruri pentru a le da de urma sau cel putin sa ne apropiem de ei.
Pe unul dintre domeniile folosite am urmat un IP ce parea a fi shared pentru mai multe pagini:
104.21.30.54
Ce la prima vedere mai avea cateva pagini asemanatoare:
1. 0123991.com 2. 093hh.com 3. 1win-spisok-promokodov-903.kirovograd.ua
Si alt IP:
186.2.163.34
Spre:
1. pl-id19393139.xyz 2. pl-id22799899.xyz 3. pl-id86574583.xyz
Toate cu legatura la:
Registrant Organization: LLC "TheHappiset" Registrant State/Province: Moscow Registrant Country: RU Registrant Phone: +7.9259953584 Registrant Email: drunkedman@protonmail.com Admin Phone: +7.9259953584
Se vad si prin codul sursa niste urme lasate de cine e defapt autorul acestor smecherii:
By NSCode | Telegram @Lunaticeee
Cu cateva legaturi pe diferite forumuri printre care:
https://youhack.xyz/threads/896237/
Nu stiu inca daca adresele lor si datele sunt adevarate, pentru ca nu cred ca cineva ar fi asa prostut sa lase urme chiar daca inselatoria aceasta e destul de slaba fata de altele din aceasta categorie.
Flow-urile sunt respectate destul de bine, ceea ce inseamna ca ei cunosc ceva legat de cum se desfasoara o tranzactie si ce inseamna Fan Curier in Romania. Prima chestie din acesta pagina analizata aici a fost destul de bulversanta, deoarece arata exact numele celui care probabil avea anuntul postat pe olx, cu adresa lui care probabil a fost furnizata folosind ceva tehnici de social engineering si titlul anuntului ca sa fie totul mai adevarat. Si un redirect direct intr-o pagina pentru card.
Avand in vedere ca pe moment toate lucrurile pareau in ordine pentru un individ ce musca plasa asta si ar parea ca nu s-a intamplat nimic sau aparea la sfarsitul scamatoriei o eroare ce era falsa si aia, trebuie luat in considerare faptul ca oamenii astia din spatele schemei de obicei nu fac mare lucru imediat dupa ce au primit niste date de carduri valide. Ci asteapta o perioada de timp pana se mai calmeaza apele si atunci incep sa faca ping la carduri si sa incerce diferite tranzactii cu tot felul de sume. Au existat cazuri in care cardurile au fost atent urmarite si atacul a aparut doar intr-un punct cand detinatorul real al cardului efectua multiple tranzactii, iar isi strecurau lucrurile printre tranzactiile valide.
Persoana ce a picat in aceasta plasa a fost ghidata sa faca anumite lucruri absolut necesare pentru a nu-si pierde banii, identitatea sau alte lucruri.
*Toate detaliile prezentate fac referire la un atac real si cat se poate de bine pus la punct. Informatiile au fost selectionate astfel incat o reproducere a atacului sau o greseala din pura curiozitate pentru cine citeste aceste lucruri sa nu poata aparea. Dar orice accesare a url-urilor/informatiilor prezentate trebuie sa fie pe deplin asumata.
Multumesc pentru publicarea acestui text! Azi m-a salvat de la a face o astfel de greseala!