Archiv ‘Uncategorized’

Samstag, 11. September 2021

Notfallmässig eine Reverse Shell auf einem Linux-System aufbauen

Heute habe ich auf einem meiner Linux-Systems nach langer Zeit wieder einmal apt-get upgrade durchgeführt. Eines der wenigen System in meinem Fuhrpark, auf welchem noch Debian Stretch läuft.

Per SSH aus der Ferne eingeloggt, winkte ich die Meldungen durch — und musste offenbar übersehen haben, dass apt-get vor hatte, eine ganze Ladung kritischer Dienste zu entfernen. Unter anderem auch das Paket openssh-server. Nachdem das Update durch war, logge ich mich mittels Druck auf Ctrl-D aus. Und sah erst dann monits Warnmeldungen in meiner INBOX, dass auf TCP 22 kein SSH Daemon mehr lauschte. Doch dann war es bereits zu spät — ich hatte die letzte „Brücke“ zum Server soeben mit Ctrl-D in die Wüste geschickt.

Alle meine Systeme sysloggen via Site-to-Site-VPN auf einen zentralen ELK-Server. In Kibana dann die Hiobs-Botschaft:

sshd[10954]: error: rexec of /usr/sbin/sshd failed: No such file or directory

Sowie

sshd[10954]: fatal: chroot("/run/sshd"): No such file or directory [preauth]

Da der Server 13 Kilometer weit weg in der Wohnung eines Bekannten steht, hatte ich den Salat. Ich wollte eine Autofahrt vor Ort unbedingt vermeiden.

Glücklicherweise war der Bekannte gerade zu Hause und erklärte sich bereit, mir in diesem Notfall als manuelles, menschliches KVM zu helfen.

Als erstes leitete ich ihn via iMessage an, sich in den Laptop einzuloggen. Das klappte. Anschliessend wollte ich ihn zwei Befehle ausführen lassen:

$ sudo su -
# apt-get install openssh-server

Doch bereits der erste Befehl produzierte eine Fehlermeldung:

-bash: sudo: command not found

Himmelheiland, war sogar sudo deinstalliert worden?!

Immerhin su funktionierte, aber ich wollte dem Helfer nicht zumuten, das 32-stellige, zufällig generierte Passwort mühsam von iMessage auf die Laptop-Tastatur abzutippen.

Ich wollte schon aufgeben, da kam mir eine Blitzidee: Ich benötigte eine Reverse Shell unter dem nicht-privilegierten Benutzer, und dann könnte ich selber das Problem autonom lösen.

Das VPN war wegen eines Neustarts zusammengebrochen (genau dieser Server ist der entfernte Endpunkt), aber glücklicherweise hatte ich ein zweites System im entfernten Netzwerk, auf welchem ein SSH-Server mit einer öffentlichen IP lauscht. Ich war also zusätzlich parallel auf diesem zweiten Server eingeloggt. Zu diesem benachbarten Server sollte das Reverse Shell aufgebaut werden.

Eine Google-Suche lieferte folgende wichtigen Seiten zu Tage: Bind Shells and Reverse Shells with netcat, Hacking with Netcat part 2: Bind and reverse shells, Complete guide to Reverse Shells sowie Su: must be run from a terminal.

Der Bekannte gab nun auf dem zerschossenen Linux folgenden Befehl ein:

$ nc -lvp 12345 -e /bin/bash

Auf dem Schwester-Server gab ich dann ein:

$ nc -nv 10.1.2.3 12345

Wobei 10.1.2.3 die IP des zerschossenen Systems war.

Die Verbindung war zustande gekommen, aber ich sah keine richtige Shell. Befehle konnte ich eingeben (bspw. ls -l), und das Resultat wurde auf meinem Bildschirm angezeigt.

Problem: Als ich su ausführen wollte, wurde das mit der Fehlermeldung su : must be run from a terminal verhindert.

Zuerst überlegte ich mir den Weg über Scripts: How to pass the password to su/sudo/ssh without overriding the TTY? und su pass password to script.

Doch nach Konsultation von Getting around „su : must be run from a terminal“ schaffte ich eine wirklich vollständig brauchbare Shell nach Eingabe des folgenden Befehls:

python -c 'import pty; pty.spawn("/bin/bash")'

Einschub: Unter Stretch funktioniert das, unter Bullseye sollte man nun folgenden Befehle verwenden:

python3 -c 'import pty; pty.spawn("/bin/bash")'

Hurra, ich hatte eine Shell! Aber Achtung: Ein fahrlässiges, aus Gewohnheit gedrücktes Ctrl-C killt die netcat-Verbindung, nicht das laufende Programm.

Andere Varianten unter Zuhilfenahme anderer potentieller Bordmittel wie Perl, PHP etc. sind in Spawning a TTY Shell dokumentiert.

Nun also wollte ich su anwenden, realisierte erst dann aber, dass das in meiner Passwort-Datenbank hinterlegte 32 Zeichen lange Passwort nicht korrekt war. Ich hatte bei der Installation vergessen, dass viel zu einfache dummy-Passwort anzupassen … Als ich dieses eingegeben hatte, landete ich in einer root-Shell.

Doch oha: openssh-server liess sich wegen Abhängigkeitsproblemen nicht installieren.

Was nun? Ich musste irgendwie einen persistenten Server als ersten Brückenkopf einrichten, der beim versehentlichen Betätigen von Ctrl-C auf meiner Seite weiter lief und erneute Verbindungsversuche zuliess.

Ich überlegte mir, ein PHP-Backdoor-Script zu installieren (php-reverse-shell, Quellcode), doch wie konnte ich dieses so einrichten, dass es permanent oder periodisch automatisch Verbindungsversuche unternehmen würde?

Nach etwas tüfteln dann die viel einfachere Lösung:

# apt-get install telnetd

Besser wäre eigentlich gewesen:

# apt-get install telnetd-ssl

Via: How do I turn on telnet service on for a Linux / FreeBSD system?

Und nun hatte ich wieder einen „sauberen“ Zugang zum Server.

Die nachfolgenden Stunden verbrachte ich damit, den Server von Stretch auf Buster und dann auf Bullseye zu lüpfen und eine Ladung Pakete zu installieren, welche apt heimtückisch entfernt hatte: OpenSSH, sudo, cron, OpenVPN, Samba, monit.

Tags: , , , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 16. März 2021

Meinung: Die Schweiz im Kippzustand

Unverständnis, Unbehagen, Bedenken, manchmal Wut. Das alles entlädt sich über den Bundesrat und seiner evidenzlosen Politik der präventiven Panik. Jedenfalls hinter verschlossenen Türen. […]

Quelle: Bröckelnde Fassade: Die Schweiz im Kippzustand

Und:

Bereitwillig verkünden immer mehr Betriebe via dienstfertige Medien, dass sie die bedenkliche bis beängstigende Idee «Bedienung nur für Geimpfte» mittragen werden, falls es soweit kommen sollte. Einfach, um endlich wieder Gäste empfangen zu können. Dabei vergessen sie, wer ihnen in den letzten Monaten den Rücken gestärkt hat: Es waren die Leute auf der «anderen Seite», die Massnahmenkritiker der ersten Stunde. Und mit Sicherheit nicht die Vertreter des offiziellen Kurses.

Es werden, wenn es so weit kommt, in Zukunft sehr viele Leute ihren Kaffee oder ihr Menü bestellen dürfen, denen vernichtete Existenzen in der Gastronomie monatelang völlig egal waren. Die sich sogar für einen harten Kurs ausgesprochen haben. Während Leute, die mit Transparenten für die Gastrobetriebe demonstriert und vielleicht auch mal eine Busse kassiert haben, draussen bleiben müssen. Eine seltsame Vorstellung.

Tags: , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Samstag, 13. März 2021

Tichys Bilanz von Merkels Amtszeit

Merkel hat die CDU innerlich zerstört. Diese Partei hat die verheerende Energiewende zu verantworten, die irre Einwanderungspolitik, die unbegrenzt bis zum heutigen Tag anhält, die Euro-Politik, die die Stabilität der Währung und den Wohlstand gefährdet, die Höchststeuerbelastung und den Verfall der wissenschaftlichen wie industriellen Kompetenz dieses Landes.

Quelle: Serie „Nach Merkel“: Die CDU sitzt in der Falle

Tags: , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 10. Januar 2021

Eine Skiliftfahrt im zweiten Corona-Winter

Heute auf der Lenk, Talstation Bühlberg: Stephanie und ich besteigen den 6er Skisessellift Richtung Hahnenmoos. Wie üblich wählen wir zwei Sitze am Rand. Auf den gegenüberliegenden zwei äusseren Sitzen steigt ein anderes Skifahrerpaar zu. „Wunderbar!“, denken wir uns: „Der Pandemie-Sicherheitsabstand ist so eingehalten.“

Zu früh gefreut: In letzter Sekunde prescht aus der Schlange ein zusätzlicher Skifahrer hervor und setzt sich auf den freien Sitz neben mir.

Nun, sein gutes Recht, schliesslich sind die Kapazitäten hier (im Gegensatz zu den Gondeln) nicht beschränkt. Andere hätten Panik gekriegt, mich stört es nicht.

Da es heute so kalt war (und vor allem: windig!) wie noch an keinem unserer Skitage in dieser Saison, schliessen Stephanie und ich kurz nach Verlassen der Talstation die Windhaube.

Der Person neben mir wird es sofort spürbar unwohl. Nervös greift er zur Halterung der Haube: „Äh, Corona. Können wir die nicht oben lassen, wegen Corona?“ Unsere Antwort wartet er nicht ab, und schwupps ist die Haube wieder oben. Ich muss schmunzeln und meine zu ihm: „Also wenn Sie derart Angst vor Corona haben, wären Sie vielleicht besser zu Hause geblieben …“. Er entgegnet mir: „Bleiben Sie doch zu Hause!“. Ich entscheide mich für Deeskalation, und schweige.

Die nächsten fünf Minuten konzentriere ich mich nun darauf, den heftigen, vom Berg herkommenden Wind zu überleben. Heute Abend kann ich Entwarnung geben: Ich bin noch im Besitz aller Finger und Zehen.

Bei der Bergstation Hahnenmoos angekommen legen wir vor der Abfahrt auf den Pisten 32 und 35 eine Pause ein — Stephanie muss zu Handschuhen wechseln, welchen der Wind weniger ausmacht. Dabei schauen wir uns gegenseitig an und verdrehen unsere Augen: Wir hoffen, dass der Zeitgenosse künftig primär mal die 1.5 Meter Sicherheitsabstand einhält und sich nicht mehr in letzter Sekunde auf gute gefüllte Sessellifte quetscht.

Tags: , , , , , , , , ,
Labels: Uncategorized

1 Kommentar | neuen Kommentar verfassen

Samstag, 24. Oktober 2020

Von der richtigen und guten Wissenschaft

Ihre Meinung: „Wissenschaftler sind ja nicht automatisch Stimmen der Vernunft.“

Meine Meinung: Bingo! Das haben die letzten acht Monate beispielhaft gezeigt. Skeptisch sollte man insbesondere gegenüber denjenigen Exponenten sein, die mit YouTube-Clicks ihr Einkommen bestreiten. Oder denjenigen, die endlich ihren Lebensinhalt mit rumtwittern gefunden haben.

Und jetzt DER HAMMER (zwingend zuerst maiLab schauen):

Tags: , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 27. September 2020

Nicht-leere Amazon AWS Glacier Vaults löschen

Ich habe vor einigen Monaten meine Storage-as-a-Service-Optionen konsolidiert: Tarsnap habe ich wegen den horrenden Kosten gekündet und setze nun auf Duplicity mit Backblaze B2. Und da ich gerade dabei war, lasse ich Arq, welches meine Apple Photos (früher: iPhoto Library) sichert, neu auch auf Backblaze sichern (vorher: AWS Glacier).

Um wiederkehrende Kosten zu sparen, wollte ich nun meine AWS Glacier Vaults löschen. Das geht aber nicht über das Amazon GUI, respektive nicht so einfach wie man sich das vorstellt:

Die Lösung ist ein Script, das im Internet herumgeistert. Ich fand es über Deleting Non-empty AWS Glacier Vaults in folgendem Github-Repository: leeroybrun/glacier-vault-remove.

Das schwierigste war, die mit dem Vault verknüpften AWS-Credentials ausfindig zu machen (ich habe offenbar mehrere). Diese musste man in credentials.json speichern …

{
	"AWSAccessKeyId": "...",
	"AWSSecretKey":   "..."
}

… und dann das Script ausführen:

$ python3 removeVault.py eu-west-1 ABCDE_iPhoto_Library

Das ganze liess ich in einer screen-Session auf einem meiner Debian GNU/Linux-Server laufen, denn das Löschen dauerte viele, viele Stunden.

Tags: , , , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 27. September 2020

Bye bye, Arlo

Heute Abend geht ein Arlo- und ein Arlo Pro-Paket an den Meistbietenden.

Der Auslöser: In der Nacht vom Samstag, 30. auf den Sonntag, 31. Mai 2020, wurde mein Fahrrad in den frühen Morgenstunden vom Veloabstellplatz vor unserem Haus entwendet. Obwohl ich den Abstellplatz mit einer Arlo Pro-Kamera gefilmt habe, die auf Bewegungen hätte reagieren sollen, lag für den entscheidenden Moment (irgendwann zwischen 4:10 und 5:12 Uhr morgens) kein Video vor.

Zu meiner Schande muss ich auch gestehen, dass ich den Diebstahl zufällig erst fünf Tage später entdeckte, weil ich das Velo in der Zwischenzeit nie gebraucht hatte. Aber das bringt mein Velo auch nicht mehr zurück.

Die Arlo Pro habe ich auf Grund dieses Vorfalls in der Zwischenzeit mit einer Wyze-Überwachungskamera ersetzt (iSmartAlarm Spot+ wäre eine baugleiche, wenn auch etwas teurere, Kamera, die hierzulande verkauft wird — die Software (Firmware & App) unterscheidet sich aber von Wyze).

Vorteile der Wyze:

  • Nur ca. 10-15 Prozent der Investitionskosten verglichen mit dem Arlo Pro-Set (Kamera, Basisstation, zweiter Batterie, Batterieladegerät, einem Stativ und Hüllen).
  • Da die Kamera mit einem USB-Netzteil und USB-Kabel permanent mit Strom versorgt wird, muss man einerseits nie Batterien wechseln.
  • Andererseits erlaubt diese permanente Stromzufuhr meiner Meinung nach eine deutlich bessere Bewegungserkennung und bessere Auflösung.

Nachteile:

  • Die Kamera ist permanent mit einem Ladekabel verbunden, was die Positionierung markant einschränkt (Stromanschluss in einem Radius von ca. 2 Metern, Kabelführung durch das Fenster)
  • Die Ereigniserkennung zeichnet in der kostenlosen Version nur einen Clip mit 12 Sekunden Länge auf; 90 Sekunden fände ich geeigneter

Tags: , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 23. April 2020

Corona-Rechnen an Hand des Kantons Genf

Nachdem ich zu besten Zeiten die Corona-Zahlen mehrmals täglich in Erfahrung gebracht habe, gehen mir die meisten Zahlen mittlerweile sprichwörtlich am Hintern vorbei. Je länger die Krise dauert, je mehr man liest und vergleicht, desto offensichtlicher werden die Schwächen der Corona-Statistiken. Weltweit. Jedes Land wurstelt irgendwie rum.

Mittlerweile interessieren mich eigentlich nur noch die Zahl der Corona-Toten, da ich bis vor kurzem glaubte, dass dies die einzige Zahl ist, die man nicht verfälschen kann. Typisch Menschlich, sich an etwas vermeintlich simplen festzuklammern, um das Geschehen um einen herum zu erklären.

Doch nun hat sogar die Diskussion über die Zahlen der schweizerischen Corona-Toten begonnen. So wie ich die neuesten Erkenntnisse verstanden habe, gilt man hierzulande als Corona-Toter, sobald man positiv getestet wurde und danach das Zeitliche segnet. Wie der K-Tipp in seiner jüngsten Ausgabe aufgezeigt hat, hat man das bspw. mit den Grippetoten in den letzten Jahren nie so gemacht. Die starben jeweils an Krebs, Lungenentzündung, Organversagen, schlag-mich-tot, aber fast nie an der Grippe selbst. Wieso kehrt man das übliche Vorgehen nun um?

Henusode. Die Universitätsspitäler in Genf haben heute Zahlen einer „repräsentativen“ Stichprobe der Bevölkerung auf Covid-19 Antikörper präsentiert. 760 Personen wurden auf diese untersucht. Die Statistiker errechneten aus den Resultaten der zweiten Woche (14. bis 17. April, 471 Personen), dass hochgerechnet 5.5 Prozent der Bevölkerung des Kantons bereits mit Covid-19 infiziert worden sind. 5.5 Prozent ist der Mittelwert der Bandbreite von 3.3 bis 7.7 Prozent.

Wo die Medienmitteilung aufhört, beginnt aus meiner Sicht eigentlich die interessante Rechenaufgabe: Der Kanton zählt knapp 500’000 Einwohner. 5.5 Prozent entsprächen 27’500 Einwohnern. Gemäss corona-data.ch wurden in Genf bisher 4710 Personen positiv getestet.

Erste Erkenntnis: Die Zahl der Infektionen sind also um den Faktor 5.8 höher als angegeben („Dunkelziffer“). Knapp 23’000 Personen haben also Corona überlebt; entweder, weil sie nicht bemerkt haben, dass sie überhaupt krank sind, oder aber, weil die Symptome viel zu mild waren, dass man sie zu einem Test zugelassen hätte.

Doch viel wichtiger ist diese Information, um die Letalität zu berechnen. Von 27’500 infizierten Einwohnern sind Stand heute 205 Personen gestorben (selbe Quelle).

Zweite Erkenntnis: Die Letalität über alle Altersgruppen hinweg beträgt 0.74 Prozent. Eine „normale“ Grippe rafft gemäss dem Robert Koch Institut zwischen 0.1 und 0.2 Prozent der Infizierten dahin. Covid-19 tötet also drei bis vier Mal mehr Leute als die Grippe.

Aber — und so schliesst sich der Kreis wieder — wie oben erwähnt scheinen es sich in der jetzigen Pandemie die Leute einfach zu machen, welche die Todesurkunden ausfüllen: Corona-Opfer. Ende der Diskussion. Dementsprechend könnten die offiziellen Todeszahlen übertrieben sein.

(Einschub: Ein Kollege schreibt mir, dass in Deutschland der Grippe-Ansatz gefahren werde; d.h. Corona-Tote sind an ihren Vorerkrankungen gestorben. Ob das stimmt kann ich nicht beurteilen. Dies jedenfalls könnte erklären, wieso Deutschland pro Capita deutlich weniger Tote zu beklagen hat als andere Länder. Sprich: Sind die Schutzmassnahmen dort gar nicht so viel besser, sondern primär einfach die, die die Statistiken dort verfassen?).

Ob also Corona (in der Schweiz) wirklich drei bis vier Mal mehr Leute getötet hat, wird sich vermutlich erst in Monaten oder gar Jahren zeigen. War ich anfangs wissenschafts- und politgläubig, werde ich immer skeptischer.

Wenn man ganz sauber sein will, berechnet man die Letalität über die Bandbreite der drei angegebenen Zahlen:

Infizierte (Prozent) 3.3 5.5 7.7
Infizierte (absolut) 16’500 27’500 38’500
Tote 205 205 205
Letalität (Prozent) 1.24 0.74 0.53

Tags: , , , , , , , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 26. März 2020

Corona KW13: Medienschau

Pandemie

“Massachusetts (not shown here) had been a contender, after reaping the bitter harvest of a super-spread incident involving, somewhat ironically, a biotech conference.”

Quelle: Hottest Battlegrounds in the CoronaWar: Is “Social Distancing” Kicking In?

“one person[’s antibodies in their blood plasma] can treat two people.”

Quelle: COVID-19’s Stop-Gap Solution Until Vaccines and Antivirals Are Ready

Medizinisches

“If emergency rooms and ICUs are overloaded from COVID-19, we will see more deaths from everything else: from traffic accidents, heart attacks, infections, seasonal influenza, falls and traumas—basically anything that requires an emergency-room response to survive.”

Quelle: A Failure of Systemic Thinking

… aber gleichzeitig auch:

Social distancing is slowing not only Covid-19, but other diseases too

Quelle: Social distancing is slowing not only Covid-19, but other diseases too

Wirtschaft

Gold wird knapp – wegen Tessiner Lockdown

[…] wichtige Schmelzen im Tessin [mussten] ihre Produktion herunterfahren […] “Rund 70 Prozent des weltweit geförderten Goldes wird hierzulande verarbeitet, insbesondere im Tessin, wo drei der fünf grossen hiesigen Barrenhersteller beheimatet sind.”

Quelle: Gold wird knapp – wegen Tessiner Lockdown

Quelle: The day that Bern stood still

Politik

Just wait for Trump to demand that China pay for the pandemic

Quelle: Just wait for Trump to demand that China pay for the pandemic

Quelle:

Tags: , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 3. September 2019

Eine veraltete MacTeX-Installation auf den letzten historischen Stand bringen

Da ich erst jetzt Zeit hatte, MacTeX von Version 2018 auf 2019 zu aktualisieren, wollte ich in der Zeit von Mai bis September 2019 meine MacTeX 2018er Installation auf den letzten verfügbaren Stand lüpfen. Hierzu habe ich ein kleines Script geschrieben:

#!/bin/bash

if [[ $UID -ne 0 ]]; then
   echo "$0 must be run as root"
   exit 1
fi

echo "Updating the TeXLive manager ..."
tlmgr update --self
echo "Done."
echo ""

echo "Updating the TeXLive packages ..."
echo "Done."
tlmgr update --all
echo ""

exit 0

Als ich dieses nach der Veröffentlichung von MacTeX 2019 ausführen wollte, erschien folgende Fehlermeldung:

...
Updating the TeXLive manager ...
tlmgr: Remote repository is newer than local (2018 < 2019)
Cross release updates are only supported with
  update-tlmgr-latest(.sh/.exe) --update
Please see https://tug.org/texlive/upgrade.html for details.
...

Was tun, wenn man MacTeX 2019 (noch) nicht installieren will, aber die vorhandenen 2018er-Pakete aufdatieren möchte? Folgender Befehl löste für mich das Problem:

# tlmgr option repository ftp://tug.org/historic/systems/texlive/2018/tlnet-final

Quelle: tlmgr: Remote repository is newer than local (2017 < 2018)

WICHTIG: Je nach Version muss die Jahrzahl "2018" in der o.g. URL auf die eigenen Bedürfnisse angepasst werden.

Nach dieser Anpassung lief das Script wieder durch und die Pakete waren auf dem letzten für Version 2018 verfügbaren Stand.

Tags: ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen