Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
mquire — Ohne Abhängigkeiten Linux-Speicherforensik, die kernel-eingebettetes BTF und kallsyms für typbewusste Speicheranalyse ohne externe Debug-Informationen nutzt. | Kitploit
Tools/GitHubGitHub/trailofbits/mquire
OSINT (Open-Source-Intelligence)SpeicherforensikSchwachstellenanalyseReverse EngineeringForensikMalware-AnalyseDigitale ForensikBinäranalyseBedrohungsanalyseLernen & BildungIncident Response
184846vor 23 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
trailofbits/mquire

mquire

Ohne Abhängigkeiten Linux-Speicherforensik, die kernel-eingebettetes BTF und kallsyms für typbewusste Speicheranalyse ohne externe Debug-Informationen nutzt.

Repository anzeigenWebseite

mquire

mquire, ein Wortspiel aus den Wörtern memory und inquire, ist ein Speicher-Abfragewerkzeug, inspiriert von osquery.

Hauptvorteil: Keine externen Debugsymbole erforderlich

mquire kann Linux-Kernel-Speicherabbilder analysieren, ohne dass externe Debugsymbole erforderlich sind.

Alles, was für die Analyse benötigt wird, ist bereits im Speicherabbild selbst eingebettet. Dies bedeutet, dass Sie Folgendes analysieren können:

  • Unbekannte oder benutzerdefinierte Kernel, die Sie noch nie gesehen haben
  • Jede Linux-Distribution ohne Vorbereitung
  • Speicherabbilder, bei denen externe Debugsymbole nicht verfügbar oder verloren gegangen sind

Anforderungen

Anforderungen an die Kernel-Version:

  • BTF-Unterstützung: Kernel 4.18 oder neuer mit aktiviertem BTF (die meisten modernen Distributionen aktivieren es standardmäßig)
  • Kallsyms-Unterstützung: Kernel 6.4 oder neuer (aufgrund von Änderungen im scripts/kallsyms.c-Format)

Funktionsweise

mquire analysiert Kernel-Speicher, indem es zwei Arten von Informationen liest, die in modernen Linux-Kerneln eingebettet sind:

  1. Typinformationen aus BTF (BPF Type Format) – Beschreibt die Struktur und das Layout von Kernel-Datentypen. BTF-Daten werden mit der btfparse crate geparst.
  2. Symbolinformationen aus Kallsyms – Liefert die Speicheradressen von Kernel-Symbolen (gleiche Daten wie /proc/kallsyms)

Durch die Kombination von Typinformationen mit Symbolpositionen kann mquire komplexe Kernel-Datenstrukturen finden und lesen, wie zum Beispiel:

  • Prozessspeicherzuordnungen (unter Verwendung von Maple-Tree-Strukturen)
  • Zwischengespeicherte Dateidaten (unter Verwendung von XArray-Strukturen)
  • Kernel-Lognachrichten

Dies ermöglicht es, Dateien direkt aus dem Kernel-Dateicache zu extrahieren, selbst wenn sie von der Festplatte gelöscht wurden.

Kompatibilitätshinweise

Der Kallsyms-Scanner hängt vom Datenformat aus scripts/kallsyms.c im Kernel-Quellcode ab. Wenn zukünftige Kernel-Versionen dieses Format ändern, müssen die Scanner-Heuristiken möglicherweise aktualisiert werden.

Funktionen

Tabellen

mquire bietet SQL-Tabellen, um verschiedene Aspekte des Systems oder den Zustand des Werkzeugs selbst abzufragen.

mquire ist keine Datenbank. Jede Abfrage rekonstruiert Kernel-Datenstrukturen, indem Speicher durchsucht und Zeigern gefolgt wird. Es gibt keine vorberechneten Indizes oder zwischengespeicherten Ergebnisse: Jeder Tabellenzugriff ist eine Traversierung von Kernel-Daten. Verwenden Sie AS MATERIALIZED, um redundante Scans zu vermeiden (siehe Abfrageoptimierung), und geben Sie Einschränkungen wie task an, wenn Sie prozessbezogene Tabellen wie task_open_files und memory_mappings abfragen, um den Scan auf einen einzelnen Prozess zu beschränken.

Designprinzip: Virtuelle Adressen als Join-Schlüssel. Tabellen verwenden virtual_address (die Kernel-Adresse der zugrunde liegenden Datenstruktur) als kanonischen Join-Schlüssel, nicht pid oder andere für den Benutzer sichtbare Identifikatoren. Dies ist beabsichtigt, da dieselbe PID mehrmals in verschiedenen Erkennungsquellen und Root-Tasks auftauchen kann, während eine virtuelle Adresse ein bestimmtes Kernel-Objekt eindeutig identifiziert. Sowohl die SQL-Tabellen als auch die zugrunde liegende LinuxOperatingSystem-API sind um diese Konvention herum aufgebaut.

Systeminformationen

  • os_version – Kernel-Version und Architektur
  • system_info – Hostname und Domainname
  • boot_time – Systemstartzeit
  • kallsyms – Kernel-Symboladressen (gleiche Daten wie /proc/kallsyms)
  • dmesg – Kernel-Ringpuffernachrichten (gleiche Daten wie der Befehl dmesg)

Prozessinformationen

  • tasks – Laufende Prozesse mit Befehlszeilen und Binärpfaden. Jeder Task wird über mehrere unabhängige Quellen entdeckt, was für die Rootkit-Erkennung nützlich ist. Siehe Vergleich der Task-Enumeration-Methoden zur Rootkit-Erkennung und Deduplizierte Prozessliste.
  • task_open_files – Von jedem Prozess geöffnete Dateien (geben Sie eine task-Einschränkung für eine gezielte Analyse an oder fragen Sie alle Tasks auf einmal ab)
  • memory_mappings – Speicherbereiche, die jedem Prozess zugeordnet sind (geben Sie eine task-Einschränkung für eine gezielte Analyse an oder fragen Sie alle Tasks auf einmal ab)
  • task_capabilities – Linux-Fähigkeitssets (effective, permitted, inheritable, bounding, ambient) für einen Task. Erfordert eine task-Einschränkung, also joinen Sie es mit tasks/processes (z.B. JOIN task_capabilities c ON c.task = p.virtual_address).
  • task_ptrace_flags – Dekodiert das ptrace-Feld eines angegebenen Tasks. Erfordert eine task-Einschränkung.

Kernel-Module

  • kernel_modules – Geladene Kernel-Module mit Metadaten (Name, Status, Version, Parameter, Taint-Flags)
  • kernel_module_mem_entries – Die mem-Einträge aus einem Kernel-Modul-Objekt. Erfordert eine kernel_module-Einschränkung, also joinen Sie es mit kernel_modules (z.B. JOIN kernel_module_mem_entries r ON r.kernel_module = m.virtual_address).
  • ftrace_ops – Eine Liste von struct ftrace_ops-Knoten, standardmäßig vom Symbol ftrace_ops_list aus durchlaufen. Beschränken Sie virtual_address, um einen einzelnen Knoten zu lesen, oder start_vaddr (optional begrenzt durch end_vaddr), um von einem beliebigen Knoten aus zu durchlaufen.

Netzwerkinformationen

  • network_connections – Aktive Netzwerkverbindungen (TCP-Sockets)
  • network_interfaces – Netzwerkschnittstellen mit IP-Adressen und MAC-Adressen

Dateisystem

  • syslog_file – Systemprotokolle, die aus dem Kernel-Dateicache gelesen wurden (funktioniert auch, wenn Protokolldateien gelöscht oder nicht verfügbar sind, solange sie im Cache zwischengespeichert sind)

Debugging

  • mquire_diagnostics – Interne mquire-Protokolle, die Analysefortschritt, Warnungen und Fehler anzeigen

Befehle

mquire bietet drei Hauptbefehle:

  • mquire shell – Startet eine interaktive SQL-Shell zur Abfrage von Speicherabbildern
  • mquire query – Führt eine einzelne SQL-Abfrage aus und gibt Ergebnisse aus (unterstützt JSON- oder Tabellenformat)
  • mquire command – Führt benutzerdefinierte Befehle auf Speicherabbildern aus (z.B. .task_tree, .system_version, .dump)

Punkt-Befehle

mquire bietet spezielle Befehle, die mit einem Punkt (.) beginnen, um sie von SQL-Abfragen zu unterscheiden.

Eingebaute Befehle

Diese Befehle funktionieren in der interaktiven Shell und mit mquire query:

  • .tables – Listet alle verfügbaren Tabellen auf
  • .schema – Zeigt das Schema für alle Tabellen an
  • .schema <tabelle> – Zeigt das Schema für eine bestimmte Tabelle an
  • .commands – Listet alle verfügbaren benutzerdefinierten Befehle auf
  • .exit – Beendet die interaktive Shell (nur Shell)

Benutzerdefinierte Befehle

Diese Befehle funktionieren in der interaktiven Shell und mit mquire command:

Verwenden Sie --help bei jedem Befehl, um verfügbare Optionen und Nutzungsinformationen anzuzeigen. Zum Beispiel: .task_tree --help

.system_version

Zeigt die Betriebssystemversionsinformationen an.

Dies ist ein praktischer Befehl, der SELECT * FROM os_version entspricht, jedoch mit formatierter Ausgabe.

.task_tree

Zeigt einen hierarchischen Baum der laufenden Prozesse und Threads an, ähnlich dem Befehl pstree unter Linux.

Tool herunterladen