Vytvorenie užívateľom známeho typu súboru pre R-Studio. Metódy detekcie "Lepené" súbory vyhľadávajú súbory stratených podpisov

Koncept " Magické číslo"V programovaní má tri významy:

  • Podpis údajov
  • Vybrané jedinečné hodnoty, ktoré by sa nemali zhodovať s inými hodnotami (napríklad UUID)
  • Zlé programovanie praxe.

Podpis údajov

Magické čísloalebo podpis- celé číslo alebo konštanta textu používaná na jednoznačnú identifikáciu zdrojov alebo údajov. Takéto číslo samo osebe neurobí žiadny zmysel a môže spôsobiť zmätok, ktorý sa stretol v programovom kódexe bez vhodného kontextu alebo komentára, s pokusom o zmenu na druhé, dokonca blízke hodnoty, môže viesť k absolútne nepredvídateľným následkom. Z tohto dôvodu boli takéto čísla ironicky nazývané magické. V súčasnosti je tento názov pevne stanovený ako termín. Napríklad akákoľvek kompilovaná trieda jazyka Java začína hexadecimálnemu "magickému číslu" 0xcafebabe. Druhý je dobre známy príklad - akýkoľvek súbor Microsoft Windows spustiteľný súbor s rozšírením .exe začína bajtovou sekvenciou 0x4D5A (čo zodpovedá ASCII -SIMVOLS MZ - Iniciály Mark Zbikovski, jeden z MS-DOS Creaters). Menej dobre známym príkladom je neinitializovaný ukazovateľ v Microsoft Visual C ++ (počnúc verziou programu Microsoft Visual Studio), ktorý v režime Debug má 0xDeadbeef adresu.

V operačných systémoch podobných UNIX je typ súboru zvyčajne určený podpisom súboru bez ohľadu na rozšírenie svojho mena. Ak chcete interpretovať podpis súboru v nich, je uvedený štandardný súbor súborov.

Programovanie zlého praxe

Tiež "magické čísla" sa nazývajú zlé programovanie praxe, keď sa v zdrojovom texte nachádza numerický význam a nie je zrejmé, že to znamená. Napríklad takýto fragment napísal v jazyku Java bude zlý:

kreslenie (53, 320, 240);

konečný int screen_width \u003d 640; Konečný int Screen_Height \u003d 480; Konečný int screen_x_center \u003d screen_width / 2; Konečný int Screen_y_Center \u003d SCREEN_HEIGHT / 2; Konečný Int sprite_crosshair \u003d 53; ... drawsPrite (sprite_crosshair, screen_x_center, screen_y_center);

Teraz je jasné: Táto línia prináša do stredu obrazovky Sprite - Cross-Trash. Vo väčšine jazykov programovania budú všetky hodnoty použité pre také konštanty vypočítané na fáze kompilácie a nahrádzajú sa používaním hodnôt. Preto takáto zmena v zdrojovom texte nepoškodzuje rýchlosť programu.

Okrem toho sú magické čísla potenciálnym zdrojom chýb v programe:

  • Ak sa v programe používa rovnaké magické číslo viac ako raz (alebo môže byť potenciálne použitý), potom jej zmena bude vyžadovať použitie každého vstupu (namiesto jedného editácie hodnoty pomenovanej konštanty). Ak nie všetky položky budú opravené, vyplýva sa aspoň jedna chyba.
  • Minimálne, v jednom z udalostí môže byť magické číslo napísané s chybou spočiatku, a je to ťažké zistiť.
  • Magické číslo môže závisieť od implicitného parametra alebo iného magického čísla. Ak tieto závislosti, nevyberajú výslovne, nebudú splnené, bude aspoň jedna chyba.
  • Pri úprave výskytov jedného magického čísla je možné mýliť ďalšie magické číslo, nezávislé, ale majú rovnakú číselnú hodnotu.

Magické čísla a krížová platforma

Niekedy magické čísla poškodzujú kódovú platformu. Faktom je, že v SI v 32- a 64-bitovom operačnom OS, veľkosti typov char, krátka a dlhá je zaručená, zatiaľ čo veľkosť Int, dlhá, veľkosť_T a ptrf_t sa môže líšiť (v prvých dvoch - v závislosti od Preferencie vývojárov kompilátorov, posledných dvoch - v závislosti od vypúšťania cieľového systému). V starých alebo nekvalifikovaných písomných kódoch, "magické čísla", čo znamená akýkoľvek typ veľkosti, pri prechode na stroje s ďalším bitom, môžu viesť k ťažkým chybám chyby.

Napríklad:

const Size_t Number_of_elements \u003d 10; Dlhé [number_of_ements]; Memset (A, 0, 10 * 4); // zle - je zrejmé, že dlho je 4 bajty, používa sa magický počet prvkov. Memset (A, 0, NUMBER_OF_ELENY * 4); // Nesprávne - to znamená, že dlho sa rovná 4 bajtom MEMANT (A, 0, NUMBER_OF_ELENY * SITEF (LONG)); // nie je úplne správna - duplikácia typu (ak sa typ zmení, potom sa budete musieť zmeniť) MEMANT (A, 0, NUMBER_OF_OOLEDENTY * SITEF (A [0])); // to je pravda, optimálne pre dynamické polia nenulovej veľkosti Memset (A, 0, SITEOF (A)); // Právo, optimálne pre statické polia

Čísla, ktoré nie sú magické

Nie všetky čísla musia byť prenesené do konštanty. Napríklad kód na

Vyhľadajte pri skenovaní súborov známych typov (alebo, ako sa hovorí, vyhľadávanie súborov s podpisom) je jedným z najúčinnejších používaných v nástroji R-Studio Data Recovery. Použitie daného podpisu vám umožňuje obnoviť súbory konkrétneho typu v prípade, keď čiastočne alebo úplne neprítomné (poškodené) informácie v adresárovej štruktúre a názvoch súborov.

Zvyčajne sa tabuľka diskových oddielov používa na definovanie umiestnenia súboru. Ak porovnáte disk s knihou, potom bude tabuľka oddielu podobná jeho obsahu. Pri skenovaní R-Studio vyhľadáva súbory známych typov v tabuľke diskov podľa konkrétnych špecifikovaných podpisov. Toto je možné z dôvodu skutočnosti, že takmer každý typ súboru má jedinečný podpis alebo šablónu údajov. Súborové podpisy sú na určitom mieste na začiatku súboru av mnohých prípadoch aj na konci súboru. Keď skenovanie R-Studio zhoduje s nájdenými údajmi so podpismi súborov známych typov, čo im umožňuje identifikovať a obnovovať ich údaje.

S pomocou skenovacích súborov známych typov R-Studio vám umožní obnoviť údaje z diskov, ktoré boli preformátované, ako aj úseky, ktoré boli prepísané. Okrem toho, ak je diskový oddiel prepísať, poškodený alebo odstránený, potom skenovanie súborov známych typov je jediným možným.

Ale takmer vždy a vo všetkých existujú nevýhody a súbory známych typov používaných v R-Studio nie sú výnimkou. Keď teda skenovanie súborov známych typov R-Studio umožňuje obnoviť iba súbory nefómy, ale ako už bolo spomenuté, vo väčšine je najnovšie možné metódy.

R-Studio už zahŕňa podpisy najbežnejších typov súborov (zobrazenie kompletného zoznamu súborov známych typov môže byť v sekcii R-Studio Online.)

V prípade potreby môže užívateľ pridať nové typy typov súborov do R-Studio. Napríklad, ak potrebujete nájsť súbory akéhokoľvek jedinečného typu, alebo navrhnuté po dátume posledného vydania R-Studio, môžete pridať svoje vlastné podpisy do súborov známych typov. Ďalej bude tento proces zvážiť.

Vlastné súbory slávnych typov
Vlastné podpisy súborov známych typov sú uložené v súbore XML zadané v dialógovom okne Nastavenia. Pridanie podpisu sa skladá z dvoch častí:

  1. Identifikujte podpis súboru na začiatku súboru a ak je na konci súboru.
  2. Vytvorenie súboru XML obsahujúceho súborový podpis a ďalšie informácie o type súboru.

To všetko môže byť vykonané pomocou R-Studio. V tomto prípade nemusíte byť špecialistom na prípravu (úpravy) XML dokumentov alebo v oblasti hexadecimálneho editácie - v tomto návode (článok), orientovaný na počiatočnú úroveň používateľa, všetky fázy tohto procesu budú podrobne.

Príklad: Pridanie podpisu pre formátovanie formátu MP4 (XDCAM-EX CODEC)
Zvážte pridanie podpisu súboru na príklad súboru.mp4 vytvorený pomocou Sony XDCAM-EX. Môže ho použiť napríklad v prípade poškodenia karty SD, že ste nemali čas na uloženie na pevnom disku počítača.

Prvá etapa: Definícia podpisu súboru
Ak chcete určiť podpis súboru, zvážte príklady súborov rovnakého formátu.

Nechajte tieto štyri video súbory so Sony XDCAM-EX:
ZRV-3364_01.mp4
ZRV-3365_01.mp4
ZRV-3366_01.mp4
ZRV-3367_01.mp4

Pre jednoduchosť zváženia, nech je to malé súbory. Väčšie súbory sú ťažšie zobraziť v hexadecimálnej forme.

1. Otvorte súbory v R-Studio. Ak to chcete urobiť, kliknite na každý súbor pomocou pravého tlačidla myši a vyberte položku Zobraziť / upraviť (Zobraziť / upraviť) kontextového menu.

2. Porovnať súbory. Budeme hľadať rovnakú šablónu, ktorá sa nachádza vo všetkých štyroch súboroch. On bude súbor Podpis. Spravidla sú súborové podpisy na začiatku súboru, ale niekedy na konci.

3. Určite podpis súboru na začiatku súboru. V našom príklade je to na samom začiatku súboru. Všimnite si, že sa vždy nestane - často je podpis súborov na začiatku súboru, ale nie v prvom riadku (posunutie).

Z nasledujúcich obrázkov vyplýva, že obsah všetkých štyroch súborov je iný, ale všetky začínajú s rovnakým podpisom súboru.


Kliknutím na obrázok ho zvýšite.


Kliknutím na obrázok ho zvýšite.


Kliknutím na obrázok ho zvýšite.


Kliknutím na obrázok ho zvýšite.

Vybraná oblasť na obrázkoch je podpisom súboru tohto typu súborov. Je reprezentovaný v oboch textoch aj hexadecimálnych.

Inv Text Form File Signature má nasledujúci formulár:
.... FTYPMP42 .... MP42 ........ zadarmo

Body (".") Zobrazia sa znaky, ktoré nie je možné prezentovať v textovom formulári. Preto je tiež potrebné dať hexadecimálny pohľad na podpis súboru:
00 00 00 18 66 74 79 34 32 6D 70 00 00 00 00 34 32 6D 00 70 00 00 00 00 00 00 08 66 72 65 65

4. Rovnakým spôsobom definujeme podpis súboru, ale na samom konci súboru. To môže byť ďalší podpis súborov, ďalšia dĺžka.

Obrázok podpis na konci súboru je zvýraznený na obrázkoch nižšie:


Kliknutím na obrázok ho zvýšite.


Kliknutím na obrázok ho zvýšite.


Kliknutím na obrázok ho zvýšite.


Kliknutím na obrázok ho zvýšite.

Upozorňujeme, že údaje sú pred vybranou oblasťou (súborový podpis), vo všetkých štyroch súboroch, rovnaké. Toto je technické informácie, ktoré nie sú súborom podpisu, ale naznačuje, že všetky štyri snímky (súbor) boli vykonané pomocou jednej kamery s rovnakými parametrami. Zvyčajne je možné rozlíšiť zhodné vzory s technickými informáciami zo súboru podpisu. V našom príklade v poslednom riadku pred začiatkom podpisu súboru vidíme text "Typ nahrávaniaMode \u003d" Normal ", čo jasne označuje, že je to nejaký druh parametra súboru, a nie podpis. Vždy venujte osobitnú pozornosť tomuto reťazcu na chybne, nezahŕňajte technické informácie do podpisu súboru.

V našom prípade je podpis súboru nasledujúci text:
...
Pripomeňme, že body označujú znaky, ktoré nie je možné prezentovať v textovom formulári.

V hexadeciálnej forme má podpis súboru nasledujúci formulár:
3N 2F 4E 6F 6E 52 65 61 6N 54 69 6A 65 4A 65 74 61 3E 0D 0A 00
Poznámka: Na konci súboru, podpis nie je vždy.

Druhá fáza: Vytvorenie súboru XML opisujúceho známy typ súboru
Teraz, definovaním podpisu súboru, môžete vytvoriť súbor XML a zapnúť príslušný typ súborov do R-Studio. To možno vykonať dvoma spôsobmi:

2.1 Používanie vstavaného editora podpisu súboru:
Vyberte položku Nastavenia (Nástroje) Menu (Nástroje), v dialógovom okne Nastavenia, ktoré sa otvorí, kliknite na známe typy súborov (známe typy súborov) a potom kliknite na položku Upraviť typy používateľov).

Kliknutím na obrázok ho zvýšite.

Kliknite na tlačidlo Vytvoriť typ súboru (Upraviť dialógové okno Upraviť používateľa.
Nastavte nasledujúce parametre:

  • ID je unikátny digitálny identifikátor. Toto číslo sa zvolení ľubovoľne; Jediný by sa nemal zhodovať s digitálnym identifikátorom akéhokoľvek iného typu súborov.
  • Popis skupiny je skupina, v ktorej budú nájdené súbory nachádzajúce sa v R-Studio. Môžete nastaviť buď novú skupinu, alebo si vybrať jeden z tých, ktorí sú už tam. Budeme mať túto skupinu "multimediálne video (multimédiá: video)".
  • Popis - stručný opis typu súborov. V našom príklade môžete použiť napríklad "Sony Cam Video, XDCAM-EX".
  • Rozšírenie - rozšírenie súborov tohto typu. V našom prípade - MP4.

Parameter vlastností (funkcie) je v našom prípade nepovinné, nemusíme ho používať.

Kliknutím na obrázok ho zvýšite.

Potom musíte zadať počiatočný a konečný podpis súboru. Ak to chcete urobiť, vyberte položku Štart (Začiatok) a potom v kontextovej ponuke Príkaz pridajte podpis (Pridať podpis).

Kliknutím na obrázok ho zvýšite.

Potom dvakrát kliknite na pole<пустая сигнатура> () A zadajte príslušný text.

Kliknutím na obrázok ho zvýšite.

Potom vytvorte konečný podpis súboru. Nezabudnite zadať 21 v poli stĺpcov z (z).

Kliknutím na obrázok ho zvýšite.

Úspešne ste vytvorili svoj vlastný podpis súborov známeho typu.

Teraz musíte uložiť. Existujú dva spôsoby: Môžete ho buď uložiť do predvoleného súboru zadaného na karte HOME (MAIN) v dialógovom okne Nastavenia (Sportenia) kliknutím na tlačidlo Uložiť. Buď kliknite na tlačidlo Uložiť ako ... (Uložiť ako ...) a uložte podpis do akéhokoľvek iného súboru.

2.2 Vytvorenie súboru XML opisujúceho dobre známy typ súboru, manuálne:
Ak chcete vytvoriť tento súbor, použite verziu XML verzie 1.0 a kódovanie UTF-8. Nenechajte sa zúfať, ak neviete, čo je - stačí otvoriť akýkoľvek textový editor (napríklad notepad.exe) av prvom riadku zadajte nasledujúci text:

Ďalej vytvoríme XML tag definujúcu typ súboru (FILETYPE). Berúc do úvahy predtým popísané atribúty značky XML bude vyzerať takto:

Vložte ho okamžite po

Ďalej definujeme podpis súboru (tag ). Počiatočný podpis (na začiatku súboru) bude vo vnútri značky bez akýchkoľvek atribútov. Používame textový pohľad na podpis, ale zároveň nahradiť hexadecimálne znaky, ktoré nemôžu byť zastúpené v textovom formulári. Pred každým hexadecimálnym symbolom vložka "x" tak tag So podpisom súboru bude vyzerať takto:

Ak potrebujete tiež definovať konečný podpis (na konci súboru). Na tento účel sa používa rovnaká značka, ale s "z atribútu" z ". Bude to vyzerať takto:

Pripomeňme, že v konečnom podpise súboru neexistovali žiadne symboly nonetu, bolo však naskladané a trojuholníkové konzoly. Aby ste predišli zmätkom a chybám v XML Syntax, nahradíme znaky podpisu "/", "<" и ">"Sú hexadecimálne.

Na konci podpisov súborov musíte obsahovať zatváranie značiek filetype a filetypelist:

Preto by mal celý súbor vyzerať takto:


X00 x00 x00 x18ftypmp42 x00 x00 x00 x00 x00 x00 x00 x08FREE
x3c x2fnonrealtimemeta x3e x0d x0a \\ x00

PAMÄTAJTE: XML Syntax je citlivá na register, preto bude tag správny , ale nie .

Uložte súbor do formátu textu s Extension.xml. Napríklad: sonycam.xml.

Úspešne sme vytvorili svoj vlastný podpis súborov známeho typu. Tento príklad je dosť dostatočný na pochopenie základných princípov vytvárania súboru typu užívateľa. Skúsenejší používatelia môžu používať XML verziu 2.0. Viac o tom si môžete prečítať v sekcii R-Studio Online Certificate.

Krok 3: Skontrolujte a pridajte súbor popisujúci známy typ súborov
V ďalšom kroku musíte pridať (prevzatie) svoj XML súbor do R-Studio. V tomto prípade sa automaticky overuje.

Upload do R-Studio vytvorené v predchádzajúcej fáze XML súboru. Ak to chcete urobiť, vyberte ponuku Nastavenia (Nastavenia) (Nastavenia). V oblasti kvality Typy súborov (Typy používateľa) Záložky HOME (MAIN) Nastavenia Dialógové okno (Nastavenia) Pridáme súbor XML vytvorený pomocou US (Sonycam.xml). Kliknite na tlačidlo Použiť.

Kliknutím na obrázok ho zvýšite.

2. Preskúmajte ÁNO (áno) na požiadavku na prevzatie nového typu súborov.

Kliknutím na obrázok ho zvýšite.

3. Ak chcete skontrolovať skutočnosť, že typ súborov bol úspešne načítaný, kliknite na Známe typy typov súborov (známe typy súborov) dialógového okna Nastavenia (Nastavenia). Pripomeňme, že sme pridali typ súboru na multimediálnu video skupinu (multimédiá: video). Otvorenie tejto skupiny (priečinok), musíme vidieť položku s popisom zadaným nami pri vytváraní súboru XML: Sony Cam Video, XDCAM-EX (.mp4).

Kliknutím na obrázok ho zvýšite.


Kliknutím na obrázok ho zvýšite.

Ak sú v syntaxi sú nejaké chyby, zobrazí sa príslušná správa:

Kliknutím na obrázok ho zvýšite.

V tomto prípade znova skontrolujte súbor XML znova. Pamätajte: XML Syntax je citlivá na register a pre každú značku na konci musí existovať záverečná značka.

Krok 4: Testovanie súboru popisujúceho známy typ súborov
Ak chcete skontrolovať správnosť užívateľsky vytvoreného súboru vytvoreného nami, poďme nájsť my.mp4 súbory na vymeniteľnej jednotke USB Flash.

1. V systéme Windows Vista alebo Windows 7 budete vykonávať kompletné (nie rýchle) formátovanie disku alebo pomocou pomôcky na čistenie disku (napríklad R-Wipe & Clean), aby ste úplne vymazali všetky dostupné údaje na dátovom disku. Nech je disk USB zdobený v FAT32 (veľkosť vyhľadávacích súborov nepresahuje 2 GB).

2. Registe testovacie súbory na disk a reštartujte počítač tak, aby sa obsah pamäte vyrovnávacej pamäte uložil na disku. Externý disk môžete tiež vypnúť a potom ho znova pripojiť.

3. Obsluha disku bude definovaný napríklad logický disk F: \\ t

4. Štart R-Studio. Vyberte náš disk (F:) a kliknite na tlačidlo Skenovať (Skenovanie)

Kliknutím na obrázok ho zvýšite.

5. V dialógovom okne skenovania (skenovanie) v systéme súborov kliknite na tlačidlo Upraviť ... (Zmena ...) a odstráňte všetky vlajky. Vypneme teda vyhľadávanie súborov a súborov pomocou tabuľky oddielov.
Kliknutím na obrázok ho zvýšite.

6. Začiarknite políčko Rozšírené vyhľadávanie typov súborov (extra vyhľadávanie známych typov súborov). To umožní, aby R-Studio vyhľadáva pri skenovaní súborov známych typov.

7. Ak chcete spustiť skenovanie, kliknite na tlačidlo Scan (Scan).

8. Počkajme, kým R-Studio skenuje disk. Na karte Informácie o skenovaní sa zobrazí skenovanie (pokrok).


Kliknutím na obrázok ho zvýšite.

9. Po dokončení skenovania vyberte Extra nájdené súbory (extra nájdené súbory) a dvakrát kliknite naň.


Kliknutím na obrázok ho zvýšite.

10. Naše testovacie súbory budú umiestnené v priečinku Sony Cam Video, XDCAM-EX priečinok (alebo v priečinku pod inom mene, zodpovedajúce popisu typu súborov uvedených v druhej etape).


Kliknutím na obrázok ho zvýšite.

Vidíte, že názvy súborov, dátumy a lokality (priečinky) neboli obnovené, pretože tieto informácie sú uložené v systéme súborov. Preto sa v R-Studio automaticky zobrazí každý súbor s novým menom.

Je však možné vidieť, že obsah súborov nie je poškodený. Aby ste sa uistili, že ich otvoríte v príslušnom programe, napríklad prehrávač médií VLC.


Kliknutím na obrázok ho zvýšite.

Záver
Možnosť R-Studio pri skenovaní, vyhľadávanie známych typov umožňuje obnoviť údaje dokonca z disku, ktorého súborové systémy alebo alebo prepísané. Môžete efektívne vyhľadávať súbory pomocou ich podpisov, ktoré je obzvlášť užitočné, ak ste presný známy pre typ obnovených súborov, napríklad v našom príklade. Schopnosť vytvoriť vlastné typy súborov vám umožňuje pridať ľubovoľný súbor s konkrétnym podpisom súboru do zoznamu súborov známych typov.

Šéfovia mi dávajú skôr zaujímavú úlohu. V krátkom čase napíšte analyzátor spustiteľných súborov, ktoré by boli schopné nájsť vírusy telo a určiť použitý balík / kryptor. Hotový prototyp sa objavil za pár hodín.

Slovo autora

Analýza alarmu

Vyhľadávanie škodlivých podpisov objektov je to, čo môže antivírus. Všeobecne platí, že podpis je formalizovaný popis niektorých funkcií, ktoré môžu určiť, že naskenovaný súbor je vírus a vírus je úplne definovaný.

Tam sú rôzne techniky. Ako možnosť, použite podpis zložený z n bajtu škodlivého objektu. V tomto prípade je možné nie je to hlúpe porovnanie, ale porovnanie pre nejakú masku (ako napríklad vyhľadávacie bytes eb ?? CD 13). Alebo nastavte ďalšie podmienky, ako napríklad ", bajty by mali byť na vstupnom mieste programu" a tak ďalej. Podpis Malvivy je osobitne.

Podobne sú opísané niektoré znaky, v ktorých je možné určiť, že spustiteľný súbor je zabalený s konkrétnym kryptorom alebo balíkom (napríklad banálnym apackom). Ak si starostlivo prečítate náš časopis, som len počul o takomto nástroj ako peid, schopný určiť najčastejšie používané balíky, kryptéry a kompilátory (v databáze existuje veľký počet podpisov) pre súbor PE prenesený. Bohužiaľ, nové verzie programu neopúšťajú dlhú dobu, a nedávno sa správa objavila na oficiálnych stránkach, že projekt nebude ďalej rozvíjať. Je to škoda, pretože možnosti peidu (najmä vzhľadom na pluginový systém) by mohli byť pre mňa užitočné. Po krátkej analýze sa objasnilo, že to nie je možnosť. Ale bojujem v anglicky hovoriacich blogoch, rýchlo som zistil, čo som prišiel. Project Yara (code.google.com/p/yara-project).

Čo je YARA?

Bol som presvedčený o samom začiatku, že niekde v sieti už existuje otvorený vývoj, ktorý by prevzal úlohu určovania zhody medzi niektorým podpisom a podomovým štúdiom. Ak by som mohol nájsť takýto projekt, mohol by byť ľahko umiestnený na koľajnice webovej aplikácie, pridať rôzne podpisy tam a dostať to, čo bolo od mňa potrebné. Plán sa začal zdať ešte reálnejšie, keď som čítal popis projektu YARA.

Samotní vývojári ho umiestnia ako nástroj na pomoc nástrojom Malvari v identifikácii a klasifikácii škodlivých vzoriek. Výskumný pracovník môže vytvoriť popisy pre iný typ zlomyseľnosti pomocou textových alebo binárnych vzorov, ktoré opisujú formalizované príznaky Malvari. Získajú sa teda podpisy. V skutočnosti každý opis pozostáva zo súboru riadkov a určitého logického výrazu, na základe ktorých sa stanoví analýza analyzátora.

Ak sú podmienky jednej z pravidiel splnené pre súbor podľa štúdie, je definovaná zodpovedajúcim spôsobom (napríklad takýto niečo). Jednoduchý príklad pravidla na pochopenie toho, o čom záleží:

pravidlo Silent_banker: Banker
{
Meta:
Popis \u003d "Toto je len príklad"
Thread_level \u003d 3.
in_the_wild \u003d true.
Reťazce:
$ a \u003d (6A 40 68 00 30 00 00 6A 14 8D 91) \\ t
$ B \u003d (8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9)
$ C \u003d "uvodfrysihlnwpejxqzakcbgmt"
Stav:
$ A alebo $ B alebo $ C
}

V tomto pravidle hovoríme YARA, že akýkoľvek súbor, ktorý obsahuje aspoň jeden z riadkov-vzoriek opísaných v $ A, $ B, $ C premenných by mali byť klasifikované ako Silent_banker Trojan. A toto je veľmi jednoduché pravidlo. V skutočnosti, valce môžu byť oveľa zložitejšie (budeme hovoriť o tom nižšie).
Úrad projektu YARA hovorí aj zoznam projektov, ktoré ho používajú, a to je:

  • Služby virustantotal Malware Intelligence (VT-MIS.com);
  • jsunpack-n (jsunpack.Jeek.org);
  • Wewatchyourwebsite.com).

Všetok kód je napísaný v Pythone a užívateľ ponúka samotný modul na použitie vo svojom vývoji a jednoducho spustiteľný súbor na použitie YARA ako nezávislá aplikácia. V rámci svojej práce som si vybral prvú možnosť, ale pre jednoduchosť v článku použijeme analyzátor jednoducho ako aplikácia konzoly.

Rýchlo som si myslel, ako písať pravidlá Yara, ako aj na upevnenie podpisu vírusov z voľnej Avra \u200b\u200ba Peid Packers. Začnime však s inštaláciou.

Inštalácia

Ako som povedal, projekt je napísaný v Pythone, takže môže byť ľahko nainštalovaný na Linuxe a na Windows a na Mac. Najprv si môžete vziať binárne. Ak zavoláte aplikáciu v konzole, dostaneme pravidlá pre spustenie.

$ yara.
Použitie: Yara ... ... súbor | Píjaný

To znamená, že formát programu Formát je nasledovný: Po prvé, názov programu prichádza, potom zoznam možností, po ktorom je súbor s pravidlami zadaný, a na konci - názov štúdie podľa štúdia (alebo adresár obsahujúce súbory) alebo identifikátor procesu. Teraz by bolo dobré vysvetliť, ako sú tieto nastavenia zostavené, ale nechcem vás okamžite odoslať so suchou teóriou. Preto budeme pokračovať inak a ohroziť podpisy iných ľudí, takže YARA môže vykonať jednu z úloh, ktoré ste doručili - úplnú definíciu vírusov podpisom.

Jeho antivírus

Najdôležitejšou otázkou je miesto, kde vziať základné podpisy slávnych vírusov? Antivírusové spoločnosti sú aktívne rozdelené takýmito základmi medzi sebou (niekomu veľkoryso, niekto je menej). Aby som bol úprimný, najprv som dokonca pochyboval, že niekde na sieti niekto otvorene rozloží takéto veci. Ale ako sa ukázalo, sú tu dobrí ľudia. Vhodná základňa z populárneho anti-vírusu klamav je k dispozícii všetkým (clamav.net/lang/en). V najnovšej časti stabilného vydania nájdete odkaz na najnovšiu verziu antivírusového produktu, ako aj odkazy na sťahovanie vírusových základov klamav. V prvom rade budeme mať záujem o main.cvd súbory (db.local.clamav.net/main.cvd) a Daily.cvd (db.local.clavd.net/daily.cvd).

Prvý obsahuje hlavnú databázu s podpisom, druhá je najčastejšia základňa s rôznymi dodatkami. Pre stanovený cieľ je data.cvd dosť dosť, v ktorom sa zhromažďuje viac ako 100 000 žalúzií. Základňa ClamAV však nie je základňa YARA, takže ho potrebujeme previesť na požadovaný formát. Ale ako? Koniec koncov, stále nevieme o formáte ClamAV, ani o formáte YARA. Tento problém sa o nás už postaral, pripravoval sa s malým písmom, premenutím databázy podpisu klamav virus na súbor pravidiel YARA. Skript sa nazýva clamav_to_ yara.py a napísané Matthew Richard (bit.ly/ij5hvs). Stiahnite si skript a previesť databázy:

$ Python clamav_to_yara.py -f daily.cvd -o clamav.yara

Výsledkom je, že v súbore klamav.yara získame podpisovú databázu, ktorá bude okamžite pripravená na použitie. Teraz vyskúšame kombináciu YARA a CLAMAV základov v akcii. Skenovanie priečinka pomocou podpisu sa vykonáva jedným príkazom:

$ yara -r clamav.yara / PENTEST / MSF3 / ÚDAJE

Voľba-R znamená, že skenovanie sa musí vykonávať rekurzívne pre všetky podpriečinky aktuálneho priečinka. Ak priečinok / penest / msf3 / dáta mali nejaké vírusy (aspoň tie v základni klamav), potom ju YARA okamžite oznámí. V zásade ide o pripravený podpisový skener. Pre väčšie pohodlie som napísal jednoduchý skript, ktorý skontroloval aktualizáciu základne klamav, stiahol nové podpisy a prevedie ich na formát YARA. Ale toto sú detaily. Jedna časť úlohy je dokončená, teraz môžete pokračovať, aby ste vypracovali pravidlá určenia balíkov / kryptorov. Ale pre to som musel trochu zistiť.

Hra podľa pravidiel

Pravidlo je teda hlavným mechanizmom programu, ktorý vám umožní pripisovať zadaný súbor do ktorejkoľvek kategórie. Pravidlá sú opísané v samostatnom súbore (alebo súboroch) a vo svojom pohľade veľmi podobajú štruktúru štruktúry () z jazyka C / C ++.

pravidlo badboy
{
Reťazce:
$ a \u003d "win.exe"
$ B \u003d "http://foo.com/badfi le1.exe"
$ c \u003d "http://bar.com/badfi le2.exe"
Stav:
$ A a ($ B alebo $ C)
}

V zásade nič zložité v písaní pravidiel. Ako súčasť tohto článku sa dotkol hlavných bodov a nájdete podrobnosti v Manul. Medzitým, desať najdôležitejších bodov:

1. Každé pravidlo začína pravidlom kľúčového slova, po ktorom prichádza identifikátor pravidla. Identifikátory môžu mať rovnaké mená ako premenné v C / C ++, ktoré sú pozostávajúce z písmen a číslic a prvý znak nemôže byť číslicou. Maximálna dĺžka názvu identifikátora je 128 znakov.

2. Zvyčajne sa pravidlá pozostávajú z dvoch sekcií: Definície Sekcia (reťazce) a podmienka (podmienka). V časti reťazcov sa údaje uvádzajú na základe ktorého sa riešenie urobí v časti Stav, či zadaný súbor spĺňa určité podmienky.

3. Každý reťazec v sekcii reťazcov má svoj vlastný identifikátor, ktorý začína od $ Sign - všeobecne, ako premenná reklamy v PHP. YARA podporuje obvyklé čiary uzavreté v dvojitých úvodzovkách ("") a hexadecimálnymi linkami uzatvorenými v kučeravých zátvorkách (()), ako aj regulárnych výrazoch:

$ My_text_string \u003d "Text tu"
$ My_hex_string \u003d (E2 34 A1 C8 23 FB)

4. Sekcia stavov obsahuje všetky logiky pravidiel. Táto časť musí obsahovať logický výraz, ktorý určuje, v takom prípade spĺňa pravidlo alebo proces. Zvyčajne v tejto časti existuje výzva na predtým oznámené riadky. Identifikátor reťazca je považovaný za logickú premennú, ktorá sa vráti TRUE, ak sa reťazec bol nájdený v súbore alebo procesnej pamäti a false inak. Vyššie uvedené pravidlo určuje, že súbory a procesy obsahujúce reťazec Win.exe a jednu z dvoch URL musia byť pripísané v kategórii Badboy (podľa názvu pravidla).

5. Hexadecimálne riadky vám umožňujú používať tri návrhy, ktoré ich robia flexibilnejšie: substitúcie (zástupné znaky), pásma (skoky) a alternatívny výber (alternatívy). Substitúcie sú miesta v reťazci, ktoré nie sú známe, a na ich mieste môže byť akýkoľvek význam. Označujú symbol "?"

$ HEX_STRING \u003d (E2 34 ?? C8 A? FB)

Tento prístup je veľmi pohodlný pri špecifikovaní reťazcov, ktorých dĺžka je známa a obsah sa môže líšiť. Ak časť linky môže mať rôznymi dĺžkami, je vhodné použiť rozsahy:

$ hex_string \u003d (F4 23 62 B4)

Tento záznam znamená, že uprostred čiary môže byť od 4 do 6 rôznych bajtov. Môžete tiež implementovať alternatívnu voľbu:

$ hex_string \u003d (F4 23 (62 B4 | 56) 45)

To znamená, že na scéne tretieho bajtu môže byť 62 B4 alebo 56, takýto záznam zodpovedá struny F42362B445 alebo F4235645.

6. Ak chcete overiť, či je zadaný reťazec na špecifickom posunu v súbore alebo adresný priestor procesu, používa sa operátor v:

$ A na 100 a $ B na 200

Ak môže byť reťazec vo vnútri určitého rozsahu adries, použije sa:

$ A IN (0..100) A $ B IN (100.FI LESIDE)

Niekedy existujú situácie, keď je potrebné určiť, že súbor musí obsahovať konkrétne číslo zo zadanej súpravy. Toto sa vykonáva pomocou prevádzkovateľa:

pravidlo Ofexample1
{
Reťazce:
$ foo1 \u003d "Dummy1"
$ foo2 \u003d "Dummy2"
$ foo3 \u003d "dummy3"
Stav:
2 z ($ foo1, $ foo2, $ foo3)
}

Pravidlo vyžaduje, aby súbor obsahuje všetky dva riadky zo súboru ($ foo1, $ foo2, $ foo3). Namiesto určenia konkrétneho počtu riadkov v súbore môžete použiť akékoľvek premenné (aspoň jeden riadok zo zadanej súpravy) a všetky (všetky riadky z danej súpravy).

7. No, posledná zaujímavá príležitosť zvážiť, je aplikovať jednu podmienku na mnohé riadky. Táto funkcia je veľmi podobná štátnemu operátorovi, len silnejší je operátor pre ...

pre expresiu string_set: (boolean_expression)

Tento záznam sa musí čítať takto: Z reťazcov špecifikovaných v String_ Set, aspoň expresné kusy musia spĺňať stav boolean_expression. Alebo inými slovami: expresia boolean_expression sa vypočíta pre každý riadok od string_set a vyjadrenie ich sa musí vrátiť na true. Ďalej tento dizajn považujeme za konkrétny príklad.

Robiť peid.

Takže, keď je všetko menej jasné s pravidlami, môžete pokračovať v implementácii v našom projekte detektora balíkov a kryptov. Ako východiskový materiál najprv som si požičal podpisy známych balíkov z tej istej peidov. V priečinku Plugins je súbor userdb.txt, ktorý obsahuje to, čo potrebujeme. V mojej databáze ukázalo 1850 podpisov.

Veľa, takže aby som ich plne dovážal, odporúčam vám napísať nejaký pictor. Formát tejto databázy je jednoduchý - použije sa obvyklý textový súbor, v ktorom sú uložené záznamy formulára:


Podpis \u003d 50 e8 ?? ?? ?? ?? 58 25 ?? FF FF 8B C8 83 C1 60 51 83 C0 40 83 EA 06 52 FF 20 9D C3
Ep_only \u003d true.

Prvý reťazec nastaví názov baliarne, ktorý sa zobrazí v Peid, pre nás to bude identifikátor pravidla. Druhým je samotný podpis. Tretia je vlajka EP_ONLY, ktorá označuje, či sa má hľadať tento reťazec len na adresu vstupného bodu alebo v celom súbore.

No, skúsime vytvoriť pravidlo, povedzme, pre Aspack? Ako sa ukázalo, nie je nič komplikované. Najprv vytvorte súbor na ukladanie pravidiel a zavolajte ho, napríklad packers.Yara. Potom hľadáme v peid databáze všetky podpisy, v názve, ktorý sa javí ako Aspack a niesť ich do pravidla:

pravidlo Aspack
{
Reťazce:
$ \u003d (60 e8 ?? ?? 5D 81 ed ?? (43 | 44) ?? B8 ?? (43 | 44) ?? 03 C5)
$ \u003d (60 eb ?? 5d eb ?? FF ?? ?? ?? E9)
[.. vyrezať ..]
$ \u003d (60 E8 03 00 00 E9 EB 04 5D 45 55 C3 E8 01) \\ t
Stav:
Pre niektorý z nich: ($ v evidencii)
}

Všetky zistené záznamy Vlajka EP_ONLY je nastavená na true, to znamená, že tieto riadky musia byť umiestnené na adrese vstupného bodu. Preto píšeme nasledovnú podmienku: "Pre niektorý z nich: ($ v evidencii)."

Preto prítomnosť aspoň jedného zo zadaných riadkov na adresu vstupného bodu bude znamenať, že súbor je balený Aspack. Tiež pozornosť, že v tomto pravidle sú všetky riadky jednoducho nastavené pomocou znamenia $, bez identifikátora. To je možné, pretože v podmienkach nekontajníme niektoré konkrétne, ale používame celú sadu.

Ak chcete skontrolovať výkon získaného systému, stačí vykonať príkaz v konzole:

$ Yara -r packers.yara niektorí le.exe

Právo tam pár aplikácií, balené Aspack, som sa uistil, že všetko funguje!

Hotový prototyp

YARA bol mimoriadne jasný a transparentný nástroj. Nevykonal som veľa ťažkostí, aby som pre neho napísal a založil prácu ako webovú službu. Niektoré kreatívne a suché výsledky analyzátora sú už natreté rôznymi farbami, označujúcim stupeň nebezpečenstva nájdenej nadácie. Malá aktualizácia databázy a stručný popis je k dispozícii pre mnoho kryptorov, a niekedy dokonca rozbaľujú pokyny. Prototyp je vytvorený a funguje zrušené a šéfovia tancujú z radosti!

Funkčný kód (FC) v hlavičke telegramu identifikuje typ telegramu, ako je požiadavka telegram (požiadavka alebo odosielanie / požiadavka telegram (potvrdzovací rám, rám odozvy). Okrem toho funkčný kód obsahuje aktuálnu funkciu prenosu a riadiace informácie, ktoré zabraňujú strate a duplikácii správ alebo typu stanice so stavom FDL.

7 6 5 4 3 2 1 0 FC: Žiadosť o funkciu
1 Žiadosť Telegramm.
X. FCV \u003d striedavý bit zapnutý
X. hREF \u003d "http://profibus.felser.ch/en/funktionsCode.htm#auffffulgebit»\u003e FCB \u003d striedavý bit (z počtu rámov)
1 0 (0x0) CV \u003d Hodnota hodín ()
1 iný Rezervovaný
0 0 (0x0) TE \u003d Time Event (Hodiny Synchronizácia)
0 3 (0x3) SDA_LOW \u003d odoslať údaje potvrdené - nízka priorita
0 4 (0x4) Sdn_low \u003d odoslať údaje nie sú potvrdené - nízka priorita
0 5 (0x5) SDA_HIGH \u003d odoslať údaje potvrdené - vysoká priorita
0 6 (0x6) Sdn_high \u003d odoslať údaje nie sú uznané
0 7 (0x7) MSRD \u003d odosielať údaje o žiadosti s multicastovou odpoveďou
0 9 (0x9) Vyžiadajte si stav FDL.
0 12 (0xc) SRD LOW \u003d odoslať a požiadať o údaje
0 13 (0xd) SRD HIGH \u003d odoslať a požiadať o údaje
0 14 (0xE) Žiadosť o odpoveď
0 15 (0xf) Žiadajte stav LSAP s odpoveďou 1)
0 iný Rezervovaný

1) Táto hodnota je v poslednej verzii štandardu, ktorá nie je definovaná, ale vyhradená

7 6 5 4 3 2 1 0 FC: Reakcia funkcie
0 Telegram odozvy
0 Rezervovaný
0 0 Otrok.
0 1 Majster nie je pripravený.
1 0 Master pripravený, bez tokenu
1 1 Master Ready, V Token Ring
0 (0x0) Ok.
1 (0x1) UE \u003d Chyba používateľa
2 (0x2) Rr \u003d žiadne zdroje
3 (0x3) RS \u003d SAP nie je povolené
8 (0x8) DL \u003d Nízke údaje (Normálny prípad s DP)
9 (0x9) Nr \u003d nie sú pripravené žiadne údaje o odpovedi
10 (0xa) DH \u003d High Data High (DP DIAGNOSHÓN
12 (0xc) RDL \u003d údaje nie sú prijaté a údaje s nízkymi údajmi
13 (0xd) RDH \u003d Údaje, ktoré neboli prijaté a vysoké údaje
iný Rezervovaný

Počet rámov bit CABT BIT FCB FCB FCB (B5) zabraňuje duplicite správ potvrdiacou alebo reagovanou stanicou (respondent) a akúkoľvek stratu podľa volacej stanice (iniciátora). Vylúčené z toho sú požiadavky bez potvrdenia (SDN) a stavu FDL, požiadavky na stav identifikácie a LSAP.

Pre sekvenciu bezpečnosti musí iniciátor prepravovať FCB pre každý respondent. Keď je požiadavka telegram (požiadavka alebo odosielanie / požiadavka) odoslaná na respondent prvýkrát, alebo ak je znovu odoslaný na respondent, ktorý je v súčasnosti označený ako non-operačný, FCB musí byť nastavený tak, ako je definované v Respondent. Iniciátor to dosahuje v telegram žiadosti s FCV \u003d 0 a FCB \u003d 1. Responder musí hodnotiť telegram tohto druhu ako prvá správa a uložiť FCB \u003d 1 spolu s adresou iniciátora (SA). Tento cyklus správy neopakuje iniciátorom. V nasledujúcich požiadavkách telegramy na rovnaký respondent musí iniciátor nastaviť FCV \u003d 1 a zmeniť FCB s každou novou žiadosťou telegram. Akýkoľvek respondent, ktorý prijíma žiadosť telegram adresovaným s FCV \u003d 1, musí vyhodnotiť FCB. Ak sa FCB zmenil v porovnaní s rovnakým iniciátorom (rovnaký SA), toto je platné potvrdenie, že predchádzajúci cyklus správy bol ukončený správne. V prípade, že požiadavka telegram pochádza z iného iniciátora (iná SA), hodnotenie FCB už nie je úsek. V oboch prípadoch musí respondent uložiť FCB so zdrojom SA až do prijatia nového telegramu adresovaného. V prípade strateného alebo zhoršeného potvrdenia alebo telegramu odpovedí sa FCB nesmie meniť iniciátorom v predchádzajúcej fóliu správ bola chybná. Ak Responder dostane požiadavku telegram s FCV \u003d 1 a rovnakým FCB ako rovnaký iniciátor (rovnaký SA), to bude indikovať žiadosť opakovať. Respondent musí zase retransmit potvrdenie alebo telegram reakcie držaný v pripravenosti. Až do vyššie uvedeného potvrdenia alebo prijatia telegramu s inou adresou (SA alebo DA), ktorá nie je potvrdená (odoslať údaje bez potvrdenia, SDN) Responder musí mať posledné potvrdenie alebo telegram odpovede v pripravenosti na akúkoľvek možnú žiadosť opakovať . V prípade telegramov žiadostí, ktoré nie sú potvrdené a s požiadavkou FDL status, stav a stav LSAP, FCV \u003d 0 a FCB \u003d 0; Hodnotenie respondentom už nie je potrebné.

b5. b4. Bitka
FCB. FCV. Stav Význam. Akcie.
0 0 Da \u003d ts / 127 Žiadosť bez potvrdenia
Požadovať stav FDL / IDENT / LSAP
Vymazať posledné potvrdenie
0/1 0/1 Da # ts. Žiadosť o inú respondentov
1 0 Da \u003d ts. Prvá požiadavka FCBM: \u003d 1
Sam: \u003d sa
Odstránenie posledného zaznamenania / odozvy
0/1 1 Da \u003d ts.
SA \u003d SAM
FCB # FCBM.
Nová požiadavka Odstránenie posledného zaznamenania / odozvy
FCBM: \u003d FCB
Držte zaznamenanie / odozvu v pripravenosti na opakovanie
0/1 1 Da \u003d ts.
SA \u003d SAM
FCB \u003d FCBM.
Požiadavka na opakovanie FCBM: \u003d FCB
Opakovanie priznania / odozvy a pokračujte v pripravenosti
0/1 1 Da \u003d ts.
SA # SAM.
Nový iniciátor FCBM: \u003d FCB
Sam: \u003d SA Držte potvrdenie / odozva v pripravenosti na opakovanie

FCBM uložená FCB v pamäti Sam uložená SA v pamäti

Mnohí počujú o takýchto súboroch ako Rarjpeg "a. Toto je špeciálny typ súborov, čo je lepený blízky JPEG obraz a rar Archív. Je to vynikajúci kontajner na skrytie faktu na prenos informácií. Vytvorte Rarjpeg pomocou nasledujúcich príkazov :

UNIX: mačka image1.jpg archive.rar\u003e image2.jpg
Windows: kopírovanie / b image1.jpg + archive.rar image2.jpg

Alebo v prítomnosti hexovaného editora.

Samozrejme, nielen formát JPEG je možné použiť na skrytie prenosu informácií informácií, ale mnoho ďalších. Každý formát má svoje vlastné vlastnosti, vďaka ktorému môže byť vhodné alebo nie pre úlohu kontajnera. Popisujem, ako môžete nájsť lepené súbory v najobľúbenejších formátoch alebo špecifikovať skutočnosť lepenia.

Metódy detekcie lepených súborov môžu byť rozdelené do troch skupín:

  1. Spôsob kontroly oblasti po EOF-markere. Mnoho populárnych formátov súborov má takzvanú značku koncového súboru, ktorý je zodpovedný za zobrazenie požadovaných údajov. Napríklad programy na prezeranie fotografií si prečítajú všetky bajty až do tejto značky, avšak oblasť po zostáva ignorovaná. Táto metóda je ideálna pre formáty: JPEG, PNG, GIF, ZIP, RAR, PDF.
  2. Spôsob kontroly veľkosti súboru. Štruktúra niektorých formátov (audio a video kontajnerov) vám umožňuje vypočítať aktuálnu veľkosť súboru a porovnajte ho s pôvodnou veľkosťou. Formáty: AVI, WAV, MP4, MOV.
  3. Spôsob kontroly súborov CFB. CFB alebo súborový súbor binárny formát - formát dokumentov vyvinutý v Microsoft, ktorý je kontajner s vlastným súborovým systémom. Táto metóda je založená na anomáliách objavovania v súbore.

Po skončení súboru je nejaký život?

Jpeg

Ak chcete nájsť odpoveď na túto otázku, je potrebné prehĺbiť v špecifikácii formátu, čo je "Springchart" lepených súborov a porozumieť jej štruktúre. Akýkoľvek JPEG začína s podpisom 0xff 0xD8.

Po tomto podpise je servisné informácie, voliteľne ikona obrazu a konečne, samotný komprimovaný obraz. V tomto formáte je koniec obrazu označený dvojtaktovým 0xff 0xD9 podpisom.

Png.

Prvý osem bajtov súboru PNG má nasledujúci podpis: 0x89, 0x50, 0x4e, 0x47, 0x0D, 0x0a, 0x1a, 0x0a. Koncový podpis, ktorý ukončí tok dát: 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82.

Rar

Celkový podpis pre všetky RAR ARCHIVES: 0x52 0x61 0x72 0x21 (RAR!). Po ňom sú k dispozícii informácie o verzii archívu a iných súvisiacich údajov. Zistil sa, že experimentálny spôsob, že archív končí podpisom 0x0a, 0x25, 0x25, 0x45, 0x4F, 0x46.

Tabuľka formátov a ich podpisov:
Algoritmus na kontrolu lepenia v týchto formátoch je mimoriadne jednoduchý:

  1. Nájdite pôvodný podpis;
  2. Nájsť konečný podpis;
  3. Ak po konečnom podpise nie sú žiadne údaje - váš súbor je čistý a neobsahuje prílohy! V tomto prípade musíte hľadať iné formáty po konečnom podpise.

Gif a pdf.

PDF dokument môže mať viac ako jednu značku EOF, napríklad z dôvodu nesprávnej generácie dokumentu. Počet konečných podpisov v súbore GIF sa rovná počtu snímok v ňom. Na základe charakteristík týchto formátov môžete algoritmus zlepšiť na kontrolu prítomnosti lepených súborov.
  1. Odsek 1 sa opakuje z predchádzajúceho algoritmu.
  2. Odsek 2 sa opakuje z predchádzajúceho algoritmu.
  3. Pri hľadaní konečného podpisu na zapamätanie si jeho umiestnenie a ďalej sa snaží ďalej;
  4. Ak sa týmto spôsobom dosiahol posledný marker EOF - súbor je čistý.
  5. Ak súbor nekončí s konečným podpisom - goto miesto posledného zisteného koncového podpisu.
Veľký rozdiel medzi veľkosťou súboru a polohou po poslednom konečnom podpise označuje prítomnosť adhézneho pripojenia. Rozdiel môže byť viac ako desať bajtov, hoci je možné inštalovať iné hodnoty.

PSČ.

Funkcia ZIP-Archív je prítomnosť troch rôznych podpisov: Archívna štruktúra je nasledovná:
Miestna hlavička súborov 1
Súborové údaje 1.
Deskriptor údajov 1.
Miestny záhlavie súboru 2
Súborové údaje 2.
Deskriptor údajov 2.
...
Miestny záhlavie súboru n
Súborové údaje N.
Deskriptor údajov N.
Archívová dešifrovaná hlavička.
Archív Extra Data Record
Centrálny adresár.
Najzaujímavejšie je centrálny adresár, ktorý obsahuje metaúdaje o súboroch v archíve. Centrálny adresár vždy začína podpisom 0x50 0x4B 0x01 0x02 a končí podpisom 0x50 0x4B 0x05 0x06, po ktorom nasleduje 18 bajtov metadát. Čo je zaujímavé, prázdne archívy sa skladajú len z konečného podpisu a 18 nulových bajtov. Po 18 Byte nasleduje oblasť komentára k archívu, čo je ideálny kontajner na skrytie súboru.

Ak chcete skontrolovať archív ZIP, musíte nájsť koncový podpis centrálneho adresára, preskočiť 18 bajtov a vyhľadávanie podpisov známych formátov v oblasti komentárov. Veľká veľkosť komety tiež označuje lepenie faktu.

Na veľkosti záleží

Avi.

Štruktúra Súboru AVI je nasledovná: Každý súbor začína s podpisom Riffa (0x52 0x49 0x46 0x46). Na 8. Nasleduje podpis podpisu AVI (0x41 0x56 0x49 0x20). Blok na ofset 4, pozostávajúci zo 4 bajtov, obsahuje počiatočnú veľkosť dátového bloku (bajtový poriadok - malý endian). Ak chcete zistiť číslo bloku obsahujúce ďalšiu veľkosť, musíte zložiť veľkosť titulu (8 bajtov) a veľkosť získanú v bloku 4-8 bajtov. Vypočíta sa teda celá veľkosť súboru. Predpokladá sa, že vypočítaná veľkosť môže byť menšia ako skutočná veľkosť súboru. Po vypočítanej veľkosti bude súbor obsahovať iba nulové bajty (je potrebné zarovnať hranicu v 1 kb).

Príklad výpočtu veľkosti:


Wav

Podobne ako AVI, WAV súbor začína s RIFF podpisom, avšak tento súbor má podpis od 8 bajtov - vlny (0x57 0x41 0x56 0x45). Veľkosť súboru sa vypočíta rovnakým spôsobom ako AVI. Skutočná veľkosť sa musí úplne zhodovať s vypočítanou.

Mp4

MP4 alebo MPEG-4 - Formát procesora médií používaný na ukladanie video a audio prúdov, tiež poskytuje ukladanie titulkov a obrázkov.
Na posunu 4 bajtov sú podpisy: Typ FTYP (66 74 79 70) a podtyp súboru MMP4 (6D 6D 70 34). Ak chcete rozpoznať skryté súbory, máme záujem o možnosť výpočtu veľkosti súboru.

Príkladom. Veľkosť prvého bloku je na nulovom posunu a je rovná 28 (00 00 00 1c, poradok veľkého endian bajtu); Ukazuje tiež na posun, kde sa nachádza veľkosť druhého dátového bloku. Na 28 vysídlení nájdeme ďalšiu veľkosť bloku 8 (00 00 00 08). Ak chcete nájsť nasledujúcu veľkosť bloku, musíte pridať veľkosť zistených predchádzajúcich blokov. Veľkosť súboru sa teda vypočíta:

MOV.

Tento široko používaný formát je tiež nádoba MPEG-4. MOV využíva proprietárny algoritmus kompresie údajov, má štruktúru MP4 a používa sa na rovnaké účely - na ukladanie audio a video dát, ako aj príbuzných materiálov.
Podobne ako MP4, akýkoľvek MOV súbor má 4-bajtový 4-bajtový podpis FYP, avšak nasledujúci podpis má hodnotu qt__ (71 74 20 20). Pravidlo výpočtu veľkosti súboru sa nezmenilo: Od začiatku súboru vypočítajte veľkosť ďalšieho bloku a zloženia.

Spôsob kontroly tejto skupiny formátov pre prítomnosť "lepených" súborov je vypočítať veľkosť podľa vyššie uvedených pravidiel a porovnaním s veľkosťou súboru. Ak je aktuálna veľkosť súboru oveľa menšia ako vypočítaná, potom to označuje skutočnosť lepenia. Pri kontrole súborov AVI je povolené, že vypočítaná veľkosť môže byť menšia ako veľkosť súboru z dôvodu prítomnosti pridaných nuly na vyrovnanie hranice. V tomto prípade je potrebné skontrolovať nuly po vypočítanej veľkosti súboru.

Skontrolujte súbor binárneho súboru Comparound

Tento formát súboru, navrhnutý v spoločnosti Microsoft, je tiež známy ako OLE (objekt prepojenie a vloženie) alebo COM (model komponentného objektu). DOC, XLS súborov, PPT patrí do skupiny CFB Formát.

Súbor CFB sa skladá z 512-Byte hlavičky a sektorov tej istej dĺžky, ktorá ukladá dátové toky alebo informácie o servise. Každý sektor má svoje vlastné negatívne číslo, výnimka je špeciálne čísla: "-1" - Čísla Voľný sektor, "-2" - Čísla sektor, uzatvorenie reťazca. Všetky reťazce sú definované v tabuľke tuku.

Predpokladajme, že útočník upravil druh docového súboru a vložil ďalší súbor na jeho koniec. Existuje niekoľko rôznych spôsobov, ako to odhaliť alebo označiť anomáliu v dokumente.

Anomálna veľkosť súboru

Ako je uvedené vyššie, akýkoľvek súbor CFB pozostáva z hlavičky a sektorov rovnakej dĺžky. Ak chcete zistiť veľkosť sektora, musíte si prečítať dvojbajtové číslo na 30 ofset od začiatku súboru a vybudovať 2 do stupňa tohto čísla. Toto číslo by malo byť rovné 9 (0x0009), alebo 12 (0x000c), veľkosť sektora súboru je 512 alebo 4096 bajtov. Po nájdení sektora musíte skontrolovať nasledujúcu rovnosť:

(Súbory - 512) mod sektory \u003d 0

Ak táto rovnosť nie je vykonaná, môžete zadať skutočnosť, že kladiete súbory. Táto metóda má však významnú nevýhodu. Ak útočník pozná veľkosť sektora, potom je to dosť na lepidlo jeho súboru a ďalšieho n bajtu, takže veľkosť lepených údajov je viacnásobná sektorová veľkosť.

Neznámy sektorový typ

Ak útočník vie o spôsobe obchádzania predchádzajúcej kontroly, táto metóda môže detekovať dostupnosť sektorov s neistými typmi.

Definujeme rovnosť:

Súbory \u003d 512 + Korentár * Sektory, kde súbory je veľkosť súboru, sektor - sektorová veľkosť, krajina - počet sektorov.

Definujeme aj nasledujúce premenné:

  1. COUNTFAT - Počet tukov. Od začiatku súboru je 44 presadením (4 bajtov);
  2. COUNTMINIFAT - počet sektorov minifatu. Umiestnené na 64 posun od začiatku súboru (4 bajty);
  3. Početdifat - počet dified odvetví. Umiestnené na 72 ofset od začiatku súboru (4 bajty);
  4. CountDE - Počet sektorov vstupu adresára. Ak chcete nájsť túto premennú, je potrebné nájsť prvý sektor DE, ktorý sa nachádza na 48 vysídlení. Potom musíte získať úplný pohľad na de z tuku a vypočítať počet sektorov DE;
  5. CUTRESTRIES - Počet dátových sektorov;
  6. Počítanie - počet voľných sektorov;
  7. Počítadlo - počet sektorov so špecifickým typom;
Countclassified \u003d groupfat + countminifat + grounddifat + countde + groundstreams + countfree

Samozrejme, že v nerovnosti počítania classied a krajín môžete uzavrieť o možnom lepení.