[NEWS] Bypassing UnrealIRCd IP Cloaking

From: SecuriTeam (support_at_securiteam.com)
Date: 07/07/04

  • Next message: SecuriTeam: "[EXPL] MySQL Authentication Bypass Exploit"
    To: list@securiteam.com
    Date: 7 Jul 2004 16:30:39 +0200
    
    

    The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
    - - promotion

    The SecuriTeam alerts list - Free, Accurate, Independent.

    Get your security news from a reliable source.
    http://www.securiteam.com/mailinglist.html

    - - - - - - - - -

      Bypassing UnrealIRCd IP Cloaking
    ------------------------------------------------------------------------

    SUMMARY

     <http://www.unrealircd.com/> UnrealIRCd is a popular IRC server. One of
    the features it provides is called 'ip cloaking'. The purpose of this
    system is to prevent hostile IRC users from getting the IP address of
    other users. Due to weak hashing function, brute forcing of the cloaked IP
    is easy.

    DETAILS

    Vulnerable Systems:
     * UnrealIRCd version 3.2 and prior versions

    Immune Systems:
     * UnrealIRCd version 3.2.1

    In order to prevent possible brute force attack on the client IP, the
    Unreal IRC server uses three 'keys'. However, the hash function is weak.
    This makes it possible to recover the keys of several IRC networks by
    knowing only one clear text and hashed IP, and another hashed IP.

    Vulnerable Code:
    The IPv4 hashing scheme is the most vulnerable. Code from cloak.c follows:
    /* Do IPv4 cloaking here */
    strlcpy(h1, host, sizeof h1);
    i = 0;
    for (i = 0, p = strtok(h1, "."); p && (i <= 3); p = strtok(NULL, "."),
    i++)
    {
     strncpy(h2[i], p, 4);
    }
    ircsprintf(h3, "%s.%s", h2[0], h2[1]);
    l[0] = ((our_crc32(h3, strlen(h3)) + KEY) ^ KEY2) + KEY3;
    ircsprintf(h3, "%s.%s.%s", h2[0], h2[1], h2[2]);
    l[1] = ((KEY2 ^ our_crc32(h3, strlen(h3))) + KEY3) ^ KEY;
    l[4] = our_crc32(host, strlen(host));
    l[2] = ((l[4] + KEY3) ^ KEY) + KEY2;
    l[2] &= 0x3FFFFFFF;
    l[0] &= 0x7FFFFFFF;
    l[1] &= 0xFFFFFFFF;
    snprintf(cloaked, sizeof cloaked, "%lX.%lX.%lX.IP", l[2], l[1], l[0]);
    free(host);
    return cloaked;

    In the code above:
    h2[0], h2[1], h2[2], h2[3] contain the four bytes of the original IP.
    l[0], l[1], l[2] contain the hashed IP.
    Thus:
    l[0] = (((crc32("1.2") + key1) ^ key2) + key3) & 0x7FFFFFFF;
    l[1] = (((crc32("1.2.3") ^ key2) + key3) ^ key1) & 0xFFFFFFFF;
    l[2] = (((crc32("1.2.3.4") + key3) ^ key1) + key2) & 0x3FFFFFFF;

    crc32(xxx) and l[x] are known. The three keys are used in such a way that
    the n-th bit of any key does not affect bits bellow n in the hash.

    A program that runs a brute force attack one bit at a time was written as
    a Proof of Concept. It takes less than one second to do that on a Pentium4
    1.8ghz.

    Doing this on a known IP produces around 2000 possible key combinations.
    It is then trivial to test them all in order to find the working ones.

    ADDITIONAL INFORMATION

    The information has been provided by <mailto:bartavelle@bandecon.com>
    bartavelle.
    The original article can be found at:
    <http://www.bandecon.com/advisory/unreal.txt>
    http://www.bandecon.com/advisory/unreal.txt

    ========================================

    This bulletin is sent to members of the SecuriTeam mailing list.
    To unsubscribe from the list, send mail with an empty subject line and body to: list-unsubscribe@securiteam.com
    In order to subscribe to the mailing list, simply forward this email to: list-subscribe@securiteam.com

    ====================
    ====================

    DISCLAIMER:
    The information in this bulletin is provided "AS IS" without warranty of any kind.
    In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.


  • Next message: SecuriTeam: "[EXPL] MySQL Authentication Bypass Exploit"

    Relevant Pages

    • [TOOL] RWKG Random WEP/WPA Keys Generator
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... The RWKG tool can be used to generate random WEP and WPA keys. ... These randomly generated a strings of allowed ASCII characters are then ... # Random WEP/WPA Keys Generator ...
      (Securiteam)
    • [TOOL] GPCul8r - Group Policy Bypassing Tool
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... GPCul8r - Group Policy Bypassing Tool ... with normal editing of these registry keys. ...
      (Securiteam)
    • [TOOL] Keyfinder - Cryptographic Analyzing Tool
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... Keyfinder analyzes files for public/private keys, ... It identified such areas by measuring the entropy, ... int ext_entropy; ...
      (Securiteam)
    • [NT] Windows XP Firewall Bypassing (Registry Based)
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... Firewall's registry keys allow local attackers to bypass the Firewall ...
      (Securiteam)
    • [TOOL] Weplan - WEP Testing Lab
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... - ASCII brute force 64 bits or 128 bits keys ... FMS attack gives positive results from 1,000,000 captured packets (normal, ...
      (Securiteam)

  • Quantcast