Skip to content

Commit 8fe2201

Browse files
author
Tim Weber
committed
Added (German) final presentation.
1 parent a2174c5 commit 8fe2201

File tree

2 files changed

+264
-0
lines changed

2 files changed

+264
-0
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
*.c
22
*.aux
33
*.log
4+
*.nav
45
*.out
56
*.pdf
7+
*.snm
68
*.swp
79
*.toc
810
article.tex

abschlussvortrag.tex

+262
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,262 @@
1+
\documentclass[ignorenonframetext,ucs]{beamer}
2+
3+
\usepackage[ngerman]{babel}
4+
\usepackage{ucs}
5+
\usepackage[utf8x]{inputenc}
6+
\usepackage[T1]{fontenc}
7+
\usepackage{relsize}
8+
\usepackage{lmodern}
9+
10+
\PreloadUnicodePage{0}
11+
12+
% \usepackage[colorlinks]{hyperref}
13+
\newcommand\refurl[2]{#2\footnote{\url{#1}}}
14+
15+
\usepackage{listings}
16+
\usepackage{graphicx}
17+
% \usepackage[scaled]{luximono}
18+
\definecolor{darkgreen}{rgb}{0,0.5,0}
19+
\lstset{language=,extendedchars=false,basicstyle=\small\ttfamily\color{lightgray},backgroundcolor=\color{black},escapechar=\%}
20+
\newcommand\SH[1]{{\color{green}\$ }{\color{white}#1}}
21+
\def\TYPE{\lstinline[basicstyle=\small\ttfamily\color{darkgreen}]}
22+
\def\cmd{\textsc}
23+
\usetheme[compress]{Berlin}
24+
25+
% \AtBeginSection[]
26+
% {
27+
% \begin{frame}<beamer>{Übersicht}
28+
% \tableofcontents[currentsection,currentsubsection]
29+
% \end{frame}
30+
% }
31+
32+
\title{Design~and~Implementation~of a~Forensic~Documentation~Tool for~Interactive~Command\mbox{-}line~Sessions}
33+
\subtitle{Abschlussvortrag}
34+
\author{Tim Weber}
35+
\date{15. März 2010}
36+
\begin{document}
37+
38+
\begin{frame}\maketitle\end{frame}
39+
40+
% \begin{frame}{Der Vortragende}
41+
% \begin{itemize}
42+
% \item Student der Software- und Internettechnologie
43+
% \item Interessenschwerpunkte: \\ IT-Sicherheit, Netzwerkprotokolle, Datenbanken
44+
% \end{itemize}
45+
% \end{frame}
46+
47+
\section{\cmd{script}}
48+
49+
\subsection{Einsatzgebiet}
50+
51+
\begin{frame}{Protokollierung von Terminalsitzungen}
52+
\begin{itemize}
53+
\item Im Zuge forensischer Ermittlungen
54+
\item Umfassende und detaillierte Aufzeichnung \\ der durchgeführten Tätigkeiten
55+
\item Dokumentation für\begin{itemize}
56+
\item den Ermittler selbst
57+
\item mögliche Amtsnachfolger
58+
\item unabhängige Gutachter o.Ä.\end{itemize}
59+
\end{itemize}
60+
\end{frame}
61+
62+
\subsection{Verwendung von \cmd{script}}
63+
64+
\begin{frame}[fragile=singleslide]{Einsatzbeispiel \cmd{script}}
65+
\begin{example}
66+
\begin{lstlisting}
67+
%\SH{script -t typescript 2> timing}%
68+
Script started, file is typescript
69+
%\SH{dd if=/dev/sda | nc 10.10.1.1 1234}%
70+
...
71+
%\SH{logout}%
72+
Script done, file is typescript
73+
\end{lstlisting}
74+
\end{example}
75+
\end{frame}
76+
77+
\begin{frame}[fragile=singleslide]{Was tut \cmd{script}?}
78+
\begin{example}
79+
\begin{lstlisting}
80+
%\SH{script}%
81+
Script started, file is typescript
82+
%\SH{ps faux}%
83+
...
84+
3704 ? S /usr/bin/x-terminal-emulator
85+
3705 pts/4 Ss \_ -bash
86+
3843 pts/4 S+ \_ script
87+
3844 pts/4 S+ \_ script
88+
3845 pts/7 Ss \_ bash -i
89+
3878 pts/7 R+ \_ ps faux
90+
\end{lstlisting}
91+
\end{example}
92+
\begin{center}
93+
Terminal-Emulator $\Leftrightarrow$ \emph{pts/4} $\Leftrightarrow$ \cmd{script} $\Leftrightarrow$ \emph{pts/7} $\Leftrightarrow$ \cmd{bash}
94+
\end{center}
95+
\end{frame}
96+
97+
\subsection{Ausgabeformat}
98+
99+
\begin{frame}[fragile=singleslide]{Typescript}
100+
\begin{itemize}
101+
\item 1:1-Ausgabe der als Kindprozess laufenden Software
102+
\item Inklusive Steuerzeichen etc.
103+
\end{itemize}
104+
\begin{example}
105+
\begin{verbatim}
106+
^[[1;32mscy@ ~ $^[[0m echo test^M
107+
test^M
108+
\end{verbatim}
109+
\end{example}
110+
\end{frame}
111+
112+
\begin{frame}[fragile=singleslide]{Timingdaten}
113+
\begin{itemize}
114+
\item ASCII-Daten
115+
\item Zu wartende Zeit in Sekunden; Anzahl auszugebender Bytes
116+
\end{itemize}
117+
\begin{example}
118+
\begin{verbatim}
119+
0.163965 117
120+
0.038713 1
121+
9.803904 1
122+
0.175984 1
123+
0.023397 2
124+
125+
\end{verbatim}
126+
\end{example}
127+
\end{frame}
128+
129+
\begin{frame}{Schwächen}
130+
\begin{itemize}
131+
\item Nur Bildschirmausgabe wird protokolliert, \\ Eingaben überhaupt nicht\begin{itemize}
132+
\item Tab-Completion? \texttt{\char`\^C}/\texttt{\char`\^D}/\texttt{\char`\^M}?\end{itemize}
133+
\item Timinginformationen werden in separater Datei gespeichert
134+
\item Keine Informationen über die Laufzeitumgebung\begin{itemize}
135+
\item Zeichenkodierung
136+
\item Umgebungsvariablen
137+
\item Fenstergröße
138+
\item\end{itemize}
139+
\end{itemize}
140+
\end{frame}
141+
142+
\subsection{Die Neuentwicklung: \cmd{forscript}}
143+
144+
\begin{frame}{Ziele der Bachelorarbeit}
145+
\begin{itemize}
146+
\item Ausführliche Dokumentation des Verhaltens von \cmd{script}, Aufzeigen seiner Schwächen
147+
\item Gestalten eines neuen Dateiformates, \\ das forensischen Ansprüchen genügt
148+
\item Entwickeln einer Software, die in diesem Format protokolliert
149+
\item Dokumentieren dieser Software nach den Prinzipien \\ des \emph{literate programming}
150+
\end{itemize}
151+
\end{frame}
152+
153+
\section{Das neue Datenformat}
154+
155+
\subsection{Grundlegendes}
156+
157+
\begin{frame}{Bestandteile einer \cmd{forscript}-Datei}
158+
Ein einziger chronologisch fortlaufender Datenstrom, enthält:
159+
\begin{itemize}
160+
\item Ausgaben der Clientsoftware
161+
\item Eingaben des Benutzers
162+
\item Metainformationen\begin{itemize}
163+
\item die Datei strukturierend
164+
\item den Datenstrom ergänzend\end{itemize}
165+
\end{itemize}
166+
\end{frame}
167+
168+
\subsection{Datentypen}
169+
170+
\begin{frame}{Ausgaben der Clientsoftware}
171+
\begin{itemize}
172+
\item Identisch zu \cmd{script}
173+
\item Steuerzeichen werden 1:1 übernommen
174+
\item Für maximale Authentizität werden \\ keinerlei Änderungen vorgenommen\begin{itemize}
175+
\item Keine Umkodierung in Unicode etc.
176+
\item Ausnahme: Escaping von Bytes mit Sonderfunktion
177+
\item Rekonstruktion/Wiedergabe: Aufgabe der lesenden Software, \\ die ursprüngliche Situation zu erkennen, \\ z.B. anhand Umgebungsvariablen\end{itemize}
178+
\end{itemize}
179+
\end{frame}
180+
181+
\begin{frame}{Eingaben des Benutzers}
182+
\begin{itemize}
183+
\item Durch vorangestelltes \emph{shift out, shift out} (\texttt{0x0e 0x0e}) signalisiert
184+
\item Unveränderte Eingabebytes (Ausnahme: Escaping)\begin{itemize}
185+
\item Druckbare Zeichen
186+
\item Cursorbewegungen
187+
\item Tastenkombinationen
188+
\item Sondertasten
189+
\item\end{itemize}
190+
\item Abschluss durch \emph{shift in} (\texttt{0x0f})
191+
\end{itemize}
192+
\end{frame}
193+
194+
\begin{frame}{Metainformationen}
195+
\begin{itemize}
196+
\item Durch vorangestelltes \emph{shift out} (\texttt{0x0e 0x0e}) und \\ ein Typ-Byte signalisiert
197+
\item Festgelegte Typ-Bytes, aber in künftigen Versionen erweiterbar\begin{itemize}
198+
\item Dateiformat-Version
199+
\item Anfang einer neuen Sitzung
200+
\item Umgebungsvariablen
201+
\item Fenstergröße
202+
\item Sprache und Zeichensatz/Encoding
203+
\item Timinginformationen
204+
\item\end{itemize}
205+
\item Terminiert durch \emph{shift in} (\texttt{0x0f})
206+
\end{itemize}
207+
\end{frame}
208+
209+
\subsection{Eigenschaften}
210+
211+
\begin{frame}{Escaping}
212+
\begin{itemize}
213+
\item \emph{shift out} (\texttt{0x0e}) und \emph{shift in} (\texttt{0x0f}) werden durch vorangestelltes \emph{data link escape} (\texttt{0x10}) escaped
214+
\item \emph{data link escape} muss folglich auch escaped werden: \\ durch sich selbst
215+
\begin{example}\begin{center}
216+
\texttt{0x4e 0x0f 0x00 0x61 0x74 0x10}\\
217+
$\Downarrow$\\
218+
\texttt{0x4e 0x10 0x0f 0x00 0x61 0x74 0x10 0x10}
219+
\end{center}\end{example}
220+
\end{itemize}
221+
\end{frame}
222+
223+
\begin{frame}{Zeitmessung}
224+
\begin{itemize}
225+
\item Hauptschleife: Warten auf\begin{enumerate}
226+
\item Benutzereingaben
227+
\item Clientausgaben
228+
\item Signale (Fenstergröße verändert, Client beendet)\end{enumerate}
229+
\item Vor Bearbeiten eines jedes Ereignisses wird Zeitdifferenz \\ in Ausgabedatei geschrieben
230+
\end{itemize}
231+
\end{frame}
232+
233+
\section{\cmd{forscript}}
234+
235+
\subsection{Implementierung}
236+
237+
\begin{frame}{Standards}
238+
\begin{itemize}
239+
\item \cmd{forscript} hält sich strikt an Unix-übergreifende Standards\begin{itemize}
240+
\item C 99
241+
\item POSIX.1-2001
242+
\item System V r4
243+
\item keine BSD-Funktionen\end{itemize}
244+
\item Lauffähig auf Linux und NetBSD, \\ möglicherweise auch auf anderen
245+
\item Auf OS~X bislang nicht lauffähig, \\ da dort \texttt{clock\_gettime()} fehlt\begin{itemize}
246+
\item Kann aber emuliert oder ersetzt werden\end{itemize}
247+
\end{itemize}
248+
\end{frame}
249+
250+
\begin{frame}{Neuerungen}
251+
\begin{itemize}
252+
\item \cmd{script} etwa 1997 geschrieben, \\ neuere Library-Funktionen existieren:\begin{itemize}
253+
\item \texttt{select()} statt mehreren Prozessen
254+
\item \texttt{posix\_openpt()} statt race-behaftetem \\ Durchprobieren von PTYs
255+
\item \texttt{clock\_gettime()} mit monotonem Zeitverlauf\end{itemize}
256+
\item \cmd{forscript} ignoriert \emph{SIGSTOP} des Childs
257+
\item \texttt{-a} mit Timing unterstützt
258+
\item Nur 1× forken $\Rightarrow$ vereinfachter Code
259+
\end{itemize}
260+
\end{frame}
261+
262+
\end{document}

0 commit comments

Comments
 (0)