1 |
BOTNET SHARING and LINKING v2.0 03 Jun 1999 |
2 |
|
3 |
|
4 |
|
5 |
INDEX |
6 |
|
7 |
I ABOUT THIS DOCUMENT |
8 |
II TERMS USED |
9 |
III WHAT IS A BOTNET FOR? |
10 |
IV ADDING AND LINKING BOTS |
11 |
V USING BOTFLAGS |
12 |
VI MAKE TWO BOTS SHARE USER RECORD |
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
I. ABOUT THIS DOCUMENT |
20 |
|
21 |
The purpose of this document is to show you what a botnet is for and why |
22 |
it could be useful for you. It also covers botflags and some sharing |
23 |
information which you may need for making your bots faster and more reliable. |
24 |
|
25 |
|
26 |
|
27 |
|
28 |
II. TERMS USED |
29 |
|
30 |
The following are some common terms used in this document. |
31 |
If applicable, there is also the associated command named. |
32 |
|
33 |
|
34 |
Botnet |
35 |
The term used to describe multiple bots connected together. |
36 |
|
37 |
|
38 |
Link |
39 |
The term that means the actual linking of one bot |
40 |
|
41 |
commands: ".link <botname>" ".unlink <botname>" |
42 |
|
43 |
|
44 |
Hub |
45 |
A bot is described as a hub-bot, if one or more bots are linked to |
46 |
it. |
47 |
|
48 |
|
49 |
Leaf |
50 |
A leaf is a non-hub bot connecting to another bot. A leaf has only |
51 |
one other bot connected to it, its hub. Leaf bots can be assigned |
52 |
the "l" botattr flag to prevent other bots from linking to them. |
53 |
|
54 |
|
55 |
Link Bot |
56 |
A link bot is a bot that is linked to another. It may or may not be |
57 |
a hubbot, with other bots linked to it besides its hub. |
58 |
|
59 |
|
60 |
Share |
61 |
The term used to describe two bots sharing user records. |
62 |
|
63 |
|
64 |
Share Bots |
65 |
Share bots is a term used to describe two or more bots sharing user |
66 |
records. |
67 |
|
68 |
|
69 |
Aggressive Share |
70 |
Term used to describe the direction of sharing user-files. |
71 |
Aggressive share bots will SEND userfiles to another passive bot. |
72 |
|
73 |
|
74 |
Passive Share |
75 |
Term used to describe the direction of sharing user-files. |
76 |
Passive share bots will accept userfiles from an active/aggressive bot. |
77 |
|
78 |
|
79 |
Note: With eggdrop1.3.x and up, active/passive designations are relative, not |
80 |
absolute like the prior versions of eggdrop bots, like 1.1.5. A 1.3+ bot may |
81 |
be both active and passive at the same time, in relation to other bots it is |
82 |
connected to. |
83 |
|
84 |
example bottree: |
85 |
|
86 |
superbot |
87 |
| |
88 |
\+intermed |
89 |
| |
90 |
\+peonbot |
91 |
|
92 |
intermed has a master sharebot, superbot and a slave sharebot, peonbot. |
93 |
intermed is passive with [receives from] superbot while being aggressive |
94 |
with [sends to] peonbot at the same time. |
95 |
|
96 |
|
97 |
Flags |
98 |
Flags are attributes that determine what a bot can or is allowed to do. |
99 |
Flags can be either global (+s) or channel specific (|+s #lamest). |
100 |
Botnet affecting flags are: |
101 |
|
102 |
s share (Aggressively SEND userfile to a passive bot (assigned +s flag)) |
103 |
p share (Passively ACCEPT userfile from an agressive bot (assigned +p flag)) |
104 |
g global share (share all channels (this works correctly in 1.4.xx)) |
105 |
h hub (bot is auto-linked) |
106 |
a alternate (bot is auto-linked if the hub bot can't be linked) |
107 |
l leaf (bot is not allowed to link in other bots) |
108 |
r reject (bot will not be allowed on the net) |
109 |
i isolate (isolate the party line across a botlink) |
110 |
0-9 user (user defined flags) |
111 |
|
112 |
command: ".botattr <botname> [(.+<flag> [#channel]) or (.-<flag> [#channel])]" |
113 |
|
114 |
|
115 |
Address |
116 |
The physical address, containing the host and port address of the bot. |
117 |
i.e. lame.org:3333 |
118 |
|
119 |
command: ".chaddr <botname> <hostaddress:botport[/userport]>" |
120 |
|
121 |
|
122 |
Relay |
123 |
The relay port number of the bot if defined in the config file. |
124 |
Note that you can define one for telnet connections to other bots |
125 |
and one for relay connections. |
126 |
|
127 |
|
128 |
Relay connection |
129 |
A relay connection is used to relay (jump) to another bot in DCC chat. |
130 |
You can still relay to another bot even if this is not defined in the |
131 |
conf file. |
132 |
|
133 |
command: ".relay <botname>" |
134 |
|
135 |
|
136 |
Port |
137 |
The telnet port is used by the bot to communicate with other bots and/or |
138 |
users. Note that you can define two separate ports for user and bot |
139 |
connections. |
140 |
|
141 |
|
142 |
|
143 |
|
144 |
III. WHAT IS A BOTNET FOR? |
145 |
|
146 |
Basically a botnet is useful if you want to use more then one bot to protect |
147 |
your channel. Bots linked a botnet can perform script controlled tasks. |
148 |
Such a script can be get-ops (ops each bot in a botnet) or some kind of a |
149 |
prevent-flood stuff. Just take a look at the script directories on |
150 |
ftp://ftp.eggheads.org and you'll find a lot of botnet scripts. |
151 |
|
152 |
Also, linked bots can share common user records (global or channel specific) |
153 |
between each other which helps reduce the time needed to maintain a |
154 |
complete, up to date user record database, needed if you operate your |
155 |
channels in a +bitch mode. However, a warning - such sharing, with current |
156 |
designs, may allow a user on one bot, even a slave bot to alter, change or |
157 |
manipulate the entire botnet userfiles and use the botnet to take control of |
158 |
your channel away from you. |
159 |
|
160 |
|
161 |
|
162 |
|
163 |
IV. ADDING AND LINKING BOTS |
164 |
|
165 |
With the common terms out of the way we can start with the process of |
166 |
linking two bots. Before you start you have to know the following: |
167 |
|
168 |
- What are the domains and ports of the bots. |
169 |
|
170 |
Let's say there is BotA on lame.org listening to port 3333 and BotB |
171 |
on irc.org listening to port 4444. Now you have to add each Bot to the |
172 |
other's userfile (including hostmask, address and listening port of the |
173 |
other bot). In BotA's console you have to type ".+bot BotB irc.org:4444" |
174 |
(assuming that BotB is in the channel and so the hostmask is grabbed |
175 |
automatically, otherwise you have to add it manually with ".+host") and on |
176 |
BotB's console ".+bot BotA lame.org:3333". |
177 |
At this point you can link them for the first time manually by typing |
178 |
".link BotA" on BotB's console (or in reverse, of course with BotB ".link BotB" |
179 |
on BotA's console). The bots will give themselves now randomized passwords, |
180 |
which are *not* stored encrypted in the userfile. Now you've generated your |
181 |
first botnet. |
182 |
Note that you can add and link as much Bots as you want to your botnet. |
183 |
|
184 |
|
185 |
|
186 |
|
187 |
V USING BOTFLAGS |
188 |
|
189 |
Botflags are needed to assign special functions and tasks to your bots. |
190 |
|
191 |
"h" (hub) |
192 |
If you want your bots to auto-link after getting unlinked or started (due |
193 |
to a crash or a server reboot), you have to assign the botattr +h to the |
194 |
bot you want the bot to link to. |
195 |
Note, you can assign +h only to one bot at a time! |
196 |
|
197 |
command: ".botattr <botname> +h" |
198 |
|
199 |
|
200 |
"a" (alternate) |
201 |
If your bots are for some reason not able to link to their hub, they will |
202 |
attempt to connect to an other "alternate-hub", which you can define by |
203 |
setting "+a" on one bot. |
204 |
Note, you can assign +a only to one bot at a time! |
205 |
|
206 |
command: ".botattr <botname> +a" |
207 |
|
208 |
|
209 |
"l" flag (leaf) |
210 |
This flag assigned to a link bot will cause your bot to unlink the leaf |
211 |
one, if it allows any other bots to link to it. |
212 |
|
213 |
command: ".botattr <botname> +l" |
214 |
|
215 |
|
216 |
"r" flag (reject) |
217 |
If you assign this flag to a bot, it won't be tolerated on your botnet and |
218 |
will be unlinked, if it tries to link to your one or any other bot. |
219 |
|
220 |
command: ".botattr <botname> +r" |
221 |
|
222 |
|
223 |
"i" flag (isolate) |
224 |
Setting this flag to a bot will effect an isolation of the partyline |
225 |
between your bot(net) and the other bot(net). |
226 |
|
227 |
command: ".botattr <botname> +i" |
228 |
|
229 |
|
230 |
"0-9" flag (user) |
231 |
These 10 flags aren't hardcoded into eggdrop and can be assigned by scripts |
232 |
or just for fun :-) |
233 |
|
234 |
command: ".botattr <botname> +(0-9)" |
235 |
|
236 |
|
237 |
"s" flag (SEND userfile to bots assigned the +s flag) |
238 |
+s If you set on BotA's console BotB +s then BotA will try to send his |
239 |
userfile (parts selected by |s and g flags) aggressively to BotB. |
240 |
|
241 |
command: ".botattr <botname> +s" |
242 |
|
243 |
|s With this flag you can define channels, which you want your bots |
244 |
to share. |
245 |
Note that you can use this flag only on +s bots! |
246 |
|
247 |
command: ".botattr <botname> |s #lamest" |
248 |
|
249 |
"p" flag (ACCEPT userfile FROM bots assigned the +p flag) |
250 |
If you assign this flag to another bot, your bot will accept userfiles |
251 |
sent from the aggressive bot (as much as you've allowed with |+s or +g) |
252 |
|
253 |
command: ".botattr <botname> +p" |
254 |
|
255 |
|
256 |
"g" flag (global share) |
257 |
If you set this flag on your +s or +p bot, |s and |+s are getting obsolete. |
258 |
Every ban and every user on every single channel will be transfered/accepted. |
259 |
|
260 |
command: ".botattr <botname> +g" |
261 |
|
262 |
|
263 |
|
264 |
|
265 |
VI MAKE TWO BOTS SHARE USER RECORDS |
266 |
|
267 |
Before you start preparing your bots for sharing, you have to make sure that |
268 |
you've loaded the transfer, share and filesys module into your bot (look |
269 |
through the conf). You also have to ensure that the channel, which user records |
270 |
should be shared, is set +shared. |
271 |
|
272 |
When you are adding bot attribute flags to yourbot for other bots to be |
273 |
linked, so that they will all share a common userfile, you cannot dictate |
274 |
how the other link bots will react by setting botattr flag for them in |
275 |
yourbot. You can only control how you want yourbot to react to those bots |
276 |
when they link. |
277 |
|
278 |
By setting specific botattr flags, you can cause yourbot to be aggressive |
279 |
with some link bots and to be passive with other link bots. |
280 |
|
281 |
But remember, no botattr settings in yourbot have any control over how the |
282 |
other bots will react with yourbot. |
283 |
|
284 |
For sharing to work, the flags must be cordinated with one bot agreeing to |
285 |
be passive and accept and the other link bot agreeing to send or share it's |
286 |
userfile. No setting in yourbot can force another bot to accept files |
287 |
yourbot tries to send nor can any such flag force another bot to send or |
288 |
share it userfile. It has to be by mutual agreement to work. Each bot has |
289 |
total control of it own userfile sending and receiving functions. |
290 |
|
291 |
Two primary botattr flags establish the pecking order, +s and +p, defining |
292 |
which bot, by mutual agreement, is to be the aggressive/active bot that |
293 |
sends the master userfile and which will bots will be passive and accept the |
294 |
shared userfile. |
295 |
|
296 |
Yourbot will send userfiles to any others set to botattr +s. |
297 |
Yourbot will accept userfiles from any bot set to botattr +p. |
298 |
|
299 |
Active/aggressive bots send userfiles to link bots with the +s botattr flag. |
300 |
If those bots have the botattr of such an active bot set to +p, then they |
301 |
will passively accept the aggressive sender's userfile. |
302 |
|
303 |
In yourbot, setting slavebot +s will not make slavebot accept yourbot's |
304 |
userfile. It will only make yourbot attempt to send your userfile to |
305 |
slavebot if they link. |
306 |
|
307 |
In yourbot, setting masterbot +p will not make masterbot send its userfile |
308 |
to yourbot. The +p flag only gives masterbot permission to send yourbot a |
309 |
userfile, if masterbot chooses to send one. |
310 |
|
311 |
If you set slavebot +s, then yourbot will try to send slavebot your |
312 |
userfile, once a minute until a successful tranfer is made. If slavebot has |
313 |
not given you write/send permission by adding the +p for yourbot, then |
314 |
slavebot will refuse to accept yourbot's repeated offer to send. Each and |
315 |
every minute you will see this message repeated on yourbot's console: |
316 |
|
317 |
<yourbot> [04:54] User file rejected by Slavebot: You are not marked for |
318 |
sharing with me. |
319 |
|
320 |
With these setting in yourbot: |
321 |
masterbot +p [yourbot will be passive with masterbot] |
322 |
slavebot +s [yourbot will be aggressive with slavebot] |
323 |
|
324 |
On connection to slavebot, slavebot does not ask yourbot to send it |
325 |
userfile. Yourbot is aggressive in relation to slavebot and on linking, |
326 |
yourbot automatically attempts to send its userfile to slavebot without any |
327 |
request and will try to do so every 60 seconds until slavebot accepts the |
328 |
userfile and a successful transfer is completed. |
329 |
|
330 |
On connection to masterbot, yourbot does not ask master to send. If |
331 |
masterbot decides to send, yourbot gives permission and will accept any |
332 |
userfile masterbot might send. |
333 |
|
334 |
If the flags in both bots do not make a +s+p pair, the bots will link but |
335 |
will not share. If the +s+p pair is set properly, but the userfile transfer |
336 |
fails for some reason, the bots will unlink. If with has a +h or +a hub |
337 |
flag set for the other, that bot will seek to relink and upon connection, |
338 |
another attempt to share will be made. If sucessful, the bots will then |
339 |
stay linked and all will be well with the world. :) |
340 |
|
341 |
|
342 |
|
343 |
Note that by sharing user records, you also share automatically bans and |
344 |
ignores (globally or channel specific) with the other bot. Botflags are |
345 |
*not* shared. |
346 |
|
347 |
|
348 |
|
349 |
Hope that this document helped you in some way... |
350 |
|
351 |
|
352 |
The Dev-Team.. |