CInsects/Protokolle/CInsects:Treffen-2011-04-18: Unterschied zwischen den Versionen

Aus Fachschaft_Informatik
Zur Navigation springen Zur Suche springen
(→‎Ablauf: erweitert)
K (Bot: Kosmetische Änderungen)
 
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 14: Zeile 14:
== Vortrag: Wir schreiben unser erstes Kernelmodul ==
== Vortrag: Wir schreiben unser erstes Kernelmodul ==


Bjoern hat in Form eines Vortrags vorgestellt, wie wir ein Kernelmodul schreiben können. Der Vortrag ist hier zu finden:
bjoernb hat Kernelmodule vorgestellt. Im Vortrag wurde Basiswissen (Kernel- vs.Userspace, Aufgaben des Kernels, Kernel backen, Module) vermittelt. Es wurde ein erstes Hello-World-Kernelmodul geschrieben und auf die Dokumentation im Kernel verwiesen. Anschliessend wurde das Kernelmodul um Parameteruebergabe erweitert. Die Folien, das Material und das Kernelmodul werden in Kuerze hier verfuegbar sein.


TODO:Folien
== Remote-Shell durch Kernelmodul und IP-Pakete ==


Der Vortrag bezog sich auf die ersten beiden Kapitel des Buches TODO:Buchlink. Wir sind dazu aufgerufen selber in dem Buch weitere Kapitel zu lesen.
Im [http://blog.ksplice.com/2010/10/hosting-backdoors-in-hardware Ksplice-Blog] steht wie man ein Kernel-Modul schreibt, dass auf IP-Pakete reagiert und eine Remote-Shell oeffnet. Jedes IP-Paket hat im Header ein Feld in dem das Protokoll angegeben ist (TCP/UDP/ICMP). Es gibt viele Werte, die nicht vergeben sind. Man kann einen dieser Werte waehlen und in einem Kernelmodul auf diesen Wert reagieren. In dem Fall des Blogposts, werden mit sendip() Pakete versendet und mit dem Kernelmodul eine Shell geoeffnet.


Wir haben eine virtuelle Maschine gestartet und dort das Kernel-Modul aus dem Blogeintrag gebaut. Naechstes Mal moechten wir es laufen lassen. Das Modul liess sich noch nicht in den Kernel laden. Grund ist wahrscheinlich, dass es fuer einen anderen Kernel kompiliert wurde, als der Kernel der virtuellen Maschine. Henning stellt das Kernelmodul beim naechsten Mal weiter vor.


== Kernelhacking von Henning ==
== TODO ==
 
Henning zeigt und wie wir ein Kernelmodul schreiben, welches die tollen Dinge die auf http://blog.ksplice.com/2010/10/hosting-backdoors-in-hardware stehen machen kann.
 
Dazu wurde ein virtuelles Laufwerk erstellt, in dem eine Linux Distribution installiert wurde. Dieser Schritt ist einfach notwendig, um das Modul nicht auf unseren richtigen Kernel los zu lassen.
 
FIXME: Modul Quelltext.
 
 
== Aufgabe ==
 
Jeder soll als vorbereitung zum nächsten mal einmal einen kernel gebacken haben.


* Wer noch nie einen Kernel gebacken hat sollte das jetzt tun.
* Wer noch nie ein Kernelmodul geschrieben hat, sollte das jetzt tun.


== Meta ==
== Meta ==
Zeile 40: Zeile 32:
Kekse für nächste Woche von: FIXME
Kekse für nächste Woche von: FIXME


 
[[Kategorie:CInsects-Protokolle]]
 
 
[[Kategorie: CInsects-Protokolle]]

Aktuelle Version vom 8. Juni 2012, 16:14 Uhr

Diese Seite ist eine Unterseite von CInsects.

Ablauf[Bearbeiten]

  • Vorstellung des Protokolls vom letzten Treffen.
  • Vortrag von bjoernb über "Wir schreiben unser erstes Kernelmodul"
  • Darstellung von Muellis Arbeit zu einem USB Treiber für den Linux Kernel.

Brainstorming: Themen fuer das naechste Treffen[Bearbeiten]

Was wollen wir weiter machen in den nächsten Treffen?

  • Kernelmodul fuer USB-Fuzzing (muelli)
  • Kernelmodul: Char-Device-Driver (lesen und schreiben)
  • Kernelmodul: Remote-Shell durch Sendung von IP-Paketen (KSPLICE)

Vortrag: Wir schreiben unser erstes Kernelmodul[Bearbeiten]

bjoernb hat Kernelmodule vorgestellt. Im Vortrag wurde Basiswissen (Kernel- vs.Userspace, Aufgaben des Kernels, Kernel backen, Module) vermittelt. Es wurde ein erstes Hello-World-Kernelmodul geschrieben und auf die Dokumentation im Kernel verwiesen. Anschliessend wurde das Kernelmodul um Parameteruebergabe erweitert. Die Folien, das Material und das Kernelmodul werden in Kuerze hier verfuegbar sein.

Remote-Shell durch Kernelmodul und IP-Pakete[Bearbeiten]

Im Ksplice-Blog steht wie man ein Kernel-Modul schreibt, dass auf IP-Pakete reagiert und eine Remote-Shell oeffnet. Jedes IP-Paket hat im Header ein Feld in dem das Protokoll angegeben ist (TCP/UDP/ICMP). Es gibt viele Werte, die nicht vergeben sind. Man kann einen dieser Werte waehlen und in einem Kernelmodul auf diesen Wert reagieren. In dem Fall des Blogposts, werden mit sendip() Pakete versendet und mit dem Kernelmodul eine Shell geoeffnet.

Wir haben eine virtuelle Maschine gestartet und dort das Kernel-Modul aus dem Blogeintrag gebaut. Naechstes Mal moechten wir es laufen lassen. Das Modul liess sich noch nicht in den Kernel laden. Grund ist wahrscheinlich, dass es fuer einen anderen Kernel kompiliert wurde, als der Kernel der virtuellen Maschine. Henning stellt das Kernelmodul beim naechsten Mal weiter vor.

TODO[Bearbeiten]

  • Wer noch nie einen Kernel gebacken hat sollte das jetzt tun.
  • Wer noch nie ein Kernelmodul geschrieben hat, sollte das jetzt tun.

Meta[Bearbeiten]

Anwesenheit: 13 Personen Keksfaktor: l33t Kekse für nächste Woche von: FIXME