Bro: A System for Detecting Network Intruders in Real-Time CS 395-0

download report

Transcript Bro: A System for Detecting Network Intruders in Real-Time CS 395-0

Bro: A System for Detecting
Network Intruders in Real-Time
Presented by Zachary Schneirov
CS 395-0
Professor Yan Chen
What is Bro?
• Bro is a stand-alone system that
observes network traffic directly to
detect intruders
• Emphasizes monitoring over blocking
• High speed passive network monitoring:
100Mbps at most
• Real time notifications
• Division between policy and mechanism
• Extensibility
• Assumption that the monitor will be
• Should be difficult for users to make
System Structure/Flow
Network ->
Packet Filter ->
Event Engine ->
Policy Script Interpreter ->
Real time notifications, other actions
As abstraction level increases, more
processing can be performed at each level
Packet filter
• Uses libpcap for platform independence
• With BPF, packet discarding can occur in
kernel space
• Captures only headers for packets with
SYN, FIN, and RST flags
• Captures entire packet otherwise
Event engine
• Tracks TCP connection states
• Upon receiving an initial SYN
• Generates the following events:
– SYN-ACK: connection_established
– RST: connection_rejected
– FIN: connection_finished
• For UDP, udp_request and udp_reply are
generated based on source and dest.
Policy Scripts
• Grabs events asynchronously from a FIFO
• Executes policy scripts in a special Bro
• Calls predefined handlers in the script for
different events generated
Event actions
• Scripts can generate new events from an
event handler
• Log notifications with syslog
• Write packet traces to disk
• Or modify the internal state for further
Bro Language
Designed to “avoid simple mistakes”
Strongly typed
Variable references always valid at runtime
Domain specific: variable types include
port and addr
• Does not support looping constructs to
ensure constant time processing
Attacks on the monitor
• Overload
• Crash
• Subterfuge
Overload attack
• Overload the monitor until it drops packets
• Accomplished by indiscriminate flooding
• Or by repeatedly triggering events that
require CPU or disk processing
• Attacker then conducts intrusion while
packets are being dropped
Overloading defenses
• Attacker will not always know the full
power and typical load of the monitor
• Attacker will not know the exact policy
conditions and actions
• Event engine can also generate events in the
case of dropped packets
Crashing attack
• Crash the monitor and attempt intrusion
• Find a flaw to trigger an immediate crash
• Or exhaust available memory and/or disk
space (e.g. through connection states)
Crashing defenses
• Attacker does not know the size of the disk
• Cannot assume that the monitor will not
generate alerts after the disk is full
• Monitor process uses UNIX alarm signals
to periodically test availability
• Rely on unnoticed flaws in the system that
create a difference between what the
monitor sees and what an end-host sees
• Trick monitor into discarding packets with
bad checksums
• Use a TTL that takes packets past
monitoring point but not to end-host
• Set the MTU such that it passes through
monitor but is rejected downstream
A sample attack
• Send packets with a smaller TTL containing
benign keywords
• Send packets with a TTL that reach the host
containing the actual malicious commands
• Give both sets the same TCP sequence
• Monitor cannot decide which version to
Subterfuge Defenses
• Generate an error upon receiving
“retransmitted” packets with different
• “Bifurcating analysis”
– Spawn multiple threads for each possible
interpretation of data
Application-specific processing
• Bro supports finger, FTP , portmapper,
telnet, and rlogin protocols
• Extensible architecture allows easy addition
of other protocols
Port scan detection
• Uses predefined thresholds for the ratio of
attempted connections of each source
address to unique destination peers and
• No restrictions on port or address order
• But generates false positives due to passive
connections to FTP servers
Real world experiences
• Broken TCP implementations generate false
positives; difficult to differentiate from
subterfuge attacks
• Many unbalanced fragmented packets
• Incorrect application protocol
implementations also cause problems
Future improvements
Implement support for more applications
Actively block bad connections
Bifurcation analysis
Sensors on end-hosts