Ich stieß neulich auf einen Python-OneLiner, der sich mit der Erstellung und Nutzung von memfd's befasste: Filedeskriptoren, die nur im RAM eines Rechners existieren, sich aber sonst wie normale Dateien verhalten. Wenn man ausführbaren Code in einem solchen File speichert, kann man dieses sogar ausführen. Es bleiben aber keine Spuren auf dem Rechner zurück, nachdem er ausgeschaltet wurde.
Den Toot selbst kann ich hier leider nicht verlinken: ich konnte ihn mir zwar auf Mastodon ansehen, aber nicht im Browser öffnen - da scheint irgendwas schiefgelaufen zu sein. Der Python-Code ließ sich aber kopieren - daher gebe ich wenigstens den hier wieder:
python3 -c "import os;os.fork()or(os.setsid(),print(f'/proc/{os.getpid()}/fd/{os.memfd_create(str())}'),os.kill(os.getpid(),19))"
Letztlich wird hier ein Prozess gestartet, der wiederum mittels der funktion memfd_create einen dieser besagten memfd's anlegt und - da diese mit dem Ende ihres Elternprozesses ebenfalls wieder verschwinden - mittels Signal 19 pausiert. Anschließend kann man mit der Datei unter /proc/{os.getpid()}/fd/{number} wie mit jeder anderen Datei arbeiten.
Nachdem ich das versucht und festgestellt hatte, dass das wirklich geht war mein erster Gedanke: "Das muss doch auch ohne Python in der Shell gehen!". Die gute Nachricht - wie sich hinterher herausstellte - war, dass dem nicht so ist: es existiert in der Standardinstallation kein vergleichbares Werkzeug, dass es in der Shell - wei z.B. mkfifo - gestatten würde, einen solchen memfd zu erzeugen.
Das ließ mich weiter in den Kaninchenbau abrutschen und ich erforschte zunächst viele der fast unzählbaren alternativen Wege, eine Ramdisk unter Linux zu erzeugen. Irgendwann stieß ich dann aber auf einen Blogbeitrag, der gefährlich so klang, wie das, was ich mir vorstellte: Dieser Beitrag erklärte aber nur, was geht und nicht wie man das macht. Ich konnte aber daraus entnehmen, dass der Vortrag auf einer Hackerkonferenz im Jahre 2018 gehalten worden war.
Ich sah mir also zunächst diese Präsentation an, die mir aber immer noch nicht genug Hintergründe offenbarte. Also suchte ich weiter und fand den zugehörigen Vortrag tatsächlich als Video. Nachdem ich mir dieses zu Gemüte geführt hatte, begann ich mit eigenen Experimenten, die dem dort vorgezeichneten Pfad folgten.
Besonders interessant fand ich eine für mich neue Information: dass man unter Linux als nicht-privilegierter Nutzer einfach so die Address Space Layout Randomization (ASLR) abschalten kann, überraschte mich dann doch.
Und dass es möglich ist, via /proc den Speicher einer Anwendung zu überschreiben - auch die Abschnitte, die Code enthalten! - überraschte mich ebenfalls. So kann man sich auf einfache Art und Weise das Angriffsziel zurechtlegen:
Jemand, der einen solchen Angriff bemerken wollte, müsste schon sehr speziell Ausschau halten: Prozesse, die pausiert sind, wären ein guter Anfangsverdacht!
Der Mensch, der diesen Vortrag damals gehalten hat, hat eine eigene Firma, in deren Blog, man den Artikel dazu ebenfalls finden kann.
Testdatengeneratoren als Microservices mit Docker
02.11.2019
Ich habe die verschiedenen Testdatengeneratoren mittels Microservices über HTTP zugänglich gemacht, um sie unabhängig von der verwendeten Programmiersprache und/ oder Version (Java 11) verwenden zu können.
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Git(lab|hub) Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
Nachdem ich neulich auf einen sehr interessanten Link gestoßen war, habe ich mich dafür interessiert, ob es möglich wäre - und falls ja: wie einfach - GIF-Animationen aus Java heraus zu erzeugen - und zwar mit Bordmitelln und ohne Zuhilfenahme externer Biblioheken
Weiterlesen...Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:
Weiterlesen...Nachdem es nun bereits seit einiger Zeit ein wenig stiller um meine diversen Generatoren für Testdaten geworden ist, habe ich über den Feiertag in Thüringen einen neuen begonnen.
Weiterlesen...Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.