![]() |
Syftet med den här artikeln är att försöka förklara mer ingående hur Norman SandBox fungerar i praktiken och varför den skiljer sig från andra lösningar på marknaden.
Man bör komma ihåg att Norman SandBox är en komplett datorsimulering.
Man bör komma ihåg att Norman SandBox är en komplett datorsimulering.
När en fil scannas för första gången efter att NVC-scanningsmotorn har aktiverats, görs en faktisk start av en simulerad dator i datorns minne. Denna startprocess inleds med en simulerad ROM BIOS, som läser startsektorer från de simulerade hårddiskarna och kör dem; dessa laddar OS-filerna, som i sin tur laddar kommandoskalet.
Denna bild av datorn som inte var smittad vid start kopieras och används som bas för framtida scanningar.
Denna bild av datorn som inte var smittad vid start kopieras och används som bas för framtida scanningar.
På den simulerade hårddisken finns, förutom en FAT (fildelningstabell), även kataloger och filer. När dessa har laddats, kopieras filen som skannas för tillfället inuti den simulerade hårddisken, där den sedan körs. Nu kan filen utföra sina programkommandon. Den kan infektera filer. Den kan radera filer. Den kan kopiera sig själv via nätverk. Den kan göra en uppkoppling mot en IRC-server. Den kan skicka e-postmeddelanden. Den kan upprätta en avlyssningsport.
Alla aktiviteter registreras av Normans program, eftersom den i praktiken är vår emulator som utför de aktiviteter som baseras på koden i filen.
Ingen kod körs på den riktiga CPU:n, undantaget motorn till NVC-emulatorn; till och med maskinvaran på den simulerade persondatorn emuleras.
I andra lösningar av typen "sandlåda" kommer du att upptäcka att endast delar av miljön är virtuella - det mesta av koden körs på riktig CPU, och när koden t.ex. försöker kommunicera med Windows, får den svar som ser ut att komma från operativsystemet, men som i själva verket kommer från ett annat kodsegment som körs/inte körs på riktig CPU. Enligt vårt synsätt är detta en farlig metod, dessutom ger den inte den flexibilitet vi vill ha.
Ta till exempel en manipulerad exe-fil som har en typ av overflow eller märklig kod-kombination som utformats speciellt för att bryta sig ut ur begränsade miljöer. Om denna fil kördes på riktig CPU, skulle koden ha tillgång till fysiskt minne och riktiga CPU-register, och därmed i teorin kunna bryta sig ut ur eller krascha "sandlådan".
Om en sådan exe-fil emellertid körs på en CPU som emuleras till 100 %, skulle koden visserligen kunna krascha den simulerade datorn; skicka CPU:n in i en loop; radera alla filer; men: allt detta skulle inträffa på en simulerad dator. Motorn till emulatorn skulle helt enkelt säga - "Hmm.. den simulerade persondatorn svarar inte. Simuleringen avslutas." - eller om koden ser riktigt konstig ut - "Den aktuella operationskoden eller skriptet stöds inte. Simuleringen avslutas."
Ta till exempel en manipulerad exe-fil som har en typ av overflow eller märklig kod-kombination som utformats speciellt för att bryta sig ut ur begränsade miljöer. Om denna fil kördes på riktig CPU, skulle koden ha tillgång till fysiskt minne och riktiga CPU-register, och därmed i teorin kunna bryta sig ut ur eller krascha "sandlådan".
Om en sådan exe-fil emellertid körs på en CPU som emuleras till 100 %, skulle koden visserligen kunna krascha den simulerade datorn; skicka CPU:n in i en loop; radera alla filer; men: allt detta skulle inträffa på en simulerad dator. Motorn till emulatorn skulle helt enkelt säga - "Hmm.. den simulerade persondatorn svarar inte. Simuleringen avslutas." - eller om koden ser riktigt konstig ut - "Den aktuella operationskoden eller skriptet stöds inte. Simuleringen avslutas."
Poängen är att man inte övervakar och stoppar potentiellt skadliga kommandon i körtid, som annars är så vanligt.
Istället räknar man ut vad programmet skulle ha gjort om det hade givits fria tyglar på en oskyddad maskin i ett oskyddat nätverk. Detta är möjligt även om NVC installeras på en Netware-server, på Linux, OS/2 eller DOS.
Istället räknar man ut vad programmet skulle ha gjort om det hade givits fria tyglar på en oskyddad maskin i ett oskyddat nätverk. Detta är möjligt även om NVC installeras på en Netware-server, på Linux, OS/2 eller DOS.
