[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Using libssh to decrypt packets offline


Hi,

I am trying to decode SSH encrypted packets in Wireshark using libssh (eventually). For this, I have written a sample program following the tutorials to connect to my localhost, authenticate myself, and run commands. I have captured these packet exchanges using tcpdump. I went through the code and found that I require several pieces of runtime information (which the libssh library can generate with some tweaking) - the cipher name, decrypt key, decrypt IV, if compression was used etc. Out of all these, I found that decrypt IV kept on changing with each packet Rx. On my system (Ubuntu 14.04.2 LTS), I found AES 256 (CTR) was used to encrypt/decrypt the packets.

My question is: If I modify libssh library to store decrypt key, decrypt IV, chipher name etc in a file when they are first generated (modify generate_session_keys) and later use them to decrypt packets offline (by invoking ssh_packet_socket_callback with a dummy session having decrypt key, decrypt IV etc previously generated), is there a way to calculate the value of decrypt IV before decrypting the nth packet?

Consider the following scenario:
Libssh generated the keys, and I wrote them in a file. Then some data exchange happened. During this time, the decrypt IV has changed. Now I run tcpdump for some time and capture the subsequent packets. Now I want to decrypt these packets offline using the information that I had stored in the file. Out of all these, the initial decrypt IV that was generated is no longer valid. Is there a way to calculate the correct decrypt IV from the initial decrypt IV so that the packets captured by tcpdump could be decrypted properly. I'm guessing the algorithm to calculate the final decrypt IV from the initial decrypt IV will vary from one cipher to the next. Could you please provide some links about the algorithms that each cipher employ (that libssh supports)?

Thanks,
Dibyendu


Follow-Ups:
Re: Using libssh to decrypt packets offlineAndreas Schneider <asn@xxxxxxxxxxxxxx>
Archive administrator: postmaster@lists.cynapses.org