Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
mquire — Zero-dependency Linux memory forensics, sfruttando BTF e kallsyms incorporati nel kernel per un'analisi della memoria type-aware senza informazioni di debug esterne. | Kitploit
Strumenti/GitHubGitHub/trailofbits/mquire
OSINT (Open Source Intelligence)Memory ForensicsAnalisi delle VulnerabilitàReverse EngineeringInformatica ForenseAnalisi MalwareDigital ForensicsAnalisi di BinariThreat IntelligenceApprendimento e FormazioneRisposta agli Incidenti
18484623 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
trailofbits/mquire

mquire

Zero-dependency Linux memory forensics, sfruttando BTF e kallsyms incorporati nel kernel per un'analisi della memoria type-aware senza informazioni di debug esterne.

Vedi RepositorySito web

mquire

mquire, un gioco di parole tra memory e inquire, è uno strumento di interrogazione della memoria ispirato a osquery.

Vantaggio principale: nessun simbolo di debug esterno necessario

mquire può analizzare snapshot della memoria del kernel Linux senza richiedere simboli di debug esterni.

Tutto ciò che serve per l'analisi è già incorporato nel dump di memoria stesso. Questo significa che puoi analizzare:

  • Kernel sconosciuti o personalizzati che non hai mai visto prima
  • Qualsiasi distribuzione Linux senza preparazione
  • Snapshot di memoria in cui i simboli di debug esterni non sono disponibili o sono andati persi

Requisiti

Requisiti di versione del kernel:

  • Supporto BTF: Kernel 4.18 o successivo con BTF abilitato (la maggior parte delle distribuzioni moderne lo abilita per impostazione predefinita)
  • Supporto Kallsyms: Kernel 6.4 o successivo (a causa di modifiche nel formato di scripts/kallsyms.c)

Come funziona

mquire analizza la memoria del kernel leggendo due tipi di informazioni incorporate nei kernel Linux moderni:

  1. Informazioni sui tipi da BTF (BPF Type Format) - Descrive la struttura e la disposizione dei tipi di dati del kernel. I dati BTF vengono analizzati utilizzando la crate btfparse.
  2. Informazioni sui simboli da Kallsyms - Fornisce le posizioni in memoria dei simboli del kernel (gli stessi dati utilizzati da /proc/kallsyms)

Combinando le informazioni sui tipi con le posizioni dei simboli, mquire può trovare e leggere strutture dati complesse del kernel come:

  • Mappature di memoria dei processi (utilizzando strutture maple tree)
  • Dati di file memorizzati nella cache (utilizzando strutture XArray)
  • Messaggi del log del kernel

Ciò rende possibile estrarre file direttamente dalla cache dei file del kernel, anche se sono stati eliminati dal disco.

Note di compatibilità

Lo scanner Kallsyms dipende dal formato dei dati di scripts/kallsyms.c nel sorgente del kernel. Se le future versioni del kernel modificano questo formato, le euristiche dello scanner potrebbero dover essere aggiornate.

Capacità

Tabelle

mquire fornisce tabelle SQL per interrogare diversi aspetti del sistema o dello stato dello strumento stesso.

mquire non è un database. Ogni query ricostruisce le strutture dati del kernel scansionando la memoria e seguendo i puntatori. Non ci sono indici precalcolati o risultati memorizzati nella cache: ogni accesso a una tabella è una traversata dei dati del kernel. Usa AS MATERIALIZED per evitare scansioni ridondanti (vedi Query Optimization) e fornisci vincoli come task quando interroghi tabelle per-processo come task_open_files e memory_mappings per limitare la scansione a un singolo processo.

Principio di progettazione: indirizzi virtuali come chiavi di join. Le tabelle usano virtual_address (l'indirizzo del kernel della struttura dati sottostante) come chiave di join canonica, non pid o altri identificatori visibili all'utente. Questa è una scelta intenzionale, perché lo stesso PID può apparire più volte in diverse fonti di scoperta e task radice, mentre un indirizzo virtuale identifica univocamente un oggetto specifico del kernel. Sia le tabelle SQL che l'API sottostante LinuxOperatingSystem sono costruite attorno a questa convenzione.

Informazioni di sistema

  • os_version - Versione del kernel e architettura
  • system_info - Nome host e nome dominio
  • boot_time - Ora di avvio del sistema
  • kallsyms - Indirizzi dei simboli del kernel (stessi dati di /proc/kallsyms)
  • dmesg - Messaggi del ring buffer del kernel (stessi dati del comando dmesg)

Informazioni sui processi

  • tasks - Processi in esecuzione con linee di comando e percorsi dei binari. Ogni task viene scoperto tramite più fonti indipendenti, utile per il rilevamento di rootkit. Vedi Confronto dei metodi di enumerazione dei task per il rilevamento di rootkit e Elenco processi deduplicato.
  • task_open_files - File aperti da ogni processo (fornisci un vincolo task per un'analisi mirata, o interroga tutti i task contemporaneamente)
  • memory_mappings - Regioni di memoria mappate da ogni processo (fornisci un vincolo task per un'analisi mirata, o interroga tutti i task contemporaneamente)
  • task_capabilities - Insiemi di capacità Linux (effective, permitted, inheritable, bounding, ambient) per un task. Richiede un vincolo task, quindi uniscilo a tasks/processes (es. JOIN task_capabilities c ON c.task = p.virtual_address).
  • task_ptrace_flags - Decodifica il campo ptrace di un dato task. Richiede un vincolo task.

Moduli del kernel

  • kernel_modules - Moduli del kernel caricati con metadati (nome, stato, versione, parametri, flag di contaminazione)
  • kernel_module_mem_entries - Le voci mem da un oggetto modulo del kernel. Richiede un vincolo kernel_module, quindi uniscilo a kernel_modules (es. JOIN kernel_module_mem_entries r ON r.kernel_module = m.virtual_address).
  • ftrace_ops - Un elenco di nodi struct ftrace_ops, percorso dal simbolo ftrace_ops_list per impostazione predefinita. Vincola virtual_address per leggere un singolo nodo, o start_vaddr (opzionalmente delimitato da end_vaddr) per partire da un nodo arbitrario.

Informazioni di rete

  • network_connections - Connessioni di rete attive (socket TCP)
  • network_interfaces - Interfacce di rete con indirizzi IP e indirizzi MAC

File system

  • syslog_file - Log di sistema letti dalla cache dei file del kernel (funziona anche se i file di log sono stati eliminati o non sono disponibili, purché siano memorizzati nella cache in memoria)

Debug

  • mquire_diagnostics - Log interni di mquire che mostrano l'avanzamento dell'analisi, avvisi ed errori

Comandi

mquire fornisce tre comandi principali:

  • mquire shell - Avvia una shell SQL interattiva per interrogare snapshot di memoria
  • mquire query - Esegue una singola query SQL e restituisce i risultati (supporta formato JSON o tabella)
  • mquire command - Esegue comandi personalizzati su snapshot di memoria (es. .task_tree, .system_version, .dump)

Comandi con punto

mquire fornisce comandi speciali con prefisso punto (.) per distinguerli dalle query SQL.

Comandi incorporati

Questi comandi funzionano nella shell interattiva e con mquire query:

  • .tables - Elenca tutte le tabelle disponibili
  • .schema - Mostra lo schema di tutte le tabelle
  • .schema <tabella> - Mostra lo schema di una tabella specifica
  • .commands - Elenca tutti i comandi personalizzati disponibili
  • .exit - Esce dalla shell interattiva (solo shell)

Comandi personalizzati

Questi comandi funzionano nella shell interattiva e con mquire command:

Usa --help con qualsiasi comando per vedere le opzioni disponibili e le informazioni sull'uso. Ad esempio: .task_tree --help

.system_version

Mostra le informazioni sulla versione del sistema operativo.

Questo è un comando di comodità equivalente a SELECT * FROM os_version, ma con output formattato.

.task_tree

Mostra un albero gerarchico di processi e thread in esecuzione, simile al comando pstree su Linux.

Opzioni:

  • --show-threads - Include i thread oltre ai processi. Quando abilitato, mostra sia TGID che TID per ogni voce.
  • --use-real-parent - Usa il campo real_parent invece di parent per costruire la struttura ad albero. Il campo real_parent mostra il processo genitore originale prima di qualsiasi riassegnazione (utile per tracciare le catene di creazione dei processi anche dopo l'uscita dei processi genitori).
Scarica lo strumento