From 643ed437bdbe45879727e63e987069716366eb00 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Thu, 2 Feb 2023 16:07:24 +0100 Subject: [PATCH] Adds test about smb2 for bug 5786 --- tests/smb-length-5786/README.md | 9 +++++++ tests/smb-length-5786/input.pcap | Bin 0 -> 314355 bytes tests/smb-length-5786/proxy_smb2.py | 40 ++++++++++++++++++++++++++++ tests/smb-length-5786/test.yaml | 11 ++++++++ 4 files changed, 60 insertions(+) create mode 100644 tests/smb-length-5786/README.md create mode 100644 tests/smb-length-5786/input.pcap create mode 100644 tests/smb-length-5786/proxy_smb2.py create mode 100644 tests/smb-length-5786/test.yaml diff --git a/tests/smb-length-5786/README.md b/tests/smb-length-5786/README.md new file mode 100644 index 000000000..f61cf0b37 --- /dev/null +++ b/tests/smb-length-5786/README.md @@ -0,0 +1,9 @@ +# Description + +Test SMB evasion with write data length lesser than NBSS record length (there is padding) + +# PCAP + +The pcap comes from running MacOS with a shared SMB directory named public (with user toto and password toto). +There is a proxy on port 4445 that rewrites the smb2 write command if the file data begins by 'E' to have a lesser field length. +Then fuzzpcap was used to split the write command in 2 tcp packets with an ACK in between, so that Suricata processes partial data. diff --git a/tests/smb-length-5786/input.pcap b/tests/smb-length-5786/input.pcap new file mode 100644 index 0000000000000000000000000000000000000000..a1bbfe4699ad8f613fb4150936d21b2547dca9b6 GIT binary patch literal 314355 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 I+wMR1fBHS>d;kCd literal 0 Hc-jL100001 diff --git a/tests/smb-length-5786/proxy_smb2.py b/tests/smb-length-5786/proxy_smb2.py new file mode 100644 index 000000000..d4fef60bb --- /dev/null +++ b/tests/smb-length-5786/proxy_smb2.py @@ -0,0 +1,40 @@ +import sys +import binascii +from threading import Thread +import time +import socket + + + +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +s.bind(("127.0.0.1", 4445)) +s.listen(1) +conn, addr = s.accept() +s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +print("accpeted, now connecting") +s2.connect(("127.0.0.1", 445)) +print("connected") +ok = True +while ok: + data = conn.recv(32768) + print("received", len(data), data[16]) + if len(data) == 0: + break + data = bytearray(data) + changed = 0 + if data[16] == 9: + # write request + print("write", data[116]) + if data[116] == 69: + # if the first letter of payload is E + # let's remove 512 to the length + data[73] = data[73] - 2 + print("modified", binascii.hexlify(data)) + s2.send(data) + resp = s2.recv(32768) + print("response", len(resp)) + resp = bytearray(resp) + conn.send(resp) + +conn.close() +s.close() diff --git a/tests/smb-length-5786/test.yaml b/tests/smb-length-5786/test.yaml new file mode 100644 index 000000000..98489e63c --- /dev/null +++ b/tests/smb-length-5786/test.yaml @@ -0,0 +1,11 @@ +# disables checksum verification +args: +- -k none --set app-layer.protocols.smb.max-write-size=200 + +checks: + - filter: + count: 1 + match: + event_type: fileinfo + fileinfo.filename: "toto.txt" + dest_port: 445 -- 2.47.2