This requires SUBACK matching support.
alert mqtt any any -> any any (msg:"MQTT CONNECT username"; mqtt.connect.username; content:"user"; sid:19;)
alert mqtt any any -> any any (msg:"MQTT CONNECT password"; mqtt.connect.password; content:"pass"; sid:20;)
alert mqtt any any -> any any (msg:"MQTT SUBSCRIBE topicY"; mqtt.type:SUBSCRIBE; mqtt.subscribe.topic; content:"topicY"; sid:15;)
-alert mqtt any any -> any any (msg:"MQTT SUBSCRIBE topicY"; mqtt.type:SUBACK; mqtt.reason_code:0; sid:16;)
+alert mqtt any any -> any any (msg:"MQTT SUBACK topicY reason code 0"; mqtt.type:SUBACK; mqtt.subscribe.topic; content:"topicY"; mqtt.reason_code:0; sid:16;)
mqtt.subscribe.dup: false
mqtt.subscribe.topics: [{topic: topicX, qos: 0}, {topic: topicY, qos: 0} ]
+ - filter:
+ count: 1
+ match:
+ event_type: mqtt
+ mqtt.suback.qos: 0
+ mqtt.suback.retain: false
+ mqtt.suback.dup: false
+ mqtt.suback.message_id: 1
+ mqtt.suback.qos_granted: [ 0, 0 ]
+
- filter:
count: 1
match:
match:
event_type: alert
alert.signature: MQTT SUBSCRIBE topicY
+
+ - filter:
+ min-version: 8
+ count: 1
+ match:
+ event_type: alert
+ alert.signature: MQTT SUBACK topicY reason code 0