Wireshark/QUIC - Cannot decrypt QUIC - wireshark

I'm trying to view the payload of QUIC packets although, with no luck. I can decrypt fine TLS packets using SSLLOGFILE file that generated by the browser and load it to Wireshark, I can see HTTPS and DoH and almost all TLS encrypted packets are decrypted correctly.
With QUIC this isnt the case, I can across this post: https://bugs.chromium.org/p/chromium/issues/detail?id=1101691
And there they said that the problem with SSLKEYLOGFILE exporting keys for quic with chrome has been fixed in chrome 89, so I've downloaded chrome 90 (chrome dev version) but still no luck.
Any Ideas what i'm doing wrong?
I can see QUIC packets, can see the client hello and all of the unencrypted QUIC packets are parsed correctly in wireshark, but still no decryption.

Are you using a sufficiently recent version of WireShark? See https://github.com/quicwg/base-drafts/wiki/Tools for details.
Which QUIC version are you trying to decode?
With Chrome 88.0.4324.192 and Wireshark 3.5.0rc0-788 i can succesfully capture and decrypt a quic draft-29 ("h3-29") session.

Related

Capturing packets using wireshark of an IoT device

I have an IoT device that connects to my wifi router using wifi. There is a limitation of capturing network logs on the device itself so I thought to capture it using Wireshark.
I am using windows 10 and downloaded the latest version of Wireshark. Now that my laptop and my IoT device connect to the same network through the same router, I am not able to capture the packets in and out from my IoT device.
I put the filer as ip.addr == {ip of the IoT device). But it shows nothing.
Is it possible to capture these packets using a laptop using Wireshark?
Let me know, please.
Thanks
Akhilesh
Is it possible to capture these packets using a laptop using Wireshark?
Yes, but your capture setup is almost certainly incorrect. In a nutshell, you need to be able to capture packets in monitor mode, and you're not doing that. Whether it's possible to do so using the WiFi card on your laptop is unknown, because not all cards support monitor mode on Windows.
Since it's impractical to provide an answer that simply repeats information already provided elsewhere, I'll refer you to the following sites for more detailed information:
The Wireshark WLAN (IEEE 802.11) capture setup wiki page
Jasper Bongertz's blog about Wireless Capture on Windows
See also my answer to this question, which basically provides the same information.

How to decode the packet which is decrypted SSL in wireshark?

everyone. I am working a MQTT connection by using TLSv1.2 with the server.
Before asking the question, I've spend sometime to googling the answer. But all the answers I found are talking about how to decrypt SSL trafic in wireshark. This part is done successfully. My question is , after I successfully decrypted the data by setting the CLIENT RANDOM and MASTER SECRET in a file and set it up in TLS deocoding settings in Wireshark, how to decode the decrypted data?
For all decoded data, Wireshark show as seperated tab named as "Decrypted TLS". Once I click the tab, it only shows the raw data as HEX.
Can I ask Wireshark to further decode the raw data by using known protocol such as MQTT?

How can I determine which packet in Wireshark corresponds to what I sent via Postman?

I'm trying to figure out why REST calls sent from my handheld device (Windows CE / Compact Framework) are not making it to my server app (regular, full-fledged .NET app running on my PC).
The handheld device and the PC are connected - I know that because I can see the handheld device in the PC's Windows Explorer, Windows Mobile Device Center verifies the connection between the two is valid, etc.
I reach the breakpoint on my server app running on my PC when I pass the same REST call via Postman, namely:
http://192.168.125.50:21609/api/inventory/sendXML/duckbill/platypus/poisontoe
...but not when calling the same from the handheld device.
So, I want to see in wireshark just what is being sent from postman, so I can see what to look for when attempting to call the same REST method from the handheld device.
I set up a filter in wireshark, namely "ip.dst == 192.168.125.50" and get a handful of results when calling the method via Postman, but nowhere do I see "port 21609" which I would expect to. If I saw this, I would know I was looking at the right packet, but...where is it? When I run Postman and make the call, there are four packets captured by Wireshark, and none of them give that as the port number in the "User Datagram Protocol" element.
If the port number is disregarded, how can I determine which packet is the one from Postman?
UPDATE
Yoel had a good idea; I added "Dest port (unresolved)" and "Sourceport" as columns to display.
I then started a new live capture in Wireshark and sent the URL / REST method from Postman.
The breakpoint in the server app was indeed hit. I F5'd through it, and stopped the Wireshark capture.
"21609" is not seen in the Dest Port column anywhere.
Why? How is the URL being sent, and yet Wireshark is not detecting the port to which it was directed?
Also, in the Protocol column in Wireshark, I see no "HTTP" entries.
To see the destination port in the packet list, you have to add a column by right clicking in a column header and selecting Column preferences.... Then click on the + sign, choose a column title, and put
tcp.dstport
as the Fields parameter.
You can also directly use the display filter with the expression:
tcp.dstport == 21609
(tested with Wireshark 2.2.0)
The answer is as short as:
tcp.port==53218
First that the new postman port is 53218, second the original Answer is tracking only the requests without the responses. So if you want to track the whole communication - tcp.port==53218 will do it.

IPhone Resets Communication from Server

I have an mp4 (h.264) file that I want to play on an IPhone (via HTTP). When the file sits on a Windows IIS server, my IPhone and IPad will play the video without any issues.
The file is here: test file
I will leave access to this server for a few days for testing purposes.
When the file sits on our proprietary server, my IPhone and IPad request the download, but then stops the process almost immediately. Non IOS phones and desktop browsers have no problems requesting and viewing the video from the proprietary server. I don't believe that it has anything to do with the HTTP response headers because of the fact that non-IOS phones can play the video.
I use Wireshark to see the http/tcp requests between the IPhone and the server. I see the IPhone request the mp4 and then I see the server send a "200 OK" response and then start to send the file. Soon after the server starts to send the file, the IPhone sends a "reset" request which stops the sending of the file.
Any ideas why the IPhone would reset the communication and stop the file from being sent? I am far from a regular user of Wireshark, so hopefully, my reading of the file is correct.
Here is an image of my Wireshark capture if anyone is interested. It clearly shows the reset from the IPhone.
Wireshark Image
Any help will be appreciated.
Thanks,
Dana
This has been solved. Our server did not handle HTTP requests for partial content (i.e. Range: bytes=0-999). Range headers in incoming requests were being ignored.
We updated the server to handle these requests and IOS devices are now able to download video from our server.
See the link below for more info:
http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p5-range-latest.html

Real-time Transport Protocol is not used in youtube?

I came across reading about real time protocol in Wikipedia, which mentions the following :
"RTP is used extensively in communication and entertainment systems that involve streaming media"
I was curious about this protocol and wanted to see this in wireshark. I thought youtube.com might be using RTP when running videos, but was surprised to see that only TCP packets are being sent when a video is being played.
Can someone please tell another free website which implements RTP, so that I will be able to see it in wireshark. (I am actually wanting to explore network optimization opportunity in my server applications by using RTP, since it is ok to loose a few packets)
According to Computer Networks, RTP is the payload of UDP (or TCP) as the book indicates.
Here is a picture from the book:
According to WireShark's wiki, only RTP on UDP could be detected by WireShark. (Thanks to Ralf)
Youtube uses HTTP AFAIK. Also, keep in mind that RTP can be sent over UDP as well as TCP.
An RTSP server can be used to start an RTP media session. I don't know any public servers, but another option would be to download the live555 RTSP server. There are also some example media files. Then all you need to do is build the media server application as well as the openRTSP client and use the client app to connect to the server for the stream. The client can request RTP over UDP, TCP, etc.
Alternatively you could also use Darwin Streaming Server as an RTSP server.

Resources