Страница 12 из 14

Добавлено: 14 мар 2014, 19:36
andruw
flylinkdc писал(а):В общем я правлю код чтобы поддерживался детект и таких случаев.
Правильно, поддерживайте костыль, скоро все будут днс слать

Добавлено: 14 мар 2014, 19:47
flylinkdc
Подрубаюсь к хабу dchub://dc.info-lan.ru:4111
там всего 75 юзерков
В отладчике такое - текущий алгоритм этого не ловит

Код: Выделить всё

20:41:26 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:26 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:26 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:26 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:26 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:26 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:26 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:26 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:27 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:27 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:27 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:27 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:27 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:28 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:28 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:28 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:28 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:29 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:29 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:29 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:29 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:29 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:29 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:30 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:30 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:30 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:30 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:31 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:31 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:31 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:31 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:31 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:32 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:32 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:32 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:32 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:32 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:33 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:33 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:33 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111
20:41:34 Hub:	[Incoming][46.32.64.41:4111]	 	$ConnectToMe FlylinkDC-dev-debug verlihub.org:4111

Добавлено: 14 мар 2014, 19:48
flylinkdc
andruw писал(а):Правильно, поддерживайте костыль, скоро все будут днс слать
не понял про костыль - сейчас идет коннект и подобный частый коннект не лочится детектором атак
я это и хочу поправить.
остальные клиенты так-же выполняют коннекты по подобной команде
или вы о чем-то другом?

Добавлено: 14 мар 2014, 21:00
andruw
Извиняюсь, я неправильно понял...

Добавлено: 16 мар 2014, 13:47
HackFresse
А где искать спецификацию на nmdc?

Я смотрел на http://wiki.gusari.org/index.php?title=$ConnectToMe и http://wiki.mydc.ru/$ConnectToMe , а также http://sourceforge.net/p/nmdc/svnroot/H ... k/NMDC.txt

Везде указывается IP или ник на хабе (или даже сразу вроде "$ConnectToMe {ник_отправителя} {ник_получателя} {ip_отправителя}:{порт_отправителя}|"), но никаких доменных имён.

Я бы вообще такие коннекты банил/игнорил на моменте поступления. Резольвер нужен только для коннекта к хабу, всё остальное - только по IP и только после всяких разных нужных проверок

Добавлено: 16 мар 2014, 14:08
flylinkdc
Я уже внес поправку в алгоритм. и поддерживаю хосты.
изначально в коде есть поддержка такого поведения - хрен его знает зачем она там.

Также ждем ответа митера KCAHDEP
Он достаточно уверенно заявил что домены допустимы http://dchublist.ru/forum/viewtopic.php?p=22563#p22563

я у себя вот эту проблему зарегистрировал еще
http://code.google.com/p/flylinkdc/issu ... il?id=1443

поймал у себя вот такое
$SR chen video\multfilm\Ну, погоди!\Ну, погоди! 2.avi33492992 5/5TTH:B4O5M74UPKZ7I23CH36NA3SZOUZTJLWNVEIJMTQ (dc.a-galaxy.com:411)|

В общем нужно с этим разобраться детальнее.
резать с горяча как-то опасно :)

Добавлено: 16 мар 2014, 14:19
KCAHDEP
HackFresse, flylinkdc А какого ответа вы ждете? Я вам давал скрипт который имеет такую возможность, там все черным по белому разложено да и в отладчике с того хаба тоже все наглядно.

Добавлено: 16 мар 2014, 14:28
flylinkdc
Получается что скрипт нарушает протокол?
мне пока не понятно почему клиенты так-же поддерживают работу по хосту.

Добавлено: 16 мар 2014, 14:45
KCAHDEP
может скрипт, может софт хаба я не знаток, но и глазам своим не верить тоже не вижу смысла. а вот хаб dchub://verlihub.org:4111 жалко интересно что они не поделили.

Добавлено: 16 мар 2014, 14:58
flylinkdc
KCAHDEP писал(а):а вот хаб dchub://verlihub.org:4111 жалко
а у тебя он открывается?

Добавлено: 16 мар 2014, 15:02
KCAHDEP
нет и судя по графику http://dchublist.ru/hubs/verlihub/ давно не работает

Добавлено: 16 мар 2014, 16:05
HackFresse
Неправильно подходите к вопросу.

1) То, что дц-клиенты могут в некоторых случаях открывать соединение на domain:port - это нормально.

2) То, что они это делают там, где это не нужно - это неправильно. Дёргание резольвера там, где должны быть только IP - лишняя бесполезная нагрузка

3) То, что на управляющие команды нету никаких проверок - это беда и печаль. Там, где по протоколу должны быть только IP , допускается наличие доменных имен, и при этом отсутствуют учет и проверки - проблемное место.


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

По имени только определить IP хаба, больше нигде dns не нужен, взаимодействие только по IP


Скрипт просто даёт удобное управление всеми этими корявостями удалённых дц-клиентов. Скрипт может сам резольвить адрес перед отправкой комманд, а тут сами дц-клиенты охотно всё хавают.


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

Добавлено: 16 мар 2014, 16:32
flylinkdc
HackFresse писал(а):2) То, что они это делают там, где это не нужно - это неправильно. Дёргание резольвера там, где должны быть только IP - лишняя бесполезная нагрузка
это я себе записал - во флае лишний раз не будет дергаться ресолв.
но думаю что при подаче туда IP адреса как происходит в 99.9% случаев эта операция очень легкая
и поэтому разрабы решили не заморачиваться.

В общем ты предлагаешь такие случаи вообще сразу скипать как нарушение протокола
и даже не помещать в мап-у для анализа на кол-во попыток коннектов.?

а куда это логировать - в системный лог?

Добавлено: 16 мар 2014, 20:09
HackFresse
Нарушение протокола может быть сделано, если это добавляет что-то клёвое, при этом не вызывая проблем у других участников файлообмена (хабсофт и другие клиенты).

В данном случае лично я преимуществ особо не вижу.

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

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

Добавлено: 16 мар 2014, 20:21
HackFresse
flylinkdc писал(а): поймал у себя вот такое
$SR chen video\multfilm\Ну, погоди!\Ну, погоди! 2.avi33492992 5/5TTH:B4O5M74UPKZ7I23CH36NA3SZOUZTJLWNVEIJMTQ (dc.a-galaxy.com:411)|

В общем нужно с этим разобраться детальнее.
резать с горяча как-то опасно
Это совсем другая команда, для ддоса она уже не актуальна.
По http://wiki.gusari.org/index.php?title=$SR и http://wiki.mydc.ru/$SR там тоже должны быть IP, однако, судя по всему, с этим особо никто не парится.

Добавлено: 16 мар 2014, 20:30
Alexis
KCAHDEP писал(а):может скрипт, может софт хаба я не знаток, но и глазам своим не верить тоже не вижу смысла. а вот хаб dchub://verlihub.org:4111 жалко интересно что они не поделили.
Он хотел чтобы я дал ему оператора и разрешил рекламировать. Пришел неизвестно кто и заявляет такие требования ко мне. Я ему корректно объяснил что, что ни первое ни второе моему хабу не нужно. После этого уже две недели мой основной хаб лежит из-за Ддос атаки и второй хаб иногда работает, но тоже кладется Ддосом. Вот наш лог разговора:
[2014-02-20 20:23] <deivis..> a mozes mne dat admin na svajom xabe?
[2014-02-20 20:24] <deivis..> ja imeju vidu 5 lvl
[2014-02-20 20:25] <Alexis> сама скромность. нет необходимости.
[2014-02-20 20:26] <deivis..> xm a pocemu?
[2014-02-20 20:26] <deivis..> zalka?
[2014-02-20 20:26] <deivis..> mog bi padruzitsa:)
[2014-02-20 20:26] <deivis..> u menia est 5 xabov verlixab toze:)
[2014-02-20 20:26] <deivis..> 7 let dirzu:)
[2014-02-20 20:27] <Alexis> молодец.
[2014-02-20 20:27] <deivis..> spasiba
[2014-02-20 20:27] <deivis..> tebe toze pmniu uze davno
[2014-02-20 20:27] <deivis..> imees let :)
[2014-02-25 20:01] <deivis..> privet ti zdes?
[2014-02-25 20:43] <Alexis> ?
[2014-02-25 20:44] <deivis..> kak dila?
[2014-02-25 20:44] <Alexis> отлично
[2014-02-25 20:44] <deivis..> nu tak das mne op u sebia na xabe?
[2014-02-25 20:45] <deivis..> ja dam tebe u sebia:)
[2014-02-25 20:45] <Alexis> мне не нужно
[2014-02-25 20:45] <deivis..> jasna
[2014-02-25 20:47] <deivis..> nu tak dai mne opa u sebia takda
[2014-02-25 20:47] <deivis..> esli nezalka
[2014-03-04 19:41] <deivis..> privet ti zdes?
[2014-03-04 19:41] <deivis..> :)
[2014-03-04 19:45] <Alexis> ?
[2014-03-04 20:01] <deivis..> kak dila?
[2014-03-04 20:01] <deivis..> tak ti mne das op u sebia?
[2014-03-04 20:01] <deivis..> :)
[2014-03-04 20:45] <deivis..> ili zalka tebe?
[2014-03-04 20:45] <deivis..> esli zalka tak i skazi
[2014-03-04 20:59] <Alexis> Я не собирался и не собираюсь давать опа кому бы то нибыло. Больше с таким вопросом ко мне не обращайся.
[2014-03-04 21:18] <deivis..> paniatna
[2014-03-04 21:18] <deivis..> a takda mozet bit reklamami pominiaemsia?
[2014-03-04 21:19] <deivis..> na ls?
[2014-03-04 21:19] <deivis..> tvoi xab i moi xab?
[2014-03-04 21:19] <deivis..> ja zi tebe pa xarosamu prasu
[2014-03-04 21:19] <deivis..> :)
[2014-03-04 21:42] <deivis..> xaraso takda esli pa xarosamu ne xoces:)
[2014-03-04 21:45] <Alexis> Никогда ни с кем я не обмениваюсь рекламой не рекламируюсь на других хабах и не позволяю рекламировать на моем.
[2014-03-04 21:49] <deivis..> paniatna kakda nebudet xaba takda mozet bit peredumaes no budet pozna.:)
[2014-03-04 22:00] <deivis..> prasiai:)


После этого начались атаки на мои хабы.
Кто-может чем-то помочь с прекращением атаки?
Если кто знает эту тварь, то передайте ему:
Ничего не останется безнаказанным. В следующей реиннккарнации он навряд ли уже будет человеком. Животным, насекомым или растением, в лучшем случае. Ему очень не повезло. Глупый профан думал, что анонимный статус в интернете спасет его от ответного удара. Все записано в информационном поле Земли, и для ответного удара мне достаточно любого его следа, хотя бы ника, под которым он когда-либо скрывался. Я поработаю с его кармой. Все что он сделал плохого другим будет суммироваться в двойном размере. Он будет гнить от болезней.
ЖИВИ СВОЕЙ ЖИЗНЬЮ. короткой.

P.S. Проклятие не удалять и не редактировать, если не хотите взять его вину на себя.

Добавлено: 16 мар 2014, 20:54
flylinkdc
Alexis писал(а):После этого начались атаки на мои хабы.
и какую нагрузку он создает на verlihub.org что система ложится
тот хаб что я нашел - очень мелкий - ~70 юзеров атакуют твой verlihub.org:4111

и какие хабы еще у тебя есть?
скажи я в логах ddos посмотрю - детектится или нет.

Добавлено: 16 мар 2014, 21:20
Alexis
У меня сервер закрыт хардовым фаерволом D-Link DFL-860e. Дальше него атаки не проходят, но мощность Ддос атаки такова, что забивается весь 100 мбит канал и невозможно пробиться ни из локалки в инет, ни обратно из инета в локалку к сервисам. Фаервол все отбрасывает и заносит в черный список, но канал полностью забит и с этим ничего нельзя сделать. В черном списке несколько тысяч атакующих адресов, и с каждого многократные соединения. У него или свой ботнет или доступ есть. Я менял ip адрес сервера, но не помогает. Атака идет по имени verlihub.org и dc.verlihub.org
Атака в логах фаервола выглядит так:
SYNACK_S TCP l2tp_corbina:37.190.61.73:19187 lan:78.107.233.212:4111 46

Добавлено: 16 мар 2014, 21:51
flylinkdc
Печально.
Надеюсь ему это быстро надоест и он переключится на что-то более интересное :)
твоих IP у меня в логах нет
Возможно он досит другим способом или с других хабов.
Жаль что разработчики DC++ клиентов допустили такую дырку и дают возможность
хулиганить малолетним админам...

Добавлено: 16 мар 2014, 23:24
alex82
Alexis
А есть возможность посмотреть, какие данные приходят? Если там банальная CTM-атака, то у меня есть одна идея, как ее прекратить

Добавлено: 16 мар 2014, 23:43
HackFresse
А идея по прекращению CTM-атаки -- это что-то секретное?

Добавлено: 17 мар 2014, 00:31
alex82
HackFresse
Да нет, но если это не CTM, то и обсуждать нет смысла.

В общем идея в следующем: а что, если вместо того, чтобы рвать соединения с юзерами, участвующими в атаке, попытаться наоборот удержать их? Возможно, даже ответить в соответствии с протоколом. Ведь если соединение уже установлено, клиент не будет пытаться соединиться повторно. Я так думаю :)

Я никогда не ковырял внутренности DC-клиентов, и потому не знаю, насколько те или иные из них отличаются умом и сообразительностью в этом плане. Но в этой теме присутствует человек, который в этом наверняка разбирается. Уважаемый flylinkdc, что скажете по этому поводу? Будут ли клиенты пытаться соединиться с указанным ником/адресом повторно, если одно соединение уже установлено?

Добавлено: 17 мар 2014, 00:50
alex82
А вот вам и адреса говнохабов, участвующих в атаке:
dchub.wplus.net
85.118.227.211
91.192.190.158
ye-salo.no-ip.org
stuga-gamers.no-ip.org
Все они, за исключением первого, работают под управлением очень несвежей версии PtokaX. Настолько несвежей, что я и не вспомню, есть ли там проверка IP-адресов в командах. Так что, возможно, тот баклан, что за этим стоит, и не является их админом.

Добавлено: 17 мар 2014, 05:28
flylinkdc
alex82 писал(а):Будут ли клиенты пытаться соединиться с указанным ником/адресом повторно, если одно соединение уже установлено?
В коде наследников StrongDC++ есть такая проверка:

Код: Выделить всё

bool ConnectionManager::checkIpFlood(const string& aServer, uint16_t aPort, const string& userInfo)
{
	Lock l(cs);
	
	// Temporary fix to avoid spamming
	if (aPort == 80 || aPort == 2501)
	{
		LogManager::getInstance()->message("Someone (" + userInfo + ") is trying to use your client to spam " + aServer + ":" + Util::toString(aPort) + ", please urge hub owner to fix this");
		return true;
	}
	
	// We don't want to be used as a flooding instrument
	uint8_t count = 0;
	for (UserConnectionList::const_iterator j = userConnections.begin(); j != userConnections.end(); ++j)
	{
	
		const UserConnection& uc = **j;
		
		if (uc.socket == NULL || !uc.socket->hasSocket())
			continue;
			
		if (uc.getRemoteIp() == aServer && uc.getPort() == aPort)
		{
			if (++count >= 5)
			{
				// More than 5 outbound connections to the same addr/port? Can't trust that..
				dcdebug("ConnectionManager::connect Tried to connect more than 5 times to %s:%hu, connect dropped\n", aServer.c_str(), aPort);
				return true;
			}
		}
	}
	return false;
}
1. порты 80 и 2501 вообще защищены от такой атаки
2. коннекты создаются но их не более 5 от каждого атакующего (IP:PORT)

В оригинальном DC++ такой проверки нет.

Код: Выделить всё

void ConnectionManager::nmdcConnect(const string& aServer, const string& aPort, const string& aNick, const string& hubUrl, const string& encoding) {
	if(shuttingDown)
		return;

	UserConnection* uc = getConnection(true, false);
	uc->setToken(aNick);
	uc->setHubUrl(hubUrl);
	uc->setEncoding(encoding);
	uc->setState(UserConnection::STATE_CONNECT);
	uc->setFlag(UserConnection::FLAG_NMDC);
	try {
		uc->connect(aServer, aPort, Util::emptyString, BufferedSocket::NAT_NONE);
	} catch(const Exception&) {
		putConnection(uc);
		delete uc;
	}
}

Добавлено: 17 мар 2014, 05:32
flylinkdc
alex82 писал(а):А вот вам и адреса говнохабов, участвующих в атаке:
А как ты определил этот список?