Title: [Howto] Adressen-Monitoring Post by: trantute2 on November 17, 2019, 11:20:31 AM Warnung: Wer Wallet oder Adressen per Electrum überwacht, deanonymisiert sich gegenüber dem Electrum-Server selbst!!!
Zum Nachrecherchieren hat mich folgender Beitrag gebracht: https://bitcointalk.org/index.php?topic=5276680.msg55217179#msg55217179 Und folgende Aussage darin: Quote [...] Dazu sammeln sie z.B. auch Daten von Electrum-Wallet anfragen für die sie selber jede Menge Server betreiben [...] D.h., wer sich mit einem Electrum-Server verbindet und nach einer Balance fragt, ob nun mit oder ohne Privatekeys, muss die entsprechenden Adressen an den Server ausliefern. https://medium.com/shiftcrypto/use-the-bitbox02-with-electrum-wallet-5088219b8497 Der Server weiss dann, dass sich eine bestimmte IP für bestimmte Adressen interessiert. Die IP selbst ist noch nicht mit einem Namen verknüpft, aber die Gegend, aus welcher die Anfrage kommt kann schon auf der Landkarte eingegrenzt werden. Zusätzlich ändern Standardrouter heutzutage nicht mehr regelmäßig die IP, sodass Angreifer möglicherweise versuchen könnten, diese zu hacken. Oder man kommt anderweitig and die Identität hinter der IP. Also entweder mit TOR oder VPN oder gar nicht. Anbei eine Anleitung für die ganz Paranoiden, wie man die eigenen Coins live trackt und bei Änderungen per SMS benachrichtigt wird. Dieser Thread ist work-in-progress. Ich bitte um Geduld, falls dieser noch unvollständig ist. Einleitung (#post_einleitung) Voraussetzungen (#post_voraussetzungen) Einrichtung (#post_einrichtung)
Einleitung Es gibt imho fünf Methoden für diesen Zweck, denn bekanntlich führen viele Wege nach Rom, welche ihre ureigensten Vor- und Nachteile haben. Zwei wurden hier im Forum schon besprochen (https://bitcointalk.org/index.php?topic=3310218.0):
Ich möchte in diesem Thread eine weitere, fünfte Methode präsentieren, welche zwischen der ersten und dritten Methode angesiedelt ist und welche auf der Electrum-Familie basiert. Die Vorteile sind folgende:
Warum ich diesen Thread schreibe? Aus Spass an der Freude. Ausserdem möchte ich, dass das in schön dokumentiert ist sodass die entsprechenden Schritte für die Zukunft gesichert sind. Voraussetzungen Wir benötigen:
Rest, coming soon. Einrichtung Vorbereitung SD-Karte Ich gehe davon aus, dass es sich beim Client-Rechner, also jenem Rechner, vor dem ihr sitzt, um eine Linux-System handelt, welches ist dabei (fast) egal. Die Anleitung basiert auf Ubuntu. Als Nutzername nehme ich heinz an und dass der Ordner /home/heinz/Downloads/raspbian existiert. Mit Windows kenne ich mich leider nicht (mehr) aus. Windows-Nutzer können prinzipiell ein Ubuntu-Livesystem nutzen, müßen dieses aber auch erstmal auf einen USB-Stick bekommen. Zu Beginn benötigen wir die entsprechende Raspbian-Version (https://www.raspberrypi.org/downloads/raspbian/). Bei jedem Besuch einer Seite, wo ihr Daten runterladet, solltet ihr kurz das Schlosssymbol in der Adressleiste und somit das Zertifikat überprüfen indem ihr draufklickt und euch die entsprechenden Informationen anzeigen lasst. Ich lade Raspbian immer direkt aus dem Ordner runter (https://downloads.raspberrypi.org/raspbian_latest), da man dort auch gleich die entsprechenden Signaturen findet. Code: cd /home/heinz/Downloads/raspbian Wir müssen das zip-Archive vorher auf Authentizität prüfen, dafür benutzte ich folgenden PGP-Schlüssel (bitte prüft den nochmal selbst!): https://keyserver.ubuntu.com/pks/lookup?search=0x956F460C&fingerprint=on&op=index Code: gpg --keyserver keyserver.ubuntu.com --recv 956F460C Wenn wir die Meldung ... Code: gpg: Signature made Mon 30 Sep 2019 02:43:50 PM CEST using RSA key ID 956F460C ... bekommen können wir relativ beruhigt mit der Installation fortfahren. Dazu legen wir nun die SD-Karte ein. Diese muss vorher nicht formatiert werden. Das Device, welches die SD-Karte repräsentiert, hat meist einen komischen Namen wie /dev/mmcblk0. Wenn ihr unsicher seid, dann installiert euch ggparted (sudo apt-get install ggparted; sudo gparted) und guckt, welches Device 64GB Speicher hat (rechts in der oberen Ecke kann man per Dropdown die Devices auswählen). Nochmals Vorsicht: mmcblk ist ein Beispiel, überprüft das nochmal! Ansonsten überschreibt ihr möglicherweise eine andere SD-Karte, welche in eurem System steckt. Code: unzip 2019-09-26-raspbian-buster-lite.zip Das wars. Die SD-Karte enthält nun die aktuelle Version von Raspbian (wir sind aber noch nicht fertig). Wir entfernen nun die SD-Karte, nachdem oberes Kommando durchgelaufen ist, und stecken sie wieder rein. Das OS mountet dann automatisch die Partitionen auf der SD-Karte (Ubuntu tut dies unter /media/heinz). Damit Raspbian per ssh erreichbar ist muss die leere Datei "ssh" erstellt werden: Code: sudo touch /media/heinz/rootfs/ssh Zusätzlich sollten wir die Netzwerkkonfiguration von Raspbian anpassen: Code: sudo nano /media/heinz/rootfs/etc/network/interfaces Wir füllen die Datei mit etwas Ähnlichem wie: Code: # interfaces(5) file used by ifup(8) and ifdown(8) Die oberen IP-Adressen hängen davon ab wie euer Heimnetzwerk konfiguriert ist. In oberem Beispiel ist der Raspi nun unter 192.168.178.101 zu erreichen. Die IP für den DNS-Nameserver mag bei euch eine andere sein. Nano kann man per Strg+x verlassen. Das Programm fragt nach ob die Änderungen gespeichert werden sollen. Der SD-Karte ist nun fertig konfiguriert damit wir auf dem Raspi loslegen können. Dazu unmounten wir die SD-Karte, entfernen sie aus dem Client-Rechner, stecken sie in den Raspi, verbinden den Raspi mit einem Netzwerkkabel, welches mit dem entsprechenden Netzwerk verbunden ist sowie mit dem Netzteil sodass der Raspi booten kann. Konfiguration des Raspi Wir verbinden uns mit dem Raspi (Windows-Nutzer können diesen Schritt mit putty realisieren: https://www.putty.org/): Code: ssh pi@192.168.178.101 Das Passwort ist standardmäßig "raspberry". Natürlich müßt ihr 192.168.178.101 durch die von euch gewählte IP austauschen. Zu Beginn werden wir aus Sicherheitsgründen einen neuen Nutzer mit beliebigen Namen erzeugen (z.B. thorsten), nur noch diesen nutzen und den pi-Nutzer blockieren: Code: sudo adduser thorsten Vergebt ein Passwort und lasst den Rest leer. Zusätzlich muss der neuer Nutzer der Gruppe sudoers hinzugefügt werden, damit er entsprechende Rechte hat: Code: sudo adduser thorsten sudo Jetzt blockieren wir noch den pi-Nutzer: Code: sudo usermod -L -e 1 pi Von nun an kann der pi-Nutzer sich nicht mehr im System anmelden. Wieder freischalten läßt sich der pi-Nutzer durch: Code: sudo usermod -U -e 99999 pi Wichtig: Diese Konfiguration verhindert, bei ausreichend gutem Passwort, dass der Raspi im Betrieb nicht kompromitiert werden kann, vorausgesetzt, dass niemand Zugriff auf die Hardware hat. Kommt jemand an den Raspi, dann kann er den Stecker ziehen, die SD-Karte entfernen und an einem bliebigen Rechner mit SD-Kartenleser die auf der Karte unverschlüsselten Dateien analysieren. Und das sind praktisch alle Dateien. Man kann den Raspi auch dagegen härten, d.h. dass dann alle wichtigen Dateien dort verschlüsselt sind und nur im laufenden Betrieb entschlüsselt vorliegen. Das ist aber nicht das Thema hier. Anleitungen dazu gebe ich ein andermal (ecryptfs, ufw, knockd, google-authenticator). Nun aus dem Raspi ausloggen: Code: exit Und als neuer Nutzer wieder einloggen: Code: ssh thorsten@192.168.178.101 Nun machen wir erstmal ein systemweites Update: Code: sudo apt-get update Wer will kann den Raspi über ... Code: sudo raspi-config ... weitergehend konfigurieren. Es bietet sich an "Advanced Options" -> "Expand Filesystem" auszuwählen sowie unter "Localisation Options" -> "Change Timezone" die entsprechende Örtlichkeit einzustellen. Auch sollten wir den Raspi selbst umbenennen, denn wenn zwei oder mehr Rechner mit dem selben Hostnamen im lokalen Netz hängen, dann können diese sich gegenseitig blockieren (geht alternativ auch über raspi-config): Code: sudo nano /etc/hosts Dort nun wo "raspberry" steht einen anderen Namen eintragen und nano mit Strg+x verlassen. Das gleiche machen wir hier: Code: sudo nano /etc/hostnames Danach rebooten: Code: sudo shutdown -r now Der Reboot geht fix, nach ein paar Sekunden können wir uns wieder auf dem Raspi einloggen: Code: ssh thorsten@192.168.178.101 Jetzt passen wir noch den Swap an, damit wir noch ordentlich Platz haben, falls die 4 GB RAM des Raspis mal nicht ausreichen sollten: Code: sudo nano /etc/dphys-swapfile Dort setzen wir den Auslagerungsspeicher auf 16 GB, wir hams ja: Code: CONF_SWAPSIZE=16384 Wir beenden nano via Strg+x und aktivieren den Swap durch: Code: sudo dphys-swapfile setup Am besten rebooten wir nochmal, wobei ich mir nicht sicher bin, ob das notwendig ist aber schaden kann es nicht: Code: sudo shutdown -r now Einrichtung von Electrum Electrum gibt es hier: https://electrum.org/. Dort prüfen wir erst das Schlosssymbol in der Adressleiste. Dann, unter Downloads, kann man die für verschiedene OS bereitgestellten Varianten runterladen. Sehr schön auf der Seite: Unten werden auch die notwendigen Kommandos für die Installation angegeben. Wie dort angegeben installieren wir zu Beginn qt5, damit dann später, falls notwendig, auch die GUI funktioniert: Code: sudo apt-get install python3-pyqt5 Jetzt erzeugen wir den Download-Ordner, holen uns Electrum, die entsprechenden Signatur sowie den Publickey von Thomas Voegtlin: Code: mkdir /home/thorsten/Downloads Wir importieren den Publickey: Code: gpg --import ThomasV.asc Alternativ kann man den Publickey auch von einem Keyserver importieren: Code: gpg --keyserver keyserver.ubuntu.com --recv 6694d8de7be8ee5631bed9502bd5824b7f9470e6 Achtung: Überprüft diesen Schritt bewusst doppelt da ihr euch hier fremde Software auf euer System holt! Wir verifizieren das Archiv: Code: gpg --verify Electrum-3.3.8.tar.gz.asc Electrum-3.3.8.tar.gz Und können nach ... Code: gpg: Signature made Thu Jul 11 16:26:15 2019 CEST ... relativ beruhigt fortfahren. Jetzt entpacken wir noch Electrum und sind damit mit der Installation schon am Ende angekommen. Code: tar -xzvf Electrum-3.3.8.tar.gz Die Hilfe zum Electrum-Skipt, welches wir benutzen werden, rufen wir wie folgt auf: Code: /home/thorsten/Downloads/Electrum-3.3.8/run_electrum -h Ein bisschen Linux, Bash und Electrum Wir loggen uns aus und wieder ein, diesmal mit dem "-X" Flag, um per Electrum-GUI eine Watch-Only-Wallet zu erzeugen: Code: exit Wir starten Electrum: Code: /home/thorsten/Downloads/Electrum-3.3.8/run_electrum Und klicken uns durch den Wallet-Wizard: "Auto connect" -> "Next" -> "default_wallet" -> "Next" -> "Import Bitcoin addresses or private keys" -> "Next". In das weiße Editierfeld kopieren wir die Adressen von Interesse, jeweils mit Zeilenumbruch, z.B. drei von diesen seltsamen 8000 BTC-Adressen von denen es seit 2018 so viele gibt, ... Code: 1MYv4C4hZ7hC5sbHrPkzvmNoozQgnHKeAU ... und drücken "Next". Die Passwortinformationen können wir leer lassen, handelt es sich ja sowieso nur um eine Watch-Only-Wallet: "Next". Beim "Electrum - Enable update check" könnt ihr wählen, was euch besser gefällt. Dann heisst es ein bisschen warten, bis sich die Wallet synchronisiert hat. Nach erfolgreicher Synchronisierung steht vor jeder Transaktion ein grünes Häckchen. Falls der Text "not verified" sich nicht ändert, dann hilft es, die Wallet zu schliessen und neu zu starten. Der Text, welcher auf der Kommandozeile vom Programm ausgegeben wird, kann ignoriert werden. Wir erzeugen den Ordner "watch.btc", erzeugen dort die Datei "addresses" und kopieren in diese die Adressen von Interesse: Code: cd /home/thorsten Die Datei "addresses" schliessen wir per Strg+x. Dann erzeugen wir das Bash-Skript "watch.sh": Code: nano watch.sh Und füllen dieses mit folgendem Code: Code: #!/bin/bash (Alternativ kann man auch den RPC-Befehl getbalance nutzen: Code: /home/thorsten/Downloads/Electrum-3.3.8/run_electrum getbalance Dann bekommt man die Summe der Beträge über alle in der Wallet enthaltenen Adressen. Dafür muss aber die Wallet zu Beginn geladen werden (siehe Cronjob weiter unten).) Wir speichern das Skript indem wir nano per Strg+x verlassen. Zusätzlich erzeugen wir die Datei "balance": Code: echo "blubb" > balance Zu guter Letzt erzeugt wir einen Cronjob, welcher das Watch-Skript bei jedem Neustart des Raspi startet: Code: crontab -e Beim ersten Aufruf von oberem Kommando muss man einen Editor wählen. Wir wählen wieder nano und fügen dann unten folgende Zeile an: Code: @reboot /home/thorsten/Downloads/Electrum-3.3.8/run_electrum daemon start; sleep 180; cd /home/thorsten/watch.btc/; ./watch.sh >> log (Alternativ: Will man den RPC-Befehl getbalance nutzen muss der Cronjob wie folgt aussehen: Code: @reboot /home/thorsten/Downloads/Electrum-3.3.8/run_electrum daemon start; sleep 60; /home/thorsten/Downloads/Electrum-3.3.8/run_electrum daemon load_wallet; sleep 120; cd /home/thorsten/watch.btc/; ./watch.sh >> log Dieses Kommando startet kurz nach einem Reboot den Electrum-Dienst, welcher im Hintergrund läuft. Dann wird drei Minuten gewartet, damit sich Electrum synchronisieren kann. Daraufhin startet unser Watch-Skript über unsere Adressen in der Datei "addresses" zu loopen. Für jede Adresse fragt dieses Skript die aktuelle Balance ab. Das Ergebnis wird in die Datei "output" geschrieben. Wenn alle Adressen abgearbeitet sind wird "output" mit "balance" verglichen. Sind beide Dateien gleich, dann wird in die Datei "log" ein "ok" mit Datum geschrieben. Sind die Dateien unterschiedlich, so wird die alte "balance" Datei mit Unixzeit (https://de.wikipedia.org/wiki/Unixzeit) im Namen gesichert und die aktuelle "output" Datei wird zur "balance" Datei. Der Vorgang wiederholt sich alle 60s. Nun haben wir einen Server, welcher unsere Adressen von Interesse überwacht. Natürlich ist die in diesem Abschnitt beschriebene Methode um die einzelnen Balances zu prüfen nur einen Methode von vielen. Eine andere Methode ist, dass man den Output von Electrum direkt innerhalb von python analysiert, da dieser ja sowieso im JSON-Format ausgegeben wird. Das ist also reine Geschmackssache. Anbindung an SMS-Gateway Wenn ihr einen Account bei einem SMS-Gateway habt (hier beispielhaft für https://www.lima-city.de, da sehr zu empfehlen) und euch ein SMS-Kontingent gekauft habt (mehrere hundert SMS bekommt man für unter 20€), dann fügt unter den auskommentierten Text im watch-Skript Folgendes ein (eurer Kreativität ist da aber keine Grenze gesetzt): Code: ################## z.B.: Code: ################## Die <user_id> und den <api_key> bekommt ihr bei lima-city (siehe auch https://www.lima-city.de/hilfe/sms-kontingente). Die <tel_nummer> ist die eures Mobiltelefons. Der <text> kann von euch frei gewählt werden. Wichtig: Stellt sicher, dass https genutzt wird und NICHT http!!! Ansonsten wird eure id und euer API-Key im Plaintext im Internet verschickt. Title: Re: Adressen-Monitoring - Eine Anleitung Post by: o_solo_miner on November 19, 2019, 11:28:45 AM Schön gemacht bis jetzt, sieht toll aus und ist nützlich.
Als kleine Anregung, wenn man schon einen PI benutzt, dann kann man auch ein Preiswertes GSM Modem Platinchen vom Chinamann kaufen und eine Prepaid-Sim nehmen um dann per Script eine SMS zu Versenden. Das ist evt. günstiger als ein Bezahl Portal zu Nutzen und kann einem noch mehr Infos zukommen lassen wenn man z.B. noch einige I/Os verknüpft. Title: Re: Adressen-Monitoring - Eine Anleitung Post by: Buchi-88 on November 19, 2019, 01:04:09 PM Danke für die Anleitung, kleine Anmerkung für alle die es zu viel Arbeit ist, ich (auch etwas Paranoid eventuell) tracke meine Adressen mit Telegram Tracktxbot:
https://bitcointalk.org/index.php?topic=5141145.msg50970942#msg50970942 Quote Man erhält über den Bot Benachrichtigungen für Transaktionen. Funktioniert mit BTC, BCH, ETH und ERC20 Token. Title: Re: Adressen-Monitoring - Eine Anleitung Post by: willi9974 on November 20, 2019, 07:17:39 AM Coole Anleitung, aber mal eine andere Frage.
Kannst du dem wallet nur die Balance von Adressen abfragen welche du vorher importiert hast, oder kannst auch eine Textdatei mit x tausend Adressen angeben, wo er nach und nach die Adressen abfrägt und die jeweilige Balance ausgibt? Viele Grüße, Willi Title: Re: Adressen-Monitoring - Eine Anleitung Post by: trantute2 on November 20, 2019, 07:57:35 PM Kannst du dem wallet nur die Balance von Adressen abfragen welche du vorher importiert hast, [...] Ja. [...] oder kannst auch eine Textdatei mit x tausend Adressen angeben, wo er nach und nach die Adressen abfrägt und die jeweilige Balance ausgibt? Nein. Selbst mit einem Fullnode ginge das nicht (so einfach). Eine Wallet trackt nur die Adressen/Privatekeys, welche darin enthalten sind. Dadurch verringert sich der Aufwand, was das Management der Balancen angeht, enorm. Wenn man das hinbekäme, was Du vorschlägst, dann hätte man zuhause seinen eigenen Blockexplorer aufgesetzt. Geht sicherlich, und hat bestimmt schon jemand gemacht, aber das ist alles andere als einfach. Title: Re: Adressen-Monitoring - Eine Anleitung Post by: trantute2 on December 10, 2019, 07:19:45 AM Wie mir gerade zugetragen wurde funktioniert die Bitcoin-Bezahlung bei Lima-City besser als zuvor:
https://www.lima-city.de/ Die Bezahlung läuft über Coinbase und sollte mit jeder Wallet funktionieren. Für den Kauf müßt ihr euch einen Account bei lima-city machen. Das sollte auch anonym gehen, wobei die Angabe einer E-mail-Adresse notwendig ist. Wenn man auf der Seite eingeloggt ist navigiert man dann zu "Kontingente" und kann dort die gewollte Anzahl an SMS kaufen. Nach einer Bestätigung sollten die SMS auch schon zur Verfügung stehen. Die API wird hier erklärt: https://www.lima-city.de/hilfe/sms-kontingente Title: Re: Adressen-Monitoring - Eine Anleitung Post by: yxt on December 20, 2019, 12:22:31 PM @willi9974
Die txt mit den Adressen kann ja einfach auch in electrum importiert werden. Also warum unterscheidest du die 2 Fälle so? @trantute2 schöne Anleitung, vielleicht willst du ja noch um eine Telegram Anbindung erweitern Title: Re: [Howto] Adressen-Monitoring Post by: trantute2 on September 22, 2020, 07:07:45 AM Warnung: Wer Wallet oder Adressen per Electrum überwacht, deanonymisiert sich gegenüber dem Electrum-Server selbst!!!
Zum Nachrecherchieren hat mich folgender Beitrag gebracht: https://bitcointalk.org/index.php?topic=5276680.msg55217179#msg55217179 Und folgende Aussage darin: Quote [...] Dazu sammeln sie z.B. auch Daten von Electrum-Wallet anfragen für die sie selber jede Menge Server betreiben [...] D.h., wer sich mit einem Electrum-Server verbindet und nach einer Balance fragt, ob nun mit oder ohne Privatekeys, muss die entsprechenden Adressen an den Server ausliefern. https://medium.com/shiftcrypto/use-the-bitbox02-with-electrum-wallet-5088219b8497 Der Server weiss dann, dass sich eine bestimmte IP für bestimmte Adressen interessiert. Die IP selbst ist noch nicht mit einem Namen verknüpft, aber die Gegend, aus welcher die Anfrage kommt kann schon auf der Landkarte eingegrenzt werden. Zusätzlich ändern Standardrouter heutzutage nicht mehr regelmäßig die IP, sodass Angreifer möglicherweise versuchen könnten, diese zu hacken. Oder man kommt anderweitig and die Identität hinter der IP. Also entweder mit TOR oder VPN oder gar nicht. siehe auch: https://bitcointalk.org/index.php?topic=5202173.0 |