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

Aus Fachschaft_Informatik
Zur Navigation springen Zur Suche springen
Zeile 16: Zeile 16:
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.
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.


== Kernelhacking von Henning ==
== Remote-Shell durch Kernelmodul und IP-Pakete  ==


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


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.


== Aufgabe ==
== Aufgabe ==

Version vom 19. April 2011, 01:02 Uhr

Diese Seite ist eine Unterseite von CInsects.

Ablauf

  • 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

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

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

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

Aufgabe

Jeder soll als vorbereitung zum nächsten mal einmal einen kernel gebacken haben.


Meta

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