A gyakori víruskereső (tudomásom szerint) egyfajta brute force típusú módszert alkalmaz, ahol megszerzik a fájl kivonatát, és összehasonlítják ezer ismert vírus hash-szal. Csak szupergyors SSD-vel rendelkező szervereik vannak, és feltöltik a hashokat erre, és nagyon gyorsan keresnek, vagy teljesen tévedek a működésük megértésével.
Szerintem ön figyelembe véve azokat az online "antivírusokat", amelyek csak hasítanak, és meglehetősen gyengék az említett (sokkal hatékonyabb és fejlettebb) heurisztikus és szabályokon alapuló vírusellenes SmokeDispenser-hez képest. erős> az egy felhasználási eset ahol egy vírusfájlt küldtek sok embernek azonosak nak, és az Ön által használt AV motor olyan gyakran frissül, hogy a kivonatot korábban megkapja és tárolja találkozik a vírussal. Ebben az esetben például azonnal megjelölheti az e-mail mellékleteket vírus / adathalászat / ransomware / trójai programként, és ezt megteheti minimális számítási költséggel. Ha mindenképpen el kell olvasnia a teljes fájlt, és jó a kapcsolata (mindkét dolog azért, mert pl. levelezőszerver vagy), akkor a további I / O költség elhanyagolható .
Mivel ez az összes felhasználási eset kisebbsége, a (jó) antivírusok nem (csak) használnak kivonatokat.
A kivonat keresése azonban nagyon-nagyon gyors . Egyáltalán nincs szüksége SSD-kre vagy bármilyen kifinomult hardverre.
Képzelje el (még akkor is, ha nem éppen így működik ), hogy rendelkezik hexadecimális kivonattal, például 'baadc0debaadbaad' és ellenőrizni akarják, hogy van-e benne egy százmilliárd ot tartalmazó archívumban.
Az archívum létrehozásakor kétszázötvenhat könyvtárat hozott létre egy merevlemezen, és '00'-tól' ff'-ig (0 és 255 között tizedesjegyig) nevezte el őket. Mindegyikben létrehozott 256 könyvtárat, amelyek neve ismét „00” és „ff” között változott. És mindegyikbe ezek be ismét 256 könyvtárat tesz fel, és az AB / CD / EF forma minden harmadik szintű könyvtárába az összes abchdef kezdetű hash-t 256 fájlba osztva "00.txt" - "ff.txt".
Tehát a 'baadc0debaadbaad' hash egy "C: /ba/ad/c0/de.txt" fájlba kerül, amelynek szövege a következő:
... baadc0de81f872ac Ebola virusbaadc0debaadbaad Dark Avenger virusbaadc0debf31fe11 ismert tiszta fájl ...
Hány kivonat található ebben a fájlban? Ha a kivonatok egyenletesen oszlanak el, osszon el százmilliárdot a fájlok számával. 256 mappa van, 256 almappával, 256 almappával, 256 fájllal, tehát a fájlok száma 256 * 256 * 256 * 256 = 4294967296. Ennyi várhatóan átlagosan sok kivonat található ebben az egy fájlban.
Tehát ha kaptál egy kivonatot, és megkérted, hogy keresse meg a százmilliárd hash között kézzel erős >, akkor csak rá kell kattintania a megfelelő első szintű mappára, a másodikra, a harmadikra, megnyitni a megfelelő fájlt és elolvasni huszonnégy hash-t. Valószínűleg kevesebb, mint harminc másodperc alatt végez, és "látszólag" megvizsgálta hárommilliárd hasht másodpercenként . Kézzel. Magadtól. Lehetetlennek tűnik, csak jó adatszervezés.
A számítógép ugyanezt még hatékonyabban tudja megtenni.
Szabályalapú vizsgálat
Egy bonyolultabb eset hogyan lehet ismert és elemzett vírust keresni egy olyan fájl belsejében, amelyről (kezdetben) semmit sem tud.
Ebben az esetben az a tény segít, hogy az operatív rendszernek végre kell hajtania a vírust, így a vírus nem lehet csak bárhol - ott kell lennie, ahol az operatív rendszer aktívan meg fogja keresni. Jellemzően a vírus megfertőz egy futtatható fájlt azáltal, hogy elrejti valahová (pl. Egy adatterületen), és a futtatható terület elejét behívja magának. Ez azt jelenti, hogy a legtöbb esetben csak a futtatható területet kell átkutatnia, és gondoskodnia kell annak tisztaságáról (természetesen a vírusok állandóan előkerülnek a valószínűtlen helyeken való rejtőzés okos módjaival, így a valóság egy kicsit bonyolultabb mint az imént mondtam).
Az antivírus ugyanarra a helyre néz, és ebben az esetben szabályalapú elemzést végez a fájlon. Ez hasonló a hash kereséshez: megnézi az első bájtot, amellyel az érzékeny területen találkozik, és annak értéke alapján megnéz egy másik bájtot valahol máshol. Az ilyen műveletet végrehajtó algoritmust néha automatának hívják. Például annak megnézésére, hogy a szöveges karaktersorozat "Hello, Világ!" vagy "Támadás hajnalban", akkor ellenőrizze az első betűt; ha H lenne, akkor figyelmen kívül hagyná az "Attack at dawn" összes ellenőrzését. , 2 + 2 és 2 * 2) ugyanazt az eredményt adhatja, ezért további ellenőrzésekre van szükség ("Ha az első szó Hello, Howdy vagy Good ...") annak megállapításához, hogy találtál egy változatot a rettegő vírus Üdvözlet, Kozmosz! . Az öntitkos kódhoz valószínűleg vagy meg kell találnia egy algoritmust a kód megszakítására (ha ez nagyon rövid idő alatt megvalósítható), vagy pedig az ön-visszafejtési rutin felismerésére kell koncentrálnia, amely nélkül a vírus nem képes magát futtathatóvá tenni a rendszer által.
A választási fa gondos kiválasztásával azonban gyorsan konvergálhat akár egyetlen lehetőségre (a vírus neve), akár arra a bizalomra, hogy nincs ismert vírus.
Heurisztika
Ez a legbonyolultabb (és leglassabb) elemzésfajta, de a legerősebb is, mert lehetővé teszi, hogy erősen gyanakodjon egy eddig ismeretlen vírus jelenlétére. Gondolhat a heurisztika, mint sok kis szabályalapú felismerő; kicsi létszám esetén a sebesség növelése kompenzálja sokaságukat. Minden felismerő azonosít egy olyan műveletet végrehajtó kóddarabot, mint például a kód visszafejtése, a rendszer privilégiumainak megszerzése, a fájlok megnyitása és fájlba írása, a rendszerhívások összekapcsolása, a kód memóriába történő átírása, az operációs rendszerbe való behatolás és így tovább. Sok törvényes program elvégzi ezeket a dolgokat egy vagy több, vagy úgy tűnik, hogy ezt meg is teszi (például a visszafejtés és a a dekompresszió nagyon hasonlítanak egymásra. Néhány program titkosítva is van a szellemi tulajdon védelme és a rosszindulatú kódok elrejtése érdekében). Minden művelethez "pontszámot" állít be, és egy bizonyos küszöbérték fölötti futtatható kód gyanúsnak tekinthető.
A heurisztikus motorok pontos részletei természetesen ennél sokkal bonyolultabbak; egyensúlyba kell hozniuk a sebességet, a megbízhatóságot (amikor azt mondják, hogy gyanús, annak gyanúsnak kell lennie) és az érzékenységet (ha gyanús, akkor képesnek kell lenniük arra, hogy azt mondják, hogy gyanús).
Valójában Elég bonyolultak ahhoz, hogy általában a vírusirtó vállalatok szigorúan őrzött titkai, és gyakran „intelligensként” emlegetik egészen a „mesterséges intelligenciákig”.
A szabályok folyamatos frissítésének szükségessége (nincs értelme tíz évvel ezelőtt kihalt vírust keresni), és kevésbé sürgősen, de nem kevésbé fontos a heurisztika hangolása, ez az oka annak, hogy az antivírus alapvető paramétere "a minőség a frissítések gyakorisága (még akkor is, ha egy kiemelkedő heurisztikus motor lehetővé teszi a ritkább frissítéseket, és egy lehetetlenül tökéletes heurisztikus motorhoz egyáltalán nincs szükség).
Optimization
Ha víruskereső vagy, és képes olyan mértékben betölteni az operációs rendszer kerneljébe, hogy bármilyen lemezírási műveletet lehallgass, és biztosan tudod, hogy erre nincs az operációs rendszer indítása a kód aktiválása nélkül (azaz nem lehet blue-pilled ), akkor igaz, hogy a lemezen egyetlen fájl sem módosítható az ismereteid et. Ezen a ponton nyomon követheti, hogy mely fájlokat vizsgálták és találták tisztának, és csak azokat a fájlokat szkennelheti, amelyek a legutóbbi átvizsgálás óta módosultak, ami a teljes összeg nagyon kis hányada (és lehet figyelmen kívül hagyja a nem fertőzött folyamatok által végrehajtott lemezírásokat; mindaddig, amíg megengedi, hogy vannak olyan módszerek, amelyeken a pl. Javascriptben írt vírus képes lehet arra kérni egy másik folyamatot, például a WSCRIPT, hogy írjon a lemezre a nevében) .