uni

University stuff
git clone git://git.margiolis.net/uni.git
Log | Files | Refs | README | LICENSE

doc.tex (4410B)


      1 \documentclass[12pt]{article}
      2 \usepackage[utf8]{inputenc}
      3 \usepackage[greek,english]{babel}
      4 \usepackage{alphabeta}
      5 \usepackage{fancyhdr}
      6 \usepackage{listings}
      7 \usepackage{mathtools}
      8 \usepackage{xcolor}
      9 \usepackage{float}
     10 \usepackage{siunitx}
     11 \usepackage[margin=0.5in]{geometry}
     12 \usepackage[backend=bibtex]{biblatex}
     13 
     14 \lstset {
     15         basicstyle=\ttfamily,
     16         columns=fullflexible,
     17         breaklines=true,
     18         keepspaces=true,
     19 	showstringspaces=false
     20 }
     21 
     22 \title{Εργαστήριο Ασφάλειας στην Τεχνολογία της Πληροφορίας -- Εργασία 1}
     23 \author{Χρήστος Μαργιώλης -- 19390133}
     24 \date{Απρίλιος 2024}
     25 
     26 \begin{document}
     27 
     28 \begin{titlepage}
     29         \maketitle
     30         \begin{figure}[t!]
     31         \begin{center}
     32         \includegraphics[scale=0.3]{./res/uniwalogo.png} \\
     33         \Large
     34         \textbf{Πανεπιστήμιο Δυτικής Αττικής} \\
     35         \large
     36         Τμήμα Μηχανικών Πληροφορικής και Ηλεκτρονικών Υπολογιστών
     37         \end{center}
     38         \end{figure}
     39 \end{titlepage}
     40 
     41 \renewcommand{\contentsname}{Περιεχόμενα}
     42 \tableofcontents
     43 \pagebreak
     44 
     45 \section{Δραστηριότητα 1: Ανάπτυξη και δοκιμή του shellcode}
     46 
     47 Αρχικά απενεργοποιούμε το ASLR: \\
     48 
     49 \includegraphics[width=\textwidth]{res/aslr.png} \\
     50 
     51 Γράφουμε το πρόγραμμα \lstinline{shellcode.c}:
     52 
     53 \lstinputlisting[language=c]{../src/shellcode.c}
     54 
     55 Κάνουμε compile και το τρέχουμε: \\
     56 
     57 \includegraphics[width=\textwidth]{res/shellcode.png} \\
     58 
     59 Μετατρέπουμε το πρόγραμμα σε setuid: \\
     60 
     61 \includegraphics[width=\textwidth]{res/chownshellcode.png} \\
     62 
     63 Παράκαμψη αντιμέτρου \lstinline{/bin/sh} δημιουργώντας symbolic link με το
     64 \lstinline{/bin/zsh} και επανεκτέλεση του προγράμματος: \\
     65 
     66 \includegraphics[width=\textwidth]{res/zshshellcode.png} \\
     67 
     68 \section{Δραστηριότητα 2: Ανάπτυξη του ευπαθούς προγράμματος}
     69 
     70 \lstinputlisting[language=c]{../src/stack.c}
     71 
     72 Κάνουμε compile και το τρέχουμε: \\
     73 
     74 \includegraphics[width=\textwidth]{res/stack.png} \\
     75 
     76 \section{Δραστηριότητα 3: Δημιουργία του αρχείου εισόδου (badfile)}
     77 
     78 \lstinputlisting[language=c]{../src/exploit.c}
     79 
     80 Κάνουμε compile και τρέχουμε το πρόγραμμα ώστε να παραχθεί το αρχείο εισόδου: \\
     81 
     82 \includegraphics[width=\textwidth]{res/exploit.png} \\
     83 
     84 Αναλύουμε τα περιεχόμενα του badfile μέσω του προγράμματος hexdump: \\
     85 
     86 \includegraphics[width=\textwidth]{res/hexdump.png} \\
     87 
     88 \section{Δραστηριότητα 4: Εύρεση της διεύθυνσης του shellcode μέσα στο badfile}
     89 
     90 Κάνουμε compile το πρόγραμμα δίνοντας την επιλογή \lstinline{-g} ώστε να
     91 παραχθει debug δεδομένα τα οποία θα χρησιμοποιηθούν από τον GDB: \\
     92 
     93 \includegraphics[width=\textwidth]{res/stack_gdb.png} \\
     94 
     95 Βάζουμε breakpoint στην συνάρτηση \lstinline{bof()} και τρέχουμε το πρόγραμμα στον
     96 GDB: \\
     97 
     98 \includegraphics[width=\textwidth]{res/gdb1.png} \\
     99 
    100 Τυπώνουμε τις διευθύνσεις του buffer, καθώς και του καταχωρητή \lstinline{ebp}
    101 και τέλος υπολογίζουμε την απόστασή τους: \\
    102 
    103 \includegraphics[width=\textwidth]{res/gdb2.png} \\
    104 
    105 \section{Δραστηριότητα 5: Προετοιμασία του αρχείου εισόδου}
    106 
    107 Τροποποιούμε τον κώδικα του \lstinline{exploit.c} ώστε να δείχνει στην σωστή
    108 διεύθυνση μνήμης (το offset \lstinline{0x60} προέκυψε μετά από δοκιμές):
    109 
    110 \begin{lstlisting}[language=C]
    111 	*((long *)(buf + 0x24)) = 0xbfffeb48 + 0x60;
    112 \end{lstlisting}
    113 
    114 Μεταγλωττίζουμε και ελέγχουμε το νέο badfile: \\
    115 
    116 \includegraphics[width=\textwidth]{res/offset.png} \\
    117 
    118 \section{Δραστηριότητα 6: Εκτέλεση της επίθεσης}
    119 
    120 \includegraphics[width=\textwidth]{res/attack.png} \\
    121 
    122 \end{document}