• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Имитация взлома или как обманывают во Вконтакте

Попросил меня мой хороший товарищ, написать такую программу, которая будет менять вёрстку в браузере на лету, дабы похвастаться перед друзьями сколько много у него денег на счету или обмануть каких - нибудь людей "взломом вк".

Казалось бы, "Да чё нам стоит - дом построить", залез в исходный код элемента, нажал редактировать элемент, поменял в вёрстке на нужный элемент. Профит. Дело это, конечно, хорошее, но беда в том, что ничего из этого не выйдет и после перезагрузки страницы наш счет вернется на прежний. Что же давайте это поправим....

Итак, пишем собственного бота для работы со стороннем браузером на C# или прокси сервер.

Надо ли говорить, что в ненадежных руках, эта штука, представляет серьезную опасность, поэтому сорцы будут чуток битые.

Поехали.

Открываем Visual Studio, создаем консольный проект. А далее устанавливаем следующий пакет.
Код:
Install-Package Titanium.Web.Proxy

Как это сделать?

Открываем Консоль диспетчера пакетов
upload_2016-12-30_0-18-34.png


И в окне вводим команду выше.

А далее всё просто. Пишем следующий код.

Код:
using System;
using System.Net;
using System.Threading.Tasks;
using Titanium.Web.Proxy;
using Titanium.Web.Proxy.EventArguments;
using Titanium.Web.Proxy.Models;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            ProxyServer proxy = new ProxyServer();

            proxy.TrustRootCertificate = true;
            proxy.BeforeRequest -= OnRequest; // Подписываем методы запрос
            proxy.BeforeResponse -= OnResponse; // Подписываем методы ответа
            proxy.ServerCertificateValidationCallback -= OnCertificateValidation; // Получени сертификата для SSL
            proxy.ClientCertificateSelectionCallback -= OnCertificateSelection;

           // Создаем точки входа и исключения
            ExplicitProxyEndPoint explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 8000, true);
            proxy.AddEndPoint(explicitEndPoint);
            proxy.Start();

            var transparentEndPoint = new TransparentProxyEndPoint(IPAddress.Any, 8001, true)
            {
                GenericCertificateName = "google.com"
            };

            proxy.AddEndPoint(transparentEndPoint);

            foreach (ProxyEndPoint endPoint in proxy.ProxyEndPoints)
                Console.WriteLine("Listening on '{0}' endpoint at Ip {1} and port: {2} ",
                    endPoint.GetType().Name, endPoint.IpAddress, endPoint.Port);

            // Устанавливаем прокси
            proxy.SetAsSystemHttpProxy(explicitEndPoint);
            proxy.SetAsSystemHttpsProxy(explicitEndPoint);

            Console.Read();

            proxy.BeforeRequest -= OnRequest;
            proxy.BeforeResponse -= OnResponse;
            proxy.ServerCertificateValidationCallback -= OnCertificateValidation;
            proxy.ClientCertificateSelectionCallback -= OnCertificateSelection;
            proxy.Stop();
        }

        public static async Task OnRequest(object sender, SessionEventArgs e)
        {
            Console.WriteLine(e.WebSession.Request.Url);

            requestHeaders = e.WebSession.Request.RequestHeaders;

            var method = e.WebSession.Request.Method.ToUpper();
            if ((method == "POST"))
            {
                byte[] bodyBytes = await e.GetRequestBody();
                await e.SetRequestBody(bodyBytes);
                string bodyString = await e.GetRequestBodyAsString();
                await e.SetRequestBodyString(bodyString);
            }
        }

        public static async Task OnResponse(object sender, SessionEventArgs e)
        {
            var responseHeaders = e.WebSession.Response.ResponseHeaders;
            if (e.WebSession.Request.Method == "GET" || e.WebSession.Request.Method == "POST")
            {
                // Если всё ок возвращаем ответ
                if (e.WebSession.Response.ResponseStatusCode == "200")
                {
                    if (e.WebSession.Response.ContentType != null && e.WebSession.Response.ContentType.Trim().ToLower().Contains("text/html"))
                    {
                        byte[] bodyBytes = await e.GetResponseBody();
                        await e.SetResponseBody(bodyBytes);
                        // если запрашиваем вконтакте
                        if (e.WebSession.Request.Url.Contains("vk.com"))
                        {
                            //то изменяем верстку
                            string body = e.GetResponseBodyAsString();
                            await e.SetResponseBodyString(body.Replace(@"<span class=""current_text"">W.E.L.C.O.M.E..</span>", @"<span class=""current_text"">Специально для Codeby</span>"));
                        }
                        else
                        {
                            string body = await e.GetResponseBodyAsString();
                            await e.SetResponseBodyString(body);
                        }
                    }
                }
            }
        }

        public static Task OnCertificateValidation(object sender, CertificateValidationEventArgs e)
        {
            if (e.SslPolicyErrors = System.Net.Security.SslPolicyErrors.None)
                e.IsValid = true;

            return Task.FromResult(0);
        }

        public static Task OnCertificateSelection(object sender, CertificateSelectionEventArgs e)
        {
            return Task.FromResult(0);
        }
    }
}

Меня просили пилить видосики к статьям, вот Вам видосик.

 

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
19
API расширений несильно отличаются друг от друга, и в основном отличия есть у firefox, но в целом для таких нужд их практически нет, все взаимодействие идет через JS код, манипулированием DOM, что в разы мощнее, чем простая замена текста в запросе, установка - через настройки браузера или стор приложений, вопрос доставки - это уже другой вопрос). Плюсы: кроссплатформенность, работать будет на любом современном браузере, возможность выполнять некоторые действия от лица пользователя, не нужно заморачиваться с сертификатами для ssl и системными прокси, минусы: может быть задержка в обработке сложной логики при переходах в SPA приложениях) а в случае с прокси кстати в SPA ничего вообще не будет работать
Вообще не верно. Писать расшерение для каждого браузера с учетом чего разных вебкитов и прочего это тупость. По поводу JS и дом модели не в тему, потому что кто тебе мешает добавить в овтет <script>alert(1)</script> и вот тебе дом модель. Далее стор приложений, куда тоже попасть надо и НЕ будет работать или будет но заточено под одну цель. Проблемы с SSL останутся так как расширение не расширение ты даже через api если что то будешь делать тебе потребуется сертификат. А вот в случае с прокси в SPA всё прекрасно работает. Потому что прокси это тпуо reuest response.
[doublepost=1484045358,1484044731][/doublepost]И вообще мне не нравится, когда говорят не будет работать, потому что иди на ***. Ты для начала попробуй, напиши 100 расширений под все браузеры, и собери мой код, сравни между собой, покажи профиты, что нельзя js использовать или ещё что, докажи что писать 100 расширений продуктивнее чем писать прокси - сервер. Покажи как ты будешь взаимодействовать со своим расширением из другого приложения(т.е. смысл этой статьи как раз в том, как моожно из своего кода делать любые штуки с версткой в браузере). И самое главное попробуй написать расширение которое будет имитировать хек в вк и залить в гугл сторе.
 
C

cutoff

Пожалуйста
pwned.PNG

est.PNG

По поводу кучи расширений под кучу браузеров - неа, все делается в 1 расширении, реализуется через обертку над API и проверку браузера, по поводу ssl тоже нет, есть бекграунд часть, из под которой можно крутить запросы к сторонним сервисам и класть их в local storage браузера, которая доступна в клиентской части, в прикрепленных файлах код каркаса такого расширения, тестил на Chrome, Chromium, Firefox, Opera, Yandex Browser. При желании можно поднять сервер и управлять всей этой штукой удаленно, меняя функционал на лету. Вопрос о доставке я не рассматриваю, тут в обоих случаях нужно попыхтеть) Ну и все таки задержка имеется в моем варианте, пока js прогрузится, так что не для любого варианта) Зато из под расширения доступен API браузера, можно открывать вкладки, и еще много чего интересного.
 

Вложения

  • example_multibrowser_extension_template.zip
    40,1 КБ · Просмотры: 169
  • Нравится
Реакции: SooLFaa

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
19
Пожалуйста
Посмотреть вложение 8530
Посмотреть вложение 8532
По поводу кучи расширений под кучу браузеров - неа, все делается в 1 расширении, реализуется через обертку над API и проверку браузера, по поводу ssl тоже нет, есть бекграунд часть, из под которой можно крутить запросы к сторонним сервисам и класть их в local storage браузера, которая доступна в клиентской части, в прикрепленных файлах код каркаса такого расширения, тестил на Chrome, Chromium, Firefox, Opera, Yandex Browser. При желании можно поднять сервер и управлять всей этой штукой удаленно, меняя функционал на лету. Вопрос о доставке я не рассматриваю, тут в обоих случаях нужно попыхтеть) Ну и все таки задержка имеется в моем варианте, пока js прогрузится, так что не для любого варианта) Зато из под расширения доступен API браузера, можно открывать вкладки, и еще много чего интересного.
Пока это просто картинка. Даже не видосик. Где ты нажимаешь кнопочку скомпилить и у тебя работает во всех браузерах сразу. Дальше где ie? Дальше Что значит в обоих случаях попыхтеть? Я сомневаюсь, что в firefox и хроме будет работать одинаково без каких либо переделок. Ибо у них разные webkit'ы, В моем случае не надо в стор загружать и я могу форму прикрутить, как два байта переслать, сейчас я захотел менять верстку так, изменил в формочке и теперь она будет меняться иначе. В одну консольную команду. В твоем случае мне надо пересоздать все 100 расширений.

А теперь смотри с SSL
"Есть бекграунд часть, из под которой можно крутить запросы к сторонним сервисам и класть их в local storage браузера, которая доступна в клиентской части, в прикрепленных файлах код каркаса такого расширения, тестил на Chrome, Chromium, Firefox, Opera, Yandex Browse"
Далее смотри
При желании можно поднять сервер и управлять всей этой штукой удаленно, меняя функционал на лету.
Далее
Ну и все таки задержка имеется в моем варианте, пока js прогрузится, так что не для любого варианта
И вот это никак не аргумент, потому что об апи браузера речи не идет вообще и это уже другой функционал, если мне понадобиться вся радость web api, я возьму selenium. Да и вообще апи - вещь вообще не кроосбраузерная.
Зато из под расширения доступен API браузера, можно открывать вкладки, и еще много чего интересного.
К чему эти цитаты?!
В моем подходе нет ни одной этой проблемы: То есть легко управляемая, я могу написать универсальную программу, которая работать будет без вариантов во всех браузерах и не только браузерах а так же снифферах, и приложениях, идущих в сеть, с ssl мне не пришлось заморачиваться вообще. Отсюда я задам всего один вопрос: "Зачем ехать в Москву через Китай?"

Хотя ты молодец, что заморочился.
P.S. Для API функций старый добрый WinApi Хэндл окна и ShellExecute.
 
C

cutoff

Твоя программа то универсальная, но требует прав администратора, и заточена под винду) + еще нужно добавить сертификат в хранилище доверенных сертификатов и обойти антивирус или фаерволл. Если рассматривать вариант добровольной установки, то претензий нет, а вот в ином случае будет посложнее) По поводу фаерфокса, я прикрепил исходники в сообщении, можешь попробовать) Кароче, это немного другой подход, просто продемонстрировал что и так тоже может работать, со своими плюсами и минусами, сейчас малварных расширений полно
 

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
19
Твоя программа то универсальная, но требует прав администратора, и заточена под винду) + еще нужно добавить сертификат в хранилище доверенных сертификатов и обойти антивирус или фаерволл. Если рассматривать вариант добровольной установки, то претензий нет, а вот в ином случае будет посложнее) По поводу фаерфокса, я прикрепил исходники в сообщении, можешь попробовать) Кароче, это немного другой подход, просто продемонстрировал что и так тоже может работать, со своими плюсами и минусами, сейчас малварных расширений полно
Что за бред то опять?! Опять голословные выкрики. Не требует моя программа ни прав администратора, антивирусы тем более не детектят потому что это впринципе не вирус. А фаерволл тут причем? И сертификаты никакие добавлять тоже не надо. Надо просто сделать двойной клик по иконке exe, она даже прокси сама пропишет. И ты видео глянь, я сразу билд и всё заработало на сайте вк где всегда SSL
 
C

cutoff

попутал с фиддлером) посмотрел саму либу, все норм
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
[showtogroups="25"]
Опять этот петух...
Нужно его наказать... 2минута 57 секунда - говорит что мой СКРИПТ,когда все знают что это скрипт @SooLFaa
[/showtogroups]
 
A

Alexs565

Интересно! Спасибо за код. Только последнюю ошибку найти не могу )
 
D

darkmaker

АХТУНГ! Темой уже заинтересовались некоторые неблагонадежные граждане. Киньте тему под хайд, чует мое сердце, что грядет волна кидалова хомячков на просторах соц. сетей.
 

N4G4

One Level
29.09.2019
4
6
BIT
0
Как бы валлпапер рабочего стола получить?

Я даже не знаю зачем и как использовать информацию выше.
Это мощнейший инструмент для СИ деятеля, у меня есть программа которая похожа на эту, но идея там не в верстке, написал на пайтоне, она выдает данные уже существующих аккаунтов которые угонял на смс активаторе, так вот на видео я продемонстрировал атаку конкретной цели цель выбиралась через рандом орг, естественно это всё фейк, но довольно качественный и личка была забита просьбами взломать или продать программу, автору большое спасибо, идея с версткой нова лично для меня, от души так сказать!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!