One of the ever strengthening domains of security posture is network cryptography. Every few years a new protocol version, set of cipher suites or key exchanges are introduced to strengthen network cryptography. The current network cryptography standard is TLSv1.3. Looking ahead, Quantum-safe key exchange algorithms are on the horizon with ML-KEM. However, the maximum advertised cryptographic standards don't always represent what the client and server negotiation agree upon. For example, an older version of a client may may not support modern standards and request to connect with a weaker protocol like SSLv3 or weaker cryptographic cipher suites. This begs the question, how can you gain visibility into the negotiated terms offered by the client and agreed upon or rejected by the server.
Wireshark and its command line equivalent tshark are packet analysis tools that we can use to watch the network traffic in real time to discern the cryptographic terms offered by the client and what was accepted by the server.
Let's look at a few examples with
1. Oracle AI Database 26 (TCP port 2484)
2. Oracle Database 19c (TCP port 2484)
3. Oracle Unified Directory (TCP port 1636).
tshark Command
In each of the examples, we will use the following tshark command with the exception of the port number. For database queries, we will use port 2484. For Oracle Unified Directory, we will use port 1636.
$ sudo tshark -i any -d "tcp.port==2484,ssl" -V -a duration:10 2>&1 | egrep "^ TLSv|Handshake Protocol:|Cipher Suites \(|Cipher Suite:|^ Version: |Handshake Protocol: .* Hello|Record Layer|^ Supported Version:|^ Extension: key_share|^ Key Share extension|^ Key Share Entry:|Extension: supported_groups|Supported Group:|Curve Type:|Named Curve:|Server Params"| uniq | sed -e "s/(0x.*)//g" -e "s/^.*Handshake Protocol: Client Hello/Client requested:/g" -e "s/.*Version:/ Protocol Version:/g" -e "s/.*Cipher Suites / Cipher Suites Requested:/g" -e "s/.*Handshake Protocol: Server Hello/Server replied with:/g" |egrep -v "Server replied with: Done|Encrypted Handshake Message|Application Data Protocol: Application Data|Handshake Protocol: Certificate|Change Cipher Spec Protocol|http-over-tls" &
Oracle AI Database 26
Here is the command run against Oracle AI 26 database with port 2484 immediately after running the tshark command.
$ $ORACLE_HOME/bin/sqlplus system/Oracle123@pdb1_ssl
SQL*Plus: Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems on Thu Nov 13 20:49:49 2025
Version 23.26.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Last Successful login time: Thu Nov 13 2025 20:49:20 +00:00
Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.26.0.0.0
SQL> quit
Disconnected from Oracle AI Database 26ai Enterprise Edition Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.26.0.0.0
Here is the result returned by tshark for Oracle AI 26 database.
Client requested:
Client requested:
Protocol Version: TLS 1.2
Cipher Suites Requested:(10 suites)
Cipher Suite: TLS_AES_256_GCM_SHA384
Cipher Suite: TLS_CHACHA20_POLY1305_SHA256
Cipher Suite: TLS_AES_128_CCM_SHA256
Cipher Suite: TLS_AES_128_GCM_SHA256
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
Extension: supported_groups (len=56)
Supported Group: Unknown
Supported Group: Unknown
Supported Group: Unknown
Supported Group: Unknown
Supported Group: Unknown
Supported Group: Unknown
Supported Group: secp521r1
Supported Group: secp384r1
Supported Group: secp256r1
Supported Group: x25519
Supported Group: sect571r1
Supported Group: sect571k1
Supported Group: sect409r1
Supported Group: sect409k1
Supported Group: sect283r1
Supported Group: sect283k1
Supported Group: ffdhe8192
Supported Group: ffdhe6144
Supported Group: ffdhe4096
Supported Group: ffdhe3072
Supported Group: ffdhe2048
Supported Group: sect233k1
Supported Group: sect233r1
Supported Group: secp224r1
Supported Group: secp192r1
Supported Group: sect163k1
Supported Group: sect163r2
Protocol Version: TLS 1.3
Protocol Version: TLS 1.2
Extension: key_share (len=806)
Key Share extension
Key Share Entry: Group: Unknown (512), Key Exchange length: 800
Server replied with:
Server replied with:
Protocol Version: TLS 1.2
Cipher Suite: TLS_AES_256_GCM_SHA384
Protocol Version: TLS 1.3
Extension: key_share (len=772)
Key Share extension
Key Share Entry: Group: Unknown (512), Key Exchange length: 768
Client requested:
Client requested:
Protocol Version: TLS 1.2
Cipher Suites Requested:(10 suites)
Cipher Suite: TLS_AES_256_GCM_SHA384
Cipher Suite: TLS_CHACHA20_POLY1305_SHA256
Cipher Suite: TLS_AES_128_CCM_SHA256
Cipher Suite: TLS_AES_128_GCM_SHA256
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
Extension: supported_groups (len=56)
Supported Group: Unknown
Supported Group: Unknown
Supported Group: Unknown
Supported Group: Unknown
Supported Group: Unknown
Supported Group: Unknown
Supported Group: secp521r1
Supported Group: secp384r1
Supported Group: secp256r1
Supported Group: x25519
Supported Group: sect571r1
Supported Group: sect571k1
Supported Group: sect409r1
Supported Group: sect409k1
Supported Group: sect283r1
Supported Group: sect283k1
Supported Group: ffdhe8192
Supported Group: ffdhe6144
Supported Group: ffdhe4096
Supported Group: ffdhe3072
Supported Group: ffdhe2048
Supported Group: sect233k1
Supported Group: sect233r1
Supported Group: secp224r1
Supported Group: secp192r1
Supported Group: sect163k1
Supported Group: sect163r2
Protocol Version: TLS 1.3
Protocol Version: TLS 1.2
Extension: key_share (len=806)
Key Share extension
Key Share Entry: Group: Unknown (512), Key Exchange length: 800
Server replied with:
Server replied with:
Protocol Version: TLS 1.2
Cipher Suite: TLS_AES_256_GCM_SHA384
Protocol Version: TLS 1.3
Extension: key_share (len=772)
Key Share extension
Key Share Entry: Group: Unknown (512), Key Exchange length: 768
The things to note from this output is that the client requested to connect with TLS 1.3 with the TLS_AES_256_GCM_SHA384 cipher suite using an unknown 768 bit key exchange group. The key group is actually a hybrid TLS 1.3 connection using quantum-safe ML-KEM algorithm. This algorithm is so new that RedHat/Oracle Linux 9 does not yet have it identified and thus marks it as Unknown. To learn more about Oracle AI 26 database support of the new quantum-safe ML-KEM algorithm, go to the "
Securing Oracle AI Database 26ai for the Quantum Era" blog. The new ML-KEM algorithm groups are identified by IANA (https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8) as:
- MLKEM512
- MLKEM768
- MLKEM1024
- SecP256r1MLKEM768
- X25519MLKEM768
- SecP384r1MLKEM1024
Once RedHat/Oracle 9 and Wireshark get updated to support these groups, they will be accurately represented in the tshark output.
Here's the SQL*Plus command that we run for Oracle 19c database with port 2484 immediately after running the tshark command:
$ $ORACLE_HOME/bin/sqlplus system/Oracle123@pdb1_ssl
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Nov 13 17:44:02 2025
Version 19.25.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Last Successful login time: Thu Nov 13 2025 17:29:44 +00:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
SQL> quit;
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
Here is the result returned by tshark for Oracle 19c database:
Client requested:
Client requested:
Protocol Version: TLS 1.2
Cipher Suites Requested:(25 suites)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV
Extension: supported_groups (len=32)
Supported Group: secp256r1
Supported Group: secp521r1
Supported Group: sect571k1
Supported Group: sect571r1
Supported Group: secp384r1
Supported Group: sect409k1
Supported Group: sect409r1
Supported Group: sect283k1
Supported Group: sect283r1
Supported Group: secp224r1
Supported Group: sect233k1
Supported Group: sect233r1
Supported Group: secp192r1
Supported Group: sect163k1
Supported Group: sect163r2
Server replied with:
Server replied with:
Protocol Version: TLS 1.2
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLSv1.2 Record Layer: Handshake Protocol: Server Key Exchange
Handshake Protocol: Server Key Exchange
EC Diffie-Hellman Server Params
Curve Type: named_curve
Named Curve: secp256r1
TLSv1.2 Record Layer: Handshake Protocol: Client Key Exchange
Handshake Protocol: Client Key Exchange
The things to note from the 19c connection output is that the client requested to connect with TLS 1.2 with the TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 cipher suite using an Elliptic Curve Diffe-Hellman key exchange.
Oracle Unified Directory 14c
Here's the LDAP search command that we run for OUD immediately after running the tshark command with port 1636:
$ /u01/mw_oud14c/oud1/OUD/bin/ldapsearch -h poc.example.com -Z -X -p 1636 -D 'cn=Directory Manager' -j /u01/cfg/...pw -b dc=example,dc=com -s sub uid=user1 dn
dn: uid=user1,ou=People,dc=example,dc=com
Here is the result returned by tshark for OUD directory server:
Client requested:
Client requested:
Protocol Version: TLS 1.2
Cipher Suites Requested:(36 suites)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_AES_128_GCM_SHA256
Cipher Suite: TLS_AES_256_GCM_SHA384
Cipher Suite: TLS_CHACHA20_POLY1305_SHA256
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
Cipher Suite: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256
Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA
Extension: supported_groups (len=22)
Supported Group: x25519
Supported Group: secp256r1
Supported Group: secp384r1
Supported Group: secp521r1
Supported Group: x448
Supported Group: ffdhe2048
Supported Group: ffdhe3072
Supported Group: ffdhe4096
Supported Group: ffdhe6144
Supported Group: ffdhe8192
Protocol Version: TLS 1.3
Protocol Version: TLS 1.2
Extension: key_share (len=107)
Key Share extension
Key Share Entry: Group: x25519, Key Exchange length: 32
Key Share Entry: Group: secp256r1, Key Exchange length: 65
Server replied with:
Server replied with:
Protocol Version: TLS 1.2
Cipher Suite: TLS_AES_128_GCM_SHA256
Protocol Version: TLS 1.3
Extension: key_share (len=36)
Key Share extension
Key Share Entry: Group: x25519, Key Exchange length: 32
From the above output, we see that the LDAP search connected with TLS protocol version 1.3 using TLS_AES_128_GCM_SHA256 cipher suite with Elliptic Curve Diffie Hellman key exchange (x25519).
In all of the tshark examples provided, I presumed that both wireshark/tshark and sudo are available available for use on the database or directory server host. If that is not the case you can work with your administrator to collect the tcpdump file, copy the file to another host and then run the tshark analaysis on that file.
$ sudo timeout 10 tcpdump -s 65535 -w /var/opt/tfile -i any "tcp port 1636 or tcp port 2484"
Copy the file (/var/opt/tfile or whatever name and location you used) to the host where tshark can analyize the tcpdump file. Here is the tshark command using the tcpdump file as the input. It is the same command as before but with an additional parameter to read the data from an input file.
$ sudo tshark -r /var/opt/tfile -i any -d "tcp.port==2484,ssl" -V -a duration:10 2>&1 | egrep "^ TLSv|Handshake Protocol:|Cipher Suites \(|Cipher Suite:|^ Version: |Handshake Protocol: .* Hello|Record Layer|^ Supported Version:|^ Extension: key_share|^ Key Share extension|^ Key Share Entry:|Extension: supported_groups|Supported Group:|Curve Type:|Named Curve:|Server Params"| uniq | sed -e "s/(0x.*)//g" -e "s/^.*Handshake Protocol: Client Hello/Client requested:/g" -e "s/.*Version:/ Protocol Version:/g" -e "s/.*Cipher Suites / Cipher Suites Requested:/g" -e "s/.*Handshake Protocol: Server Hello/Server replied with:/g" |egrep -v "Server replied with: Done|Encrypted Handshake Message|Application Data Protocol: Application Data|Handshake Protocol: Certificate|Change Cipher Spec Protocol|http-over-tls"
Although Wiresharek and tshark are great external tools for analyzing the cryptographic negotiation at the network layer, my hope and desire for all network products is that they will one day log the agreed upon terms of cryptographic negotiation. This will greatly streamline network cryptographic analysis and help IT professionals identify clients using weak cryptography that need to be updated to use modern cryptography and mischievous clients that are intentionally using weak cryptography to find weak points of entry for penetration and lateral movement once inside an organization.
Several yeas ago, OUD implemented a feature for this very purpose. It can be implemented on access and admin log publishers by setting log-connection-details:true. For example:
set-log-publisher-prop --publisher-name "File-Based Access Logger" --set log-connection-details:true
Once enabled, secure connections log the protocol, version and cipher suite. For example:
[14/Nov/2025:17:14:29 +0000] CONNECT CONN_DETAILS conn=2 tlsVersion=TLSv1.3 cipherSuite=TLS_AES_128_GCM_SHA256
Log analytics tools such as
OCI Logging Analytics can consume the log data and identify clients using weak cryptography as seen in the following dashboard example. The upper right widget reveals clients using weak cryptographic protocols such as SSLv3, TLSv1.0, ... etc. The widget right below it shows use of weak cryptographic cipher suites.
I hope you found this information informative and helpful.
Blessings!