Küsimus:
Kas viirused saavad oma koodi ka teistesse protsessidesse sisendada?
moomonkey
2011-09-19 05:33:43 UTC
view on stackexchange narkive permalink

Kas viirus võib tõesti protsessi sisestada oma koodi, nii et see jääb teie arvutis püsivalt püsima? Ainus viis selle tegelikult eemaldada on oma operatsioonisüsteemi uuesti installimine. Minu küsimus on, kuidas saab seda teha faili või protsessi kahjustamata?

jah, miks on Windowsil see DLL-i sisselaskefunktsioon? See võib muuta elu kuradiks.
@FirstNameLastName on turvalisuse mõttes kohutav, funktsionaalsuse poolest uhke.
@FirstNameLastName Kõigil suurematel operatsioonisüsteemidel on sarnane funktsioon.Isegi kui nad seda ei teinud, võite alati siluri lisada ja koodi käsitsi sisestada.Või laadige kernelmoodul ja muutke protsessi otse.See pole turvaauk.
Kuus vastused:
Nate Koppenhaver
2011-09-19 07:47:33 UTC
view on stackexchange narkive permalink

Võite kasutada DLL Injection'i koodi sisestamiseks teistesse protsessidesse, mõjutamata muid andmeid
(oleneb muidugi meetodist).

Muud võimalused hõlmavad õigustatud failide ümbernimetamist ja teisaldamist ning nende asendamist nakatunud versioonidega, käivituskirjetega jne, kuid need on käsitsi hõlpsasti eemaldatavad.

Ainus viis, mida ma mõelda saan, et saaksin püsivalt nakatada ilma isiklikult OS-i plaastreid või muid andmete muudatusi kasutamata, on käivituskirje abil laadida juurkomplekti draiver nagu Migbot või FU, mis sisaldab peitmiseks ka funktsioonikonke failid ja registrikanded, mis muudab käsitsi eemaldamise võimatuks.

Ainus alternatiiv on hoida tuumast eemal ja kasutada tavalist protsessi pahavara käitamiseks ning kasutada konksude rakendamiseks andmeid muutmata Windowsi sõnumikonke või muud sarnast.

Sellel lähenemisel on siiski ka varjukülg ... Userlandi konksusid on väga lihtne tuvastada, võrreldes kerneli OS-i plaastritega.

looduses kasutab pahavara mittemodifitseerivaid lähenemisviise, kuna varjatud vaatepunktidest on sellised plaastrid palju paremad (ja mõnikord isegi lihtsamad kui mittemodifitseeritavad konksud!).
YSY
2011-09-19 16:43:00 UTC
view on stackexchange narkive permalink

Küsite kahe erineva probleemi kohta.

Kas viirused saavad oma koodi teistesse protsessidesse ka tegelikult sisse süstida?

Vastus on: jah, nad saavad . DLL Injection abil saate koodi sisestada teistesse protsessidesse. See ei taga, et viirus laaditakse iga kord, kui arvuti käivitatakse, või et viirust ei suudeta tuvastada / lahti ühendada. See tähendab lihtsalt, et viirus töötab teise protsessi aadressiruumist (võimalik PE).

Kas see, et viirused sisestavad oma koodi teistesse protsessidesse, tagab kas need on "uuesti OS-i külge kinnitatud" kuni uuesti installimiseni?

Ei, kui neil pole mingeid võimalusi rootkit. Seal on mõned meetodid, mille abil juurkomplektid kinnituvad teie süsteemiga. Ühe meetodi kohta saate lugeda artiklist TDL4, kes kirjutab ise käivitamiseks MBR-i, tagades seega pahatahtliku koodi käitamise enne operatsioonisüsteemi algus.

Kui viirus on teada, peaksid enamik AV-sid selle käitumist ära tundma ja teie masina puhastama. Uute viiruste / juurkomplektide variantide jaoks võib pahavarakoodi eemaldamine tavaliste tööriistadega olla väga keeruline. Rootkitid töötavad ring-0-st (kerneli režiimis) draiverina, mille peate leidma ja keelama (tehke seda nakatamata operatsioonisüsteemist!).

Te ei saa DLL-i sisestada privileegidega, mis on teie omast privileegitumad, seega ei saa te seda privileegi eskaleerimiseks kasutada.Selle abil saate oma toiminguid segadusse ajada ja keelata kasutajal tegumihalduris ilmselge tapmise eesmärgi, kuid see selleks.
D.W.
2011-09-19 06:53:48 UTC
view on stackexchange narkive permalink

Jah, see on tõesti tõsi. Jah, viirus võib teie masina nakatada, nii et see jääb nakatatuks seni, kuni installite operatsioonisüsteemi uuesti.

Näiteks võib viirus installida ennast käivituskausta, nii et see taaskäivitatakse iga kord, kui käivitate arvuti . Samuti saab see muuta kettale salvestatud käivitatavaid faile, et asendada need nakatunud versiooniga, nii et iga kord, kui programmi käivitate, käivitatakse see juba nakatava viirusega.

Te ei öelnud, miks arvate, et viirused ei muuda failisüsteemis midagi ega muuda protsessi. Mõni viirus teeb kindlasti ühe või mõlemad neist.

user2213
2011-09-19 19:32:22 UTC
view on stackexchange narkive permalink

Ma arvan, et kõigepealt tasub mõista, mida tähendab OS-is protsessi käivitamine.

Linuxis on see PROT_READ | mõju PROT_WRITE | MMAP_PRIVATE süsteemikõnel mmap () . Täpsemalt ei kopeerita protsesse täielikult mällu - koodisegmendid on, samas kui ülejäänud on kaardistatud failisüsteemiga. Kui mõnda neist lehtedest mälus muudetakse, kopeeritakse need kõigepealt mällu. Seda nimetatakse ka "koopia kirjutamiseks". Siit järeldub, et jooksva protsessi muudatusi ei kirjutata automaatselt kettale mmap () (või Windowsi samaväärse) kaudu.

Lõpptulemusena peaksite ette kujutama, et tegelikult on kaks asja: kettal oleva programmi koopia (edaspidi kettapilt) ja mälus oleva protsessi koopia, mis asub selle virtuaalse mälu liivakastis (edaspidi "aadressiruum").

Protsessi aadressiruum ei ohusta ainult programmi ennast - see sisaldab ka jagatud teeke (DLL) ja paljudel juhtudel sisaldab pool virtuaalsest aadressiruumist OS-i asju, mida saate ei jõua (vaadake režiimi 2GB jagatud vs 4GB / 4GB. Kas olete kunagi mõelnud, miks Windowsis protsessid piirduvad 2GB-ga? Sellepärast). Programmi andmed, nagu virn ja "kuhja", on olemas ka virtuaalses aadressiruumis - mõlemad sisaldavad programmi andmeid.

Nii et nüüd on meil taust, siin on kaks võimalust protsessi muuta:

Käitusaja muudatused

See on tegelikult vähem modifikatsioone, kui võite arvata - tavaliselt on teie eesmärk kasutada kehva kodeeringut ja kasutada sisestusmeetodit, et saada protsessiaadressiruumi spetsiaalselt loodud sisend, mida tavaliselt nimetatakse "shell-koodiks", mille eesmärk anda kaugründajale terminaliviip (seega "kest"). See pole siiski ainus toiming, mida saate teha - saate teha kõike, alates kaugfailide allalaadimisest kuni registrisätete muutmiseni. Kui te ei käivita administraatori viipasid kaugkastidele, siis on teie eesmärk tõenäoliselt pakkuda suuremat kasulikku koormust, kui mahub sisendpuhvrisse ja täidate selle (allalaaditavate failide kasutamine toimib sel viisil brauseri pistikprogramme kasutades).

Sellel tehnikal on mitmeid variante, kuid kõik need hõlmavad hukkamisvoo muutmist, et juhtuks midagi tahtmatut ja ründajale tavaliselt kasulikku. Kopeerimisel kirjutamise seadistamise tulemusel jääb käivitatava faili kettal olev pilt puutumata, kuid on tõenäoline, et teete krahhi äsja ekspluateeritud protsessiga või tekitate mõne tõrke. Vaikne ärakasutamine on keeruline, kuid mitte võimatu.

Miks kõik mainivad DLL-i süstimist?

Noh, selgub, et mõned programmid on kirjutatud koos turvalisusega osana nende arendusprotsessist ja me ei saa neile mingeid prügi sisestada ja panna neid seda täitma. Seega on vaja muid tehnikaid. DLL Injection ehk Linuxis kasutatav LD_PRELOAD on protsess, mille abil jagatud objekt laaditakse enne kõiki teisi igasse või ainult ühe protsessi aadressiruumi. See annab teile koodi sihtprotsessi virtuaalsesse mällu, mis võib seejärel programmi teatud osi "haakida" (ümber suunata). Selle õpetusi on üsna lihtne leida. Seejärel saate protsessi enda huvides ära kasutada. Siiski vajate enamasti DLL-i kettal.

Selgub, et sellest ei piisanud nendele toredatele inimestele metasploitis, kellel on välja töötatud meetermõõtur, shellkood, mis on võimeline DLL-i mällu alla laadima ja siis seda süstima süsteemi.

Kettapiltide muutmine

Tõenäoliselt kasutate süsteemi sisenemiseks ülaltoodud tehnikat või selle variante ja edastate tõenäoliselt kasuliku koormuse kusagil ja veenduge, et see täidetakse. Kuid midagi muud, mida saate teha, on tegelikult kirjutada uus kettapilt, mida on muudetud teie valitud koormusega, üle süsteemi installitud teadaoleva programmi. Et seda edukalt teha, peate originaalkoodi hoolikalt ümber töötama ja oma ekspluateerimise lisama. Potentsiaalseid probleeme on kolm:

  1. Kui teete mõne vea, kukub programm tõenäoliselt kokku.
  2. Kui sihite väga muutlikku komponenti, on teil probleeme sihtmärgiga. Kas teie modifitseerimine töötab kõigil juhtudel ja kõigis stsenaariumides?
  3. Mõned programmid on spetsiaalselt loodud vastupanu katsetele neid ümber töötada või neid lappida. See on mängutööstuses üsna levinud praktika, et vältida ketaste kopeerimist. Te ei pruugi arvata, et kasutate midagi sel viisil kirjutatud. Sel juhul kutsun teid üles lugema vanilli skype 1. osa ja 2. osa jõupingutusi. Selgub, et skype'i autorid ei taha, et see oleks vastupidine. Selle kaitsetaseme tõttu on käivitatava faili edukalt muutmine palju raskem.

Tuuma lappimine - mis see on?

Paigutus on natuke paaritu sõna, mida kasutada. Tuumale rakendatuna tähendab see tavaliselt tuumalõime aadressiruumis olevate andmestruktuuride muutmist, et midagi varjata või saavutada mõni muu eesmärk, näiteks jälgimine.

Kuid ka tuumadel endal on kettapilte, seega on võimalik tuuma komponente, sealhulgas draivereid, sellisel viisil lappida. Jällegi on kettapiltide muutmine keeruline, kuid mitte võimatu.

Püsivuse ja uuesti installimise nõude kohta

Püsivus nõuab mingil hetkel kettale kirjutamist. Kui arvuti taaskäivitub, peate oma pahavara kuhugi salvestama. Protsessi (või tuuma) aadressiruumi kasutuskood kaob, nagu kogu RAM on taaskäivitamise vahel, nii et kui soovite jätkata taaskäivitamist, peate koodi uuesti laadima. See hõlmab juurkomplekte, mis peavad tagama ka nende uuesti laadimise.

Teil pole tehniliselt vaja opsüsteemi uuesti installida, isegi kui kriitilisi osi on muudetud - piisab vaid nende kriitiliste osade asendamisest. puhaste versioonidega (st Windowsi installiplaadilt). Miski pahavara kohta ei nõua, et peate uuesti installima. Kõik on seotud sellega, kui palju peate valima ja kui suure tõenäosusega olete kogu halva koodi eemaldanud. Sellisena on turvalisem uuesti installida. Seda ma teeksin ja soovitaksin ka kellelgi teisel.

Öelge mulle, et on mingeid kaitsemehhanisme ?!

Jah. Authenticode on loodud selleks, et vältida vana programmi muudatuste avastamata jäämist. Kerneli plaasterkaitse ( wikipedia) ( KKK) kaitseb kerneli andmestruktuure draiverite modifitseerimise eest. W ^ X, ASLR, Stack Canaries, Non Executable Stack jne kaitsevad töötavaid programme ilmsete muudatuste eest. Ükski neist pole täiuslik, kuid õigesti kasutatuna muudab see ekspluateerimise raskemaks.

Väga põhjalik, tore töö.
Rory Alsop
2011-09-19 12:34:27 UTC
view on stackexchange narkive permalink

Teie põhieeldus on vale - olete küsinud, kuidas saab viirus seda "faili või protsessi kahjustamata teha?"

Mitu korda seda ei juhtu - sageli tekib kahju. See ei ole sageli viirusekirjutaja mure - kõik sõltub nende eesmärkidest. Võib-olla soovivad nad, et viirus oleks väga varjatud - sel juhul proovivad nad seda hoolikamalt kirjutada, nii et ilmset mõju pole. Teinekord võivad nad lihtsalt soovida viiruse kiiret levikut ja nii võite saada väga lärmaka viiruse, mis kahjustab paljusid OS-i / rakendusi.

zedman9991
2011-09-19 19:39:31 UTC
view on stackexchange narkive permalink

Lisaks siin leiduvatele suurepärastele vastustele võtke arvesse ka seda, et pahavara võib püsida ka pärast operatsioonisüsteemi uuesti installimist. Kui süsteem on püsivara tasemel nakatunud (näiteks http://www.theregister.co.uk/2011/09/14/bios_rootkit_discovered), ei paranda teid operatsioonisüsteemi uuesti installimine. Seda tüüpi rünnak töötab väljaspool OS-i ja õnnestub, muutes komponente, mida OS tavaliselt kaudselt usaldab.



See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...