Всем доброго вечера! Решил углубиться в тему взлома и защиты компьютера для познавательных целей. Никого взламывать я не собираюсь (хотя безобидный взлом для практического опыта попробовал бы). Да и думаю что у меня это вряд ли получится, так как считаю что крекингу нельзя научиться, это должно быть в человеке (можно только основы выучить). Можно составить какой-то план, но по этому же плану компьютеру будут защищать. Поэтому тут нужна фантазия, а этому не научиться. В вопросе защиты/взлома компьютера я полный ноль, поэтому и решил к Вам обратиться. Возможно у меня не правильное представление о сетевом мире, но я считаю что всё построено на сокетах (TCP, UDP и другие). Хотя, наверное я ошибаюсь. Возможно сокеты это только часть сетевого мира, самая распространённая. Лично я просто больше ничего не знаю. Самые распространённые операционные системы, это Windows и Linux. В отличии от Windows, Linux взламывают намного чаще. Наверное это из-за тонкостей настройки. Всё это я не утверждаю, я лишь читал про это. Так собственно как может идти взлом компьютера?! Я не являюсь профессионалом ни в одной операционной системы, но для меня ближе Windows, поэтому буду говорить именно о ней (наверняка в других операционных системах есть всё схожее). Первым что мне приходит в голову, так это если в системе создано несколько пользователей и если разрешён сетевой вход в систему, то тогда путём подбора пароля (ну и имя пользователя тоже не мешает знать) можно войти в систему и попытаться украсть то, что плохо лежит (если конечно для данного пользователя есть такие права доступа). Ну или же оставить какую-нибудь программку, которую может запустить пользователь с большими привилегиями и тем самым откроет лазейку для взломщика (программа может и по открывать что угодно, и может по сети передавать данные). Уж не знаю насколько всё так, это только мои фантазии. Таким образом, будет ведь безопаснее, если на компьютере будет всего один пользователь создан или если будет запрещён сетевой вход в систему? В моём случае, в Windows 7 создан всего один пользователь с правами администратора и запрещён сетевой вход в систему. Я считаю это надёжным. Собственно это был способ проникнуть на компьютер, а есть ещё взлом сайтов. При взломе сайтов я не уверен что можно побродить по всему компьютеру (собственно как это возможно), я думаю что можно лишь побывать админом сайта и иметь доступ к хранящейся информации на сайте (но не к информации на всём компьютере). Поправите меня если я не прав, просто не понимаю как из взлома сайта можно по жёстким дискам всего компьютера побродить. Так каким же образом взламывают сайты?! Путём подбора паролей, но думаю сейчас это уже глупо использовать. Ведь теперь можно ставить ограничения на ввод. Далее ещё есть SQL-инъекции. Именно таким образом меня и взломали весной. Но и от SQL-инъекции можно обезопаситься, достаточно лишь жёстко закрепить используемые символы (сочетания символов) и при получении данных в PHP-скрипт вести проверку на недопустимые символы (наборы символов). Собственно от SQL-инъекции взломщик может получить данные из базы данных. Так же может удалить, добавить и изменить данные. Извлечь пароль админа и координально переделать сайт. Но он не сможет получить доступ к другой части компьютера, которая не является сайтом и которая может хранить другие данные. Правильно ведь? Есть ещё DOS-атаки. Если честно, то мне с трудом верится что от неё может быть польза во взломе сайта, что тебе покажется код или ещё что-то. Если подумать разумно, то я вижу тут только лишь пользу в том, чтобы лишить сайт клиентов (прекратить на время обслуживание). Хороший способ для устранения конкурентов. Не знаю как на самом деле, но у меня только такие познания. Как же защититься от DOS-атак? Программным способом думаю это не поможет, так как придётся тратить процессорное время на фильтрацию и прочее. Наверное самый лучший вариант, это дополнительное оборудование. Но и в этом случае нет полноценной защиты. Видимо выиграет тот, кто больше заплатит. А теперь хотелось бы поговорить про порты. Всего есть 65536 портов (от 0 до 65535). Те порты, которые ближе к началу, они уже зарезервированы (например 80 - это порт Web-сервера). Так как же возможно взломать компьютер через порт? Если не брат во внимание разные firewall, то как всё это происходит? Порт может быть закрыт, если не идёт прослушка этого порта программой. И порт может быть открыт, если программа ожидает подключения к этому порту. Про порт 80 думаю дело обстоит так же как и взломом через браузер, только лишь вручную придётся прописывать TCP-запрос. Но опять же, что получить можно, всего лишь данные сервера если они не защищены от SQL-инъекций (на слово всего лишь не обращайте внимание). Ну а что значит поиск открытых портов с уязвимым кодом? Нашёл я открытый порт и что дальше? Как я узнаю уязвимый код или нет? И что он мне даст если он уязвимый, каким образом его можно использовать и что произойдёт? Наверное TCP-порты взламывают шаг за шагом анализируя полученную от него информацию и к предыдущему запросу добавляя новые данные и заново отсылая. Так? Но я не понимаю, как через какой-то порт, которые обслуживает вообще левая программа, даже если у неё код косячный, что программа может просто зависнуть (выйти из строя) если ей прислать "интересное" значение переменной, как она может помочь войти в компьютер и скопировать информацию? Как я понимаю, firewall хорошая вещь. Наверное даже может фильтровать IP-адреса для определённых портов. И думаю если у стоит такая программа, то единственное что сможет ослабить её защиту, то это только подцепленный вирус любопытного админа. Я прав? Интересно, почему многие хакеры (хотя по данной теме лучше бы использовать слово крекеры) не используют Windows, а сидят только лишь в Linux? Не связано ли это с сырыми сокетами? Вроде бы такой в Windows нельзя создать сырой сокет, а в Linux можно. И как я понимаю, сырой сокет - это сокет, в котором можно полностью контролировать пакеты, вплоть до подмены IP-адреса отправителя. Так ведь? У меня стоит Avast 5 Home и он частенько выводит информацию что только что была пресечена попытка заражения компьютера. Он выводит IP-адрес нападающего и порт, на который подверглось нападение, ну и название вируса. Интересно, как такое может быть. Я не лазил по сайтам, у меня не был запущен браузер. Я только лишь находился в системе. Как тогда кто-то мог напасть на мой компьютер именно на порт? И как это он мог заразить компьютер вирусом через порт? А если бы у меня Avast 5 Home не следил за этим, меня бы что, так вот заразили? Объясните, как через порт кто-то мог заразить компьютер (ведь через порт можно лишь программу загнуть)? Это конечно не всё что я хочу знать, но думаю пока достаточно и этого. Надеюсь на оживлённую беседу. Повторю ещё раз, Вы из меня не сделаете преступника, я только для познавательных целей. Я прекрасно понимаю что в Интернете всё прозрачно. Наверное многие думают что можно что-то сделать и скрыться. Но я знаю, что если захотеть (особенно если это будет правительство), то человека найдут. А я закон нарушать не хочу. Думаю что ничего плохого нет в том, что я интересуюсь подобной темой.
Ох, какой здоровенный список клише!!! Если делать замечания по каждому из пунктов, то текста будет страниц на 10.... Лично у меня яда не хватит, может кто поможет? 2s3dworld практически ничего из списка не имеет ничего общего с реальностью
Блин, ступил, может проверка какая... специалистов по защите в банк набирают, а я тут язвлю Или статью о выдающихся дефендерах пишут... в ксакеп. Мммм, я бы мог стать кумиром школоты! И как касперский создать собственную секту (не, не секту найкедджамперов, я про другого касперского), делать на этом бабки.... Вечно я всё порчу Х(
Z3N Нет, это не проверка. И то что это могло выглядеть фантастикой - тут ничего плохого нет, я ведь написал чтобы разобраться. Хочу все эти тонкости знать. А то кругом всё происходит, а я как в неведении. Если можете помочь, буду рад.
Ладно... Мой скромный (тр|фл)уд. Мои познания скромны... и, возможно, неверны/устаревшие. К вашему (не|)счастью из флудеров на форуме сейчас только я . Говорите про сокеты, а перечисляете протоколы... Вам бы с терминами познакомиться для начала. Мда, виндовс нужна для ботнетов и всяческого рода угонов, а линукс - это обычно серв и цели соответсвенные (хотя, в последнее время не слежу за соотношением их долей в роли серверов) Имея пару световых лет в запасе - почему бы и нет? Нет, если есть сплоет, то вас ничего не спасёт, кроме пяти сантиметров воздуха в качестве фаера. Отсутствие привилегий помеха, но поправимая. Аминь! Не всегда, иногда доступ к важным данным имеют записи, которые этот доступ иметь не должны... лечиться временем. :S Существуют сайты, на которых описаны актуальные методы взлома сайтов. Либо большие тайм-ауты. Также помогжет друг в отделение К (Кал) А вообще - это вопрос к акилле... как он справляется... Это вы так пространно о переполнение буфера? Тут есть статья - курите, там всё как для школьников написано. Не-а, зачем так ограничивать фаер? Ослабить его может всё, что угодно.... Кривые руки особенно (программиста или юзера) Исчо бы, милиция, вот, тоже начальству по несколько раз в день рапортует о успешной борьбе с преступностью. Ну, вот, опять, хз о чём вы говорите... опять про сплоеты что-ли? Что-то мне подсказывает, что вас бы и не посадили бы... возраст не позволил.... Сколько вам лет? Диагноз: Нехватка базовых знаний в критической форме Диагноз себе: Критинизм, мля
s3dworld Нужно выбрать то что САМое интересное. По ходу познания разберешься со всем остальным думаю. Для начала напиши на с простой клиент и сервер. - Потесть локально, потом в локальной сети. - Дальше открой в настройках своего ADSL - модема закладку Port Forwarding и пробрось на свою дом. машину порт 6666 например. - Повесь сервер на прос- лушивание порта 6666. Пойди к другу и от него подключись клиентом к своему серверу через порт 6666. - Почувствуй разницу. Потом вдруг заметишь что половина вопросов - отпала издавая хрустальный звон )
spa Это же время, за которое идёт луч света от солнца до земли, не? Получается, что и длинны и времени....
_sheva740 Программировал на C++ в Windows через WinSock 2. Начинал от примитивного консольного приложения с соединения между двумя компьютерами и заканчивал созданием фонового сервера, который принимал клиентов и мог со всеми с ними общаться. Так же и клиенты могли посылать данные на сервер. В общем получать и отправлять данные можно были и всё это информируется и выводится. Писал только TCP.
Z3N Световой год, это не время за которое свет идёт до земли. Это расстояние, которое свет проходит за один год.
А сегодня пробовал экспериментировать. Через сканер портов Advanced Port Scanner определял открытые порты на разных серваках и прописывал эти порты. Так ничего и не получил в ответ. Код (Text): #define WIN32_LEAN_AND_MEAN #include <Windows.h> #include <WinSock2.h> #include <iostream> const char* ip="81.19.70.3"; const unsigned short int port=777; SOCKET sock=0; void Release(void); int main(void) { WSADATA sockData; sockaddr_in sockAddress; sockaddr_in sockMyAddress; char buffer[128]; int length=0; memset(&sockData,0,sizeof(WSADATA)); memset(&sockAddress,0,sizeof(sockaddr_in)); memset(&sockMyAddress,0,sizeof(sockaddr_in)); memset(buffer,0,128); std::cout<<"Welcome to Net!"<<std::endl<<std::endl; if(!WSAStartup(MAKEWORD(2,2),&sockData)) { std::cout<<"Success init socket system."<<std::endl; } else { std::cout<<"Error init socket system!"<<std::endl; Release(); return -1; } sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(sock!=INVALID_SOCKET) { std::cout<<"Success create socket."<<std::endl; } else { std::cout<<"Error create socket!"<<std::endl; Release(); return -1; } sockMyAddress.sin_family=AF_INET; sockMyAddress.sin_addr.S_un.S_addr=0; sockMyAddress.sin_port=htons(port); if(bind(sock,(SOCKADDR*)&sockMyAddress,sizeof(sockaddr_in))!=SOCKET_ERROR) { std::cout<<"Success bind."<<std::endl; } else { std::cout<<"Error bind!"<<std::endl; Release(); return -1; } sockAddress.sin_family=AF_INET; sockAddress.sin_addr.S_un.S_addr=inet_addr(ip); sockAddress.sin_port=htons(port); if(connect(sock,(SOCKADDR*)&sockAddress,sizeof(sockaddr_in))!=SOCKET_ERROR) { std::cout<<"Success connect."<<std::endl; } else { std::cout<<"Error connect!"<<std::endl; Release(); return -1; } length=send(sock,"Hello!",6,0); if(length!=SOCKET_ERROR) { std::cout<<"Success send data."<<std::endl; } else { std::cout<<"Error send data!"<<std::endl; Release(); return -1; } length=0; std::cout<<"Waiting data..."<<std::endl; length=recv(sock,buffer,10,0); if(length!=SOCKET_ERROR) { std::cout<<"Read data: "<<length<<std::endl<<std::endl; std::cout<<buffer; } else { std::cout<<"Error read data!"<<std::endl; Release(); return -1; } Release(); return 0; } void Release(void) { if(sock) closesocket(sock); WSACleanup(); std::cout<<std::endl<<"Input any text for exit..."; std::cin.get(); }
"Прописывал" - это как? Напиши сервер, который содержит в себе переполнение буфера. Например, принял от клиента строку и передал ее в функцию типа такой: Код (Text): ;---------------------------------------------- _strspy proc uses esi edi, src:PTR BYTE LOCAL lBuffer[10]:BYTE mov esi, src lea edi, lBuffer cld wh: lodsb stosb test al, al jne wh ret _strspy endp ;---------------------------------------------- Так как там 10 байт а передано 34, то будет затирание в стеке адреса возврата из функции. Теперь если клиент передает не просто какие то данные а последовательность выполнимых команд, то уязвимый твой сервер их выполнит. Вот и произойдет использование уязвимости тобою созданной. А клиент отсылающий выполнимый код - будет сплитом. Уязвимости ищет у разных серверов. Продают некоторые. Та че там световых лет. Он в 2009 Конфикер пароли подбирал так немудренно:
s3dworld Для серверной части посмотри пример тут http://msdn.microsoft.com/en-us/library/ms737526(v=VS.85).aspx.
_sheva740 Я вариант паролей вроде 123 не рассматривал даже. Об этом ещё в наскальной живописи писали... думал, что все хоть немного поумнели.... CyberManiac Есть предложение отныне измерять время/скорость перебора пароля в световых годах
s3dworld Вероятно исчерпывающим ответом на ваш вопрос будет следующий: книга "Техника взлома - сокеты,эксплоиты,шеллкод". А вот это не факт... Большинство программеров нынче прописано где-нибудь в Вышних *уях,а работает либо Москве,либо в Питере. Приехал неизвестно откуда,жил неизвестно где,к интернету подрубился как неизвестно кто,зашел через прокси,натварил делов,и на перекладных обратно в Вышние *уи. Ищи-свищи......