% Created 2020-01-30 Thu 21:37
% Intended LaTeX compiler: pdflatex
\documentclass[presentation]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{grffile}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{textcomp}
\usepackage{amssymb}
\usepackage{capt-of}
\usepackage{hyperref}
\usepackage{tabu}
\usepackage{minted}
\usepackage[english, ngerman]{babel}
\hypersetup{pdfauthor="Vasilij Schneidermann", pdftitle="Auf der Suche nach dem verlorenen Internet", colorlinks, linkcolor=, urlcolor=blue}
\setminted{breaklines,fontsize=\footnotesize}
\usetheme{Rochester}
\usecolortheme[RGB={87,83,170}]{structure}
\author{Vasilij Schneidermann}
\date{Januar 2020}
\title{Auf der Suche nach dem verlorenen Internet}
\uselanguage{German}
\languagepath{German}
\hypersetup{
 pdfauthor={Vasilij Schneidermann},
 pdftitle={Auf der Suche nach dem verlorenen Internet},
 pdfkeywords={},
 pdfsubject={},
 pdfcreator={Emacs 26.3 (Org mode 9.1.9)}, 
 pdflang={Ngerman}}
\begin{document}

\maketitle
\begin{frame}{Outline}
\tableofcontents
\end{frame}

\AtBeginSection{\frame{\sectionpage}}
\shorthandoff{"}

\section{Intro}
\label{sec:org178dea7}

\begin{frame}[label={sec:orgd7c89b9}]{Sprecher}
\begin{itemize}
\item Vasilij Schneidermann, 27
\item Cyber Security Consultant bei der msg systems ag
\item mail@vasilij.de
\item \url{https://github.com/wasamasa}
\item \url{http://brause.cc/}
\item \url{http://emacsninja.com/}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orgef45749}]{Motivation}
\begin{itemize}
\item Das moderne Web ist eine Zumutung:
\begin{itemize}
\item Tracking
\item Dark Patterns
\item Website Obesity
\item Paywalls
\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org77b4eb7}]{Antibeispiele}
\begin{figure}[htbp]
\centering
\includegraphics[height=6cm]{img/userinyerface.png}
\caption{\url{https://userinyerface.com/}}
\end{figure}
\end{frame}

\begin{frame}[label={sec:orgc0f7241}]{Antibeispiele}
\begin{figure}[htbp]
\centering
\includegraphics[height=6cm]{img/ngate.png}
\caption{\url{http://n-gate.com/about/}}
\end{figure}
\end{frame}

\begin{frame}[label={sec:org4002ebe}]{Antibeispiele}
\begin{figure}[htbp]
\centering
\includegraphics[height=6cm]{img/bitreich.png}
\caption{\url{http://bitreich.org/}}
\end{figure}
\end{frame}

\begin{frame}[label={sec:org898b6f4}]{Web 1.0}
\begin{figure}[htbp]
\centering
\includegraphics[height=6cm]{img/larrywall.png}
\caption{\url{http://www.wall.org/~larry/}}
\end{figure}
\end{frame}

\begin{frame}[label={sec:org62ac378}]{Web 1.0}
\begin{figure}[htbp]
\centering
\includegraphics[height=6cm]{img/donaldknuth.png}
\caption{\url{https://www-cs-faculty.stanford.edu/~knuth/}}
\end{figure}
\end{frame}

\begin{frame}[label={sec:org4ccaad1}]{Web 1.0}
\begin{figure}[htbp]
\centering
\includegraphics[height=6cm]{img/kuttingedge.png}
\caption{\url{https://kuttingedgeklinik.neocities.org/}}
\end{figure}
\end{frame}

\begin{frame}[label={sec:orga691142}]{Web 0.5}
\begin{itemize}
\item Geht es noch schlichter?
\item Ja, wenn man auf HTTP, HTML, CSS und JavaScript verzichtet
\item Es gibt andere Protokolle als HTTP
\item Gopher zum Beispiel
\item Nutzt das noch jemand und wofür?
\end{itemize}
\end{frame}

\section{Kurze Einführung in Gopher}
\label{sec:org7d4a77a}

\begin{frame}[label={sec:org25ff1cd}]{Protokolldefinition}
\begin{itemize}
\item Textuelles Protokoll
\item RFC 1436: The Internet Gopher Protocol (Informational)
\item RFC 4266: The Gopher URI Scheme (Proposed Standard)
\item Es existieren einiges an Lücken im RFC
\item Ein "Living" Standard also?
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:orge66754f}]{Protokollfunktionsweise}
 \begin{itemize}
\item Client verbindet sich mit Server über TCP auf Port 70
\item Client sendet Selektor gefolgt von \texttt{\textbackslash{}r\textbackslash{}n}
\item Server antwortet mit einem textuellen Menü oder sendet eine Datei
\item Einfachster Client: \texttt{echo -ne '\textbackslash{}r\textbackslash{}n' | nc hostname.tld 70}
\item Hierarchische Struktur ähnelt einem Dateisystem
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org19d6da5}]{Beispiel einer Gopher-Session}
 \begin{minted}[]{bash}
$ echo -ne '\r\n' | nc gopher.oldfart.eu 70 | head -n5
iWelcome to gopher.oldfart.eu   fake    (NULL)  0
i       fake    (NULL)  0
1Blog articels  /blog   gopher.oldfart.eu       70
0Has the KSK rolled?    /ksk    gopher.oldfart.eu       70
1Other gopher sites     /links  gopher.oldfart.eu       70
$ echo -ne '/links\r\n' | nc gopher.oldfart.eu 70 | head -n5
iSome links to get you started: fake    (NULL)  0
i       fake    (NULL)  0
1jpmens /       serf.jpmens.net 70
1Pygopherd Home /devel/gopher/pygopherd gopher.quux.org 70
1Quux.Org Mega Server   /       gopher.quux.org 70
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org2b175cf}]{Aufbau eines Menüs}
 \begin{itemize}
\item Erstes Zeichen symbolisiert die Art des Eintrags
\item Tabulator-gretrennte Felder: Text, Selektor, Host, Port
\end{itemize}

\begin{minted}[]{text}
iWelcome to gopher.oldfart.eu\tfake\t(NULL)\t0
i\tfake\t(NULL)\t0
1Blog articels\t/blog\tgopher.oldfart.eu\t70
0Has the KSK rolled?\t/ksk\tgopher.oldfart.eu\t70
1Other gopher sites\t/links\tgopher.oldfart.eu\t70
\end{minted}
\end{frame}

\begin{frame}[label={sec:orge48992c}]{Arten von Menüeinträgen}
\begin{itemize}
\item 0: Text
\item 1: Menü
\item 3: Fehler
\item 7: Suche
\item 9: Binary
\item I: Bild
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org75853ba}]{Selektoren}
 \begin{itemize}
\item Leere Selektoren sind immer gültig
\item Oft spiegeln Selektoren ein Dateisystem wieder
\item Dies ist nicht zwangsläufig der Fall, \texttt{/} kann ebenso gut einen
Fehler werfen
\item Im Zweifelsfall einfach Selektoren wie sie im Menü stehen nutzen
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org359984a}]{Suche}
 \begin{itemize}
\item Suchselektoren verwenden \texttt{\textbackslash{}t} als Trenner für den Suchbegriff
\item Suchselektor + dynamisch generierte Seite = interaktive Anwendung
\item Veronica-2 Suchmaschine: \texttt{echo -ne /v2/vs\textbackslash{}temail\textbackslash{}r\textbackslash{}n | nc
  floodgap.com 70}
\item Gästebuch: \texttt{echo -ne /guestbook\textbackslash{}tHello\textbackslash{}r\textbackslash{}n | nc dread.life 70}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org4f46de7}]{Gopher-URLs}
\begin{itemize}
\item gopher://host.tld:port/type/selector\%09query
\item Startseite: gopher://87.145.6.138
\item Alternativer Port: gopher://rico.sytes.net:7070
\item Menü: gopher://richardf.synchro.net/1grp:local
\item Datei: gopher://gopher.wdj-consulting.com:70/1/retro
\item Suche: gopher://ratthing.com/7/guestbook.cgi\%09Hello
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org3e11608}]{Kompatibilität mit HTTP}
 \begin{itemize}
\item Ein Gopher-Server kann theoretisch auf HTTP-Requests antworten
\item Erste Zeile eines HTTP-Requests: \texttt{GET / HTTP/1.1}
\item Dies kann als Selektor interpretiert werden
\item Umgekehrt gibt es die Möglichkeit auf HTTP-Inhalte zu verlinken
\item Typ: \texttt{h}, Selektorsyntax: \texttt{URL:http://ix.de/}
\end{itemize}
\end{frame}

\section{Einmal das Internet durchsuchen}
\label{sec:org7f784f2}

\begin{frame}[label={sec:orgf3233b5}]{Gibt es nicht schon Suchmaschinen?}
\begin{itemize}
\item Tatsächlich, ja
\item \url{https://www.shodan.io/} ist die bekannteste, Fokus auf IoT und ICS
\item Besonders geschätzt als Hackerbelustigung (IP-Cams insbesondere)
\item Alternativen:
\begin{itemize}
\item \url{https://www.binaryedge.io/} (Unternehmenstauglich)
\item \url{https://www.zoomeye.org/} (Chinesisch)
\item \url{https://fofa.so/} (Chinesischer)
\end{itemize}
\item Aufgrund von APIs besonders interessant
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org32b6511}]{Geht es besser?}
\begin{itemize}
\item Man kann sich ein spezialisiertes Shodan™ bauen
\item Zutaten:
\begin{itemize}
\item Mächtige Internetleitung
\item Immunität vor böser Post
\item Suche nach Servern die auf Port 70 lauschen
\item Herunterladen von Menüs
\item Speichern von Menüs
\item Durchsuchen von Menüs nach interessanten Daten
\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org2925f9e}]{Internetanbindung}
\begin{itemize}
\item Mir wurde des öfteren empfohlen solche Experimente auf dem Chaos
Communication Congress zu wagen:
\begin{itemize}
\item Gute Internetanbindung
\item Kurzweilige Veranstaltung
\item Abuse-Briefe gehen ins Leere
\item Viele Spezialisten™ vor Ort
\end{itemize}
\item Alternativ: Einen oder mehr Server mieten, Datenlast geschickt
verteilen und koordinieren
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org684092f}]{Legale Bedenken}
\begin{itemize}
\item Portscans sind in einer rechtlichen Grauzone
\item Gängige Interpretation: Vorbereitung eines Hackversuches
\item Teile des Internets reagieren eher angespannt darauf:
\url{https://github.com/robertdavidgraham/masscan/blob/master/data/exclude.conf}
\item Situation zu Banner Grabbing ist eher unklar
\item Wenn das Banner "AUTHORIZED ACCESS ONLY" sagt, sollte man vielleicht
das System in Ruhe lassen
\item Meine Absicht ist eine Erhebung, ähnlich einer Suchmaschine
\item Publikation der Daten ist fragwürdig (kein robots.txt-Äquivalent)
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org9a1339c}]{Portscan}
 \begin{itemize}
\item Klassisches \texttt{nmap} ist toll, aber zu langsam
\item Tools wie \texttt{masscan} können mit der richtigen Hardware und Treibern
die IPv4-Range innerhalb von 5 Minuten durchsuchen
\item Alternatives Tool: \texttt{zmap}
\item Größter Nachteil: Unpräzise im Vergleich zu \texttt{nmap}
\item Ich habe von einer Gruppe Spezialisten™ einen Portscan erhalten
\item Menge an Hosts: 3154751 (44M IP-Adressen)
\item Übungsaufgabe: Eigenes Tool bauen
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org60dee07}]{Banner Grabbing}
 \begin{itemize}
\item Idee: An jede IP-Adresse \texttt{\textbackslash{}r\textbackslash{}n} schicken, Antwort in strukturierter
Form speichern
\item Problem: Naive Herangehensweise dauert länger als die Veranstaltung
\item Lösung: Das \texttt{zmap}-Projekt bietet unter anderem \texttt{zgrab2} an
\item Es speichert Banner mit hoher Parallelisierung und anpassbaren
Timeouts als JSON
\item \texttt{zgrab2 banner -p70 -f 70.targets -o 70.banners -t1}
\item Mit einer Sekunde Timeout dauert es knapp eine Stunde alle Hosts zu
kontaktieren
\item Für die wenigen Hosts die nach Gopher aussehen, kann man die Banner
mit einem längeren Timeout erneut herunterladen
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org5555011}]{Aufbewahrung der Daten}
 \begin{itemize}
\item JSON ist strukturiert, aber nicht platzsparend
\item Repräsentation von binären Daten ist schwierig (Unicode lässt
grüßen)
\item \texttt{zmap} bietet ein eigenes binäres Format an, Parsing ist schwierig
\item Datenbanken sind eine spannende Option
\begin{itemize}
\item Relationale Datenbanken erlauben mächtige Analyse
\item Key-Value Stores sind sehr einfach, benötigen aber individuelle
Werkzeuge
\item NoSQL\ldots{} Vielleicht ein andermal
\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:orgf5f528b}]{Analyse und Tooling}
 \begin{itemize}
\item \texttt{jq} ist toll um JSON zu verarbeiten
\item DBM ist ein stupider Key-Value Store
\item Werkzeug der Wahl: Shell-Einzeiler und kleine Ruby-Skripte
(<200SLOC)
\end{itemize}
\end{frame}

\section{Wer lauscht auf Port 70?}
\label{sec:org77f3be3}

\begin{frame}[fragile,label={sec:orgb856d43}]{Filterung von Bannern}
 \begin{itemize}
\item Nicht alle Services schicken ein Banner zurück
\item \texttt{jq -c 'select(.data.banner.result.banner and .data.banner.status =}
"success")' 70.banners > 70.banners.success=
\item 13300 Banner (0,4\%) bleiben danach übrig
\item Das können aber unmöglich alles Gopher-Services sein?
\item Ungeklärte Frage: Was ist mit den restlichen IP-Adressen?
\item 200 SLOC Ruby zum Kategorisieren von Bannern in separate Dateien
\item nmap hat eine schöne Liste:
\url{https://svn.nmap.org/nmap/nmap-service-probes}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orge4d65ab}]{Aufschlüsselung der Verteilungen}
\begin{center}
\begin{tabular}{lrl}
Percent & Count & Filename\\
\hline
49.2\% & 6543 & 70.banners.unknown\\
24.0\% & 3190 & 70.banners.http\\
13.5\% & 1798 & 70.banners.ssh\\
5.2\% & 694 & 70.banners.gopher\\
2.3\% & 305 & 70.banners.ftp\\
1.3\% & 178 & 70.banners.imap\\
1.1\% & 151 & 70.banners.smtp\\
1.1\% & 142 & 70.banners.pop3\\
0.7\% & 93 & 70.banners.telnet\\
0.5\% & 63 & 70.banners.vnc\\
0.4\% & 50 & 70.banners.misc\\
0.4\% & 48 & 70.banners.ipcam\\
0.3\% & 46 & 70.banners.mysql\\
\end{tabular}
\end{center}
\end{frame}

\begin{frame}[label={sec:org4840c6f}]{Honeypots}
\begin{itemize}
\item Ganze 694 Banner sehen nach Gopher aus
\item Warum würde jemand E-Mail auf Port 70 betreiben?
\item Shodan erlaubt den gesamten Host zu prüfen
\item Shodan zeigt für viele dieser Hosts identische Banner auf 30-40
verschiedenen Ports an
\item Fun Fact: Shodan hat einen Honeyscore™ von 0 für diese Systeme
\item Von Interaktion wird abgeraten
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org14ac2a8}]{Honeypot}
\begin{figure}[htbp]
\centering
\includegraphics[height=6cm]{img/honeypot.png}
\caption{Shodan}
\end{figure}
\end{frame}

\begin{frame}[fragile,label={sec:orgfd247cb}]{HTTP-Server}
 \begin{minted}[]{text}
Server: Boa/0.92o
Server: CompuOffice Webserver/2.0.0.0
Server: EchoLink/2.0 # Radio
Server: Genetic Lifeform and Distributed Open Server 1.4.2
Server: Microsoft-Cassini/1.0.0.0 # MS CRM
Server: RealVNC/E4
Server: RStudio
Server: Symantec Endpoint Protection Manager
Server: VNC Server Enterprise Edition/E4.4.1 (r12183)
Server: WEBrick/1.3.1 (Ruby/1.9.3/2011-10-30)
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org163f327}]{Embedded Web Services}
 \begin{minted}[]{text}
Server: alphapd/2.1.8 # IPCam
Server: AVR_Small_Webserver
Server: axhttpd/1.5.3 # router
Server: BlueIris-HTTP/1.1 # IPCam
Server: DVR Webcam daemon 1.1 / NES Technology., Inc.
Server: Ethernut 4.6.3.0
Server: Henry/1.1 # telephony
Server: mxhttpd/2.19-MX Apr 11 2019 # IPCam
Server: thttpd/2.04 10aug98
Server: TibetSystem Server 2.0 # DVR
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org2b94005}]{Telnet}
 \begin{minted}[]{text}
Authentication required
This is an unrestricted telnet server.\r\nPlease do not user for production purposes\r\n
Telnet Disabled.
Error:  Must authenticate before using this service.
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orgb77be27}]{Andere Kuriositäten}
 \begin{minted}[]{text}
Asterisk Call Manager/2.8.0 # telephony
# ODYSSEY_E receiver ready # gps
Crestron Terminal Protocol Console Opened # home automation
Welcome to the TeamSpeak 3 ServerQuery interface
WinAQMS Data Server V2.3.71 # medical
<aafMessage><aafInitRequest> # medical
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org3eb8f1d}]{Römer geht nach Hause}
 \begin{minted}[]{text}
YOUR CONNECTION ATTEMPT HAS BEEN LOGGED AND SECURITY TEAM HAS BEEN ALERTED
CONNECTION ATTEMPT HAS BEEN LOGGED *** GO OUT, YOU STUPID N****R!
YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY. # portsentry
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org5f0e1ad}]{Hollywood lässt grüßen}
 \begin{itemize}
\item \texttt{Siemens BAU Task Diagnostics Delta (50) SnapShots}
\item Shodan zeigt einen offenen UDP-Port für ein "Siemens BACnet Field
Panel"
\item \url{https://en.wikipedia.org/wiki/BACnet}
\end{itemize}

\begin{quote}
BACnet was designed to allow communication of building automation and
control systems for applications such as heating, ventilating, and
air-conditioning control (HVAC), lighting control, access control, and
fire detection systems and their associated equipment.
\end{quote}
\end{frame}

\begin{frame}[label={sec:org2d27039}]{Hollywood lässt grüßen}
\begin{figure}[htbp]
\centering
\includegraphics[width=.9\linewidth]{img/sprinklers.jpg}
\caption{Hackers (1995)}
\end{figure}
\end{frame}

\section{Was gibt es im Gopherspace?}
\label{sec:org6b90bf7}

\begin{frame}[label={sec:org4e25a5a}]{Bekannte Server}
\begin{itemize}
\item Debian bietet Pygopherd und Gophernicus zur Installation an
\item Viele Menschen bauen ihre eigenen Server
\item Manche Services bieten nebenbei noch Gopher an
\item Fingerprinting ist auf viele Weisen möglich:
\begin{itemize}
\item Menüeinträge
\item Fehlermeldungen
\item Erwähnt im Bannertext
\item Hosting vom eigenen Quellcode
\item Leute anschreiben
\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org86e11a0}]{Pygopherd}
 \begin{minted}[]{text}
Welcome to Pygopherd!  You can place your documents
in /var/gopher for future use.  You can remove the gophermap
file there to get rid of this message, or you can edit it to
use other things.  (You'll need to do at least one of these
two things in order to get your own data to show up!)

Some links to get you started:

Pygopherd Home
Quux.Org Mega Server
The Gopher Project
Traditional UMN Home Gopher
Hello World

Welcome to the world of Gopher and enjoy!
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orge2c55e0}]{Pygopherd}
 \begin{minted}[]{bash}
$ ./bannersearch.rb banners '~pygopherd' | wc -l
63 # self-advertising
$ ./bannersearch.rb banners type:i selector:fake 'host:(NULL)' | wc -l
170 # revealing info line
$ ./bannersearch.rb banners 'Welcome to Pygopherd!' | wc -l
30 # uncustomized
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org5408c6a}]{Gophernicus}
 \begin{minted}[]{text}
Welcome to Gophernicus!
[...]
Generic information:
    current time...: Sun Jan 26 18:04:17 CET 2020
    your ip address: 87.79.236.180
    server uptime..: 632 days
    server version.: Gophernicus/1.4
    server platform: Debian/6.0 x86_64
    description....:

Server configuration:
    config file....: /etc/inetd.conf
    server hostname: ******
    root directory.: /var/gopher
    running as user: nobody
    output charset.: US-ASCII
    output width...: 70 characters
_________________________________________________________________
                Gophered by Gophernicus/1.4 on Debian/6.0 x86_64
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orgc149160}]{Gophernicus}
 \begin{minted}[]{bash}
$ ./bannersearch.rb banners '~gophernicus' | wc -l
119 # self-advertising
$ ./bannersearch.rb banners type:i host:null.host port:1 | wc -l
164 # revealing info line
$ ./bannersearch.rb banners 'Welcome to Gophernicus!' | wc -l
15 # (minimal) customization
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org2564fbd}]{Gophernicus}
 \begin{itemize}
\item Interessante Bannerzeile: "Gophered by Gophernicus/<version> on <OS>"
\item Anzahl an Servern mit einer solchen Zeile: \texttt{./bannersearch.rb
  banners 'Gophered by Gophernicus' on | wc -l \# 113}
\item Zeit für Popco(r)n
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:org39246ca}]{Gophernicus}
 \begin{minted}[]{bash}
$ ./bannersearch.rb banners 'Gophered by Gophernicus' on | jq -r '.matches[0].text|split("on ")[1]|split("/")[0]' | sort | uniq -c | sort -rn
\end{minted}

\begin{center}
\begin{tabular}{rlrl}
Count & OS & Count & OS\\
\hline
27 & Debian & 3 & MacOSX\\
23 & Ubuntu & 2 & Fedora\\
20 & OpenBSD & 1 & Peppermint\\
9 & NetBSD & 1 & Linux\\
8 & FreeBSD & 1 & Gentoo\\
6 & Raspbian & 1 & Devuan\\
5 & Slackware & 1 & CentOS\\
3 & Welcome & 1 & Arch\\
\end{tabular}
\end{center}
\end{frame}

\begin{frame}[fragile,label={sec:org190dd5d}]{GoFish}
 \begin{itemize}
\item Server mit verräterischem Menüeintrag: "Configure\_GoFish"
\end{itemize}

\begin{minted}[]{bash}
$ ./bannersearch.rb banners '~configure_gofish' | wc -l
4
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orgbcbd251}]{GoFish}
 \begin{minted}[]{text}
		 Welcome to the GoFish Gopher Server!
		 ------------------------------------

This file is a roadmap of how to add content to your shiny new gopher
server. Most of the real documentation is in the form of man pages
which where provided as part of the GoFish package.

For the really impatient:

    1) Add some files and/or directories to /srv/gopher
    2) Run `mkcache -r'
    3) Sit back and wait for the hits
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orgb8f2e0f}]{Bulletin Board Systems}
 \begin{itemize}
\item Ja, sie existieren noch, wenn auch auf Port 23
\item Manche haben ein Gopher-Interface auf Port 70
\item Menüeinträge verweisen gerne auf andere BBS-Instanzen (Local,
Fidonet)
\item "Synchronet Gopher Service" hat Systemeinträge wie "System
Statistics", "System Time", "Version Information"
\end{itemize}

\begin{minted}[]{bash}
$ ./bannersearch.rb banners '~text:^local|fidonet$' | wc -l
63
$ ./bannersearch.rb banners '^System Statistics|Version Information$' | wc -l
54
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org466a4bb}]{Marke Eigenbau}
 Es ist viel zu einfach eigene Server zu bauen

\begin{minted}[]{text}
This gopher server is a PDP-11/93 running GOS, my gopher server for RSX-11M.
This site runs on a Beaglebone Black using a server written in assembly.
port70 - a Gopher server (RFC-1436) written in Lua
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org864d139}]{Ungewöhnliche Ports}
 \begin{minted}[]{bash}
$ ./bannersearch.rb banners '!port:70' '!type:i' | wc -l
39
$ ./bannersearch.rb banners '!port:70' '!type:i' | jq -r '.matches[].port' | sort | uniq -c | sort -rn | head
\end{minted}

\begin{center}
\begin{tabular}{rrrr}
Count & Port & Count & Port\\
\hline
21 & 80 & 3 & 7006\\
20 & 0 & 3 & 7005\\
8 & 23 & 3 & 7003\\
6 & 7070 & 2 & 9999\\
4 & 105 & 2 & 2323\\
\end{tabular}
\end{center}
\end{frame}

\begin{frame}[fragile,label={sec:org272ad41}]{ASCII Art}
 \begin{minted}[]{text}
             ____----------- _____
\~~~~~~~~~~/~_--~~~------~~~~~     \
 `---`\  _-~      |                   \
   _-~  <_         |                     \[]
 / ___     ~~--[""] |      ________-------'_
> /~` \    |-.   `\~~.~~~~~                _ ~ - _
 ~|  ||\%  |       |    ~  ._                ~ _   ~ ._
   `_//|_%  \      |          ~  .              ~-_   /\
          `--__     |    _-____  /\               ~-_ \/.
               ~--_ /  ,/ -~-_ \ \/          _______---~/
                   ~~-._<   \ \`~~~~~~~~~~~~~     ##--~/
                        |    \ \      C F L A G S   \ \
                         \    ) |`------##---~~~~-~  ) |
                          ~-_/_/                 ~-_/_/
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org811a8d7}]{ASCII Art}
 \begin{minted}[]{text}
/--------------------------------------------------\
| Welcome to eyeblea.ch, the Melbourne home of the |
|             Gopher and IRC revival!              |
\--------------------------------------------------/
 \
   \     ,_---~~~~~----._
  _,,_,*^____      _____``*g*\"*,
 / __/ /'     ^.  /      \ ^@q   f
[  @f | @))    |  | @))   l  0 _/
 \`/   \~____ / __ \_____/    \
  |           _l__l_           I
  }          [______]           I
  ]            | | |            |
  ]             ~ ~             |
  |_____________________________|
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orgbaf65ff}]{ASCII Art}
 \begin{minted}[]{text}
 _____ _   _  ____ _  ___   _ ____
|  ___| | | |/ ___| |/ / | | |  _ \
| |_  | | | | |   | ' /| | | | |_) |
|  _| | |_| | |___| . \| |_| |  __/
|_|    \___/ \____|_|\_\\___/|_|

    S  O  L  U  T  I  O  N  S
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orgdc3a291}]{Suchfelder}
 \begin{minted}[]{bash}
$ ./bannersearch.rb banners type:7 | jq -r '.matches[].text' | sort | uniq
\end{minted}

\begin{minted}[]{text}
ASCII banner generator
Ask the Magic 8 Ball
Convert an HTML page to gopher
Create a new account
JPG to ASCII convertor (input: URL ending in .jpg)
PDF viewer (input: URL ending in .pdf)
WEATHER FORECAST
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orgd8d7a81}]{Spiele}
 \begin{minted}[]{text}
ShadowGate multi user dungeon is  a large text-based Role Playing game derived from the Dungeons and Dragons [...]
Welcome to the Mare Tranquillitatis People's Circumlunar Zaibatsu, an ideologically decriminalized world [...]
You wake up slowly from a dream about angry bees. Your phone vibrates noisily next to your bed [...]
You are at a dead end of a dirt road.  The road goes to the east.
Choose Your Own Adventure (anonradio)
Play: Klondike (Turn One)
60 MORE Gopher Solitaire Games!
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org9d84000}]{Phlogs}
 Die einen haben Weblogs (AKA Blogs), die anderen Phlogs\ldots{}

\begin{minted}[]{bash}
$ ./bannersearch.rb banners '~phlog' type:10 | wc -l
98
$ ./bannersearch.rb banners '~phlog' type:10 | jq -r '.matches[].text' | shuf | head
Link Phlog
Phlog Roll
Phlog
My Phlog
Phlog
My phlog
microphlog
Beastie Boy - phlog about Unix/BSD, Emacs, Lisp and intersting things
Ferment Phlog
Kara and Michael\'s Phlog
\end{minted}
\end{frame}

\begin{frame}[label={sec:org15f0cc6}]{Mojibake}
\begin{itemize}
\item Leider sagt der Standard nichts über Encodings
\item Viele Services verwenden ASCII oder UTF-8
\item Es gibt eine handvoll Seiten aus Russland und Taiwan mit unbekannten
Encodings
\item Manche kündigen das Encoding des folgenden Textes auf Englisch an
\item i18n bleibt ein ungelöstes Problem
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org37e1c03}]{Kaputte Links}
\begin{itemize}
\item Der Standard sieht Menüeinträge nur mit Hosts vor
\item Menüeinträge auf den eigenen Server können veralten
\item Kein Äquivalent zu relativen/absoluten Links
\item Host kann händisch korrigiert werden
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orgc7c9dd5}]{Zutritt verboten!}
\begin{itemize}
\item Protokoll sieht keinerlei Authentisierung vor
\item Man könnte theoretisch etwas mit Suchen und CGI bauen\ldots{}
\item Ganze zwei Seiten zeigen "Forbidden!" an
\end{itemize}
\end{frame}

\begin{frame}[fragile,label={sec:orgef8226a}]{Zutritt verboten!}
 \begin{minted}[]{text}
 *** AUTHORIZED ACCESS ONLY ***

This is a private Gopher server. Please log out immediately if you
have not been explicitly given permission to this server.
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:orgfc77921}]{Hacker}
 \begin{minted}[]{text}
This is a Gopher server maintained by Astr0 for the hackerfraternity
You've reached the first checkpoint in this this hacker challenge.
Writeups for CTF events and related challenges
Welcome to the Security Diary
flag{do_you_know_gopher?}
The Final Exam Payload
\end{minted}
\end{frame}

\begin{frame}[fragile,label={sec:org5b2f7f3}]{Anderer interessanter Kram}
 \begin{minted}[]{text}
If you came from the Sysadmin Wanted ad, look here
Welcome to the p70.us URL shortening service!
Gopherddit       -> simple gopher interface to Reddit by gluon
Leafly is the world's largest cannabis information resource [...]
Welcome to the home of SCC, Simple C Compiler.
Einwohnergemeinde Zermatt
taz.de Die Tageszeitung
Welcome to Devuan
\end{minted}
\end{frame}

\section{Outro}
\label{sec:orgd3acb31}

\begin{frame}[label={sec:org0479e8e}]{Mögliche nächste Schritte}
\begin{itemize}
\item Besseres Fingerprinting
\item Suche und CGI
\item Sicherheitslücken entdecken und CVEs einreichen
\item Suchmaschinenbau
\item Mehr Statistiken
\item Visualisierungen
\item \ldots{}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orgea3184b}]{Fragen?}
\end{frame}
\end{document}