Diese Datei erklärt Installation und Handhabung der Software, die im Rahmen der Diplomarbeit implementiert wurde. (Sie ist wortgleich mit Anhang B aus der Arbeit.)
Die Testumgebung besteht aus zwei Komponenten, der Server- und der Client-Seite. Alle nötigen Programme finden Sie im Internet unter http://privat.hgesser.com/docs/Info-Diplom/ und auf der beigelegten CD.
patch -p0 < apache_1.3.31-cc-hge.patchauf die Apache-Quellen an.
cd apache_1.3.31 ./configure --prefix=PFAD make make install
wobei PFAD durch das gewünschte Installationsverzeichnis zu ersetzen ist - das kann auch ein Unterverzeichnis Ihres Home-Verzeichnisses sein.
echo "C del 1" | netcat localhost 4999ob der Daemon erreichbar ist - Sie sollten darauf die Fehlermeldung "Error: IP address 1 not found" erhalten.
export http_proxy="http://localhost:21000"Beim Aufruf von wget ist jeweils die Option --proxy=on anzugeben.
Kopieren Sie das Analyseprogramm ccanalyse.py aus dem CD-Verzeichnis software/analyse/ in ein geeignetes Verzeichnis, z.B. /bin/.
Folgende Ports werden von den an der Kommunikation beteiligten
Komponenten standardmäßg verwendet:
Wenn einer oder mehrere dieser Ports auf Ihren Systemen bereits belegt sind, können Sie die Ports ändern. Dazu sind die folgenden Schritte notwendig:
CC_PORT = 4999festgelegt. Ändern Sie diesen Wert und beenden und starten Sie den Daemon neu. Zusätzlich muss das Kontrollprogramm ccctrl angepasst werden, das Befehle mit netcat an den Daemon schickt: Auch dort ist der neue Port einzutragen.
s.bind(("",21000)) # An Port 21000 bindenÄndern Sie im bind-Aufruf den Wert 21000 und beenden und starten Sie den Proxy neu.
Port 80Ändern Sie den Wert, speichern Sie die Datei und starten Sie den Apache-Server neu.
Die Verzögerungszeit für den Apache-Server wird in der Datei src/include/covert_channel.h im Apache-Quellcode-Verzeichnis festgelegt. Um die Zeit zu ändern, passen Sie die Zeile
#define AP_CC_SLEEPTIME 0.001an. Die Zeit wird in Sekunden angegeben.
Nach der Änderung muss der Apache-Server mit
make && make installneu installiert und neu gestartet werden.
Die Fehlerkorrektur muss an zwei Stellen ein- bzw. ausgeschaltet werden:
ERROR_CORRECTION = 0
anzupassen: Der Wert 0 steht für deaktivierte Fehlerkorrektur,
1 schaltet die Korrektur ein. Danach ist ein Neustart des Daemons
notwendig. Nach dem Abbruch des Programms fällt eine kurze Wartezeit an,
da der von ccdaemon.py belegte Port noch nicht freigegeben wurde.
In diesem Abschnitt wird davon ausgegangen, dass Sie bereits auf Server-Seite den Apache-Server und den Daemon sowie auf Client-Seite den Proxy gestartet haben, wie es im vorangegangenen Abschnitt beschrieben wurde. Damit ist das System bereit zum Versand verdeckter Nachrichten.
Das Kontrollprogramm ccctrl kennt die folgenden Befehle:
Eine Beispielsequenz, die einen neuen Kommunikationspartner 1.2.3.4 hinzufügt, für diesen eine Nachricht einträgt und nach kurzer Wartezeit den Status abfragt, ist:
ccctrl add 1.2.3.4 ccctrl msg 1.2.3.4 Kleine Beispielnachricht ccctrl allstat
Eine Alternative zur Verwendung von ccctrl ist die direkte Eingabe der netcat-Aufrufe. (Auch ccctrl verwendet diese Methode und ist damit nur eine Arbeitserleichterung.)
Welche der beiden Methoden (ccctrl oder manuelle netcat-Aufrufe) Sie verwenden, ergibt keinen Unterschied.
Das Analyseprogramm ccanalyse.py kennt keine Optionen und wird einfach aus dem Verzeichnis heraus aufgerufen, in dem sich die Protokolldatei myproxy.log des Proxys befindet.
Um die Analyse zu erleichtern, wurde das Skript process erstellt:
#!/bin/bash tail -n2 myproxy.log | head -n1 | cut -b 27- > data.in in2out.py plot ccanalyse.py > analyse.txt
Die hier abgedruckte Fassung setzt voraus, dass sich ccanalyse.py und die beiden Hilfsprogramme in2out.py und plot im Pfad befinden; anderenfalls muss der volle Pfad zu den Programmen eingetragen werden.
Im Ergebnis erhält man eine Datei analyse.txt, die die gefundenen Ergebnisse darstellt; zudem erzeugt plot eine Datei output.eps, welche die Verzögerungszeiten grafisch visualisiert. Je nach Verzögerungszeit muss in plot der Wert yrange angepasst werden. plot setzt ferner voraus, dass gnuplot installiert ist und im Verzeichnis /usr/local/bin liegt. Der Wert kann in plot angepasst werden. Ist gnuplot nicht installiert, kann der plot-Aufruf in process auskommentiert werden.
Die Dateien data.in und data.out können nach dem Aufruf gelöscht werden. myproxy.log kann für weitere Durchläufe unverändert bleiben, da sich process immer die Messdaten aus dem letzten Durchlauf heraussucht.
Die Datei analyse.txt hat immer den folgenden Aufbau:
Gesamtwerte Median: 0.0330700000 Mittelwert: 0.1644174141 Abweichung: 0.2013571099 Unterer Block Minimum: 0.0221800000 Maximum: 0.0330700000 Mittelwert: 0.0323505928 Abweichung: 0.0010117567 Oberer Block Minimum: 0.0330800000 Maximum: 0.7664200000 Mittelwert: 0.2968975900 Abweichung: 0.2148879426 AUFRAEUMEN Unterer Block Minimum: 0.0221800000 Maximum: 0.1620800000 Mittelwert: 0.0365218037 Abweichung: 0.0117027090 Oberer Block Minimum: 0.0330800000 Maximum: 0.7664200000 Mittelwert: 0.3885785376 Abweichung: 0.1800895766 Nachricht: 11111100000001000010000000000000111000110010111010111000011100111\ 00110100110011010010100011111011001000101000111001100110001110110111111010001\ 10110011011110100001110011110101101100001100101011011111101100000110001100101\ [....] Nachricht: 01000010000000000000111000110010111010111000011100111001101001100\ 11010010100011111011001000101000111001100110001110110111111010001101100110111\ 10100001110011110101101100001100101011011111101100000110001100101011101111010\ [....] Text: 0@ .,NN'.:9I1]D4<S';]&S>ASUL,K?L&,KO5'\S0!]R%M.GP8Q)P@..ZO-SMU:$HT/Z7/!E$ "Y%.3HM^2#**5QS"*21(N _ Original: 0@ .,NN'.:9I1]D4<S';]&S>ASUL,K?L&,KO5'\S0 !]R%M.GP8Q)P@..ZO-SMU:$HT/Z7/!E$ *Y%.3HM^2#**5QS"*21(N _ Bitfehler: 1 : [644] Laenge: 780 Fehler %: 0.128205128205
Neben den statistischen Daten im oberen Bereich sind vor allem die Angaben zur Anzahl der Bitfehler und zur Fehlerquote wichtig.