[Oisf-devel] htp callback HTPCallbackRequest is not called when upload a "large" file( >5KB)
Victor Julien
victor at inliniac.net
Thu Jul 12 08:14:54 UTC 2012
What happens if you record the traffic and process the pcap with Suricata?
On 07/12/2012 10:00 AM, Delta Yeh wrote:
> I did some tests with suricata git head.
>
> The test setup is
>
> client box ------suricata box (bridge)----webserver
>
> I start suricata with ./suricata -c /tmp/suricata.yaml -i eth0
>
>
> I upload 2 file, file a is 45 bytes ,file b is 6.1KB
> I add debug codes in htp callback function
> 1. HTPCallbackRequestBodyData
> 2. HTPCallbackRequest
> 3. HTPCallbackResponse
> in file app-layer-htp.c
>
> According to the design, I should see the debug output of the above 3 function.
>
> When upload file a, the output is as expected:
>
> [25497] 12/7/2012 -- 15:47:16 - (app-layer-htp.c:1804) <Error>
> (HTPCallbackRequestBodyData) -- [ERRCODE: SC_ERR_INVALID_VALUE(129)] -
> ===>HTPCallbackRequestBodyData(0<-376)
> [25497] 12/7/2012 -- 15:47:16 - (app-layer-htp.c:1991) <Error>
> (HTPCallbackRequest) -- [ERRCODE: SC_ERR_INVALID_VALUE(129)] -
> ===>HTPCallbackRequest
> [25497] 12/7/2012 -- 15:47:16 - (app-layer-htp.c:2031) <Error>
> (HTPCallbackResponse) -- [ERRCODE: SC_ERR_INVALID_VALUE(129)] -
> <===HTPCallbackResponse
>
>
> but for file b, I didn't see invocation of HTPCallbackRequest !!!!
>
> [25497] 12/7/2012 -- 15:42:09 - (app-layer-htp.c:1804) <Error>
> (HTPCallbackRequestBodyData) -- [ERRCODE: SC_ERR_INVALID_VALUE(129)] -
> ===>HTPCallbackRequestBodyData(0<-1460)
> [25497] 12/7/2012 -- 15:42:09 - (app-layer-htp.c:1804) <Error>
> (HTPCallbackRequestBodyData) -- [ERRCODE: SC_ERR_INVALID_VALUE(129)] -
> ===>HTPCallbackRequestBodyData(1460<-1460)
> [25497] 12/7/2012 -- 15:42:09 - (app-layer-htp.c:2031) <Error>
> (HTPCallbackResponse) -- [ERRCODE: SC_ERR_INVALID_VALUE(129)] -
> <===HTPCallbackResponse
>
>
> And the request body processed is less than the file size.
> There should be 6K, but only 1460+1460 is processed.
>
>
> The config of suricata is:
>
> %YAML 1.1
> ---
> pid-file: /var/run/suricata.pid
> runmode: workers
> autofp-scheduler: active-packets
> default-packet-size: 1514
> max-pending-packets: 500
>
> default-log-dir: /tmp/logs
>
>
> # Configure the type of alert (and other) logging you would like.
> outputs:
> # a line based alerts log similar to Snort's fast.log
> - fast:
> enabled: yes
> filename: fast.log
>
> - http-log:
> enabled: no
> filename: http.log
> - stats:
> enabled: no
> filename: websensor.stat
> interval: 2592000
>
> nfq:
> # mode: accept
> # repeat-mark: 1
> # repeat-mask: 1
> # route-queue: 2
>
> defrag:
> max-frags: 65535
> prealloc: yes
> timeout: 3
> detect-engine:
> - profile: custom
> - custom-values:
> toclient-src-groups: 2
> toclient-dst-groups: 2
> toclient-sp-groups: 2
> toclient-dp-groups: 2
> toserver-src-groups: 2
> toserver-dst-groups: 3
> toserver-sp-groups: 2
> toserver-dp-groups: 5
> - sgh-mpm-context: single
> - inspection-recursion-limit: 10
>
> threading:
> set-cpu-affinity: no
> detect-thread-ratio: 1.5
>
> mpm-algo: ac
> pattern-matcher:
> - b2gc:
> search-algo: B2gSearchBNDMq
> hash-size: low
> bf-size: low
> - b2gm:
> search-algo: B2gSearchBNDMq
> hash-size: low
> bf-size: low
> - b2g:
> search-algo: B2gSearchBNDMq
> hash-size: low
> bf-size: low
> - b3g:
> search-algo: B3gSearchBNDMq
> hash-size: low
> bf-size: low
> - wumanber:
> hash-size: low
> bf-size: low
>
> # Defrag settings:
> defrag:
> max-frags: 65535
> prealloc: yes
> timeout: 20
>
> flow:
> memcap: 32mb
> hash-size: 65536
> prealloc: 10000
> emergency-recovery: 30
> prune-flows: 5
>
> flow-timeouts:
>
> default:
> new: 3
> established: 5
> closed: 0
> emergency-new: 1
> emergency-established: 1
> emergency-closed: 0
> tcp:
> new: 3
> established: 5
> closed: 0
> emergency-new: 1
> emergency-established: 1
> emergency-closed: 0
> udp:
> new: 1
> established: 1
> emergency-new: 1
> emergency-established: 1
> icmp:
> new: 1
> established: 1
> emergency-new: 1
> emergency-established: 1
>
> stream:
> memcap: 32mb
> checksum-validation: no
> max-sessions: 2000000
> midstream: false
> inline: no # no inline mode
> reassembly:
> memcap: 64mb
> depth: 1mb # reassemble 1mb into a stream
> toserver-chunk-size: 2560
> toclient-chunk-size: 2560
>
>
> host:
> hash-size: 4096
> prealloc: 1000
> memcap: 16777216
> logging:
> default-log-level: error
> pcap:
> - interface: eth0
> buffer-size: 32768
> checksum-checks: no
>
>
> classification-file: /etc/suricata/conf/classification.config
> reference-config-file: /etc/suricata/conf/reference.config
>
> action-order:
> - pass
> - drop
> - reject
> - alert
> pcre:
> match-limit: 3500
> match-limit-recursion: 1500
>
> libhtp:
>
> default-config:
> personality: IDS
> request-body-limit: 0
> response-body-limit: 1024
> coredump:
> max-dump: unlimited
>
--
---------------------------------------------
Victor Julien
http://www.inliniac.net/
PGP: http://www.inliniac.net/victorjulien.asc
---------------------------------------------
More information about the Oisf-devel
mailing list