СуперБан - что за зверь

Вирусы, баги, социальная инженерия и остальные угрозы безопасности в компьютерном мире.

СуперБан - что за зверь

Непрочитанное сообщение Гость » 17 сен 2006, 12:18:20

KASH писал(а):Правила форума

7.9. В особо "тяжёлых" случаях (например, попытки взлома форума, создания множества аккаунтов, т.е. "захламление" базы пользователей и др.) действует перманентный бан (блокировка по IP + браузеру + ID компьютера и т.д.).

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

Система блокировки по индивидуальным харакетристикам машины в последнее время приобретает все больше популярности в интерактивных web-системах - в чатах, форумах, гостевых книгах и т.п. Рост популярности объясняется недостатками традиционных методов бана. Блокировка по IP адресу легко обходится использованием прокси-серверов. Блокировка по кукам или нику снимается удалением куков или созданием нового аккаунта. В то же время, обойти супербан не так легко, поскольку большинство пользователей даже не знают на каком принципе он основан.

В качестве примера супербана, рассмотрим систему бана, применяемую в форумах FastBB ( http://fastbb.ru ).

Страница форума содержит специальный скрипт, выполняющийся на машине пользователя, и определяющий параметры его машины. Цель данного скрипта - сформировать уникальный ключ, по которому система будет определять пользователей. Ключ на каждой машине должен отличаться от ключей на других машинах, и в то же время быть неизменным.

Вот этот скрипт:
Код: Выделить всё
<xml:namespace ns='http://www.microsoft.com/ie' prefix='IE'><STYLE>@media all{IE:clientCaps {behavior:url(#default#clientcaps);}}</STYLE><IE:CLIENTCAPS ID="oClientCaps"><script Language="JavaScript">
var IeData = "";
var dd = new Date();
region = Math.round(dd.getTime() / 1000) - 1094027898;
var RandomNumber = 1094027898;
AllData = region+"/"+window.screen.width+"/"+window.screen.height+"/"+window.screen.com/lorDepth;

random_line="gsw~rn e}~DqheFdHmj] 7Lmceh,s]~es{M]lJw O}Lg5#&aL@,hqD9Ut]F0~FjicMcJfk+b=#V&)R"
+"'H^&&S)+N*PNjFr*%(5o&&qS8RT#Nkn#fcT'O&%L(+qSNoj6NSR%,GU;dL(Fm&#65533;QT9P:#^hrg%T"
+";M.NQj7o/#%)6p&dl;6ph#LSFM&NU:HM)e#gn%:RN)!V.#%U%MSdM)INhNQU#^&#65533;L(KU&*M.6Rib!h"
+"<Q:NmSQ dnU~NhMUK^QMqS+M&Ml(5n/#M.H&fa#i%P o,KOh#N,^*o(+V;#Mj5MQML(GV*l.["
+"eb;!r Qn=5^S%US+N*PMjGRS)%(5M&RT(~N;Qkn#fcQSp/Qp(+PUTj6NT#%,7NUdP/9R;^Q/5M&"
+"#^hrg:U,7M(#LjJoRP%)6oVdTTRh#LSFM&*8U)e#gn%&:m(JRS#%/KoRdM)HrhMlS~^&#65533;P(6o/"
+"#T.~Rib!h<Q;Ql=~m&dl:!VhMV6^R*mX+M&#65533;LXM;Q)~&fa#iIq;MpV5MhMPTK^*o)+V=&Tj5MS#P"
+"X%URNn'[eb:7p/RO)7^R#q +N*PLj%QQN%(5U&OS/HTU;Qkn#fcP/GnQ:P:+oS*Mj6NSR%SFrQdL("
+"Fm&#65533;m 5N;N^hrg^lX8S(^LjFO/;%)6p*dm.Grh#L(5r #Q)~N;e#gn%:&mTFU:#%UHR*dM)HrhMlX"
+"F^&#65533;lS5MR(L)~oib!h<oS%l'Gm&dOTIphMV5^ %MW+Q:&Q.8R:#L(5&fa#i5UR#p.HMh&qUG^*nX+m"
+"QMQj5M:#MU!M *L([eb 5n:;p;9^S)nU+N*PLjV;^%(5m&OU(8Q.Rqkn#fcL;KV=:m:+MU#Lj6NT"
+"^%S9V dL(6M:NRWGR(Q^hrg#qVJNV*Rj5p;;%/Kp.dU 7QhQOVKSR&M'IMUe#gn%*#L=7oUO%,Ho*"
+"dM)INh;T J^&#65533;l(HV;*7rib!h<NR#L=7RRdn/~Rh&oW!^RRm +mT*P(Fp:%SUI&fa#i9O.:n:#MhMN"
+" %^*o)+n;Nqj5M&#65533;q,5R**M.[eb/9nRMT.~^SOQ)+N*OqjFmVM%(5mQ#LT!M**nkn#fcPX!Q;%N("
+"+P&(oj6NT%%'%RTdL(HM:RU,GnS;^hrg*qV8V=OLjFT&M%)6p*dU'9Uh#LU5QV;TTGo=e#gn%/^LT"
+"6pQ#%T9S;dM)INh;U/^&#65533;n(9r=:mTHVib!h<SVMm'%p&dmSGUhMV6^=;PS+M&OL/KV NmU%&fa#iHV"
+"U;l;9MhPMX6^*o(+U(pj9Q:*Q;~Q&(L([ebV7TSPm J^QQRV+N*Oqj%SR:%/9Q;*O.9M&#65533;Lkn#f"
+"cp'7n&^lT+n.#Sj6NT%%'HnTdL(5MV:SS8S=Q^h 7jg{Gw4Lmcenny@LbnnyhnGrb4[+ws}Jt6Ann"
+"mi4iA H]Gww!EO+Aj@JO.Hx9wqeUt]FA]wsf!qcKnaD]3Ut]F0:Annoa#Ut]FA]wsfYP#@,hqD9sf "
+"c@9jdbEaDnf+b!h 7jg{Gw4Lmceo<z@Lbo<zh.sf9Bq]yyr@vnBb:[c.sf;zvnqb:@m.sc<zv;j+"
+"7so=po<zk)ff qjnBo/@H.J-Dqz,GrzKy ww!so=p5/mb#oh,sjMqbfi=uh;(k)hn:so=p8/@e^l@";
random_line2="@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!#%^&*():;/. =,'{-}rn<+[]";

random = location.pathname;

if (random)
{
   fin = ""; pos = 0;
   for (i=0;i<random_line.length;i++)
   {
      first = random_line.charAt(i); second =   random.charAt(pos);
      fin+=random_line2.charAt((random_line2.indexOf(first)-random_line2.indexOf(second)+random_line2.length)%random_line2.length); pos = (pos+1)%random.length;
   }
eval(fin);
fin=random_line2=random_line=random="";
}
var IeData = "/"+oClientCaps.com/nnectionType+"/"+navigator.systemLanguage+"/"+navigator.browserLanguage+"/"+navigator.userLanguage+"/"+RandomNumber;
</script>
bla bla bla....
<form name=countform action="/re.pl" method=POST onsubmit="return Test(this)">
....
<script Language="JavaScript">document.write("<input type="Hidden" name="Statistic" value=""+AllData+IeData+"">");</SCRIPT>
....
</form>


Сначала создается объект oClientCaps. Он необходим для доступа к параметрам машины. Далее вычисляются такие параметры как разрешение экрана и глубина цвета, которые также используются в составе ключа. Затем следует самая интересная часть. Строке random_line присваивается зашифрованный скрипт, который затем расшифровывается и выполняется в строке eval(fin);. При расшифровке используется переменная random = location.pathname;, которая в форуме fastBB принимает значение /re.pl.

Шифрование скрипта было, видимо, сделано для скрытия от пользователя принципа составления ключа.

Расшифровав содержимое строки random_line, мы получим следующий скрипт:
Код: Выделить всё
var bbb = new Array();var ccc = new Array(0,0,0,0);var CompO=new Array('{7790769C-0471-11D2-AF11-00C04FA35D02}','{89820200-ECBD-11CF-8B85-00AA005B4340}','{283807B5-2C60-11D0-A31D-00AA00B92C03}','{4F216970-C90C-11D1-B5C7-0000F8051515}','{44BBA848-CC51-11CF-AAFA-00AA00B6015C}','{9381D8F2-0288-11D0-9501-00AA00B911A5}','{36F8EC70-C29A-11D1-B5C7-0000F8051515}','{5A8D6EE0-3E18-11D0-821E-444553540000}','{89820200-ECBD-11CF-8B85-00AA005B4383}','{08B0E5C0-4FCB-11CF-AAA5-00401C608555}','{45EA75A0-A269-11D1-B5BF-0000F8051515}','{DE5AED00-A4BF-11D1-9948-00C04F98BBC9}','{22D6F312-B0F6-11D0-94AB-0080C74C7E95}','{44BBA842-CC51-11CF-AAFA-00AA00B6015B}','{3AF36230-A269-11D1-B5BF-0000F8051515}','{44BBA840-CC51-11CF-AAFA-00AA00B6015C}','{CC2A9BA0-3BDD-11D0-821E-444553540000}','{08B0E5C0-4FCB-11CF-AAA5-00401C608500}','{60B49E34-C7CC-11D0-8953-00A0C90347FF}','{03F998B2-0E00-11D3-A498-00104B6EB52E}','{0FDE1F56-0D59-4FD7-9624-E3DF6B419D0E}','{10072CEC-8CC1-11D1-986E-00A0C955B42F}','{1B00725B-C455-4DE6-BFB6-AD540AD427CD}','{4278C270-A269-11D1-B5BF-0000F8051515}','{44BBA855-CC51-11CF-AAFA-00AA00B6015C}','{4F645220-306D-11D2-995D-00C04F98BBC9}','{5FD399C0-A70A-11D1-9948-00C04F98BBC9}','{630B1DA0-B465-11D1-9948-00C04F98BBC9}','{6FAB99D0-BAB8-11D1-994A-00C04F98BBC9}','{C9E9A340-D1F1-11D0-821E-444553540600}','{D27CDB6E-AE6D-11CF-96B8-444553540000}','{E92B03AB-B707-11D2-9CBD-0000F87A369E}');

for(var iii=0;iii<CompO.length;iii++){var Ver=oClientCaps.getComponentVersion (CompO[iii],'ComponentID');var aaa = Ver.split(',');

for(var jjj=0;jjj<aaa.length;jjj++){aaa[jjj]++;aaa[jjj]--;ccc[jjj]+=aaa[jjj];var RandomNumber=ccc[0]+''+ccc[1]+''+ccc[2]+''+ccc[3];}}

Как видим, в скрипте перебираются установленные компоненты системы (около 30 штук) и определяется их версия. Числовые значения версий складываются, и вычисляется величина RandomNumber, которая затем используется как часть составного ключа.

Составной ключ передается серверу в поле Statistic формы отправки постингов:
Код: Выделить всё
<form name=countform action="/re.pl" method=POST onsubmit="return Test(this)">
....
<script Language="JavaScript">document.write("<input type="Hidden" name="Statistic" value=""+AllData+IeData+"">");</SCRIPT>
....
</form>

Результирующий ключ имеет такой вид (для данной машины):
-17/1024/768/32/moderu/ru/uk/13751804473136645
и включает в себя следующие элементы:
# код региона (-17)
# разрешение экрана (1024/768)
# глубина цвета (32)
# тип соединения (modem)
# языки, установленные в системе (ru/ru/uk)
# уникальный ключ версий компонент системы (13751804473136645)

Итак, алгоритм работы бана форума следующий: При возникновении ситуации бана (например постинг более 10 сообщений в минуту), система добавляет IP адрес и уникальный ключ в список бана.

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

Для разблокировки супербана, необходимо выполнить следующие действия: Изменить свой IP-адрес, удалить куки форума, поменять свой ник, и выполнить какие-либо действия, меняющие уникальный ключ (например изменить разрешения экрана). После рефреша страницы сайта, система сгенерирует новый уникальный ключ, запрос поступит с нового IP-адреса и система не сможет "узнать" забаненного пользователя.

Для упрощения снятия бана, была разработана программа http://antichat.ru/soft/AntiBan.zip. Эта программа позволяет разблокировать бан на форумах fastBB, в чатах chat.php.spb.ru и в других системах, основанных на "супербане".
(C) Algol.
Гость
 

СуперБан - что за зверь

Непрочитанное сообщение Гость » 17 сен 2006, 14:27:57

OblepiX`a писал(а):Далее, если от пользователя поступает запрос, в котором присутствует либо забаненый IP, либо забаненый уникальный ключ, то система не разрешает доступ к форуму, а IP и ключ снова заносятся в бан-лист (если один из них изменился).


А в таком случае вопрос:
как вообще работает курскнет??
может произойти такое, чтоб с долей вероятности могло забанить левого человека? (с таким же ИП)
Гость
 

СуперБан - что за зверь

Непрочитанное сообщение Гость » 17 сен 2006, 14:41:32

Что-то у меня есть ощущение, что данный скрипт - IE-only и MS-only.

А у меня лиса, да ещё и под линухом :) И я ведь ещё и lynx запустить могу, который вообще на все скрипты чихать хотел с высокой колокольни :)

В общем, ловушка для кулхацкеров, юзающих MS осла.

Особенно эротично на этом форуме будет смотреться попытка забанить по IP сидящих с курскнетовской халявы :)
Гость
 

СуперБан - что за зверь

Непрочитанное сообщение Гость » 11 фев 2007, 02:08:33

раз использует API GetComponentVersion, значит уж точно для MS. Но я думаю, продвинутые скрипты определят и другую ОСь.
Бороться можно и с этим. Ни в одной ОСи простому скрипту не дадут прочитать заводской серийник видеокарты. Т.е. сканируют они хардварный профиль по установленному для него софту. Есть и некоторые программы, которые для аутентификации дают Hardware Key. Вытащите мышь из USB порта и вставьте в другой -- получите новый ключ.
А уж написать kernel-mode "shuffler" вообще не составит труда, да и отследить его ни один скрипт не сможет. Главное -- знать, по каким параметрам выбираются сведения, потому что шаффлить всё подряд -- не вариант. А с этим уже сложнее, потому что алгоритмы шифруются (см. пример)
Гость
 

СуперБан - что за зверь

Непрочитанное сообщение Alex ilmarranen » 11 фев 2007, 04:02:26

2Гребеньков А ведь преценденты вроде были… :-D подключались… а на форумъ не идётъ… ))) Наверное оно было… Хотя я не уверенъ…. =-O

40iN_KoS Если ты про халяву… - то примерно след. образомъ…. сотня подлючений… т.е. 100 айпишниковъ… забанили одинъ… вышелъ… другой зашёлъ… - и ему форумъ говоритъ идти дальше чемъ видишь… )) Потому то Гребеньков и упоминаетъ эротичность способа… Ну это вслучае системы "голого айпишника"…

З.Ы. Я ничего не напуталъ…? =-O
Alex ilmarranen
 

СуперБан - что за зверь

Непрочитанное сообщение K--H » 27 апр 2008, 16:18:54

А… Фигня всё это. =) Всегда использовался и используется гораздо продуктивный метод бана — бан номера телефона на модемном пуле. ;)
Изображение
Изображение
K--H
Администратор
Администратор
 
Сообщения: 789
Зарегистрирован: 21 июн 2006, 15:26:24
Откуда: Курск
Пол: Мужской
Имя: Александр

СуперБан - что за зверь

Непрочитанное сообщение BeteTest » 27 апр 2008, 22:06:26

Бан на год -> военкомат )))

А как быть если человек не с "халявы", мобильник не забанишь ))), на одном IP по 1000 челоффеков? Так что этого исключать не стоит.

Кстати, часто стал замечать применяют таки вещи как текст на картинке - словами цифры, а еще всякие задачки и вопросики, например цитаты из правил форума, очень интересная вещь, особенно даже для уже зарегиных пользователей.
Еще фишку можно приладить, отправка ссылок и ЛС после н-ного кол-ва сообщений.
BeteTest
 


Вернуться в Информационная безопасность

Кто сейчас на форуме

Зарегистрированные пользователи: AhrefsBot [Bot], Google [Bot], SEMrush [Бот], Trendiction [Бот], Яндекс [Бот]