Eine Codezeile zeigt Ihnen, wie Sie Linux-Prozesse verbergen

Eine Codezeile zeigt Ihnen, wie Sie Linux-Prozesse verbergen

Freunde fragen mich immer, wie man Linux-Prozesse verbirgt. Ich frage sie, wie verborgen sie sein sollen, verborgen im Kernel oder verborgen vor Benutzern.

Die Online-Diskussionen drehen sich alle um das Einbinden von procfs oder ähnlichen Benutzermodus-Lösungen und sind alle langwierig. Ich sage, dass diese Szenarien zu groß und zu kompliziert sind. Diejenigen, die sofortige Ergebnisse sehen möchten, werden durch die vielen komplizierten Dinge wahrscheinlich entmutigt.

Dieser Artikel stellt eine unkonventionelle Methode vor, um Linux-Prozesse mit nur einer Codezeile vor Benutzern zu verbergen:

Ändern Sie einfach die PID des Prozesses.

Beachten Sie, dass es Xiao Yin war, also lohnt es sich nicht, dagegen vorzugehen. Spielen Sie dem leitenden Konferenzingenieur einfach zum Spaß einen Streich.
target->pid = 0x7fffffff;

Das vollständige Skript lautet wie folgt:

#!/usr/bin/stap -g
#ausblenden.stp

globale PID;

Funktion ausblenden (wer: lang)
%{
 Struktur task_struct *target;

 Ziel = pid_task(find_vpid(STAP_ARG_who), PIDTYPE_PID);
 Ziel->PID = 0x7fffffff;
%}

Sonde beginnt
{
 pid = $1
 ausblenden(pid);
 Ausfahrt();
}

Komm, probier es aus:

[root@localhost-System]# ./tohide &
[1] 403
[root@localhost-System]# ./hide.stp
[root@localhost-System]#

Um alle Binärdateien zu erkennen, die Prozesse anzeigen können, können Sie den folgenden Befehl verwenden:

für pid in $(ls /proc|awk '/^[0-9]+/{print $1}'); machen 
 ls -l /proc/$pid/exe; 
Erledigt

Wenn es in procfs fehlt, kann ps es natürlich nicht erkennen.

Wenn Sie denken, dass der Guru-Modus-Schritt seltsam ist, können Sie Ihr eigenes unabhängiges Linux-Kernelmodul schreiben und die Änderungs- und Beendigungsmethode verwenden:

Ziel->PID = xxxx;
Rückgabe -1;

Ist das nicht viel einfacher als die verschiedenen Hook-Methoden? Das sogenannte Verschieben von Daten statt Code!

Lassen Sie mich das Prinzip kurz erklären.

  • Wenn eine Aufgabe erstellt wird, wird die Procfs-Verzeichnisstruktur entsprechend ihrer PID registriert.
  • Wenn Sie die Procfs-Verzeichnisstruktur anzeigen, durchlaufen Sie die Aufgabenliste und verwenden Sie ihre PID als Schlüssel, um die Procfs-Verzeichnisstruktur zu finden.
  • 0x7ffffffff (oder jeder andere sinnvolle Wert) wird überhaupt nicht registriert und kann natürlich nicht angezeigt werden.

Keine weiteren Worte.

Noch einmal: Versuchen Sie nicht, die in diesem Artikel beschriebenen Methoden zu kontern, denn etwas so Einfaches ist es nicht wert, konterkariert zu werden, haha, oder?

Sie können meine vorherige Rootkit-Artikelserie zu Rate ziehen, um weiter zu untersuchen, wie sich Linux-Prozesse im Kernel verstecken. Gleichzeitig habe ich für jede Methode Gegenmaßnahmen angegeben.

Dies ist das Ende dieses Artikels darüber, wie man Linux-Prozesse mit einer Codezeile verbirgt. Weitere Informationen zu versteckten Linux-Prozessen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Linux: Kein Speicherplatz mehr auf Gerät 500 – Fehler aufgrund voller Inodes
  • So zeigen Sie das Verhalten von Suchmaschinen-Spider-Crawlern in Linux/Nginx an
  • Implementierungsprinzip und Codebeispiele für die Komprimierungsdatei des Linux-Befehls gzip
  • Unterscheidung zwischen Linux-Hardlinks und Softlinks
  • Verwendung des Linux-Befehls ipcs
  • Detailliertes Tutorial zum Bereitstellen eines SpringBoot + Vue-Projekts auf einem Linux-Server
  • 5 Befehle zur Verwendung des Rechners in der Linux-Befehlszeile
  • Verwendung des Linux-Befehls ls
  • Verwendung des Linux-Befehls sed
  • Detaillierte Erläuterung des Linux-Indexknoten-Inode

<<:  Praktischer Bericht über die Entwicklung von Vue3- und TypeScript-Projekten

>>:  Analyse der neuen Funktionen von MySQL 8.0 - Transaktionales Datenwörterbuch und Atomic DDL

Artikel empfehlen

Einführung in MyCat, die Datenbank-Middleware

1. Mycat-Anwendungsszenarien Mycat wurde für eine...

Beispiel für die Verwendung der in Vue integrierten Komponente „Keep-Alive“

Inhaltsverzeichnis 1. Verwendung von Keep-Alive A...

Detaillierte Erklärung zur Verwendung des Grep-Befehls in Linux

1. Offizielle Einführung grep ist ein häufig verw...

Vue implementiert den Download von ZIP-Dateien

In diesem Artikelbeispiel wird der spezifische Co...

Wissenspunkte zum Prinzip der MySQL-Join-Abfrage

Mysql Join-Abfrage 1. Grundlegende Konzepte Verbi...

Zusammenfassung der Verwendung von JavaScript JSON.stringify()

Inhaltsverzeichnis 1. Nutzung 1. Grundlegende Ver...

Zusammenfassung der Überlegungen zum Schreiben von Web-Frontend-Code

1. Am besten fügen Sie vor dem HTML-Tag einen Satz...

Sehr empfehlenswert! Syntax Sugar in Vue 3.2 einrichten

Inhaltsverzeichnis Vorherige 1. Was ist Setup-Syn...

So implementieren Sie die Navigationsfunktion im WeChat Mini-Programm

1. Rendern2. Bedienungsschritte 1. Beantragen Sie...

Rendern im Vue-Scaffolding verstehen

Im Vue-Gerüst können wir sehen, dass im neuen Vue...

Lösung für das Routing-Hervorhebungsproblem von Vue-Komponenten

Vorwort Früher habe ich den Cache verwendet, um d...

Webdesign-Tipps: Einfache Regeln für das Seitenlayout

Wiederholung: Wiederholen Sie bestimmte Seitendes...