31static int DetectTlsFingerprintTest01(
void)
38 "alert tls any any -> any any "
39 "(msg:\"Testing tls.cert_fingerprint\"; "
40 "tls.cert_fingerprint; "
41 "content:\"11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99:00\"; "
64static int DetectTlsFingerprintTest02(
void)
67 uint8_t client_hello[] = {
68 0x16, 0x03, 0x01, 0x00, 0xc8, 0x01, 0x00, 0x00,
69 0xc4, 0x03, 0x03, 0xd6, 0x08, 0x5a, 0xa2, 0x86,
70 0x5b, 0x85, 0xd4, 0x40, 0xab, 0xbe, 0xc0, 0xbc,
71 0x41, 0xf2, 0x26, 0xf0, 0xfe, 0x21, 0xee, 0x8b,
72 0x4c, 0x7e, 0x07, 0xc8, 0xec, 0xd2, 0x00, 0x46,
73 0x4c, 0xeb, 0xb7, 0x00, 0x00, 0x16, 0xc0, 0x2b,
74 0xc0, 0x2f, 0xc0, 0x0a, 0xc0, 0x09, 0xc0, 0x13,
75 0xc0, 0x14, 0x00, 0x33, 0x00, 0x39, 0x00, 0x2f,
76 0x00, 0x35, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x85,
77 0x00, 0x00, 0x00, 0x12, 0x00, 0x10, 0x00, 0x00,
78 0x0d, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f,
79 0x67, 0x6c, 0x65, 0x2e, 0x6e, 0x6f, 0xff, 0x01,
80 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x08, 0x00,
81 0x06, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00,
82 0x0b, 0x00, 0x02, 0x01, 0x00, 0x00, 0x23, 0x00,
83 0x00, 0x33, 0x74, 0x00, 0x00, 0x00, 0x10, 0x00,
84 0x29, 0x00, 0x27, 0x05, 0x68, 0x32, 0x2d, 0x31,
85 0x36, 0x05, 0x68, 0x32, 0x2d, 0x31, 0x35, 0x05,
86 0x68, 0x32, 0x2d, 0x31, 0x34, 0x02, 0x68, 0x32,
87 0x08, 0x73, 0x70, 0x64, 0x79, 0x2f, 0x33, 0x2e,
88 0x31, 0x08, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x31,
89 0x2e, 0x31, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00,
90 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x16, 0x00,
91 0x14, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x02,
92 0x01, 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x02,
93 0x03, 0x04, 0x02, 0x02, 0x02
97 uint8_t server_hello[] = {
98 0x16, 0x03, 0x03, 0x00, 0x48, 0x02, 0x00, 0x00,
99 0x44, 0x03, 0x03, 0x57, 0x91, 0xb8, 0x63, 0xdd,
100 0xdb, 0xbb, 0x23, 0xcf, 0x0b, 0x43, 0x02, 0x1d,
101 0x46, 0x11, 0x27, 0x5c, 0x98, 0xcf, 0x67, 0xe1,
102 0x94, 0x3d, 0x62, 0x7d, 0x38, 0x48, 0x21, 0x23,
103 0xa5, 0x62, 0x31, 0x00, 0xc0, 0x2f, 0x00, 0x00,
104 0x1c, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
105 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10,
106 0x00, 0x05, 0x00, 0x03, 0x02, 0x68, 0x32, 0x00,
107 0x0b, 0x00, 0x02, 0x01, 0x00
111 uint8_t certificate[] = {
112 0x16, 0x03, 0x03, 0x04, 0x93, 0x0b, 0x00, 0x04,
113 0x8f, 0x00, 0x04, 0x8c, 0x00, 0x04, 0x89, 0x30,
114 0x82, 0x04, 0x85, 0x30, 0x82, 0x03, 0x6d, 0xa0,
115 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x5c, 0x19,
116 0xb7, 0xb1, 0x32, 0x3b, 0x1c, 0xa1, 0x30, 0x0d,
117 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
118 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x49, 0x31,
119 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
120 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11,
121 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x47,
122 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e,
123 0x63, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55,
124 0x04, 0x03, 0x13, 0x1c, 0x47, 0x6f, 0x6f, 0x67,
125 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72,
126 0x6e, 0x65, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68,
127 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x47, 0x32,
128 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x37,
129 0x31, 0x33, 0x31, 0x33, 0x32, 0x34, 0x35, 0x32,
130 0x5a, 0x17, 0x0d, 0x31, 0x36, 0x31, 0x30, 0x30,
131 0x35, 0x31, 0x33, 0x31, 0x36, 0x30, 0x30, 0x5a,
132 0x30, 0x65, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
133 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
134 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08,
135 0x0c, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f,
136 0x72, 0x6e, 0x69, 0x61, 0x31, 0x16, 0x30, 0x14,
137 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0d, 0x4d,
138 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20,
139 0x56, 0x69, 0x65, 0x77, 0x31, 0x13, 0x30, 0x11,
140 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0a, 0x47,
141 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e,
142 0x63, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55,
143 0x04, 0x03, 0x0c, 0x0b, 0x2a, 0x2e, 0x67, 0x6f,
144 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6e, 0x6f, 0x30,
145 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
146 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
147 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
148 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
149 0xa5, 0x0a, 0xb9, 0xb1, 0xca, 0x36, 0xd1, 0xae,
150 0x22, 0x38, 0x07, 0x06, 0xc9, 0x1a, 0x56, 0x4f,
151 0xbb, 0xdf, 0xa8, 0x6d, 0xbd, 0xee, 0x76, 0x16,
152 0xbc, 0x53, 0x3c, 0x03, 0x6a, 0x5c, 0x94, 0x50,
153 0x87, 0x2f, 0x28, 0xb4, 0x4e, 0xd5, 0x9b, 0x8f,
154 0xfe, 0x02, 0xde, 0x2a, 0x83, 0x01, 0xf9, 0x45,
155 0x61, 0x0e, 0x66, 0x0e, 0x24, 0x22, 0xe2, 0x59,
156 0x66, 0x0d, 0xd3, 0xe9, 0x77, 0x8a, 0x7e, 0x42,
157 0xaa, 0x5a, 0xf9, 0x05, 0xbf, 0x30, 0xc7, 0x03,
158 0x2b, 0xdc, 0xa6, 0x9c, 0xe0, 0x9f, 0x0d, 0xf1,
159 0x28, 0x19, 0xf8, 0xf2, 0x02, 0xfa, 0xbd, 0x62,
160 0xa0, 0xf3, 0x02, 0x2b, 0xcd, 0xf7, 0x09, 0x04,
161 0x3b, 0x52, 0xd8, 0x65, 0x4b, 0x4a, 0x70, 0xe4,
162 0x57, 0xc9, 0x2e, 0x2a, 0xf6, 0x9c, 0x6e, 0xd8,
163 0xde, 0x01, 0x52, 0xc9, 0x6f, 0xe9, 0xef, 0x82,
164 0xbc, 0x0b, 0x95, 0xb2, 0xef, 0xcb, 0x91, 0xa6,
165 0x0b, 0x2d, 0x14, 0xc6, 0x00, 0xa9, 0x33, 0x86,
166 0x64, 0x00, 0xd4, 0x92, 0x19, 0x53, 0x3d, 0xfd,
167 0xcd, 0xc6, 0x1a, 0xf2, 0x0e, 0x67, 0xc2, 0x1d,
168 0x2c, 0xe0, 0xe8, 0x29, 0x97, 0x1c, 0xb6, 0xc4,
169 0xb2, 0x02, 0x0c, 0x83, 0xb8, 0x60, 0x61, 0xf5,
170 0x61, 0x2d, 0x73, 0x5e, 0x85, 0x4d, 0xbd, 0x0d,
171 0xe7, 0x1a, 0x37, 0x56, 0x8d, 0xe5, 0x50, 0x0c,
172 0xc9, 0x64, 0x4c, 0x11, 0xea, 0xf3, 0xcb, 0x26,
173 0x34, 0xbd, 0x02, 0xf5, 0xc1, 0xfb, 0xa2, 0xec,
174 0x27, 0xbb, 0x60, 0xbe, 0x0b, 0xf6, 0xe7, 0x3c,
175 0x2d, 0xc9, 0xe7, 0xb0, 0x30, 0x28, 0x17, 0x3d,
176 0x90, 0xf1, 0x63, 0x8e, 0x49, 0xf7, 0x15, 0x78,
177 0x21, 0xcc, 0x45, 0xe6, 0x86, 0xb2, 0xd8, 0xb0,
178 0x2e, 0x5a, 0xb0, 0x58, 0xd3, 0xb6, 0x11, 0x40,
179 0xae, 0x81, 0x1f, 0x6b, 0x7a, 0xaf, 0x40, 0x50,
180 0xf9, 0x2e, 0x81, 0x8b, 0xec, 0x26, 0x11, 0x3f,
181 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01,
182 0x53, 0x30, 0x82, 0x01, 0x4f, 0x30, 0x1d, 0x06,
183 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14,
184 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
185 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
186 0x05, 0x07, 0x03, 0x02, 0x30, 0x21, 0x06, 0x03,
187 0x55, 0x1d, 0x11, 0x04, 0x1a, 0x30, 0x18, 0x82,
188 0x0b, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
189 0x65, 0x2e, 0x6e, 0x6f, 0x82, 0x09, 0x67, 0x6f,
190 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6e, 0x6f, 0x30,
191 0x68, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
192 0x07, 0x01, 0x01, 0x04, 0x5c, 0x30, 0x5a, 0x30,
193 0x2b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
194 0x07, 0x30, 0x02, 0x86, 0x1f, 0x68, 0x74, 0x74,
195 0x70, 0x3a, 0x2f, 0x2f, 0x70, 0x6b, 0x69, 0x2e,
196 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
197 0x6f, 0x6d, 0x2f, 0x47, 0x49, 0x41, 0x47, 0x32,
198 0x2e, 0x63, 0x72, 0x74, 0x30, 0x2b, 0x06, 0x08,
199 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
200 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
201 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73,
202 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
203 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x63, 0x73,
204 0x70, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
205 0x04, 0x16, 0x04, 0x14, 0xc6, 0x53, 0x87, 0x42,
206 0x2d, 0xc8, 0xee, 0x7a, 0x62, 0x1e, 0x83, 0xdb,
207 0x0d, 0xe2, 0x32, 0xeb, 0x8b, 0xaf, 0x69, 0x40,
208 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
209 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1f,
210 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
211 0x16, 0x80, 0x14, 0x4a, 0xdd, 0x06, 0x16, 0x1b,
212 0xbc, 0xf6, 0x68, 0xb5, 0x76, 0xf5, 0x81, 0xb6,
213 0xbb, 0x62, 0x1a, 0xba, 0x5a, 0x81, 0x2f, 0x30,
214 0x21, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x1a,
215 0x30, 0x18, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06,
216 0x01, 0x04, 0x01, 0xd6, 0x79, 0x02, 0x05, 0x01,
217 0x30, 0x08, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01,
218 0x02, 0x02, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d,
219 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0,
220 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74,
221 0x70, 0x3a, 0x2f, 0x2f, 0x70, 0x6b, 0x69, 0x2e,
222 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
223 0x6f, 0x6d, 0x2f, 0x47, 0x49, 0x41, 0x47, 0x32,
224 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09,
225 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
226 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
227 0x7b, 0x27, 0x00, 0x46, 0x8f, 0xfd, 0x5b, 0xff,
228 0xcb, 0x05, 0x9b, 0xf7, 0xf1, 0x68, 0xf6, 0x9a,
229 0x7b, 0xba, 0x53, 0xdf, 0x63, 0xed, 0x11, 0x94,
230 0x39, 0xf2, 0xd0, 0x20, 0xcd, 0xa3, 0xc4, 0x98,
231 0xa5, 0x10, 0x74, 0xe7, 0x10, 0x6d, 0x07, 0xf8,
232 0x33, 0x87, 0x05, 0x43, 0x0e, 0x64, 0x77, 0x09,
233 0x18, 0x4f, 0x38, 0x2e, 0x45, 0xae, 0xa8, 0x34,
234 0x3a, 0xa8, 0x33, 0xac, 0x9d, 0xdd, 0x25, 0x91,
235 0x59, 0x43, 0xbe, 0x0f, 0x87, 0x16, 0x2f, 0xb5,
236 0x27, 0xfd, 0xce, 0x2f, 0x35, 0x5d, 0x12, 0xa1,
237 0x66, 0xac, 0xf7, 0x95, 0x38, 0x0f, 0xe5, 0xb1,
238 0x18, 0x18, 0xe6, 0x80, 0x52, 0x31, 0x8a, 0x66,
239 0x02, 0x52, 0x1a, 0xa4, 0x32, 0x6a, 0x61, 0x05,
240 0xcf, 0x1d, 0xf9, 0x90, 0x73, 0xf0, 0xeb, 0x20,
241 0x31, 0x7b, 0x2e, 0xc0, 0xb0, 0xfb, 0x5c, 0xcc,
242 0xdc, 0x76, 0x55, 0x72, 0xaf, 0xb1, 0x05, 0xf4,
243 0xad, 0xf9, 0xd7, 0x73, 0x5c, 0x2c, 0xbf, 0x0d,
244 0x84, 0x18, 0x01, 0x1d, 0x4d, 0x08, 0xa9, 0x4e,
245 0x37, 0xb7, 0x58, 0xc4, 0x05, 0x0e, 0x65, 0x63,
246 0xd2, 0x88, 0x02, 0xf5, 0x82, 0x17, 0x08, 0xd5,
247 0x8f, 0x80, 0xc7, 0x82, 0x29, 0xbb, 0xe1, 0x04,
248 0xbe, 0xf6, 0xe1, 0x8c, 0xbc, 0x3a, 0xf8, 0xf9,
249 0x56, 0xda, 0xdc, 0x8e, 0xc6, 0xe6, 0x63, 0x98,
250 0x12, 0x08, 0x41, 0x2c, 0x9d, 0x7c, 0x82, 0x0d,
251 0x1e, 0xea, 0xba, 0xde, 0x32, 0x09, 0xda, 0x52,
252 0x24, 0x4f, 0xcc, 0xb6, 0x09, 0x33, 0x8b, 0x00,
253 0xf9, 0x83, 0xb3, 0xc6, 0xa4, 0x90, 0x49, 0x83,
254 0x2d, 0x36, 0xd9, 0x11, 0x78, 0xd0, 0x62, 0x9f,
255 0xc4, 0x8f, 0x84, 0xba, 0x7f, 0xaa, 0x04, 0xf1,
256 0xd9, 0xa4, 0xad, 0x5d, 0x63, 0xee, 0x72, 0xc6,
257 0x4d, 0xd1, 0x4b, 0x41, 0x8f, 0x40, 0x0f, 0x7d,
258 0xcd, 0xb8, 0x2e, 0x5b, 0x6e, 0x21, 0xc9, 0x3d
272 memset(&f, 0,
sizeof(
Flow));
276 "192.168.1.5",
"192.168.1.1", 51251, 443);
278 "192.168.1.1",
"192.168.1.5", 443, 51251);
280 "192.168.1.1",
"192.168.1.5", 443, 51251);
284 f.
proto = IPPROTO_TCP;
315 "(msg:\"Test tls.cert_fingerprint\"; "
316 "tls.cert_fingerprint; "
317 "content:\"4a:a3:66:76:82:cb:6b:23:bb:c3:58:47:23:a4:63:a7:78:a4:a1:18\"; "
325 STREAM_TOSERVER, client_hello,
326 sizeof(client_hello));
338 server_hello,
sizeof(server_hello));
347 certificate,
sizeof(certificate));
368static void DetectTlsFingerprintRegisterTests(
void)
370 UtRegisterTest(
"DetectTlsFingerprintTest01", DetectTlsFingerprintTest01);
371 UtRegisterTest(
"DetectTlsFingerprintTest02", DetectTlsFingerprintTest02);
AppLayerParserThreadCtx * AppLayerParserThreadCtxAlloc(void)
Gets a new app layer protocol's parser thread context.
void AppLayerParserThreadCtxFree(AppLayerParserThreadCtx *tctx)
Destroys the app layer parser thread context obtained using AppLayerParserThreadCtxAlloc().
int AppLayerParserParse(ThreadVars *tv, AppLayerParserThreadCtx *alp_tctx, Flow *f, AppProto alproto, uint8_t flags, const uint8_t *input, uint32_t input_len)
int PacketAlertCheck(Packet *p, uint32_t sid)
Check if a certain sid alerted, this is used in the test functions.
SigMatch * DetectBufferGetFirstSigMatch(const Signature *s, const uint32_t buf_id)
int SigGroupBuild(DetectEngineCtx *de_ctx)
Convert the signature list into the runtime match structure.
int SigGroupCleanup(DetectEngineCtx *de_ctx)
DetectEngineCtx * DetectEngineCtxInit(void)
void DetectEngineCtxFree(DetectEngineCtx *)
Free a DetectEngineCtx::
Signature * DetectEngineAppendSig(DetectEngineCtx *, const char *)
Parse and append a Signature into the Detection Engine Context signature list.
TmEcode DetectEngineThreadCtxInit(ThreadVars *tv, void *initdata, void **data)
initialize thread specific detection engine context
TmEcode DetectEngineThreadCtxDeinit(ThreadVars *tv, void *data)
void SigMatchSignatures(ThreadVars *tv, DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx, Packet *p)
wrapper for old tests
uint8_t FlowGetProtoMapping(uint8_t proto)
Function to map the protocol to the defined FLOW_PROTO_* enumeration.
#define FLOW_INITIALIZE(f)
#define FLOW_PKT_TOSERVER
#define FLOW_PKT_ESTABLISHED
#define FLOW_PKT_TOCLIENT
AppLayerParserThreadCtx * alp_tctx
#define FAIL_IF_NULL(expr)
Fail a test if expression evaluates to NULL.
void UtRegisterTest(const char *name, int(*TestFn)(void))
Register unit test.
#define FAIL_IF_NOT(expr)
Fail a test if expression evaluates to false.
#define PASS
Pass the test.
#define FAIL_IF(expr)
Fail a test if expression evaluates to true.
#define FAIL_IF_NOT_NULL(expr)
Fail a test if expression evaluates to non-NULL.
void StreamTcpFreeConfig(bool quiet)
void StreamTcpInitConfig(bool)
To initialize the stream global configuration data.
main detection engine ctx
AppProto alproto
application level protocol
SSLv[2.0|3.[0|1|2|3]] state structure.
a single match condition for a signature
struct SigMatch_ * smlists[DETECT_SM_LIST_MAX]
SignatureInitData * init_data
Per thread variable structure.
uint8_t mpm_default_matcher
Packet * UTHBuildPacketReal(uint8_t *payload, uint16_t payload_len, uint8_t ipproto, const char *src, const char *dst, uint16_t sport, uint16_t dport)
UTHBuildPacketReal is a function that create tcp/udp packets for unittests specifying ip and port sou...
void UTHFreePacket(Packet *p)
UTHFreePacket: function to release the allocated data from UTHBuildPacket and the packet itself.