SSH Passwort Zugriff mit Brute-Force Script in 19 Sekunden oder „Versuch macht klug!“

Der Versuch macht klug und der Erfolg kommt schon mit dem Versuch und nicht erst wenn es klappt. Wer sein eigenes Passwort für den Raspberry Pi (oder auch jeden anderen Rechner) vergessen hat, kann es ja mal mit dem SSH Brute-Force Script von nmap versuchen. Und es ist auch erschreckend, wie schnell und einfach man ein passwortgeschützen Zugang hacken kann. Aber nur an eigenen Rechnern 😉

Wir habe hier mal, wie oben dargestellt zwei Raspberry Pi. Von dem pi oben links, machen wir mit der Brute-Force-Methode einen Scann des pi auf dem ein SSH Port Nr. 22 offen ist.

Dazu benutzen wir nmap. Das können wir installieren mit

sudo apt-get install nmap oder wie hier beschrieben selbst compilieren.

Nun checken wir, ob der SSH-Port Nr. 22 offen ist mit nmap: … „SSH Passwort Zugriff mit Brute-Force Script in 19 Sekunden oder „Versuch macht klug!““ weiterlesen

Firewall in 10 Minuten einrichen mit UFW (Uncomplicated firewall) nicht nur auf dem Raspberry Pi

Eine Firewall ist auf dem Raspberry Pi schnell mit dem UFW eingerichtet und kann die Sicherheit verbessern.

Die Firewall UFW muss nur installiert werden mit:

Nun schalten wir zuerst den ipv6 auf no in der Datei /etc/default/ufw, da er bei mir nicht verwendet wird. „Firewall in 10 Minuten einrichen mit UFW (Uncomplicated firewall) nicht nur auf dem Raspberry Pi“ weiterlesen

ArchUnit gestern in Version 0.18.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain

Gestern wurde ArchUnit in Version 0.18.0 veröffentlicht.

ArchUnit

Wenn das keine Grund ist mal zu zeigen, wie man eine Package-Abhängigkeit überprüfen kann.
Also wir wollen einen Test schreiben, der durchläuft wenn nur aus dem Package blockchain auf das Package be zugegriffen wird. Wie hier im UML Diagramm gezeigt:… „ArchUnit gestern in Version 0.18.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain“ weiterlesen

Blockchain in Java – Bitcoin heute Neues Allzeithoch – Nasdaq: Börsengang von Coinbase

Wollte heute mal noch vor dem Börsengang von Coinbase ein Blockchain in Java coden. Mit nur zwei Klassen sind die Grundlagen implementiert. D.h. ein Block verweist jeweils auf den nächsten Block. Jeder Block hat einen Hash über die Daten und kann so von jedem validiert werden. Ein Block kann alles enthalten, hier mal ein String Objekt, es muss ja nicht immer Bitcoin sein. Hier die Architektur:

Ein JUnit 5 Testklasse erzeugt eine gültige Blockchain mit 5 Blöcken und wird anschließend validiert. Bei Bitcoin werden alle 10 Minuten neue Blöcke erzeugt. Die haben dann jeweils (ursprünglich) eine Größe von ca. max 1 MB an Daten.

Dann im zweiten Testfall wird ein Block verändert und in die Blockhain eingefügt. Das Ergebnis der validierung muss dann einen Error ausgeben.

Ein Block sieht so aus: „Blockchain in Java – Bitcoin heute Neues Allzeithoch – Nasdaq: Börsengang von Coinbase“ weiterlesen

Crypto Währungsadressen wie z.B. Bitcoin in NodeRed Dashboard validieren

Wie können Kryptowährungsadressen überprüft werden? Also wie können z.B. Bitcoin Adresse überprüft werden? Die Bitcoin Adressen habe wie so viele Adressen eine interne Checksumme, die mit sha256 gebildet wird. Das heißt, es wird zweimal einSHA-256 Hash auf die Adresse gemacht und die ersten 4 Bytes als Checksumme verwendet und an die Adresse angehangen.

Um es ganz einfach zu machen, habe ich einen NodeRed Node node-red-contrib-cryptography-address-check erstellt. Und dazu einen Flow, wo die Adresse nur eingegeben werden muss, und es dann automatisch auf Gültig oder Ungültig überprüft wird.

Dieser Node, muss also nur über die „Pallette hinzufügen“ Funktion geladen werden:

So sieht meine public „Buy me a coffee“ Adresse aus, die ist gültig:

Sobald man da auch nur ein Zeichen verändert, … „Crypto Währungsadressen wie z.B. Bitcoin in NodeRed Dashboard validieren“ weiterlesen

Bitcoin heute über 60.000 Dollar: Free Wallet Wiederherstellungs Vorlage für Bitcoin ua. Wallets (Wallet Recovery Sheet Template)

Heute ist der Bitcoin Kurs zum ersten mal auf über 60.000 Dollar bzw. 50.000 Euro gestiegen. Jetzt ist er gerade bei:

Kurs Bitcoin

wie das NodeRed Dashboard vom Raspberry Pi im Docker anzeigt. Digitalwährungen wie Bitcoin gelten als riskante Geldanlagen, da sie im Kurs teils erheblich schwanken. Habe für alle Leser mal ein Backup Wallet Formular designt: „Bitcoin heute über 60.000 Dollar: Free Wallet Wiederherstellungs Vorlage für Bitcoin ua. Wallets (Wallet Recovery Sheet Template)“ weiterlesen

TWProviders 1.0 – mal was anderes als HAFNIUM – Installierte Sicherheitsprovider anzeigen

Hier ein neues Java-Programm TWProviders 1.0, das alle Sicherheitsprovider auf dem System (Raspberry Pi, Mac, Windows…) anzeigt. Mal so „just for fun“ programmiert, mal was anderes als Exchange-Lücken HAFNIUM – BSI ruft „IT-Bedrohungslage rot“. Es muss Java auf dem System installiert sein. Einfach das PrintProvider.class.zip (884 Byte) laden und das ZIP auspacken. Dann in dem Verzeichnis starten mit

java PrintProvider

Also das Programm laden, auspacken und starten:

Das sind z.B. die 12 von einem Raspberry Pi 4:

Mit diesm Programm kann nun auch leicht in einem Script oder in der Konsole nach Providern oder so gesucht werden, z.B. mit grep

java PrintProvider | grep Secure

Ergebnis:
SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; PKCS12, JKS & DKS keystores; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)

Sollte kein Java vorhanden sein, kommt es zu dieser Fehlermeldung. „TWProviders 1.0 – mal was anderes als HAFNIUM – Installierte Sicherheitsprovider anzeigen“ weiterlesen

Kryptographisch sicherer Zufallszahlengenerator NodeRed-Flow mit dem Raspberry Pi und Hardware Random Number Generator (RNG) und GUI

Heute gehts mal kurzt um die Praxis. Im letzten Artikel ging es um kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG).

Man unterscheidet übrigens grundsätzlich zwischen nicht-deterministischen und deterministischen Zufallszahlengeneratoren. Nicht-deterministisch ist ein Zufallszahlengenerator, wenn er auch bei gleichen Ausgangsbedingungen unterschiedliche Werte liefert, so wie der hier vorgestellte. Da die Implementierung einer Software-Prozedur in der Regel deterministisch arbeitet, muss zur Realisierung eines nicht-deterministischen Zufallszahlengenerators ein externer (beispielsweise physikalischer per Hardware) Vorgang der auf dem Raspberry Pi läuft einbezogen werden.

Nun eine Anwendung als NodeRed-Flow um kryptographisch sichere Zufallszahlen zu generieren die dann als Seed ua. auch für Bitcoin verwendet werden können.

Der Flow läuft übrigens auch erfolgreich auf einem NodeRed das in einem Docker-Kontainer läuft. Es wird übrigens die Schnittstelle mit head -c 128 /dev/hwrng abgefragt und der Timeout auf 2 Sekunden gesetzt. Wer größere oder kleinere Zahlen braucht, kann die 128 anpassen. Die 512 Bit kann man übrigens auch für Bitcoin gut gebrauchen 😉

Hier eine kleine Gui dazu: … „Kryptographisch sicherer Zufallszahlengenerator NodeRed-Flow mit dem Raspberry Pi und Hardware Random Number Generator (RNG) und GUI“ weiterlesen

Kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG)

Zufallszahlen kann man leicht online über random.org ermitteln. Es können da Münzen geworfen werden:

Es können verschiedene Währungen und Anzahl ausgewählt werden. Leider geht nicht Bitcoin. Aber die sind auch gut…

Auch Passwörter, Lotterie, Zeit, Zeichen, Wörter und andere Zufallszahlen können dort generiert werden.

Aber wie kann man Zufallszahlen generieren, die auch noch den hohen kryptografischen Anforderungen entsprechen? Mit Hardware (cryptographically secure pseudo-random number generator (CSPRNG)). Muss man da teure Crypto-Generatoren kaufen? Nein, ein kleiner Raspberry Pi reicht auch schon.

Der Raspberry Pi (Zero ua.) enthält, mit dem Chip BCM2708 / BCM2835 auch einen Hardware Random Number Generator (RNG). Welchen Chip der Pi hat, wird ausgegeben mit: cat /proc/cpuinfo.

Im Idealfall wird die Erstellung von Zufallszahlen durch eine nicht deterministische Entropiequelle gespeist. Das kann zum Beispiel ein hardwarebasierter Zufallsgenerator sein (PI) oder auch ein hybrider Generator. Für kryptologische Anwendungen sollten nicht-deterministische Generatoren verwendet werden, denn nur bei diesen kann garantiert werden, dass sie nicht reproduzierbar oder vorhersagbar sind.

Zugriff darauf erhält man über die Schnittstelle: /dev/hwrng ( und die blockende /dev/random und die nicht blockende /dev/urandom).

Wir aktivieren nun mal die rng-tools für den Zugriff auf den RNG. … „Kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG)“ weiterlesen

Signieren von Nachrichten mit Digital Signature Algorithm (ECDSA) in Java und Elliptische-Kurven-Kryptografie (ECC) secp256k1

Wie werden in Java Nachrichten signiert und vom Empfänger validiert? Das geht mit ein paar Zeile aus dem Java Package java.security. Wir verwenden die auch in Bitcoin verwendeten Elliptische-Kurven-Kryptografie secp256k1. Was wollen wir zu Entspannung nach Feierabend machen?

Das wird in diesem BPMN-Diagramm dargestellt:

Hier die kommentierte Java Klasse: … „Signieren von Nachrichten mit Digital Signature Algorithm (ECDSA) in Java und Elliptische-Kurven-Kryptografie (ECC) secp256k1“ weiterlesen

New NodeRed Node: Hash mit SHA-256

Wer in NodeRed einen SHA-256 hash ohne Konfiguration verwenden will, kann das Modul node-red-contrib-cryptography verwenden. Das JavaScript Modul habe ich geschrieben, um das Hashen zu vereinfachen. Es brauchen keine Einstellungen gemacht werden und es gibt keine weiteren Abhängigkeiten. Das Modul wird dann später noch um RIPEMD-160 ua. die für Bitcoin verwendet werden können erweitert.

Die erste Version, kann wie gewohnt in der Palettenverwaltung geladen werden: … „New NodeRed Node: Hash mit SHA-256“ weiterlesen

Wie „geht“ ein upload eines lokalen NodeRed-Nodes im tgz-Archiv Format über die NodeRed-GUI für Docker Kontainer?

Wie kann man einen lokalen Node von der Festplatte in NodeRed hochladen, wenn er nicht im Repository vorhanden ist und nur lokal auf der Platte liegt? Und wenn dann noch NodeRed in einem Docker Kontainer läuft, wie geht es dann? Es kann natürlich auch über die Kommandozeil des Raspberry Pi laufen, aber das will man ja nicht immer.

Hier eine kurze Beschreibung wie das geht. Der Button zum hochladen ist etwas versteckt, unter „Palette verwalten“ und „Palette“ und „Installieren„, im Dialog zu finden.

Nach einem klick, einfach das tgz-Archiv auswählen und hochladen. Dann ist unbedingt ein Neustart von NodeRed nötig. Das ist im Docker Kontainer mit einem Restart schnell gemacht.

Kommt es beim hochladen zu einem Fehler, kann es sein das das npm-Package für den Node nicht richtig erzeugt wurde. Die npm-Packages müssen mit npm pack im jeweiligen node_modul erzeugt worden sein, z.B. so: … „Wie „geht“ ein upload eines lokalen NodeRed-Nodes im tgz-Archiv Format über die NodeRed-GUI für Docker Kontainer?“ weiterlesen

Kryptowährung: Wir erzeugen uns heute mal einen privaten Bitcoin Key mit Java bevor der BTC Kurs auf über 50000 Dollar springt


Es ist bei Bitcoin sehr wichtig das Konzept zu verstehen, das man keine Online Verbindung für das generieren einer Bitcoion Wallet Adresse benötigt.
Das geht komplett Offline. Und ohne separaten Server, eine Webseite oder einen besonderen Service. Es wird nur etwas Mathe benötigt. Mit Java sind nur ein paar Zeilen nötig.

1. privaten Key erzeugen, dazu brauchen wir nur einen guten Zufallsgenerator der uns 32 Byte erzeugen kann. Könnte mal auch auswürfeln.
2. validieren ob der Key gültig ist

Hier der dokumentierte Code: … „Kryptowährung: Wir erzeugen uns heute mal einen privaten Bitcoin Key mit Java bevor der BTC Kurs auf über 50000 Dollar springt“ weiterlesen

Bitcoin: Public Key hashen mit SHA-256 und dann RIPEMD-160

public key hash für bitcoin

Der public Key wird zunächst mit SHA-256 gehasht. Der Output dieser kryptografischen Hashfunktion wird dann mit RIPEMD-160 gehasht, einer anderen kryptografischen Hashfunktion, die als Output eine 160 Bit (20 Byte) lange Zahl erzeugt. Wir nennen diesen letzten Hash den public Key Hash (PKH). Wie hier im BPMN Flow dargestellt: … „Bitcoin: Public Key hashen mit SHA-256 und dann RIPEMD-160“ weiterlesen

Mal was anderes als Schnee und Glatteis: Salzen mit SHA-256 in Java

hash, bitcoin,

Kryptografische Hashfunktionen können zur Integritätsprüfung verwendet werden, um Änderungen in Daten festzustellen. Bitcoin verwendet kryptografische Hashfunktionen sehr ausgiebig, um zu überprüfen, dass sich Daten nicht geändert haben. Zum Beispiel wird immer ab und zu – durchschnittlich alle 10 Minuten – ein neuer Hash der gesamten Zahlungsgeschichte erzeugt. Wenn jemand versucht, diese Daten zu ändern, wird dies sofort von jedem, der die Hashes überprüft, bemerkt.

Grundlegenden Eigenschaften von Hash:

-Gleiche Eingabedaten erzeugen den gleichen Hash.
-Leicht unterschiedliche Eingabedaten erzeugen sehr unterschiedliche Hashes.
-Der Hash hat stets eine feste Länge. Bei SHA256 sind dies 256 Bits.
-Die Holzhammermethode Trial-and-Error ist der einzige bekannte Weg, einen Input zu finden, der einen bestimmten Hash erzeugt.

Hier mal ein kleines Java Beispiel mit unterschiedlichen Libs und pur Java: … „Mal was anderes als Schnee und Glatteis: Salzen mit SHA-256 in Java“ weiterlesen