summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2016-03-15 13:24:51 +0100
committerCamil Staps2016-03-15 13:24:51 +0100
commit882bfb70f9c5ac529d7178877848f56387dc9cb1 (patch)
tree515b828ead4f2095d0eb8e7f1559a8f626d155fd
parentChange directory in makefile (diff)
Fix SSHAttackSummary .tex
-rw-r--r--SSHAttackSummary/Summary.tex10
1 files changed, 5 insertions, 5 deletions
diff --git a/SSHAttackSummary/Summary.tex b/SSHAttackSummary/Summary.tex
index b32ffca..405cd76 100644
--- a/SSHAttackSummary/Summary.tex
+++ b/SSHAttackSummary/Summary.tex
@@ -84,22 +84,22 @@ The SSH specification \cite{rfc-transp} doesn't specify when an implementation s
\subsubsection{Length check}
In \texttt{packet.c}, the length field is checked to be at least $5$ and at most $2^{18}$, which is in line with the recommended sanity checking and the recommendation to support messages longer than $32768$ bytes where necessary. If this check fails, a \texttt{SSH2\_MSG\_DISCONNECT} is sent to the client, mentioning the value of the length field. The following is an excerpt from \texttt{packet.c}:
-\inputminted[fontsize=\footnotesize,linenos,xleftmargin=8mm,breaklines,tabsize=4,gobble=2,firstline=1093,lastline=1098]{c}{openssh-4.7p1/packet.c}
+\inputminted[fontsize=\footnotesize,linenos,xleftmargin=8mm,breaklines,tabsize=4,gobble=2,firstline=1093,lastline=1098]{c}{openssh/packet.c}
The \mintinline{c}{packet_disconnect()} function terminates the session and sends the \texttt{SSH2\_MSG\_DISCONNECT} signal with the custom message to the client.
\subsubsection{Block length check}
It is verified that \texttt{4 + length} is a multiple of the block size, which it has to be because the message with the length field (4 bytes) is encrypted. If this check fails, the TCP connection is terminated.
-\inputminted[fontsize=\footnotesize,linenos,xleftmargin=8mm,breaklines,tabsize=4,gobble=1,firstline=1103,lastline=1103]{c}{openssh-4.7p1/packet.c}
-\inputminted[fontsize=\footnotesize,linenos,xleftmargin=8mm,breaklines,tabsize=4,gobble=1,firstline=1106,lastline=1108]{c}{openssh-4.7p1/packet.c}
+\inputminted[fontsize=\footnotesize,linenos,xleftmargin=8mm,breaklines,tabsize=4,gobble=1,firstline=1103,lastline=1103]{c}{openssh/packet.c}
+\inputminted[fontsize=\footnotesize,linenos,xleftmargin=8mm,breaklines,tabsize=4,gobble=1,firstline=1106,lastline=1108]{c}{openssh/packet.c}
\subsubsection{MAC check}
More data is accepted if the above two checks pass. After the full message and the MAC have been received (which is to be determined based on the length field), the MAC is checked. If it is invalid, a \texttt{SSH2\_MSG\_DISCONNECT} message is sent with the text ``\texttt{Corrupted MAC on input.}''
The MAC is only computed in case the following \mintinline{c}{return} is not executed:
-\inputminted[fontsize=\footnotesize,linenos,xleftmargin=8mm,breaklines,tabsize=4,gobble=1,firstline=1113,lastline=1114]{c}{openssh-4.7p1/packet.c}
+\inputminted[fontsize=\footnotesize,linenos,xleftmargin=8mm,breaklines,tabsize=4,gobble=1,firstline=1113,lastline=1114]{c}{openssh/packet.c}
Note that an eavesdropping attacker may distinguish between failures of the three checks. The first \texttt{SSH2\_MSG\_DISCONNECT} failure may be detected by looking at the size of the SSH responses. The second failure is indicated by the presence of a \texttt{TCP FIN} packet without payload (recall that the SSH BPP is placed on top of TCP, which means that TCP flags can be read without problems). The last failure may again be detected by looking at the size of the SSH responses. It can be distinguished from the first \texttt{SSH2\_MSG\_DISCONNECT} failure because if the MAC check fails, the server has been awaiting data before.
@@ -174,7 +174,7 @@ To not have to worry about network delay and the like, it is very useful to set
Assuming you have LXC installed on your machine, you can create and start a container, and get a root console for it, with:
-\begin{minted}[fontsize=\footnotesize,breaklines=true]{bash}
+\begin{minted}[fontsize=\footnotesize,breaklines=true]{shell-session}
$ lxc-create -t download -n ssh-attack -- -d ubuntu -r trusty -a amd64
$ lxc-start -n ssh-attack -d
$ lxc-attach -n ssh-attack