include prevention techniques

This commit is contained in:
Florian Hoss 2022-05-02 09:42:19 +02:00
parent ab482d9326
commit d717aef0f7

View file

@ -21,7 +21,7 @@ Nun kann man auf dem Port 43690 eine Verbindung aufbauen.
\subsection{Shell Execution}
Bei der Analyse mit gdb und einem ersten Testcode entsteht folgender Stack:
Bei der Analyse mit gdb und einem ersten Testcode mit jeweils 8 Byte NOP Sled entsteht folgender Stack:
\begin{figure}[H]
\begin{center}
@ -35,7 +35,7 @@ Darin sind beide NOP sleds zu erkennen. Außerdem ist der shell code dazwischen
Die nächste Vorgehensweise wäre, die beiden Sleds mit einer richtigen Größe zu versehen, damit der exploit funktioniert.
Das ausführen der exploit mit einem größeren NOP Sled Zeigt uns nun die ungefähre Position in der wir springen sollten. Damit kann die \verb|exploit.py| schonmal angepasst werden, damit der return stimmt.
Das ausführen der exploit mit einem größeren NOP Sled zeigt nun die ungefähre Position in die das Program springen sollten. Damit kann die \verb|exploit.py| schonmal angepasst werden, damit der return stimmt (ca. 0xbfffeeee sollte passen).
\begin{figure}[H]
\begin{center}
@ -45,7 +45,7 @@ Das ausführen der exploit mit einem größeren NOP Sled Zeigt uns nun die ungef
\end{center}
\end{figure}
Zusätzlich muss damit auch der EBP getroffen werden. Der shell-code ist 106 byte lang. Der NOP Sled wurde auf 256 Byte gesetzt. Somit sollte der zweite NOP Sled auf 150 gesetzt werden damit die 512 vom buffer voll sind. Danach noch 8 mal die return addresse schreiben und fertig.
Zusätzlich muss damit auch der EBP getroffen werden. Der shell-code ist 106 byte lang. Der NOP Sled wurde auf 256 Byte gesetzt. Somit sollte der zweite NOP Sled auf 150 gesetzt werden damit die 512 vom buffer voll sind. Danach noch ein paar mal die return addresse schreiben und fertig.
\begin{figure}[H]
\begin{center}
@ -66,3 +66,13 @@ Zusätzlich muss damit auch der EBP getroffen werden. Der shell-code ist 106 byt
\lstinputlisting[language=python]
{images/shell/exploit.py}
\subsection{Verhindern des Buffer Overflows}
\begin{list}{-}{}
\item ASLR (Address space layout randomization) - das Programm landet an unterschiedlichen Speicherstellen
\item Never Execute Bit (NX-BIT) - Stellen als ``nicht ausführbar'' markieren
\item Stack Canaries - Eine zufällige Zahl auf dem Stack platzieren und vor dem Return prüfen, ob sie überschrieben wurde
\end{list}