| Daniel Ginsburg ( @ 2007-06-05 20:03:00 |
Ко вчерашнему.
Некоторые могли обратить внимание, что если пойти на http://community.livejournal.com/ru_pol itics, будучи незалогиненым, то ЖЖ честно покажет "This journal has been suspended.". А если пойти залогиненым, то ВСЕ ОПЯТЬ ПОВИСНЕТ, АААА!!!! Псы Тоталитарного Режима отслеживают невинных пользователей, интересующихся крамольным коммьюнити, и берут на карандашик!!! Страшно?
Разберемся.
Когда мы залогиненными идем на http://community.livejournal.com/ru_pol itics, ЖЖ нас перенаправит на URL вида http://community.livejournal.com/ru_pol itics/__setdomsess?dest=http://community.l ivejournal.com/ru_politics&k=ljdomsess.community.ru_politics&v= ....
Вот так вот у ЖЖ хитрО устроена схема авторизации.
Попробуем подсократить. Не логинясь, пойдем на http://community.livejournal.com/ru_pol itics/ - в конце ULR слеш. Опять все висит. Вот оно. Становится понятней.
Проверям (невалидным HTTP запросом, его валидность нам не важна):
Параллельно запускаем tcpdump:
Пробуем со слешом:
Судя по всему, атака не прекратилась, но ЖЖ стал умнее и теперь режет пакеты по строчкам 'GET /ru_politics/', 'POST /ru_politics/' и т.д. Причем, строчка должна быть в самом начале TCP-payload. Т.е. пост с этими строчками проходит (правда, с накоторой вероятностью может обломаться).
В общем, жжшным сисадминам за борьбу с DDoS'ом четверка. Была бы пятерка, если б они так сделали сразу.
Некоторые могли обратить внимание, что если пойти на http://community.livejournal.com/ru_pol
Разберемся.
Когда мы залогиненными идем на http://community.livejournal.com/ru_pol
Вот так вот у ЖЖ хитрО устроена схема авторизации.
Попробуем подсократить. Не логинясь, пойдем на http://community.livejournal.com/ru_pol
Проверям (невалидным HTTP запросом, его валидность нам не важна):
$ telnet 204.9.177.18 80 Trying 204.9.177.18... Connected to 204.9.177.18. Escape character is '^]'. GET /ru_politics
Параллельно запускаем tcpdump:
# tcpdump -S -nl -s0 host 204.9.177.18 and port 80 19:59:58.223493 IP 89.108.83.67.36117 > 204.9.177.18.80: S 516335794:516335794(0) win 5840 <mss 1460,sackOK,timestamp 19335704 0,nop,wscale 0> 19:59:58.443826 IP 204.9.177.18.80 > 89.108.83.67.36117: S 845985459:845985459(0) ack 516335795 win 4380 <mss 1460,nop,wscale 0,nop,nop,timestamp 1054158263 19335704, nop,nop,sackOK> 19:59:58.443858 IP 89.108.83.67.36117 > 204.9.177.18.80: . ack 845985460 win 5840 <nop,nop,timestamp 19335726 1054158263> 20:00:00.316302 IP 89.108.83.67.36117 > 204.9.177.18.80: P 516335795:516335813(18) ack 845985460 win 5840 <nop,nop,timestamp 19335914 1054158263> 20:00:00.636080 IP 204.9.177.18.80 > 89.108.83.67.36117: . ack 516335813 win 4398 <nop,nop,timestamp 1054160456 19335914>Все пролезло, к нам прилетел ACK.
Пробуем со слешом:
$ telnet 204.9.177.18 80 Trying 204.9.177.18... Connected to 204.9.177.18. Escape character is '^]'. GET /ru_politics/Опять смотрим tcpdump'ом:
# tcpdump -S -nl -s0 host 204.9.177.18 and port 80 20:00:15.680079 IP 89.108.83.67.36119 > 204.9.177.18.80: S 535122460:535122460(0) win 5840 <mss 1460,sackOK,timestamp 19337450 0,nop,wscale 0> 20:00:15.900485 IP 204.9.177.18.80 > 89.108.83.67.36119: S 1002706682:1002706682(0) ack 535122461 win 4380 <mss 1460,nop,wscale 0,nop,nop,timestamp 1054175719 19337450, nop,nop,sackOK> 20:00:15.900507 IP 89.108.83.67.36119 > 204.9.177.18.80: . ack 1002706683 win 5840 <nop,nop,timestamp 19337472 1054175719> 20:00:20.709008 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19) ack 1002706683 win 5840 <nop,nop,timestamp 19337953 1054175719> 20:00:21.794070 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19) ack 1002706683 win 5840 <nop,nop,timestamp 19338062 1054175719> 20:00:23.974075 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19) ack 1002706683 win 5840 <nop,nop,timestamp 19338280 1054175719> 20:00:28.334092 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19) ack 1002706683 win 5840 <nop,nop,timestamp 19338716 1054175719> 20:00:37.054082 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19) ack 1002706683 win 5840 <nop,nop,timestamp 19339588 1054175719>А вот и ретрансмиты.
Судя по всему, атака не прекратилась, но ЖЖ стал умнее и теперь режет пакеты по строчкам 'GET /ru_politics/', 'POST /ru_politics/' и т.д. Причем, строчка должна быть в самом начале TCP-payload. Т.е. пост с этими строчками проходит (правда, с накоторой вероятностью может обломаться).
В общем, жжшным сисадминам за борьбу с DDoS'ом четверка. Была бы пятерка, если б они так сделали сразу.