line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package ThreatNet::DATN2004; |
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
1354
|
use 5.005; |
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
40
|
|
4
|
1
|
|
|
1
|
|
5
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
35
|
|
5
|
1
|
|
|
1
|
|
14
|
use vars qw{$VERSION}; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
51
|
|
6
|
|
|
|
|
|
|
BEGIN { |
7
|
1
|
|
|
1
|
|
142
|
$VERSION = '0.20'; |
8
|
|
|
|
|
|
|
} |
9
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
1; |
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
=pod |
13
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
=head1 NAME |
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
ThreatNet::DATN2004 - Proposal: The Decentralised Active Threat Network |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
This document has been created to describe a concept that may be of use in |
19
|
|
|
|
|
|
|
a variety of fields. It should be considered a general concept only and is |
20
|
|
|
|
|
|
|
subject to change. |
21
|
|
|
|
|
|
|
|
22
|
|
|
|
|
|
|
This CPAN/POD version of the document, first published in December 2004 at |
23
|
|
|
|
|
|
|
L, has been released to |
24
|
|
|
|
|
|
|
independantly timestamp and archive the concept and proposal in case of |
25
|
|
|
|
|
|
|
future patent-related issues by companies and to attempt to keep the core |
26
|
|
|
|
|
|
|
idea available to all. |
27
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
=head1 INTRODUCTION |
29
|
|
|
|
|
|
|
|
30
|
|
|
|
|
|
|
On the Internet there exists an increasing number of different ways in which |
31
|
|
|
|
|
|
|
hosts are being misused or abused. Likewise there is also an increasing |
32
|
|
|
|
|
|
|
number of ways in which these known-bad hosts are being identified. Most of |
33
|
|
|
|
|
|
|
these occur in the process of a particular task, such as checking an email |
34
|
|
|
|
|
|
|
message for spam status. |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
As these hosts are identified, their identify is transmitted across to |
37
|
|
|
|
|
|
|
internet to members of threat networks. The most common of these are the |
38
|
|
|
|
|
|
|
various email "black lists", most of which use DNS or some other method to |
39
|
|
|
|
|
|
|
publish lists of known-bad ips or ip ranges. Mail processing services |
40
|
|
|
|
|
|
|
submit requests to a DNS server storing these lists to determine if a |
41
|
|
|
|
|
|
|
particular host contacting them is a known spammer. |
42
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
This draft specification describes a system which would be used to |
44
|
|
|
|
|
|
|
identify a specific category of these bad ips, hosts that can be |
45
|
|
|
|
|
|
|
considered "Active Threats". An Active Threat is a host that is currently |
46
|
|
|
|
|
|
|
engaged in anti-social, damaging or criminal behaviour, such as actively |
47
|
|
|
|
|
|
|
sending out spam or viruses. This specification is NOT intended to deal |
48
|
|
|
|
|
|
|
with long-term offenders, as they are addressed by a number of current |
49
|
|
|
|
|
|
|
systems. |
50
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
If applied to long term offenders, hosts would be registered as an Active |
52
|
|
|
|
|
|
|
Threat when they commence their anti-social behaviour, and fall off any |
53
|
|
|
|
|
|
|
list during periods in which they are not conducting this behaviour. |
54
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
The general intent is to deal with only those hosts that are actively |
56
|
|
|
|
|
|
|
engaged in damaging behaviour, whether or not they are long term offenders |
57
|
|
|
|
|
|
|
or new offenders. And to deal with the hosts as soon as possible, ideally |
58
|
|
|
|
|
|
|
within a few seconds. |
59
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
=head1 GENERAL PRINCIPLES |
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
The following general principles have been establish for this system, |
63
|
|
|
|
|
|
|
and guide the sample implementation described below. They are listed |
64
|
|
|
|
|
|
|
(loosely) in priority order. |
65
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
=head2 Speed of Response |
67
|
|
|
|
|
|
|
|
68
|
|
|
|
|
|
|
The ThreatNet concept is specifically intended to address active and |
69
|
|
|
|
|
|
|
transient threats. If a Verified Threat is detected at time $t, other |
70
|
|
|
|
|
|
|
members of the same Threat Network should start to recieve notification |
71
|
|
|
|
|
|
|
before time $t + 1 (within 1 second). Full propagation to all members, and |
72
|
|
|
|
|
|
|
any subsequent responses, should be complete within by $t + 60 (within |
73
|
|
|
|
|
|
|
1 minute). |
74
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
Within a second of a host being detected conducting some anti-social |
76
|
|
|
|
|
|
|
behaviour, the member should be able to confirm this behaviour and the |
77
|
|
|
|
|
|
|
host ip responsible for it, and classify the host as a Verified Threat, |
78
|
|
|
|
|
|
|
issuing a message into a Threat Network. Notification to all members |
79
|
|
|
|
|
|
|
of the Threat Network and any other linked networks should occur as |
80
|
|
|
|
|
|
|
quickly as the Internet and Threat Network itself is able to spread this |
81
|
|
|
|
|
|
|
information. Any members who wish to respond to the threat, or are able |
82
|
|
|
|
|
|
|
to neutralise it, should be able to act within a few seconds and |
83
|
|
|
|
|
|
|
certainly within a minute. |
84
|
|
|
|
|
|
|
|
85
|
|
|
|
|
|
|
For the example of spam, this would allow newly compromised hosts |
86
|
|
|
|
|
|
|
("zombies") acting as spam or virus agents that are not on current block |
87
|
|
|
|
|
|
|
lists to be dealt with and blocked before they are able to send |
88
|
|
|
|
|
|
|
significant amounts of spam. This could also allow for compromised hosts |
89
|
|
|
|
|
|
|
on dynamic IPs to be blocked each time they move IPs without |
90
|
|
|
|
|
|
|
significantly damaging subsequent users of the IPs, or needing to block |
91
|
|
|
|
|
|
|
the entire IP range. This could also help to reduce the impact of new |
92
|
|
|
|
|
|
|
and fast-moving viruses, as any newly infected computers appearing within |
93
|
|
|
|
|
|
|
properly managed ISPs could be disconnected and disabled before they are |
94
|
|
|
|
|
|
|
able to make a significant number of attempts to reproduce. |
95
|
|
|
|
|
|
|
|
96
|
|
|
|
|
|
|
=head2 Flexibility and Integration |
97
|
|
|
|
|
|
|
|
98
|
|
|
|
|
|
|
The implementation should be as flexible as possible and integrate with |
99
|
|
|
|
|
|
|
many other current systems, or provide a way for developers to do this |
100
|
|
|
|
|
|
|
integration themselves. Although the initial idea for this concept was as |
101
|
|
|
|
|
|
|
an anti-spam system, it should not be considered solely an anti-spam tool, |
102
|
|
|
|
|
|
|
and should be able to be easily reconfigured for use in any other scenario |
103
|
|
|
|
|
|
|
that involves similar sorts of rapid responses to threats. |
104
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
The entire system should be defined as a set of separate components, any |
106
|
|
|
|
|
|
|
of which can be replaced, improved or set up in a variety of different |
107
|
|
|
|
|
|
|
ways. Each function or role should be identified separately so that new |
108
|
|
|
|
|
|
|
systems and implementations can provide one particular role without |
109
|
|
|
|
|
|
|
needing to implement all of them. |
110
|
|
|
|
|
|
|
|
111
|
|
|
|
|
|
|
=head2 Distributed and Decentralised |
112
|
|
|
|
|
|
|
|
113
|
|
|
|
|
|
|
Most existing anti-spam or anti-threat networks involve a central |
114
|
|
|
|
|
|
|
authorative data source, and a central authorative distribution network to |
115
|
|
|
|
|
|
|
spread it, typically a managed database of some sort and a DNS/rsync |
116
|
|
|
|
|
|
|
combination. Centralising in this way can lead to the blocking systems |
117
|
|
|
|
|
|
|
themselves becoming the target of both technical and legal attacks. |
118
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
Extreme measures are often required to protect (technically and legally) |
120
|
|
|
|
|
|
|
the blocking systems. |
121
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
This proposal involves a decentralised system with no long term state |
123
|
|
|
|
|
|
|
information and no central server or service that can be implemented in |
124
|
|
|
|
|
|
|
an ad-hoc way. Having limited the scope of the network to short term and |
125
|
|
|
|
|
|
|
transient threat this can be done relatively easily. |
126
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
Short term state information is held locally at each node, and a mandory |
128
|
|
|
|
|
|
|
"quiet period" is enforced when joining a new network to let the new member |
129
|
|
|
|
|
|
|
synchronise with the network. |
130
|
|
|
|
|
|
|
|
131
|
|
|
|
|
|
|
This quiet period will keep load and communication volume down, and let |
132
|
|
|
|
|
|
|
new members join a network without the need for a synchronisation event. |
133
|
|
|
|
|
|
|
|
134
|
|
|
|
|
|
|
By waiting for the network's block period before contributing, each node |
135
|
|
|
|
|
|
|
can be sure that it has fully synchronised with the network before beginning |
136
|
|
|
|
|
|
|
to contribute block entries that might otherwise be duplicates. |
137
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
=head2 Ease of Implementation |
139
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
In order to get this concept off the ground and running quickly, and to help |
141
|
|
|
|
|
|
|
implement it as flexibly as possible, it is proposed that the system makes |
142
|
|
|
|
|
|
|
use of common, time-tested, well-supported and mature systems wherever |
143
|
|
|
|
|
|
|
possible. |
144
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
=head2 Minimisation of Harm |
146
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
Long term blocking, and the blocking of entire subnets, may not be suitable |
148
|
|
|
|
|
|
|
for dealing with new and short term threats. One bad apple can ruin it for |
149
|
|
|
|
|
|
|
the entire barrel. While the ability to "poison" a Threat Network may |
150
|
|
|
|
|
|
|
still exist as it does in existing blocking systems, this poisoning would |
151
|
|
|
|
|
|
|
need to be active and continuous, "re-poisoning" the Threat Network with |
152
|
|
|
|
|
|
|
new messages each time the short block period nears its end. |
153
|
|
|
|
|
|
|
|
154
|
|
|
|
|
|
|
For dynamic IP connections, any response taken against a single IP will |
155
|
|
|
|
|
|
|
expire automatically within the block period, once the host stops use of |
156
|
|
|
|
|
|
|
the IP. |
157
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
=head2 Elegant Degradation and Failure |
159
|
|
|
|
|
|
|
|
160
|
|
|
|
|
|
|
As with any security system, the greater and higher profile its use, the |
161
|
|
|
|
|
|
|
bigger the target it becomes and more likely to be attacked. The system |
162
|
|
|
|
|
|
|
should be designed from the start to be able to stand up to attack when |
163
|
|
|
|
|
|
|
deployed in high-profile scenarios, and to degrade gracefully where |
164
|
|
|
|
|
|
|
possible to retain at least partial functionality. |
165
|
|
|
|
|
|
|
|
166
|
|
|
|
|
|
|
=head1 EXAMPLE IMPLEMENTATION |
167
|
|
|
|
|
|
|
|
168
|
|
|
|
|
|
|
The following describes the set of elements which would be required to |
169
|
|
|
|
|
|
|
create a single complete system, and a set of optional elements which |
170
|
|
|
|
|
|
|
could be used to enhance or expand the system. |
171
|
|
|
|
|
|
|
|
172
|
|
|
|
|
|
|
=head2 Required Element: Messaging Platform |
173
|
|
|
|
|
|
|
|
174
|
|
|
|
|
|
|
At the core of the Threat Network is a messaging platform. As an extremely |
175
|
|
|
|
|
|
|
mature and often-attacked network messaging system, IRC would appear an |
176
|
|
|
|
|
|
|
ideal platform to use for this purpose. Libraries to connect to and work |
177
|
|
|
|
|
|
|
with IRC already exists in almost every programming language. In addition, |
178
|
|
|
|
|
|
|
it can be deployed extremely flexibly from either a non-authenticated |
179
|
|
|
|
|
|
|
channel on an existing IRC network to secret and private dedicated servers |
180
|
|
|
|
|
|
|
with encryption, certificate-backed authentication, and agent-based |
181
|
|
|
|
|
|
|
monitoring. |
182
|
|
|
|
|
|
|
|
183
|
|
|
|
|
|
|
=head2 Required Element: Language Specification |
184
|
|
|
|
|
|
|
|
185
|
|
|
|
|
|
|
Each member of the network should interact in a standard and relatively |
186
|
|
|
|
|
|
|
flexible language. While this specification does not attempt to describe |
187
|
|
|
|
|
|
|
the details of any particular language, for example purposes only we will |
188
|
|
|
|
|
|
|
start with the simplest possible language. The sample language contains |
189
|
|
|
|
|
|
|
only a single message with only the IP address of a validated threat, |
190
|
|
|
|
|
|
|
assumed to have been detected within a few seconds of the threat event |
191
|
|
|
|
|
|
|
occurring. |
192
|
|
|
|
|
|
|
|
193
|
|
|
|
|
|
|
=head2 Required Element: Network Agents |
194
|
|
|
|
|
|
|
|
195
|
|
|
|
|
|
|
Within the IRC Threat Network, there exists a number of members, each |
196
|
|
|
|
|
|
|
consisting of at least a software agent. Any agent connected to the system |
197
|
|
|
|
|
|
|
will consist of at least the Event Listener element described below, and |
198
|
|
|
|
|
|
|
one or more optional elements. At least one agent is required to implement |
199
|
|
|
|
|
|
|
the Threat Provider element in order to create a working system. |
200
|
|
|
|
|
|
|
|
201
|
|
|
|
|
|
|
=head2 Required Element: Event Listener |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
A pure Event Listener is a passive agent that listens on a Threat Network |
204
|
|
|
|
|
|
|
for threat messages and optionally acts upon them. Every agent connected to |
205
|
|
|
|
|
|
|
the Threat Network is required to implement an Event Listener to monitor |
206
|
|
|
|
|
|
|
incoming messages, if only to prevent issuing duplicate messages. |
207
|
|
|
|
|
|
|
|
208
|
|
|
|
|
|
|
Many of the agents that would implement only the Event Listener would act |
209
|
|
|
|
|
|
|
as interfaces and adapters to other systems. |
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
As one example, a ThreatNet to DNSBL adapter might listen for threat |
212
|
|
|
|
|
|
|
messages, submit a DNSBL request against each IP, and for each IP that |
213
|
|
|
|
|
|
|
isn't already listed, add it to the local DNSBL server with a short TTL |
214
|
|
|
|
|
|
|
most likely matching the ThreatNet block period. |
215
|
|
|
|
|
|
|
|
216
|
|
|
|
|
|
|
A ThreatNet to firewall adapter could listen for specific types of |
217
|
|
|
|
|
|
|
high-impact threat messages and inject blocks into a firewall configuration, |
218
|
|
|
|
|
|
|
allowing particular types of threats to be blocked at a connection level. |
219
|
|
|
|
|
|
|
|
220
|
|
|
|
|
|
|
Depending on the scale of the network, and the ability of the adapter to |
221
|
|
|
|
|
|
|
handle the volume of responses, the Event Listener may need to institute |
222
|
|
|
|
|
|
|
some form of queuing or flood control. It would be expected that such |
223
|
|
|
|
|
|
|
flood control would become common were the popularity of Threat Networks |
224
|
|
|
|
|
|
|
to grow significantly. |
225
|
|
|
|
|
|
|
|
226
|
|
|
|
|
|
|
=head2 Optional Element: Threat Cache / Threat Filter |
227
|
|
|
|
|
|
|
|
228
|
|
|
|
|
|
|
While some Threat Network agents do not need to maintain state, a great |
229
|
|
|
|
|
|
|
many agent types do, in particular anything that wishes to submit Verified |
230
|
|
|
|
|
|
|
Threat messages of its own to the network. |
231
|
|
|
|
|
|
|
|
232
|
|
|
|
|
|
|
A Threat Cache is simply a small local database, probably in-memory, that |
233
|
|
|
|
|
|
|
stores all "current" threats. A Threat Filter handles and passes on only |
234
|
|
|
|
|
|
|
the subset of events that meet a certain set of criteria. For agents |
235
|
|
|
|
|
|
|
joining a network, the purpose of waiting for the full block period until |
236
|
|
|
|
|
|
|
beginning to submit messages is to allow the agent's Threat Cache to fill |
237
|
|
|
|
|
|
|
and thus synchronise with the rest of the members of the network. |
238
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
In another example, an ISP may deploy a "Zombie Response" agent that |
240
|
|
|
|
|
|
|
applies a filter to limit the event feed to only those Verified Threats |
241
|
|
|
|
|
|
|
that are the inside the ISP's own network. When the agent identifies |
242
|
|
|
|
|
|
|
an infected or trojaned customer by IP, it could terminate the connection, |
243
|
|
|
|
|
|
|
disable the login, and flag the customer's account so that when they try |
244
|
|
|
|
|
|
|
to reconnect, they will be informed they are infected with a virus or |
245
|
|
|
|
|
|
|
that someone may be using their computer without their permission. |
246
|
|
|
|
|
|
|
|
247
|
|
|
|
|
|
|
=head2 Optional Element: Threat Provider |
248
|
|
|
|
|
|
|
|
249
|
|
|
|
|
|
|
A Threat Provider is an agent that submits Verified Threats messages to a |
250
|
|
|
|
|
|
|
network. Because any message that is added to the network may result in a |
251
|
|
|
|
|
|
|
variety of actions against the host, care should be taken to verify that |
252
|
|
|
|
|
|
|
the host is indeed an Active Threat. |
253
|
|
|
|
|
|
|
|
254
|
|
|
|
|
|
|
Any Threat Provider should also act as an Event Listener and ensure that |
255
|
|
|
|
|
|
|
Verified Threat events are not submitted if they are already "current" |
256
|
|
|
|
|
|
|
(in the Threat Cache). The default TTL on all threats will be 1 hour. |
257
|
|
|
|
|
|
|
|
258
|
|
|
|
|
|
|
As an example, a spam "secondary MX trap" might be tied to a local Threat |
259
|
|
|
|
|
|
|
Network agent that would aggregate and filter threats from the host, and |
260
|
|
|
|
|
|
|
submit Veried Threat messages into the network. |
261
|
|
|
|
|
|
|
|
262
|
|
|
|
|
|
|
By separating the Threat Network from the individual applications, new |
263
|
|
|
|
|
|
|
and more accurate anti-spam scripts can incorporate a connection to the |
264
|
|
|
|
|
|
|
agent and feed more advanced Verified Threat messages into the same |
265
|
|
|
|
|
|
|
network, be it local, regional, or larger. |
266
|
|
|
|
|
|
|
|
267
|
|
|
|
|
|
|
=head2 Optional Element: Network Bridge |
268
|
|
|
|
|
|
|
|
269
|
|
|
|
|
|
|
To separate a private company-wide network, or a university network from |
270
|
|
|
|
|
|
|
a larger network, you can make use of a Network Bridge. This is an agent |
271
|
|
|
|
|
|
|
that connects to two or more different networks, maintains a combined |
272
|
|
|
|
|
|
|
Threat Cache and feeds Verified Threat messages from one to the other, |
273
|
|
|
|
|
|
|
potentially in both directions. |
274
|
|
|
|
|
|
|
|
275
|
|
|
|
|
|
|
For example, a single or small group of universities could run a private |
276
|
|
|
|
|
|
|
Threat Network for open use by members of the University, with a single |
277
|
|
|
|
|
|
|
Network Bridge agent pulling in messages from a larger national or |
278
|
|
|
|
|
|
|
international Threat Network. The bridge would be configured to filter |
279
|
|
|
|
|
|
|
out any messages that reference hosts already listed on the university |
280
|
|
|
|
|
|
|
DNSBL server. |
281
|
|
|
|
|
|
|
|
282
|
|
|
|
|
|
|
=head2 Optional Element: Security Model |
283
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
One advantage of using IRC is that any of the existing security features |
285
|
|
|
|
|
|
|
that are currently part of IRC can also be applied to a threat network, |
286
|
|
|
|
|
|
|
including voice right, operators, channel management bots, SIRC and more. |
287
|
|
|
|
|
|
|
|
288
|
|
|
|
|
|
|
At the most open, a single ThreatNet channel could be run within general |
289
|
|
|
|
|
|
|
IRC server with anyone free to participate and submit any entries they |
290
|
|
|
|
|
|
|
wish. This would make it trivially easy to set up an environment for |
291
|
|
|
|
|
|
|
testing use. |
292
|
|
|
|
|
|
|
|
293
|
|
|
|
|
|
|
More secure than this, a bot could run the channel allowing anyone to |
294
|
|
|
|
|
|
|
join, but only giving voice permissions to agents joining from |
295
|
|
|
|
|
|
|
white-listed IP addresses. |
296
|
|
|
|
|
|
|
|
297
|
|
|
|
|
|
|
On a larger scale, a large dedicated SIRC network could be created, with |
298
|
|
|
|
|
|
|
server or network-level accounts and monitoring bots to kick and issue |
299
|
|
|
|
|
|
|
Verified Threat events for any anti-social accounts connected to the |
300
|
|
|
|
|
|
|
Threat Network. |
301
|
|
|
|
|
|
|
|
302
|
|
|
|
|
|
|
=head1 CONCLUSION |
303
|
|
|
|
|
|
|
|
304
|
|
|
|
|
|
|
While not useful for long term blocking, the Decentralised Active Threat |
305
|
|
|
|
|
|
|
Network would dramatically improve the response time to threats, with the |
306
|
|
|
|
|
|
|
goal creating a powerful and effective "nervous system" for detecting and |
307
|
|
|
|
|
|
|
dealing with spammers, virus-infected or trojaned hosts, or other threats |
308
|
|
|
|
|
|
|
for which the damage could be greatly reduced by dealing with them |
309
|
|
|
|
|
|
|
immediately. |
310
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
=head1 GLOSSARY OF TERMS |
312
|
|
|
|
|
|
|
|
313
|
|
|
|
|
|
|
=head2 Active Threat |
314
|
|
|
|
|
|
|
|
315
|
|
|
|
|
|
|
Any internet host that is currently engaged in anti-social or illegal |
316
|
|
|
|
|
|
|
behaviour such as spamming, virus transmission or acting as part of a DDOS |
317
|
|
|
|
|
|
|
or other attack. |
318
|
|
|
|
|
|
|
|
319
|
|
|
|
|
|
|
=head2 Verified Threat |
320
|
|
|
|
|
|
|
|
321
|
|
|
|
|
|
|
A host/ip that can be positively and reliably confirmed to be an Active |
322
|
|
|
|
|
|
|
Threat. |
323
|
|
|
|
|
|
|
|
324
|
|
|
|
|
|
|
=head2 Threat Network |
325
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
An communications network, populated by software agents, for the purpose |
327
|
|
|
|
|
|
|
of rapidly distributing information about, and responding to, Active |
328
|
|
|
|
|
|
|
Threats. |
329
|
|
|
|
|
|
|
|
330
|
|
|
|
|
|
|
=head2 Threat Language |
331
|
|
|
|
|
|
|
|
332
|
|
|
|
|
|
|
A protocol or message format used to describe a Verified Threat on a |
333
|
|
|
|
|
|
|
Threat Network. |
334
|
|
|
|
|
|
|
|
335
|
|
|
|
|
|
|
=head2 Event Listener |
336
|
|
|
|
|
|
|
|
337
|
|
|
|
|
|
|
A software agent which is connected to one or more Threat Networks and |
338
|
|
|
|
|
|
|
receives Verified Threat messages from the network. |
339
|
|
|
|
|
|
|
|
340
|
|
|
|
|
|
|
=head2 Threat Cache |
341
|
|
|
|
|
|
|
|
342
|
|
|
|
|
|
|
A stored list of "current" Active Threats, primarily used to prevent the |
343
|
|
|
|
|
|
|
flooding of duplicate messages onto the Threat Network. |
344
|
|
|
|
|
|
|
|
345
|
|
|
|
|
|
|
=head2 Threat Filter |
346
|
|
|
|
|
|
|
|
347
|
|
|
|
|
|
|
Any collection of IPs or IP networks against which a stream of events |
348
|
|
|
|
|
|
|
is checked, removing or keeping only a certain subset of all events. |
349
|
|
|
|
|
|
|
|
350
|
|
|
|
|
|
|
=head2 Threat Provider |
351
|
|
|
|
|
|
|
|
352
|
|
|
|
|
|
|
An software agent which connects to a Threat Network and submits Verified |
353
|
|
|
|
|
|
|
Threat messages to the network. |
354
|
|
|
|
|
|
|
|
355
|
|
|
|
|
|
|
=head2 Network Bridge |
356
|
|
|
|
|
|
|
|
357
|
|
|
|
|
|
|
A software agent that sits "between" two or more Threat Networks, |
358
|
|
|
|
|
|
|
transmitting new Verified Threat messages between them, after checking |
359
|
|
|
|
|
|
|
against an arbitrary number of Threat Filters. |
360
|
|
|
|
|
|
|
|
361
|
|
|
|
|
|
|
=head2 Threat Response |
362
|
|
|
|
|
|
|
|
363
|
|
|
|
|
|
|
Some action that undertaken to defend against or counter an Active |
364
|
|
|
|
|
|
|
Threat, in response to a Verified Threat message. This could include |
365
|
|
|
|
|
|
|
short-term DNSBL listing, firewall block entries, or actively disabling |
366
|
|
|
|
|
|
|
the internet connection of the host. |
367
|
|
|
|
|
|
|
|
368
|
|
|
|
|
|
|
=head1 PARTICIPATION |
369
|
|
|
|
|
|
|
|
370
|
|
|
|
|
|
|
The website http://ali.as/ will provide a link to the current forums |
371
|
|
|
|
|
|
|
of idea exchange for the ThreatNet project. |
372
|
|
|
|
|
|
|
|
373
|
|
|
|
|
|
|
In addition, there is also a #threatnet channel on FreeNode for testing |
374
|
|
|
|
|
|
|
implementations of the reference implementation described above. |
375
|
|
|
|
|
|
|
|
376
|
|
|
|
|
|
|
=head1 AUTHOR |
377
|
|
|
|
|
|
|
|
378
|
|
|
|
|
|
|
Adam Kennedy Eadamk@cpan.orgE |
379
|
|
|
|
|
|
|
|
380
|
|
|
|
|
|
|
=head1 SEE ALSO |
381
|
|
|
|
|
|
|
|
382
|
|
|
|
|
|
|
L, L, L |
383
|
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
=head1 COPYRIGHT |
385
|
|
|
|
|
|
|
|
386
|
|
|
|
|
|
|
Copyright 2004 - 2008 Adam Kennedy. |
387
|
|
|
|
|
|
|
|
388
|
|
|
|
|
|
|
All ThreatNet modules on CPAN are generally free software; |
389
|
|
|
|
|
|
|
you can redistribute them and/or modify them under the same |
390
|
|
|
|
|
|
|
terms as Perl itself. |
391
|
|
|
|
|
|
|
|
392
|
|
|
|
|
|
|
The full text of the license can be found in the |
393
|
|
|
|
|
|
|
LICENSE file included with this documentation. |
394
|
|
|
|
|
|
|
|
395
|
|
|
|
|
|
|
=cut |