Benutzerhandbuch

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.)

B.1 Installationsanleitung

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.

B.1.1 Einrichten des Apache-Servers

  1. Entpacken Sie die Apache-Quellen (apache_1.3.31.tar.gz), die auf der Begleit-CD im Verzeichnis software/apache/ liegen.

  2. Wenden Sie den Patch apache_1.3.31-cc-hge.patch (ebenfalls aus dem Verzeichnis software/apache/) mit
    patch -p0 < apache_1.3.31-cc-hge.patch
    
    auf die Apache-Quellen an.

  3. Wechseln Sie in das Apache-Verzeichnis und kompilieren und installieren Sie die gepatchte Version mit
    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.

  4. Kopieren Sie den Daemon ccdaemon.py (aus dem Verzeichnis software/daemon/) in ein geeignetes Verzeichnis BIN (zum Beispiel /bin/) und starten Sie ihn mit BIN/ccdaemon.py &.

  5. Prüfen Sie mit
    echo "C del 1" | netcat localhost 4999
    
    ob der Daemon erreichbar ist - Sie sollten darauf die Fehlermeldung "Error: IP address 1 not found" erhalten.

  6. Erzeugen Sie eine Apache-Konfigurationsdatei bzw. nehmen Sie Änderungen an der mitgelieferten Konfigurationsdatei vor. Details dazu finden sich in der Apache-Dokumentation.

  7. Starten Sie dann den Apache-Server mit PFAD/bin/apachectl start.

B.1.2 Einrichten des Client-Proxys

  1. Kopieren Sie auf dem Client-Computer den Client-Proxy ccproxy.py (aus dem CD-Verzeichnis software/proxy) in ein geeignetes Verzeichnis BIN, z. B. /bin/.
  2. Passen Sie im Programm die Variable LOGFILE an: Sie bestimmt, in welche Datei die Messwerte geschrieben werden.
  3. Starten Sie den Proxy mit BIN/ccproxy.py &.
  4. Konfigurieren Sie den Web-Browser, mit dem Sie testen wollen. Als Proxy-Server stellen Sie localhost und als Port 21000 ein. Wenn Sie wget einsetzen, definieren Sie den Proxy über eine Umgebungsvariable:
    export http_proxy="http://localhost:21000"
    
    Beim Aufruf von wget ist jeweils die Option --proxy=on anzugeben.

B.1.3 Einrichten des Analyseprogramms

Kopieren Sie das Analyseprogramm ccanalyse.py aus dem CD-Verzeichnis software/analyse/ in ein geeignetes Verzeichnis, z.B. /bin/.

B.2 Anpassungen

B.2.1 Änderung der Ports

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:

B.2.2 Änderung der Verzögerungszeit

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.001
an. Die Zeit wird in Sekunden angegeben.

Nach der Änderung muss der Apache-Server mit

make && make install
neu installiert und neu gestartet werden.

B.2.3 Aktivieren der Fehlerkorrektur

Die Fehlerkorrektur muss an zwei Stellen ein- bzw. ausgeschaltet werden:

B.3 Benutzung

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.

B.3.1 Kontrollprogramm

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

B.3.2 Daemon über netcat ansteuern

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.

B.3.3 Das Analyse-Tool

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.