mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 22:58:20 +00:00
67 lines
No EOL
1.7 KiB
Text
67 lines
No EOL
1.7 KiB
Text
|
|
@load base/protocols/http
|
|
@load base/frameworks/intel
|
|
|
|
module HTTP;
|
|
|
|
export {
|
|
redef enum Intel::Where += {
|
|
HTTP::IN_HEADER,
|
|
HTTP::IN_REQUEST,
|
|
HTTP::IN_HOST_HEADER,
|
|
HTTP::IN_CONN_EST,
|
|
HTTP::IN_DNS_REQUEST,
|
|
};
|
|
}
|
|
|
|
event connection_established(c: connection)
|
|
{
|
|
Intel::found_in_conn(c, [$host=c$id$orig_h, $where=IN_CONN_EST]);
|
|
Intel::found_in_conn(c, [$host=c$id$resp_h, $where=IN_CONN_EST]);
|
|
}
|
|
|
|
event http_header(c: connection, is_orig: bool, name: string, value: string)
|
|
{
|
|
if ( is_orig && name == "USER-AGENT" )
|
|
Intel::found_in_conn(c, [$str=value,
|
|
$str_type=Intel::USER_AGENT,
|
|
$where=IN_HEADER]);
|
|
|
|
if ( is_orig && name == "HOST" )
|
|
Intel::found_in_conn(c, [$str=value,
|
|
$str_type=Intel::DOMAIN,
|
|
$where=IN_HOST_HEADER]);
|
|
}
|
|
|
|
event http_message_done(c: connection, is_orig: bool, stat: http_message_stat)
|
|
{
|
|
if ( c?$http )
|
|
{
|
|
if ( c$http?$user_agent )
|
|
Intel::found_in_conn(c, [$str=c$http$user_agent,
|
|
$str_type=Intel::USER_AGENT,
|
|
$where=IN_HEADER]);
|
|
|
|
Intel::found_in_conn(c, [$str=HTTP::build_url(c$http),
|
|
$str_type=Intel::URL,
|
|
$where=IN_REQUEST]);
|
|
}
|
|
}
|
|
|
|
|
|
event dns_request(c: connection, msg: dns_msg, query: string, qtype: count, qclass: count)
|
|
{
|
|
Intel::found_in_conn(c, [$str=query,
|
|
$str_type=Intel::DOMAIN,
|
|
$where=IN_DNS_REQUEST]);
|
|
|
|
}
|
|
|
|
event Intel::match_in_conn(c: connection, found: Intel::Found, items: set[Intel::Item])
|
|
{
|
|
print "matched one!";
|
|
for ( i in items )
|
|
{
|
|
print " " + i$meta$desc;
|
|
}
|
|
} |