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

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

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

Итак, пишем собственного бота для работы со стороннем браузером на 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 560
BIT
36
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 КБ · Просмотры: 201
  • Нравится
Реакции: SooLFaa

SooLFaa

Platinum
15.07.2016
898
1 560
BIT
36
Пожалуйста
Посмотреть вложение 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 560
BIT
36
Твоя программа то универсальная, но требует прав администратора, и заточена под винду) + еще нужно добавить сертификат в хранилище доверенных сертификатов и обойти антивирус или фаерволл. Если рассматривать вариант добровольной установки, то претензий нет, а вот в ином случае будет посложнее) По поводу фаерфокса, я прикрепил исходники в сообщении, можешь попробовать) Кароче, это немного другой подход, просто продемонстрировал что и так тоже может работать, со своими плюсами и минусами, сейчас малварных расширений полно
Что за бред то опять?! Опять голословные выкрики. Не требует моя программа ни прав администратора, антивирусы тем более не детектят потому что это впринципе не вирус. А фаерволл тут причем? И сертификаты никакие добавлять тоже не надо. Надо просто сделать двойной клик по иконке 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
Как бы валлпапер рабочего стола получить?

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

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