1. Geeknight
Aus Open4Free-Wiki
Inhaltsverzeichnis |
[bearbeiten] Wann
Vom 01.04.2007 bis zum 02.04.2007. Um 11 Uhr bis open end.
[bearbeiten] Wo
glua's home
[bearbeiten] Was
Jeder kann/darf machen was er will.
- glua's todo: XEN, Nagios 3, Cacti
- hanse's todo: Nagios, evtl. XEN, Plan9
- pca's todo: Gentoo-binpkg-Server, distcc
- bld's todo: Exploiten, Nagios, Cacti, Virtual Box, blub
[bearbeiten] Gesammelte Erfahrungen
[bearbeiten] bld
[bearbeiten] Exploiten
Ich habe mich, nachdem ich Daten sinnlos auf gluas Server rauf und runter kopiert habe, mit dem BuHa Exploitme-Contest beschäftigt, der allerdings schon fertig gelaufen ist. Ich habe versucht möglichst keine Lösungen anzuschauen.
Beispiel 1 war kein Problem, ich musste nur über den Buffer schreiben und die EIP(Extended Instruction Pointer = Befehlszähler) von der print Funktion einsetzen. Zum Herausfinden der Adresse habe ich das Programm mit --ggdb (gcc-3.1 --ggdb test.c -o test) kompiliert, und mit gdb test ausgeführt (disas <funktion>). Mit dem core, der nach einem beliebigen Überlauf und ulimit -S -c unlimited > /dev/null 2>&1 erstellt wird kann das Überschreiben der Adressen anschaulich dargestellt werden (gdb test core -> info registers). [1] hat mir als Einführung geholfen. lea 0xffffff80(%ebp),%eax zeigt an, das 0xffffffff - 0xffffff80 -> 127(128) auf den Stack geschrieben werden, ich habe noch 4 zusätzlich für das return genommen und schon war die Rücksprungadresse überschrieben.
simon@Cottonmouth:~/cpp/exploitme/exploit1$ ./exploit | ./test I've been exploited!
Teil 2 ist schwieriger, aber mit ein wenig ausprobieren findet man raus, das der username wieder mit fprintf ausgegeben wird und fprintf formatierungen erlaubt, dadurch kann man längere strings einschleusen. Im Moment arbeite ich an der manpage von fprintf (apt-get install manpage-dev für Leute mit minimal-install) um die richtige formatierung zu suchen. Die Wikpedia, oder dieser Link und das hat mir dabei geholfen. Edit: Mittlerweile habe ich einen String gefunden, der die ID mit 1337 überschreibt: %1337d%5$n:
simon@Cottonmouth:~/cpp/exploitme/exploit2$ ./test username: %1337d%5$n password: your id: 1337
Im 3. Teil geht es darum einen Shellcode einzubinden, der etwas ausgibt.
Ausserdem habe ich einen snort Server aufgesetzt, und minimal konfiguriert, so, dass er mit neuem Regelwerk in eine Datei/mysql geloggt hat.
Auf OT gibt es eine Aufarbeitung der gelernten Skills.
[bearbeiten] glua
[bearbeiten] DistCC
Um die Zeit beim Kompilieren von Paketen unter Gentoo-Linux zu beschleunigen, gibt es mit DistCC die Möglichkeit, die Rechenlast auf mehrere Server zu verteilen. Auf den arbeitenden Computern ist dabei kein wesentlicher Lastanstieg festzustellen. Beim auftraggebenden Client wird zwar eine Uptime von bis zu über 10 angezeigt, er bleibt jedoch problemlos benutzbar, erhöhte Latenzen sind nicht feststellbar.
[bearbeiten] XEN
Obwohl der Gentoo-Xen-Kernel bereits alle nötigen Patches enthalten sollte, ist nirgends eine entsprechende Option dafür auffindbar. Nach mehreren erfolglosen Versuchen probieren wir nun einen Debian-Server mit Xen zu installieren.
[bearbeiten] Nagios, NagiosQL, Cacti und SNMP
Der Rattenschwanz an Abhängigkeiten für diese Programme ist elendslang und es dauerte Ewigkeiten um diese zu Installieren (oft wurde erst im Nachhinein ein falsches USE-Flag bemerkt). So sind u.a. Apache, PHP, MySQL, GD nötig, damit diese ihren Dienst tun können.
Um die Login-User von NagiosQL auch zum Anmelden an Nagios zu verwenden, installierte ich mod_auth_myql und ergänzte die Apache-Konfiguration für Nagios wie folgt:
LoadModule mysql_auth_module modules/mod_auth_mysql.so AuthName "Nagios Access" AuthType Basic AuthMySQLHost localhost AuthMySQLUser nagiosql AuthMySQLPassword passwörd AuthMySQLDB nagiosql AuthMySQLUserTable tbl_user AuthMySQLNameField username AuthMySQLPasswordField password AuthMySQLPwEncryption md5 AuthMySQLUserCondition active="1" AuthMySQLEnable On Require valid-user
Schlussendlich stellten sich danach doch noch einige Schwächen heraus. So gibt es bei NagiosQL keine klare Trennung, wem welcher Rechner gehört, wodurch jeder User alle Einstellungen ändern kann. Das hat weiters zu Folge, dass die User-Trennung im Webinterface von Nagios durch NagiosQL umgebar wird (falls wie beschrieben über mod_auth_mysql die selbe DB verwendet wird).
[bearbeiten] hanse
[bearbeiten] Plan9
Anfangs habe ich versucht auf einem überflüssigen Rechner einen VNC Server zu installieren, um den eklatanten Mangel eines Full-Featured Browser Auszugleichen. Nach dem mir das gelungen war beschäftigte ich mich mit der Inplementierung eines File Servers.
Ich versuchte auch einen Plan9 CPU Server zu installieren, aber es gab erhebliche Schwirigkeiten mit dem Bootprozess auf dem Testrechner (Grub benötigte ca. 30 Sekunden um zu starten und 9load startete garnicht erst.
Anschließen installierte ich Testweise Abaco und war überrascht wie gut er bereits funktioniert.
[bearbeiten] Zusammenfassung
Die rund 30 gemeinsam verbrachten Stunden hatten es in sich. Nach den ersten 12h sank die Produktivität deutlich und eine Pause war mehr als Notwendig. Ich könnte mir nicht vorstellen, wie die LAN geendet hätte, wenn wir uns nicht für ein paar Stunden hingelegt hätten. Es zeigte sich ganz deutlich, dass Linux nicht nur Zeitvertreib sondern anspruchsvolle geistige Arbeit ist.
Das gemeinsame Arbeiten in einer Gruppe förderte wie erhofft die Motivation und schuf durch die zahlreich vorhandene Hardware eine gute Infrastruktur. Außerdem konnte man auf diese Weise sporadisch an einer Aufgabe zusammenarbeiten oder bereits vorhandenes Wissen weiterreichen.


