From 426070b0ef94dedd63a7d048c79c01bc7a500d10 Mon Sep 17 00:00:00 2001 From: Daniel Roethlisberger Date: Sun, 19 Jan 2025 17:16:37 +0100 Subject: [PATCH 1/4] Fix SSL 2 version constant to 0x0002 SSL 2 uses a version field of 0x0002, not 0x0200. This is confirmed not only in the original Netscape spec [1] and RFC draft of the time [2], but also in major implementations such as OpenSSL [3] and Wireshark [4]. [1] https://www-archive.mozilla.org/projects/security/pki/nss/ssl/draft02.html [2] https://datatracker.ietf.org/doc/html/draft-hickman-netscape-ssl-00 [3] https://github.com/openssl/openssl/blob/OpenSSL_0_9_6m/ssl/ssl2.h#L66-L71 [4] https://github.com/wireshark/wireshark/blob/release-4.4/epan/dissectors/packet-tls-utils.h#L266-L277 --- Packet++/header/SSLCommon.h | 2 +- Packet++/src/SSLCommon.cpp | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Packet++/header/SSLCommon.h b/Packet++/header/SSLCommon.h index 5f499f9ec9..409aedafc0 100644 --- a/Packet++/header/SSLCommon.h +++ b/Packet++/header/SSLCommon.h @@ -117,7 +117,7 @@ namespace pcpp enum SSLVersionEnum { /** SSL 2.0 */ - SSL2 = 0x0200, + SSL2 = 0x0002, /** SSL 3.0 */ SSL3 = 0x0300, /** TLS 1.0 */ diff --git a/Packet++/src/SSLCommon.cpp b/Packet++/src/SSLCommon.cpp index 31207d8866..f1eb097e6b 100644 --- a/Packet++/src/SSLCommon.cpp +++ b/Packet++/src/SSLCommon.cpp @@ -11,7 +11,7 @@ namespace pcpp SSLVersion::SSLVersionEnum SSLVersion::asEnum(bool countTlsDraftsAs1_3) { - if (m_SSLVersionValue >= 0x0300 && m_SSLVersionValue <= 0x0304) + if ((m_SSLVersionValue >= 0x0300 && m_SSLVersionValue <= 0x0304) || m_SSLVersionValue == 0x0002) return static_cast(m_SSLVersionValue); if ((m_SSLVersionValue >= 0x7f0e && m_SSLVersionValue <= 0x7f1c) || m_SSLVersionValue == 0xfb17 || @@ -23,9 +23,6 @@ namespace pcpp return static_cast(m_SSLVersionValue); } - if (m_SSLVersionValue == 0x200) - return SSLVersion::SSL2; - return SSLVersion::Unknown; } From 88c6ab9f05f9004f97d2a08981b3eeb608349dbf Mon Sep 17 00:00:00 2001 From: Daniel Roethlisberger Date: Fri, 24 Jan 2025 00:09:09 +0100 Subject: [PATCH 2/4] Add SSLv2 ClientHello version field tests for SSLv2 and TLSv1 --- .../ssl2rec-ssl2clienthello.dat | 1 + .../ssl2rec-tls1clienthello.dat | 1 + Tests/Packet++Test/TestDefinition.h | 2 + Tests/Packet++Test/Tests/SSLTests.cpp | 64 +++++++++++++++++++ Tests/Packet++Test/main.cpp | 2 + 5 files changed, 70 insertions(+) create mode 100644 Tests/Packet++Test/PacketExamples/ssl2rec-ssl2clienthello.dat create mode 100644 Tests/Packet++Test/PacketExamples/ssl2rec-tls1clienthello.dat diff --git a/Tests/Packet++Test/PacketExamples/ssl2rec-ssl2clienthello.dat b/Tests/Packet++Test/PacketExamples/ssl2rec-ssl2clienthello.dat new file mode 100644 index 0000000000..867e17169b --- /dev/null +++ b/Tests/Packet++Test/PacketExamples/ssl2rec-ssl2clienthello.dat @@ -0,0 +1 @@ +000000000000000000000000080045000058b183400040068b1a7f0000017f0000019136115101fe87084a5a8ace80180156fe4c00000101080a27f4368827f4368680220100020009000000100500800300800700c07a16c3dc4a8bcc5b161d1d10883e225e \ No newline at end of file diff --git a/Tests/Packet++Test/PacketExamples/ssl2rec-tls1clienthello.dat b/Tests/Packet++Test/PacketExamples/ssl2rec-tls1clienthello.dat new file mode 100644 index 0000000000..49dd158306 --- /dev/null +++ b/Tests/Packet++Test/PacketExamples/ssl2rec-tls1clienthello.dat @@ -0,0 +1 @@ +00005e0001670010a49159eb0800450000914a4d40008006344b0a9662910a9d040b067c01bb0440cd534be5ea345018ffff677b00008067010301004e000000100100800300800700c006004002008004008000003900003800003500003300003200000400000500002f00001600001300feff00000a00001500001200fefe0000090000640000620000030000063143c465d52771e466a42be1701787fd \ No newline at end of file diff --git a/Tests/Packet++Test/TestDefinition.h b/Tests/Packet++Test/TestDefinition.h index 9047e2682d..1e2c830c84 100644 --- a/Tests/Packet++Test/TestDefinition.h +++ b/Tests/Packet++Test/TestDefinition.h @@ -132,6 +132,8 @@ PTF_TEST_CASE(TLS1_3ParsingTest); PTF_TEST_CASE(TLSCipherSuiteTest); PTF_TEST_CASE(ClientHelloTLSFingerprintTest); PTF_TEST_CASE(ServerHelloTLSFingerprintTest); +PTF_TEST_CASE(SSL2RecordSSL2ClientHelloTest); +PTF_TEST_CASE(SSL2RecordTLS1ClientHelloTest); // Implemented in IgmpTests.cpp PTF_TEST_CASE(IgmpParsingTest); diff --git a/Tests/Packet++Test/Tests/SSLTests.cpp b/Tests/Packet++Test/Tests/SSLTests.cpp index ea37359363..50df3120c2 100644 --- a/Tests/Packet++Test/Tests/SSLTests.cpp +++ b/Tests/Packet++Test/Tests/SSLTests.cpp @@ -2,6 +2,7 @@ #include "../Utils/TestUtils.h" #include "EndianPortable.h" #include "Packet.h" +#include "PayloadLayer.h" #include "SSLLayer.h" #include "SystemUtils.h" #include @@ -753,3 +754,66 @@ PTF_TEST_CASE(ServerHelloTLSFingerprintTest) PTF_ASSERT_EQUAL(tlsFingerprint.toString(), "771,49195,23-65281-11-35-16"); PTF_ASSERT_EQUAL(tlsFingerprint.toMD5(), "eca9b8f0f3eae50309eaf901cb822d9b"); } // ServerHelloTLSFingerprintTest + +static uint16_t +getSSL2ClientHelloVersion(uint8_t *data, size_t size) +{ + if (size < 2) { + return 0; + } + + if ((data[0] & 0x80) == 0) { + // Record has padding, three-byte record header. + // Either data record or security escape. + return 0; + } + // Record has no padding, two-byte record header. + // Neither data record nor security escape. + + size_t const rec_header_length = 2; + size_t const clienthello_header_length = 9; + size_t reclen = ((data[0] & 0x7f) << 8) | data[1]; + if (size != rec_header_length + reclen || reclen < clienthello_header_length) { + return 0; + } + + size_t pos = rec_header_length; + uint8_t const SSL_MT_CLIENT_HELLO = 1; + if (data[pos] != SSL_MT_CLIENT_HELLO) { + return 0; + } + pos++; + return be16toh(*(uint16_t *)&data[pos]); +} + +PTF_TEST_CASE(SSL2RecordSSL2ClientHelloTest) +{ + timeval time; + gettimeofday(&time, nullptr); + + READ_FILE_AND_CREATE_PACKET(1, "PacketExamples/ssl2rec-ssl2clienthello.dat"); + + pcpp::Packet clientHelloPacket(&rawPacket1); + + // PCPP does not know how to parse SSLv2 yet, so we find the version field manually. + pcpp::PayloadLayer *payloadLayer = clientHelloPacket.getLayerOfType(); + PTF_ASSERT_NOT_NULL(payloadLayer); + uint16_t version = getSSL2ClientHelloVersion(payloadLayer->getPayload(), payloadLayer->getPayloadLen()); + PTF_ASSERT_EQUAL(version, pcpp::SSLVersion::SSL2) +} // SSL2RecordSSL2ClientHelloTest + +PTF_TEST_CASE(SSL2RecordTLS1ClientHelloTest) +{ + timeval time; + gettimeofday(&time, nullptr); + + READ_FILE_AND_CREATE_PACKET(1, "PacketExamples/ssl2rec-tls1clienthello.dat"); + + pcpp::Packet clientHelloPacket(&rawPacket1); + + // PCPP does not know how to parse SSLv2 yet, so we find the version field manually. + pcpp::PayloadLayer *payloadLayer = clientHelloPacket.getLayerOfType(); + PTF_ASSERT_NOT_NULL(payloadLayer); + uint16_t version = getSSL2ClientHelloVersion(payloadLayer->getPayload(), payloadLayer->getPayloadLen()); + PTF_ASSERT_EQUAL(version, pcpp::SSLVersion::TLS1_0) +} // SSL2RecordTLS1ClientHelloTest diff --git a/Tests/Packet++Test/main.cpp b/Tests/Packet++Test/main.cpp index 4163780110..6f5ba6097a 100644 --- a/Tests/Packet++Test/main.cpp +++ b/Tests/Packet++Test/main.cpp @@ -210,6 +210,8 @@ int main(int argc, char* argv[]) PTF_RUN_TEST(TLSCipherSuiteTest, "ssl"); PTF_RUN_TEST(ClientHelloTLSFingerprintTest, "ssl"); PTF_RUN_TEST(ServerHelloTLSFingerprintTest, "ssl"); + PTF_RUN_TEST(SSL2RecordSSL2ClientHelloTest, "ssl;ssl2"); + PTF_RUN_TEST(SSL2RecordTLS1ClientHelloTest, "ssl;ssl2"); PTF_RUN_TEST(SllPacketParsingTest, "sll"); PTF_RUN_TEST(SllPacketCreationTest, "sll"); From 69a8956aa1b4bcdc8ddb6cb3aaedaf0aae523931 Mon Sep 17 00:00:00 2001 From: Daniel Roethlisberger Date: Wed, 29 Jan 2025 22:21:10 +0100 Subject: [PATCH 3/4] Run changes in feature branch through clang-format --- Tests/Packet++Test/Tests/SSLTests.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Tests/Packet++Test/Tests/SSLTests.cpp b/Tests/Packet++Test/Tests/SSLTests.cpp index 50df3120c2..ab141569dc 100644 --- a/Tests/Packet++Test/Tests/SSLTests.cpp +++ b/Tests/Packet++Test/Tests/SSLTests.cpp @@ -755,14 +755,15 @@ PTF_TEST_CASE(ServerHelloTLSFingerprintTest) PTF_ASSERT_EQUAL(tlsFingerprint.toMD5(), "eca9b8f0f3eae50309eaf901cb822d9b"); } // ServerHelloTLSFingerprintTest -static uint16_t -getSSL2ClientHelloVersion(uint8_t *data, size_t size) +static uint16_t getSSL2ClientHelloVersion(uint8_t* data, size_t size) { - if (size < 2) { + if (size < 2) + { return 0; } - if ((data[0] & 0x80) == 0) { + if ((data[0] & 0x80) == 0) + { // Record has padding, three-byte record header. // Either data record or security escape. return 0; @@ -773,17 +774,19 @@ getSSL2ClientHelloVersion(uint8_t *data, size_t size) size_t const rec_header_length = 2; size_t const clienthello_header_length = 9; size_t reclen = ((data[0] & 0x7f) << 8) | data[1]; - if (size != rec_header_length + reclen || reclen < clienthello_header_length) { + if (size != rec_header_length + reclen || reclen < clienthello_header_length) + { return 0; } size_t pos = rec_header_length; uint8_t const SSL_MT_CLIENT_HELLO = 1; - if (data[pos] != SSL_MT_CLIENT_HELLO) { + if (data[pos] != SSL_MT_CLIENT_HELLO) + { return 0; } pos++; - return be16toh(*(uint16_t *)&data[pos]); + return be16toh(*(uint16_t*)&data[pos]); } PTF_TEST_CASE(SSL2RecordSSL2ClientHelloTest) @@ -796,7 +799,7 @@ PTF_TEST_CASE(SSL2RecordSSL2ClientHelloTest) pcpp::Packet clientHelloPacket(&rawPacket1); // PCPP does not know how to parse SSLv2 yet, so we find the version field manually. - pcpp::PayloadLayer *payloadLayer = clientHelloPacket.getLayerOfType(); + pcpp::PayloadLayer* payloadLayer = clientHelloPacket.getLayerOfType(); PTF_ASSERT_NOT_NULL(payloadLayer); uint16_t version = getSSL2ClientHelloVersion(payloadLayer->getPayload(), payloadLayer->getPayloadLen()); PTF_ASSERT_EQUAL(version, pcpp::SSLVersion::SSL2) @@ -812,7 +815,7 @@ PTF_TEST_CASE(SSL2RecordTLS1ClientHelloTest) pcpp::Packet clientHelloPacket(&rawPacket1); // PCPP does not know how to parse SSLv2 yet, so we find the version field manually. - pcpp::PayloadLayer *payloadLayer = clientHelloPacket.getLayerOfType(); + pcpp::PayloadLayer* payloadLayer = clientHelloPacket.getLayerOfType(); PTF_ASSERT_NOT_NULL(payloadLayer); uint16_t version = getSSL2ClientHelloVersion(payloadLayer->getPayload(), payloadLayer->getPayloadLen()); PTF_ASSERT_EQUAL(version, pcpp::SSLVersion::TLS1_0) From 37014effc2028a1cbebafaaced85a0de2a6513a1 Mon Sep 17 00:00:00 2001 From: Daniel Roethlisberger Date: Sun, 2 Feb 2025 14:49:33 +0100 Subject: [PATCH 4/4] Add packet captures for SSL 2, and SSL 2 compatible TLS 1 --- .../ssl2rec-ssl2clienthello.pcapng | Bin 0 -> 5220 bytes .../PacketExamples/ssl2rec-tls1clienthello.pcap | Bin 0 -> 41321 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Tests/Packet++Test/PacketExamples/ssl2rec-ssl2clienthello.pcapng create mode 100644 Tests/Packet++Test/PacketExamples/ssl2rec-tls1clienthello.pcap diff --git a/Tests/Packet++Test/PacketExamples/ssl2rec-ssl2clienthello.pcapng b/Tests/Packet++Test/PacketExamples/ssl2rec-ssl2clienthello.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..41ca3d1400597950324fb33861723b49474d3fde GIT binary patch literal 5220 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 literal 0 HcmV?d00001 diff --git a/Tests/Packet++Test/PacketExamples/ssl2rec-tls1clienthello.pcap b/Tests/Packet++Test/PacketExamples/ssl2rec-tls1clienthello.pcap new file mode 100644 index 0000000000000000000000000000000000000000..d967bc4fcceebc93f8cb5eaa591c800163a5a744 GIT binary patch literal 41321 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 literal 0 HcmV?d00001