CH717045B1 - Sistemi e metodi di protezione contro la modifica non autorizzata di dump di memoria. - Google Patents
Sistemi e metodi di protezione contro la modifica non autorizzata di dump di memoria. Download PDFInfo
- Publication number
- CH717045B1 CH717045B1 CH001632/2020A CH16322020A CH717045B1 CH 717045 B1 CH717045 B1 CH 717045B1 CH 001632/2020 A CH001632/2020 A CH 001632/2020A CH 16322020 A CH16322020 A CH 16322020A CH 717045 B1 CH717045 B1 CH 717045B1
- Authority
- CH
- Switzerland
- Prior art keywords
- memory
- kernel function
- produce
- memory dump
- call
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 131
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000012986 modification Methods 0.000 title claims abstract description 15
- 230000004048 modification Effects 0.000 title claims abstract description 15
- 230000006870 function Effects 0.000 claims abstract description 92
- 239000012634 fragment Substances 0.000 claims description 8
- 238000004519 manufacturing process Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 description 12
- 238000012544 monitoring process Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 2
- 238000011835 investigation Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- RGNPBRKPHBKNKX-UHFFFAOYSA-N hexaflumuron Chemical compound C1=C(Cl)C(OC(F)(F)C(F)F)=C(Cl)C=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F RGNPBRKPHBKNKX-UHFFFAOYSA-N 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
Nel presente documento vengono resi noti sistemi e metodi di protezione contro la modifica non autorizzata di dump di memoria (106). In un esempio, un metodo può comprendere la produzione di un dump di memoria (106) di un dispositivo informatico (102) e l'identificazione di una funzione del kernel corrente utilizzata per produrre il dump di memoria (106). Dopo aver determinato che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria (106), il metodo può comprendere determinare che il dump di memoria (106) prodotto è stato modificato, analizzare un albero delle chiamate per identificare una funzione del kernel originale autorizzata a produrre dump di memoria (106) e chiamare la funzione del kernel originale per produrre un dump di memoria autentico.
Description
CAMPO TECNICO
[0001] La presente divulgazione si riferisce al settore della scienza digitale forense e, più specificamente, ai sistemi e ai metodi di protezione contro la modifica non autorizzata di dump di memoria.
STATO DELL'ARTE
[0002] Uno dei metodi principali di scienza digitale forense prevede l'ottenimento dei live dump della memoria di sistema che possono essere utilizzati per studiare i crimini digitali, compresi attacchi di programmi dannosi, intrusioni nel sistema, furto di dati, modifiche (ad esempio, la crittografia), ecc. In particolare, i live dump comprendono informazioni sui processi in corso nella memoria e consentono l'analisi di tali informazioni.
[0003] I live dump sono caratterizzati dal fatto che sono creati su un sistema funzionante e anche dopo averli ricevuti, il sistema non si blocca - a differenza di altri tipi di dump creati al momento dell'arresto anomalo del sistema e che memorizzano informazioni sull'ultimo stato del sistema immediatamente prima dell'arresto anomalo. I live dump sono creati utilizzando gli strumenti integrati del sistema operativo, che include metodi e funzioni speciali utilizzati per questi scopi nella loro funzionalità.
[0004] Nonostante le caratteristiche positive dei live dump, programmi dannosi come i rootkit possono sostituire le informazioni in un dump di memoria e quindi complicare o rendere impossibile il processo di indagine digitale. I rootkit prendono il controllo delle chiamate di sistema che creano live dump. Di conseguenza, i „falsi“ dump contengono dati modificati in cui le tracce dell'attività di eventuali intrusi e programmi dannosi vengono completamente rimosse.
[0005] Vi è pertanto necessità di un sistema e di un metodo che possa impedire ai programmi dannosi possano manomettere i dump di memoria.
SOMMARIO
[0006] La presente invenzione rivendica un metodo di protezione contro la modifica non autorizzata di dump di memoria secondo la rivendicazione 1. La presente invenzione rivendica anche un sistema di protezione contro la modifica non autorizzata del dump di memoria secondo la rivendicazione 6. Forme di realizzazione preferite del metodo e del sistema secondo la presente invenzione sono date nelle rivendicazioni dipendenti da 2 a 5 e da 7 a 10.
[0007] Il metodo comprende la produzione di un dump di memoria di un dispositivo informatico e l'identificazione di una funzione del kernel corrente utilizzata per produrre il dump di memoria. Dopo aver determinato che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria, il metodo determina che il dump di memoria prodotto è stato modificato, analizza un albero delle chiamate per identificare una funzione del kernel originale autorizzata a produce il dump di memoria e chiama la funzione del kernel originale per produrre un dump di memoria autentico.
[0008] Determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria comprende determinare che una riga, in una tabella di indirizzamento, che punta a una funzione del kernel per il dump di memoria, è stata modificata.
[0009] Determinare che la riga è stata modificata comprende determinare che un indirizzo associato a un numero di chiamata di sistema nella tabella di indirizzamento una prima volta non corrisponde a un indirizzo associato al numero di chiamata di sistema una seconda volta.
[0010] Determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria si basa sul determinare che un indirizzo della funzione del kernel corrente non si trova in un range del kernel del sistema operativo del dispositivo informatico.
[0011] Analizzare l'albero delle chiamate per identificare la funzione del kernel originale comprende determinare un offset indicante la funzione del kernel originale in base al contenuto di una riga nell'albero delle chiamate.
[0012] Determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria comprende anche confrontare un'immagine del kernel sul disco del dispositivo informatico con un'immagine del kernel nella memoria del dispositivo informatico, identificare i frammenti del kernel modificato utilizzati per produrre il dump di memoria in base al confronto e determinare che i frammenti del kernel modificato sono causati da programmi dannosi.
[0013] Si noti che i metodi sopra descritti possono essere implementati in un sistema comprendente un processore hardware. In alternativa, i metodi possono essere implementati utilizzando istruzioni informatiche di un supporto informatico non transitorio.
[0014] Il riepilogo di cui sopra serve a consentire una comprensione basilare della presente divulgazione. Questo riepilogo non è esaustivo di tutti gli aspetti contemplati..
BREVE DESCRIZIONE DEI DISEGNI
[0015] I disegni accompagnatori illustrano uno o più aspetti esemplificativi della presente divulgazione e si riferiscono ad una possibile implementazione.
[0016] La FIG. 1è un diagramma a blocchi che mostra un sistema di protezione contro la modifica non autorizzata di dump di memoria.
[0017] La FIG. 2 è un diagramma a blocchi che mostra un albero delle chiamate.
[0018] La FIG. 3 mostra un diagramma di flusso di un metodo di protezione contro la modifica non autorizzata di dump di memoria.
[0019] La FIG. 4 presenta un esempio di un sistema informatico generico su cui possono essere implementati degli esempi della presente divulgazione.
DESCRIZIONE DETTAGLIATA
[0020] Aspetti esemplificativi sono qui descritti nel contesto di sistema, metodo e prodotto di programma informatico per la protezione contro la modifica non autorizzata di dump di memoria. Coloro che hanno un'ordinaria competenza nell'arte si renderanno conto che la seguente descrizione è puramente illustrativa e non intende essere in alcun modo limitativa. Altri aspetti si riveleranno immediatamente a chi è competente nell'arte che si avvarrà di questa divulgazione. Si farà ora riferimento in dettaglio alle implementazioni degli aspetti esemplificativi come illustrato nei disegni accompagnatori. Gli stessi indicatori di riferimento saranno utilizzati, nei limiti del possibile, in tutti i disegni e nella seguente descrizione per riferirsi agli stessi elementi o ad elementi simili.
[0021] Generare un dump di memoria comporta il prelievo di tutte le informazioni contenute nella memoria ad accesso casuale (RAM) e la loro scrittura su un'unità di archiviazione. Gli sviluppatori utilizzano i dump di memoria per raccogliere informazioni diagnostiche per la risoluzione dei problemi a seguito di un arresto anomalo. Utilizzare le funzioni del kernel integrate del sistema operativo, i sistemi e i metodi qui descritti, implica produrre live dump di memoria (in particolare raw dump e dump di sistema) e proteggerli da modifiche dannose trovando la funzione del kernel originale „buona“ per ottenere il dump, se la funzione del kernel originale „buona“ è stata sostituita con una funzione del kernel „cattiva“.
[0022] La FIG. 1è un diagramma a blocchi che mostra il sistema 100 di protezione dei dump di memoria dalle manomissioni. Il sistema 100 include il dispositivo informatico 102, che può comprendere un personal computer, un server, ecc., che comprende un'unità di elaborazione centrale („CPU“) e una memoria che include dei software per l'esecuzione di varie attività (ad esempio, software del sistema operativo (OS), software applicativo, ecc.). I dati per il dispositivo informatico 102 possono essere memorizzati nella memoria del dispositivo stesso, nonché su altri dispositivi esterni come il server di backup 104, un compact disk, un'unità flash drive, un disco ottico e simili.
[0023] Nella presente divulgazione, il dump di memoria 106 proveniente dalla memoria del dispositivo informatico 102 viene trasmesso al server 104 attraverso la rete 108. La rete 108 può essere Internet, una rete di telefonia mobile, una rete dati (ad esempio, una rete 4G o LTE), un Bluetooth o qualunque combinazione di questi elementi. Ad esempio, il server 104 può far parte di un ambiente di cloud computing accessibile via Internet, oppure può far parte di una rete locale (LAN) con il dispositivo informatico 102. Le linee che collegano il server 104 e il dispositivo informatico 102 alla rete 108 rappresentano i percorsi di comunicazione che possono includere qualunque combinazione di connessioni a spazio libero (ad es. per segnali wireless) e connessioni fisiche (ad es. cavi in fibra ottica). In alcuni esempi, il dump 106 può essere trasferito al server 104 come entità separata, può essere incluso nell'archivio di backup, può essere memorizzato localmente, o può essere trasferito nel cloud, ecc.
[0024] Si noti che può esservi più di un server 104, ma la FIG. 1 ne mostra uno solo per evitare di complicare ulteriormente il disegno. Ad esempio, il server 104 può rappresentare una pluralità di server in un cluster cloud distribuito. Il server 104 può comprendere qualunque numero di componenti fisici (come mostrato nella FIG. 4 ad esempio). Ad esempio, il server 104 può comprendere una serie di componenti fisici come processori, dispositivi di archiviazione a blocchi fisici (ad esempio, unità di disco rigido (HDD), unità a stato solido (SSD), unità flash, dischi SMR, ecc.) o memorie (ad esempio, memoria ad accesso casuale (RAM)), componenti di interfaccia I/O, ecc.
[0025] Il dump di memoria 106 può essere rappresentato da dati di qualunque tipo, inclusi dati di sistema, dati utente, applicazioni, file di sistema, preferenze, documenti, supporti, ecc. Il dispositivo informatico 102 può inviare il dump di memoria 106 per l'archiviazione sul server 104 secondo un piano di backup indicante i dati specifici da includere nel dump di memoria 106 e la frequenza di backup dei dati.
[0026] Come descritto sopra, sebbene il backup dei dati permetta la conservazione delle informazioni su un sistema (ad esempio, il dispositivo informatico 102), i dump di memoria sono soggetti a manomissioni da parte di intrusi. La manomissione può comportare il furto di dati e la modifica dei dati non autorizzata (ad esempio, la crittografia, l'inserimento di agenti dannosi in un dump di memoria, ecc.) Di conseguenza, l'agente di scienza digitale forense 110 è configurato per gestire la raccolta di dati per la scienza digitale forense e la loro successiva elaborazione. L'agente di scienza digitale forense 110 può essere un programma autonomo o una parte di un software antivirus. In alcuni esempi, l'agente di scienza digitale forense 110 è installato sul dispositivo informatico 102 come thin client e su un server come thick client. Per gli esempi di cui alla FIG. 1., l'agente di scienza digitale forense 110 è installato sul dispositivo informatico 102.
[0027] L'agente di scienza digitale forense 110 comprende due componenti: il modulo di forensics monitoring 112 e il modulo di protezione anti-forensics 114. Il modulo di forensics monitoring 112 può essere configurato per invocare l'API del kernel per produrre un live dump. In alcuni esempi, il modulo 112 può invocare l'API del kernel in risposta alla ricezione di una richiesta (ad esempio, da parte di un utente) o in base al monitoraggio e al rilevamento di dati nel dispositivo informatico 102 che dovrebbe essere utilizzato in un'indagine di scienza digitale forense (ad esempio, dati da includere nel dump di memoria 106). Il modulo di protezione anti-forensics 114 può essere un driver configurato per impedire la distruzione di tracce di attività di programmi dannosi. Questo driver determina se i dati nel dump di memoria 106 sono stati modificati o distrutti da programmi dannosi e trova e ripristina i dati originali intatti.
[0028] Per l'acquisizione dei dump di memoria vengono discussi due approcci. Il primo attraverso la tabella dei descrittori dei servizi di sistema (SSDT) e il secondo mediante l'utilizzo di raw dump. Gli esempi presentati nella presente divulgazione sono associati al sistema operativo Windows™. Un esperto dell'arte, tuttavia, auspicherebbe che le tecniche possano essere applicate a qualsiasi sistema operativo.
[0029] Nel primo approccio, viene considerata una tabella di indirizzamento interno come la SSDT. La SSDT è una tabella di puntatori a funzione del kernel utilizzata dal sistema operativo Windows™ per l'instradamento delle chiamate di sistema. In particolare, ogni riga della SSDT punta ad una funzione del kernel per una particolare chiamata di sistema. In un caso, un'applicazione/processo software sul dispositivo informatico 102 può invocare una chiamata di sistema utilizzando una richiesta di chiamata di sistema. In risposta alla richiesta, la CPU del dispositivo informatico 102 passa dalla modalità utente alla modalità kernel ed esegue una funzione di indirizzamento della chiamata di sistema che legge un numero di chiamata di sistema. Il numero di chiamata di sistema è un numero intero univoco che viene assegnato ad ogni chiamata di sistema nel sistema operativo. Su x86, il numero di chiamata di sistema viene fornito al kernel attraverso il registro eax (per esempio, lo spazio utente inserisce, in eax, il numero corrispondente alla chiamata di sistema desiderata). La funzione di indirizzamento utilizza il numero di chiamata come indice della SSDT. In seguito alla lettura del valore del puntatore dalla SSDT, la funzione di indirizzamento trasferisce l'esecuzione alla funzione del kernel nel kernel associato alla riga.
[0030] Poiché la SSDT contiene importanti indirizzi di memoria delle principali funzioni del kernel, la SSDT è un bersaglio comune per il bersagliamento da parte di entità dannose come i rootkit. Per hooking si intende l'alterazione di software (ad es. applicazioni, sistemi operativi, ecc.) tramite l'intercettazione di chiamate di funzione, eventi, messaggi, ecc. Ad esempio, un rootkit può sostituire le funzioni del kernel esistenti con un proprio indirizzo. In questo modo, quando un'applicazione invoca una chiamata di sistema per una specifica funzione del kernel, al suo posto viene caricato il codice del rootkit.
[0031] Un esempio più dettagliato è fornito in quanto tale. Il puntatore alla struttura della SSDT può essere KeServiceDescriptorTable (a seconda del sistema operativo del dispositivo informatico 102). In Windows, usando WinDbg, il comando „dd dwo(KeServiceDescriptorTable) L100“ elencherà le prime 100 DWORD della struttura della SSDT. DWORD sta per doppio di word ed è uno dei cinque tipi di dati principali gestiti dall'Editor del Registro di sistema. Un valore DWORD può contenere un massimo di 32 bit, che vengono visualizzati dal registro in valori decimali o esadecimali. Per semplicità, negli esempi che seguono verranno mostrati solo alcuni indirizzi selezionati. Se un rootkit non è attivo (ad esempio la prima volta), l'output può essere:
... 80501dcc 80607ac88056f074805b3de0 8056f3ca ...
Quando un rootkit è attivo (ad esempio, in un secondo momento), tuttavia, l'output del comando può essere:
... 80501dcc 80607ac8f7c38486805b3de0 8056f3ca ...
Il confronto di questi due output mostra chiaramente che l'indirizzo di memoria „8056f074“ è stato sostituito da „f7c38486“. Il numero di chiamata di sistema è lo stesso per entrambi gli indirizzi (per es. 55). Pertanto, facendo riferimento al numero di chiamata di sistema, viene chiamata la funzione del kernel sostituito con „f7c38486“.
[0032] Di conseguenza, il modulo di protezione anti-forensics 114 dell'agente di scienza digitale forense 110 controlla se la riga nella SSDT che punta alla funzione del kernel per la generazione di dump di memoria (ad es. NtSystemDebugControl) è stata modificata.
[0033] Facendo riferimento all'esempio precedente, NtSystemDebugControl può essere associato all'indirizzo di memoria „8056f074“. L'indirizzo di memoria „f7c38486“ può essere per la funzione del kernel non nota „MalwarePatch“. Il modulo di protezione anti-forensics 114 identifica la funzione del kernel non nota „MalwarePatch“ e verifica l'autenticità della funzione del kernel stabilendo se la funzione del kernel si trova nel range del kernel del sistema operativo NT. Per determinare se la funzione del kernel si trova nel range del kernel del sistema operativo NT, occorre verificare l'indirizzo iniziale e finale del kernel del sistema operativo NT (o, in alcuni esempi, una pluralità di range) e controllare se l'indirizzo della funzione del kernel si trova in uno di questi range.
[0034] In alcuni esempi, il modulo di protezione anti-forensics 114 può convalidare se la riga della SSDT corrispondente a NtSystemDebugControl punta effettivamente ad un codice del kernel autentico, invece che a qualche „MalwarePatch“ come descritto in precedenza. Se viene rilevata una modifica nella SSDT e la funzione del kernel è considerata non autentica (cioè non nel range del kernel del sistema operativo NT), l'offset (ossia, il numero di chiamata del servizio in cui il contenuto della memoria nell'offset punta alla funzione del kernel effettivo) viene utilizzato dal modulo di protezione anti-forensics 114 per trovare l'effettiva funzione del kernel NtSystemDebugControl. Il modulo di protezione anti-forensics 114 trova specificamente l'effettiva funzione del kernel costruendo un albero delle chiamate di una data profondità e passando attraverso l'albero per trovare la funzione del kernel originale (discussa più avanti nella FIG. 2).
[0035] Il secondo approccio per l'acquisizione di dump di memoria prevede l'acquisizione di raw dump. In questo approccio, il modulo di forensics monitoring 112 ottiene sia i range di memoria fisica che il contenuto dei dati nel dump di memoria. Il modulo di forensics monitoring 112 può ottenere i range usando un'interfaccia come „MmGetPhysicalMemoryRanges“ nel kernel del sistema operativo Windows NT. Analogamente al primo approccio, il modulo di protezione anti-forensics 114 accede al kernel del sistema operativo del dispositivo informatico 102, trova la funzione del kernel corrente (cioè il produttore del dump di memoria) e determina se la funzione del kernel è la funzione del kernel originale (cioè la funzione del kernel autentico). In alcuni esempi, il modulo di protezione anti-forensics 114 può confrontare un'immagine del kernel sul disco e un'immagine del kernel nella memoria per rilevare frammenti del kernel modificato da programmi dannosi per produrre dump contraffatti. Per esempio, il modulo di protezione anti-forensics 114 confronta MmGetPhysicalMemoryRanges in memoria con MmGetPhysicalMemoryRanges in ntoskrnl.exe (o un altro modulo principale del kernel del sistema operativo NT).
[0036] Se non viene rilevata alcuna manomissione, viene richiamata la funzione del kernel. In caso contrario, il modulo di protezione anti-forensics 114 ottiene, utilizzando il disassemblaggio dinamico, un albero delle chiamate e trova un pezzo di memoria corrispondente alla funzione del kernel originale „buona“. Per disassemblaggio dinamico si intende il monitoraggio, da parte di uno strumento esterno come un debugger, di un file durante l'esecuzione. La funzione del kernel originale viene chiamata per produrre un dump di memoria autentico che non viene manomesso. L'indirizzo della funzione del kernel è l'indirizzo iniziale e la cima dell'albero delle chiamate.
[0037] Un'altra tecnica di patch per bloccare il programma dannoso è lo „splicing“, che può essere applicato anche a NtSystemDebugControl da un software dannoso. Nello splicing, il software dannoso corregge il codice di NtSystemDebugControl in essere senza cambiare il puntatore nella SSDT. Il modulo di protezione anti-forensics 114 può rilevare l'attacco nello stesso modo descritto sopra per la protezione della sequenza di chiamata MmGetPhysicalMemoryRanges - attraverso il confronto dei frammenti corrispondenti di codice NtSystemDebugControl nella memoria e nell'immagine del kernel retriever dal disco. Per esempio, il modulo di protezione anti-forensics 114 può trovare la posizione di NtSystemDebugControl in memoria usando il comando di debugger del kernel „dd nt! ZwSystemDebugControl“ e confrontare gli intervalli di byte, tenendo conto che alcune istruzioni contengono offset e regolazioni variabili. Si noti che ZwSystemDebugControl è il nome del kernel esportato per la riga in NtSystemDebugControl.
[0038] La FIG. 2 è un diagramma a blocchi che mostra l'albero delle chiamate 200. Il modulo di protezione anti-forensics 114 analizza un albero delle chiamate per identificare una funzione del kernel originale autorizzata a produrre dump di memoria. Si consideri un esempio di attraversamento dell'albero delle chiamate 200 per trovare e utilizzare le funzioni del kernel originale sul percorso di cattura dei live dump. In questo esempio, supponiamo che NtSystemDebugControl sia agganciato tramite SSDT e che la chiamata a DbgkCaptureLiveDump nel NtSystemDebugControl originale sia sostituita con una chiamata a HookedDbgkCaptureLiveDump.
[0039] A partire dalla SSDT, il modulo di protezione anti-forensics 114 può confermare che è stato prodotto un dump di memoria da una funzione del kernel agganciato seguendo il percorso dell'albero delle chiamate 200 indicato dalle linee tratteggiate nel momento in cui è stato prodotto il dump di memoria. Per esempio, il percorso dell'albero delle chiamate 200 inizia con HookedNtSystemDebugControl, che include una chiamata a NtSystemDebugControl. Poiché l'originale NtSystemDebugControl è agganciato, invece di chiamare DbgkCaptureLiveDump, NtSystemDebugControl chiama HookedDbgkCaptureLiveDump. HookedDbggkCaptureLiveDump chiama il DbgkCaptureLiveDump originale per produrre un dump di memoria. Successivamente, utilizzando la funzione ForgedLiveDumpPostProcess, HookedDbgkCaptureLiveDump modifica il dump di memoria. Con il completamento della manomissione da parte di HookedDbgkCaptureLiveDump, NtSystemDebugControl (originale) completa la sua esecuzione e HookedNtSystemDebugControl chiama ForgedDumpPostProcess, che è un'altra funzione dannosa che può ulteriormente manomettere/corrompere il dump catturato. Come si può vedere, la funzione del kernel originale è DbgkCaptureLiveDump e la funzione del kernel corrente, che non è autorizzata a produrre dump di memoria, è HookedDbgkCaptureLiveDump.
[0040] Più specificamente, il modulo di protezione anti-forensics 114 può attraversare la catena delle chiamate dalla SSDT alle chiamate interne originali. Il modulo di protezione anti-forensics 114 può rilevare, tramite il confronto tra memoria e disco, i punti di aggancio installati. Per esempio, secondo un'immagine del kernel in memoria, NtSystemDebugControl chiama HookedDbgkCaptureLiveDump invece di DbgkCaptureLiveDump. In un'immagine del kernel su disco, NtSystemDebugControl può invece chiamare DbgkCaptureLiveDump, che è la funzione del kernel corretta da chiamare. Il modulo di protezione anti-forensics 114 può quindi ricostruire i percorsi delle chiamate ripristinando le chiamate originali dall'immagine del disco. Dopo un ripristino del percorso dell'albero delle chiamate 200, il puntatore a HookedNtSystemDebugControl nella SSDT (vedi prima stella) sarà sostituito con NtSystemDebugControl e la chiamata a HookedDbgkCaptureLiveDump (vedi seconda stella) sarà sostituita con DbgkCaptureLiveDump. In questo modo, HookedNtSystemDebugControl viene saltato e HookedDbgkCaptureLiveDump non viene chiamato. Infine, il modulo di protezione anti-forensics 114 può utilizzare le funzioni del kernel originale (seguendo le frecce piene nell'albero delle chiamate 200) per facilitare la produzione di un dump di memoria autentico.
[0041] La FIG. 3 mostra un diagramma di flusso di un metodo esemplificativo 300 di protezione contro la modifica non autorizzata del dump di memoria. Al 302, il modulo di forensics monitoring 112 produce un dump di memoria di un dispositivo informatico (per es. il dispositivo informatico 102). Al 304, il modulo di protezione anti-forensics 114 identifica una funzione del kernel corrente che viene utilizzata per produrre il dump di memoria. Al 306, il modulo di protezione anti-forensics 114 determina se la funzione del kernel corrente è autorizzata a produrre il dump di memoria. Dopo aver determinato che la funzione del kernel corrente è autorizzata, il metodo 300 termina. Dopo aver determinato che la funzione del kernel corrente non è autorizzata, il metodo 300 passa a 308, dove il modulo di protezione anti-forensics 114 determina che il dump di memoria è stato modificato. Al 310, il modulo di protezione anti-forensics 114 analizza un albero delle chiamate per identificare una funzione del kernel originale autorizzata a produrre dump di memoria. Al 312, il modulo di forensics monitoring 112 chiama la funzione del kernel originale per produrre un dump di memoria autentico. Al 314, il modulo di forensics monitoring 112 riceve il dump di memoria autentico.
[0042] La FIG. 4 è un diagramma a blocchi che mostra un sistema informatico 20 su cui possono essere implementati sistemi e metodi di protezione contro la modifica non autorizzata di dump di memoria secondo un aspetto esemplificativo. Il sistema informatico 20 può essere sotto forma di più dispositivi informatici o sotto forma di un singolo dispositivo informatico, ad esempio un computer da tavolo, un notebook, un laptop, un dispositivo informatico mobile, uno smartphone, un tablet, un server, un computer centrale, un dispositivo integrato e altre forme di dispositivi informatici.
[0043] Come mostrato, il sistema informatico 20 include un'unità di elaborazione centrale (CPU) 21, una memoria di sistema 22 e un bus di sistema 23 che collega i vari componenti del sistema, inclusa la memoria associata all'unità di elaborazione centrale 21. Il bus di sistema 23 può comprendere una memoria del bus o un controller di memoria del bus, un bus periferico e un bus locale in grado di interagire con qualsiasi altra architettura di bus. Esempi di bus possono includere PCI, ISA, PCI-Express, HyperTransport™, InfiniBand™, Serial ATA, I<2>C e altre interconnessioni adeguate. L'unità di elaborazione centrale 21 (detta anche processore) può comprendere un singolo o una serie di processori con uno o più core. Il processore 21 può eseguire uno o più codici informatici eseguibili che implementano le tecniche della presente divulgazione. Per esempio, il processore 21 può eseguire uno qualsiasi dei comandi/passi di cui alle FIGS. 1-2. La memoria di sistema 22 può essere qualunque memoria per la memorizzazione dei dati qui utilizzati e/o programmi informatici eseguibili dal processore 21. La memoria di sistema 22 può includere una memoria volatile come una memoria ad accesso casuale (RAM) 25 e una memoria non volatile come una memoria di sola lettura (ROM) 24, una memoria flash, ecc. o una combinazione di queste. Il sistema di base di input/output (BIOS) 26 può memorizzare le procedure di base per il trasferimento di informazioni tra elementi del sistema informatico 20, come quelle al momento del caricamento del sistema operativo con l'uso della ROM 24.
[0044] Il sistema informatico 20 può comprendere uno o più dispositivi di archiviazione come uno o più dispositivi di archiviazione rimovibili 27, uno o più dispositivi di archiviazione non rimovibili 28, o una combinazione di questi. Uno o più dispositivi di archiviazione rimovibili 27 e dispositivi di archiviazione non rimovibili 28 sono collegati al bus di sistema 23 tramite un'interfaccia di archiviazione 32. In un esempio, i dispositivi di archiviazione e i corrispondenti supporti di archiviazione informatici sono moduli indipendenti dalla potenza per la memorizzazione di istruzioni, strutture di dati, moduli di programma e altri dati del sistema informatico 20. La memoria di sistema 22, i dispositivi di archiviazione rimovibili 27 e i dispositivi di archiviazione non rimovibili 28 possono utilizzare una varietà di supporti di archiviazione informatici. Esempi di supporti di archiviazione informatici includono la memoria a bordo macchina come cache, SRAM, DRAM, RAM a zero condensatori, RAM a doppio transistor, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM; memoria flash o altre tecnologie di memoria come nelle unità a stato solido (SSD) o unità flash; memorizzazione su cassette magnetiche, nastri magnetici e dischi magnetici come, ad esempio, in unità disco rigido o floppy disk; memorizzazione ottica come, ad esempio, in compact disk (CD-ROM) o dischi digitali versatili (DVD); e qualsiasi altro supporto che può essere utilizzato per memorizzare i dati desiderati e che possa essere accessibile dal sistema informatico 20.
[0045] La memoria di sistema 22, i dispositivi di archiviazione rimovibili 27 e i dispositivi di archiviazione non rimovibili 28 del sistema informatico 20 possono essere utilizzati per memorizzare un sistema operativo 35, applicazioni aggiuntive di programmi 37, altri moduli di programma 38 e dati di programma 39. Il sistema informatico 20 può includere un'interfaccia periferica 46 per la comunicazione dei dati provenienti dai dispositivi di input 40, come tastiera, mouse, stilo, controller di gioco, dispositivo a comandi vocali, dispositivo a comandi tattili o altri dispositivi periferici, come stampante o scanner tramite una o più porte I/O, come una porta seriale, una porta parallela, un bus seriale universale (USB), o un'altra interfaccia periferica. Un dispositivo di visualizzazione 47, come uno o più monitor, proiettori o display integrati, può anche essere collegato al bus di sistema 23 attraverso un'interfaccia di uscita 48, come un adattatore video. Oltre ai dispositivi di visualizzazione 47, il sistema informatico 20 può essere dotato di altri dispositivi periferici di uscita (non mostrati), come altoparlanti e altri dispositivi audiovisivi.
[0046] Il sistema informatico 20 può funzionare in un ambiente di rete utilizzando una connessione di rete a uno o più computer remoti 49. Il computer remoto (o i computer) 49 può essere costituito da postazioni di lavoro locali o server che comprendono la maggior parte o tutti gli elementi menzionati sopra nella descrizione della natura di un sistema informatico 20. Nella rete informatica possono essere presenti anche altri dispositivi, quali, ma non solo, router, stazioni di rete, dispositivi peer o altri nodi di rete. Il sistema informatico 20 può comprendere una o più interfacce di rete 51 o adattatori di rete per comunicare con i computer remoti 49 attraverso una o più reti, quali una rete informatica locale (LAN) 50, una rete informatica ad ampio raggio (WAN), una rete intranet e Internet. Esempi di interfaccia di rete 51 possono includere un'interfaccia Ethernet, un'interfaccia Frame Relay, un'interfaccia SONET e interfacce wireless.
[0047] Aspetti della presente divulgazione possono essere un sistema, un metodo e/o un prodotto di un programma informatico. Il prodotto del programma informatico può includere un supporto di archiviazione informatico (o supporti) con istruzioni per programmi informatici per far sì che un processore esegua aspetti della presente divulgazione.
[0048] Il supporto di archiviazione informatico può essere un dispositivo tangibile in grado di conservare e memorizzare il codice del programma sotto forma di istruzioni o strutture di dati accessibili da un processore di un dispositivo informatico, come il sistema informatico 20. Il supporto di archiviazione informatico può essere un dispositivo di archiviazione elettronica, un dispositivo di archiviazione magnetica, un dispositivo di archiviazione ottica, un dispositivo di archiviazione elettromagnetica, un dispositivo di archiviazione a semiconduttori o qualunque combinazione appropriata di questi. A titolo di esempio, tale supporto di archiviazione informatico può comprendere una memoria ad accesso casuale (RAM), una memoria a sola lettura (ROM), una EEPROM, una memoria a sola lettura di un compact disc portatile (CD-ROM), un disco digitale versatile (DVD), una memoria flash, un disco rigido, un dischetto portatile, un memory stick, un floppy disk, o anche un dispositivo codificato meccanicamente come schede perforate o strutture in rilievo in un solco con istruzioni registrate. Come utilizzato nel presente, un supporto di archiviazione informatico non è da intendersi come segnali transitori di per sé, come onde radio o altre onde elettromagnetiche che si propagano liberamente, onde elettromagnetiche che si propagano attraverso una guida d'onda o mezzi di trasmissione, o segnali elettrici trasmessi attraverso un filo.
[0049] Le istruzioni di programmi informatici descritte nel presente documento possono essere scaricate sui rispettivi dispositivi informatici da un supporto di archiviazione informatico o su un computer esterno o un dispositivo di archiviazione esterno attraverso una rete, ad esempio Internet, una rete locale, una rete ad ampio raggio e/o una rete wireless. La rete può comprendere cavi di trasmissione in rame, fibre ottiche di trasmissione, trasmissione senza fili, router, firewall, switch, computer gateway e/o edge server. Un'interfaccia di rete di ogni dispositivo informatico riceve dalla rete istruzioni di programmi informatici e inoltra le istruzioni di programmi informatici per l'archiviazione in un supporto di archiviazione informatico all'interno del rispettivo dispositivo informatico.
[0050] Le istruzioni di programmi informatici per l'esecuzione delle operazioni della presente divulgazione possono essere istruzioni di assemblaggio, insiemi di istruzioni (ISA), istruzioni per macchine, istruzioni dipendenti dalla macchina, microcodici, istruzioni firmware, dati di impostazione dello stato, oppure codici sorgente o codici oggetto scritti in qualunque combinazione di uno o più linguaggi di programmazione, compreso un linguaggio di programmazione orientato agli oggetti e linguaggi di programmazione procedurali convenzionali. Le istruzioni di programmi informatici possono essere eseguite interamente sul computer dell'utente, in parte sul computer dell'utente, come pacchetto software indipendente, in parte sul computer dell'utente e in parte su un computer remoto o interamente sul computer o server remoto. In quest'ultimo caso, il computer remoto può essere collegato al computer dell'utente attraverso qualunque tipo di rete, compresa una rete LAN o WAN, oppure la connessione può essere effettuata a un computer esterno (ad esempio, attraverso Internet). In alcune realizzazioni, i circuiti elettronici che comprendono, ad esempio, circuiti a logica programmabile, gate array programmabili sul campo (FPGA), o array a logica programmabile (PLA) possono eseguire le istruzioni di programmi informatici utilizzando le informazioni di stato delle istruzioni di programmi informatici per personalizzare i circuiti elettronici, al fine di eseguire aspetti della presente divulgazione.
[0051] Per vari aspetti, i sistemi e i metodi descritti nella presente divulgazione possono essere trattati in termini di moduli. Il termine „modulo“ qui utilizzato si riferisce a un dispositivo, componente o disposizione di componenti reale, implementato tramite un hardware, come ad esempio tramite un circuito integrato specifico di un'applicazione (ASIC) o FPGA, o come una combinazione di hardware e software, come ad esempio tramite un sistema a microprocessore e un insieme di istruzioni per implementare le funzionalità del modulo, che (mentre viene eseguito) trasforma il sistema a microprocessore in un dispositivo speciale. Un modulo può anche essere implementato come una combinazione dei due, con alcune funzioni facilitate solo dall'hardware e altre funzioni facilitate da una combinazione di hardware e software. In alcune implementazioni, almeno una parte e, in alcuni casi tutte, di un modulo può essere eseguita sul processore di un sistema informatico. Di conseguenza, ogni modulo può essere realizzato in una varietà di configurazioni adatte e non deve essere limitato ad una particolare implementazione qui esemplificata.
[0052] Per motivi di chiarezza, non tutte le caratteristiche di routine degli aspetti sono qui riportate. Sarebbe auspicabile che nello sviluppo di qualsiasi implementazione effettiva della presente divulgazione venissero prese numerose decisioni specifiche dell'implementazione al fine di raggiungere gli obiettivi specifici dello sviluppatore e questi obiettivi specifici variano a seconda delle diverse implementazioni e dei diversi sviluppatori. Resta inteso che un tale sforzo di sviluppo potrebbe essere complesso e richiederebbe molto tempo, ma sarebbe comunque un'impresa facile per coloro che hanno un'ordinaria competenza nell'arte che si avvantaggiano di questa divulgazione.
[0053] Inoltre, è da intendersi che la fraseologia o la terminologia qui utilizzata ha lo scopo di descrizione e non di restrizione, cosicché la terminologia o la fraseologia della presente specifica deve essere interpretata da chi è competente nell'arte alla luce degli insegnamenti e degli orientamenti qui presentati, in combinazione con le conoscenze di chi è competente nell'arte o nelle arti pertinenti. Inoltre, a nessun termine della specifica o delle rivendicazioni deve essere attribuito un significato non comune o speciale, a meno che non sia esplicitamente indicato come tale.
[0054] I vari aspetti qui illustrati comprendono gli equivalenti noti, presenti e futuri, dei moduli noti cui si fa riferimento a titolo illustrativo. Inoltre, mentre gli aspetti e le applicazioni sono stati mostrati e descritti, è evidente a chi è competente nell'arte e che si avvale della presente divulgazione che molte più modifiche di quelle sopra menzionate sono possibili senza discostarsi dall'ambito di protezione dell'invenzione.
Claims (10)
1. Metodo di protezione contro la modifica non autorizzata di dump di memoria, il metodo comprende:
produrre un dump di memoria di un dispositivo informatico;
identificare una funzione del kernel corrente utilizzata per produrre il dump di memoria;
determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria:
confrontare una immagine del kernel su disco del dispositivo informatico con un'immagine del kernel nella memoria del dispositivo informatico;
identificare i frammenti modificati del kernel associati alla produzione del dump di memoria in base al confronto;
dopo aver determinato che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria in base ad una presenza dei frammenti modificati del kernel:
determinare che il dump di memoria prodotto è stato modificato;
analizzare un albero delle chiamate per identificare una funzione del kernel originale autorizzata a produrre dump di memoria; e
chiamare la funzione del kernel originale per produrre un dump di memoria autentico.
2. Metodo secondo la rivendicazione 1, in cui determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria comprende determinare che una riga, in una tabella di indirizzamento che punta a una funzione del kernel per i dump di memoria, è stata modificata.
3. Metodo secondo la rivendicazione 2, in cui determinare che la riga è stata modificata comprende determinare che un indirizzo associato a un numero di chiamata di sistema nella tabella di indirizzamento in un determinato momento non corrisponde a un indirizzo associato al numero di chiamata di sistema in un momento differente, dove la chiamata di sistema è una chiamata nel sistema operativo del dispositivo informatico.
4. Metodo secondo le rivendicazioni da 1 a 3, in cui determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria si basa sulla determinazione che un indirizzo della funzione del kernel corrente non si trova in un range del kernel del sistema operativo del dispositivo informatico.
5. Metodo secondo una qualsiasi delle rivendicazioni da 1 a 4 in cui analizzare l'albero delle chiamate per identificare la funzione del kernel originale comprende determinare un offset indicante la funzione del kernel originale in base al contenuto di una riga nell'albero delle chiamate, in cui l'offset è un numero di chiamata di un servizio in cui i contenuti in memoria, in corrispondenza dell'offset, puntano alla funzione del kernel originale.
6. Sistema di protezione contro la modifica non autorizzata del dump di memoria, il sistema comprende:
una memoria di un dispositivo informatico;
un processore hardware accoppiato alla memoria e configurato per:
produrre un dump di memoria del dispositivo informatico;
identificare una funzione del kernel corrente utilizzata per produrre il dump di memoria;
determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria:
confrontare una immagine del kernel su disco del dispositivo informatico con un'immagine del kernel nella memoria del dispositivo informatico;
identificare i frammenti modificati del kernel associati alla produzione del dump di memoria in base al confronto;
se la funzione del kernel corrente non è autorizzata a produrre il dump di memoria in base ad una presenza dei frammenti di kernel modificati:
determinare che il dump di memoria prodotto è stato modificato;
analizzare un albero delle chiamate per identificare una funzione del kernel originale autorizzata a produrre dump di memoria; e
chiamare la funzione del kernel originale per produrre un dump di memoria autentico.
7. Sistema secondo la rivendicazione 6, in cui il processore hardware è configurato per determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria se una riga, in una tabella di indirizzamento che punta a una funzione del kernel per i dump di memoria, è stata modificata.
8. Sistema secondo la rivendicazione 7, in cui il processore hardware è configurato per determinare che la riga è stata modificata se un indirizzo associato a un numero di chiamata di sistema nella tabella di indirizzamento in un determinato momento non corrisponde a un indirizzo associato al numero di chiamata di sistema in un momento differente, dove la chiamata di sistema è una chiamata nel sistema operativo del dispositivo informatico.
9. Sistema secondo una qualsiasi delle rivendicazioni da 6 a 8, in cui il processore hardware è configurato per determinare che la funzione del kernel corrente non è autorizzata a produrre il dump di memoria se un indirizzo della funzione del kernel corrente non si trova in un range del kernel del sistema operativo del dispositivo informatico.
10. Sistema secondo una qualsiasi delle rivendicazioni da 6 a 9, in cui il processore hardware è configurato per analizzare l'albero delle chiamate per identificare la funzione del kernel originale stabilendo un offset indicante la funzione del kernel originale in base al contenuto di una riga nell'albero delle chiamate, in cui l'offset è un numero di chiamata di un servizio in cui i contenuti in memoria, in corrispondenza dell'offset, puntano alla funzione del kernel originale.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062959222P | 2020-01-10 | 2020-01-10 | |
US17/113,195 US20210216667A1 (en) | 2020-01-10 | 2020-12-07 | Systems and methods for protecting against unauthorized memory dump modification |
Publications (2)
Publication Number | Publication Date |
---|---|
CH717045A2 CH717045A2 (it) | 2021-07-15 |
CH717045B1 true CH717045B1 (it) | 2023-11-30 |
Family
ID=73856127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CH001632/2020A CH717045B1 (it) | 2020-01-10 | 2020-12-21 | Sistemi e metodi di protezione contro la modifica non autorizzata di dump di memoria. |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210216667A1 (it) |
EP (1) | EP3848835B1 (it) |
JP (1) | JP7404223B2 (it) |
CH (1) | CH717045B1 (it) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12013942B2 (en) | 2022-03-29 | 2024-06-18 | Acronis International Gmbh | Rootkit detection based on system dump sequence analysis |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02125344A (ja) * | 1988-11-04 | 1990-05-14 | Nec Corp | 情報処理装置 |
IL132915A (en) * | 1999-11-14 | 2004-05-12 | Networks Assoc Tech Inc | Method for secure function execution by calling address validation |
WO2001037094A1 (en) | 1999-11-14 | 2001-05-25 | Clicknet Software, Inc. | Method for secure function execution by calling address validation |
US20050229250A1 (en) * | 2004-02-26 | 2005-10-13 | Ring Sandra E | Methodology, system, computer readable medium, and product providing a security software suite for handling operating system exploitations |
US7571482B2 (en) * | 2005-06-28 | 2009-08-04 | Microsoft Corporation | Automated rootkit detector |
US7802300B1 (en) * | 2007-02-06 | 2010-09-21 | Trend Micro Incorporated | Method and apparatus for detecting and removing kernel rootkits |
US8566944B2 (en) * | 2010-04-27 | 2013-10-22 | Microsoft Corporation | Malware investigation by analyzing computer memory |
JP5225515B2 (ja) | 2010-07-06 | 2013-07-03 | 三菱電機株式会社 | プロセッサ装置及びプログラム |
US8539584B2 (en) * | 2010-08-30 | 2013-09-17 | International Business Machines Corporation | Rootkit monitoring agent built into an operating system kernel |
JP5641233B2 (ja) | 2011-03-03 | 2014-12-17 | トヨタ自動車株式会社 | 車両データ取得システム及び車両データ取得方法 |
US9575793B1 (en) * | 2014-08-26 | 2017-02-21 | Amazon Technologies, Inc. | Identifying kernel data structures |
US9609005B2 (en) * | 2014-09-25 | 2017-03-28 | Mcafee, Inc. | Cross-view malware detection |
CN106203121B (zh) * | 2016-07-19 | 2019-09-06 | 珠海豹趣科技有限公司 | 内核地址防止恶意修改方法、装置以及终端 |
US10417420B2 (en) * | 2016-10-26 | 2019-09-17 | Fortinet, Inc. | Malware detection and classification based on memory semantic analysis |
US9930064B1 (en) * | 2016-11-23 | 2018-03-27 | Blue Star Software | Network management security and protection system |
WO2019013033A1 (ja) * | 2017-07-10 | 2019-01-17 | 日本電信電話株式会社 | コールスタック取得装置、コールスタック取得方法、および、コールスタック取得プログラム |
US10628586B1 (en) * | 2017-11-30 | 2020-04-21 | Palo Alto Networks, Inc. | Detecting malware via scanning for dynamically generated function pointers in memory |
WO2019151013A1 (ja) | 2018-02-02 | 2019-08-08 | 日本電気株式会社 | 情報処理装置、情報処理方法及び記録媒体 |
US11003764B2 (en) * | 2018-02-06 | 2021-05-11 | Jayant Shukla | System and method for exploiting attack detection by validating application stack at runtime |
-
2020
- 2020-12-07 US US17/113,195 patent/US20210216667A1/en not_active Abandoned
- 2020-12-21 EP EP20215988.5A patent/EP3848835B1/en active Active
- 2020-12-21 CH CH001632/2020A patent/CH717045B1/it unknown
- 2020-12-24 JP JP2020215245A patent/JP7404223B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
CH717045A2 (it) | 2021-07-15 |
EP3848835C0 (en) | 2024-05-29 |
EP3848835A1 (en) | 2021-07-14 |
US20210216667A1 (en) | 2021-07-15 |
EP3848835B1 (en) | 2024-05-29 |
JP2021111384A (ja) | 2021-08-02 |
JP7404223B2 (ja) | 2023-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220138333A1 (en) | System and method for enabling and verifying the trustworthiness of a hardware system | |
CN108701191B (zh) | 数据处理设备和验证数据处理设备的完整性的方法 | |
EP3474179A1 (en) | Information processing apparatus, method for controlling same, and computer program | |
US8683219B2 (en) | Method and apparatus for checking the integrity of data stored in a predetermined memory area of a memory | |
CH716436B1 (it) | Sistema e metodo di controllo di porzioni di archivio alla ricerca di malware. | |
US11275835B2 (en) | Method of speeding up a full antivirus scan of files on a mobile device | |
CH716656A2 (it) | Sistema e metodo di generazione e archivazione di metadati specifici dell'informatica forense. | |
US20200117439A1 (en) | Systems and Methods for Reinforced Update Package Authenticity | |
CN110659478A (zh) | 在隔离的环境中检测阻止分析的恶意文件的方法 | |
CN112507319A (zh) | 一种NVMe-oF存储系统的数据安全保护方法及装置 | |
JP7451476B2 (ja) | 根本原因解析のために経時的にフォレンジックスナップショットを相互参照するためのシステムおよび方法 | |
US10216562B2 (en) | Generating diagnostic data | |
US20200342109A1 (en) | Baseboard management controller to convey data | |
CH717045B1 (it) | Sistemi e metodi di protezione contro la modifica non autorizzata di dump di memoria. | |
US20150135015A1 (en) | Cloud auto-test system, method and non-transitory computer readable storage medium of the same | |
US10970415B2 (en) | Sensitive data redaction in memory dump | |
US10635811B2 (en) | System and method for automation of malware unpacking and analysis | |
CH718171A2 (it) | Sistemi e metodi per impedire inserimenti di processi dannosi nei software. | |
CN108197041A (zh) | 一种确定子进程的父进程的方法、设备及其存储介质 | |
JP7521871B2 (ja) | イベント・ログの改竄耐性 | |
CH716699B1 (it) | Metodo per contrastare la rimozione di informazioni di scienza digitale forense da parte di software dannosi. | |
WO2017099062A1 (ja) | 診断装置、診断方法、及び、診断プログラムが記録された記録媒体 | |
US20240236050A1 (en) | Building and using attestation model in confidential computing | |
CN110874225A (zh) | 一种数据校验方法、装置、嵌入式设备及存储介质 | |
WO2017099066A1 (ja) | 診断装置、診断方法、及び、診断プログラムが記録された記録媒体 |