Вступление
С развитием Internet, появилось много "хакеров" И все эти "хакеры" "умеют" ломать сервера и знают, как это делать. Я не буду учить вас взламывать сервера. Я, пожалуй, попытаюсь вам рассказать, как можно взламывать не сервера, а разум людей. А также как использовать удачно подвернувшуюся ситуацию.
Все это я разбавлю примерами по теме разговора. Предупреждаю, что некоторые из этих примеров были на самом деле, другие же не больше, чем плод моего воображения. Если вы увидели себя в этих примерах - считайте, что это случайность.
Социальная инженерия
К сожалению, с появлением всех этих хаксоров, все забыли о прекрасном методе взлома - социальной инженерии. Для тех, кто не в курсе, что это такое, я поясню. Это одна из частей социальной психологии, направленная лишь на то, чтобы манипулировать людьми или порождать в их разум новую модель поведения. Каждый в жизни, наверно, сталкивался с тем, что кто-то на него воздействовал социальной инженерией, но скорей всего эти оба человека, и жертва, и охотник не догадывались об этом. Вы можете столкнуться с этим в магазине, когда вам пытаются впарить какой-либо товар. Или по телевидению, когда вам рекламируют, какой замечательный этот товар, который на самом деле полное дерьмо. И так далее. Но как вы заметили, во всех этих ситуациях, никто не догадывается, о том, каким способом, все это происходит. Просто потому, что это частичная или слабая социальная инженерия. Я же попытаюсь вам рассказать о профессиональной инженерии, когда все ваши усилия будут направлены на достижения какой-либо цели.
Добыча информации. Социальная инженерия. Последовательный взлом.
Конечно самое эффективное, для чего применяется социальная инженерия, это добыча информации. Причем неважно какой. Весь интерес в том, что можно узнать очень секретную информации, но тот человек, который вам ее скажет, будет чувствовать, не более чем, если бы он вам рассказал секретный рецепт пирожков. Тут к этому у меня есть замечательный пример, который рассматривает сразу две под темы социальной инженерии, но замечу, что пример нестандартный:
Стоял я как-то перед зданием одной компании. Очень хорошее пятиэтажное здание, отданное полностью под эту компанию, постояв возле входа, я обнаружил, что все кто туда входит, отчитываются вахтеру, куда они и зачем. Понятно, что просто так туда не войти. Обойдя, его я обнаружил две дыры (дыры не такие, какие бывают у OS, а такие, которые бывают в ситуации такой, какая сейчас, я просто провел аналогию). Дыры заключались в следующем: 1) с задней стороны здания нет дверей, поэтому там люди не ходят, но есть лестница на крышу, такая простая лестница, железная, не удобная, немного высоко над землей. И хотя висела видеокамера, которая якобы все снимала, я видел, что она не работает, не горели никакие лампочки и не шли провода. 2) Прямо в притык с этим зданием строили новое здание, выше на четыре этажа, то есть девятиэтажное здание, пустое. И пара окон как раз выходила на крышу этого здания, и хотя на окнах была решетка, я заметил, что другая пара окон, которые на этаж выше без решетки и что высота между ними не большая. На следующую ночь, я вместе с другом забрались через стройку, протащив с собой лестницу и спустив ее со стройки 6-этажа на 5 этаж здания-жертвы. На крыше было: спутниковая антенна, 10 телефонных кабелей, и вроде бы ethernet. Нам тогда кроме телефонных кабелей нечего не надо было, поэтому мы занялись ими. Друг у меня работал в тел. компании, и был хорошим телефонным специалистом, он взял с собой два прибора: первый позволял прослушать, что в линии без подключения, второй - вклинивание в линию, не обрывая ее. В эту ночь все разведали и ушли. На следующую ночь мы разведали первый путь проникновения на крышу: лестницу, как я и предполагал, никто нечего не обнаружил. И на этот раз мы взяли с собой все необходимые приспособления. Вот что мы сделали за эту ночь: поставили 5 диктофонов на линии, чтобы они включались, когда в линии идет сигнал, на остальных линиях мы обнаружили только модемы и, подключившись к этим линиям, мы сделали, так чтобы при звонке на этот телефон запрос передавался на другой телефон (стандартная АТС`ная фича). На всех других телефонах у нас стояли модемы, которые принимали звонки и записывали пароли. Через сутки мы узнали 13 паролей, среди них 2 админовских и куча информации на диктофонах. Обнаружили, что среди тех телефонов присутствует телефон Отдела Кадров, Приемной директора, Серверной (!), Справочной, остальные оказались простыми телефонами сотрудников. За неделю записи данных с первых четырех телефонов нам дали столько информации об этой компании, что хватило бы для того, чтобы разорить их и ограбить легальным путем. А если еще учесть то, что мы обнаружили потом на их серваках через админовские пароли, то этого нам хватило на два месяца просмотра информации.
Напоследок хочу сказать, что хотя на первый взгляд этот пример никак не связан с социальной инженерией стандартного характера (не участвует человек-жертва, нет сути развода жертвы на что-либо), я вам скажу, что здесь использовались методы человеческого сознания. То есть не надо думать, что раз висят камеры, то нас увидят или, что раз крупная компания, то им на крышу не залезешь. Надо думать технически тоже, а не социально. Поэтому в этом примере мы действовали по принципы обратного от human denial of service, то есть когда людей выводят из строя воздействием на них социальных мерок, таких как значимость компании и стереотипы охраны здания.
И еще один пример, без комментариев, просто читайте и вникайте
Рассмотрев раздел о том, как добывать информацию, рассмотрим, как находить информацию.
Я видел много документацией в сети, как собрать информацию о человеке, которого вы собирайтесь атаковать. Наивные. На самом деле собирать ее не надо, так как она лежит перед вами. Зайдите не страничку вашей жертвы. Вот. Вот перед вами вся информация, которая вам нужна. Он сам вам ее дал. Город, где живет (часто). Может быть телефон, как связаться. Адрес, где их можно дойти (это если это фирма). E-mail (всегда). Имена и фамилии руководителей (на корпоративных сайтах). Это все, что вам нужно. Имя + фамилия + должность + e-mail = все, что нужно социальному инженеру.
Была очень интересная компания, которая мне очень не нравилась. Я зашел на их сайт и прочитал, все, что там было написано. Я узнал: е-маил, имя и фамилию их веб-админа. Этого оказалось достаточно. Я по е-майлу представился как начинающий, но прогрессивный веб-дизайнер\веб-программист и указал на некоторые ошибки в их сайте (немного неправильные скрипты, кое какие дизайнерские ошибки). И указал им url сайта, где была информация о том, как не допускать таких ошибок и парочка программ, которые помогали исправить эти ошибки. Конечно же, сайт был сделан мною, причем очень натурально, не хуже какого-нить www.download.ru или www.design.ru, при чем программы, которые там лежали ДЕЙСТВИТЕЛЬНО работали, исправлял ошибки, выдавали tips и все такое. Просто они выполняли еще кое-чего, ну просто то, что мне было необходимо. И, конечно же, мой сайт лежал не на www.chat.ru или tripod.com, а на хорошем домене www.[имя сайта].com, ведь нечего не стоит купить его на пару месяцев. Главное, чтобы все выглядело натурально и чтобы все, что там лежали было правдой, и работало.
Да кстати, забыл упомянуть, что программы, которые он скачал, были написаны мною, и исправили ошибки на его сайте, так что он обрадовался, что ему действительно дали реальную ссылку. Что потом произошло уже не важно, главное, что я добился своего - я получил доступ к его web-сайту.
Вывод: не нужно пренебрегать какой-либо информацией, и стоит воспользоваться всем, что видно снаружи. Любая строчка на сайте может дать полный доступ к сознанию человека, для проникновения в это сознание и для получения полного контроля над этим сознанием. Манипулировать людьми легко, поверьте мне.
Некоторые способы развода людей.
Итак, как же все-таки получить что-либо путем развода?
Можно раскрутить админа\оператора\опера на что-либо путем:
1) обещания дать взамен что-то (не обязательно потом исполнять)
2) просто за хороший разговор (когда говорят "он мне просто понравился")
3) путем наезда.
Про первый пункт я думаю все понятно и так. Поэтому обсуждать его мы не будем.
Второй пункт: тут главное определить врата сортировки собеседника. Для тех, кто не знает, что такое врата сортировки поясняю. У каждого человека есть свои врата сортировки. Они могут быть такие: место, время, люди, вещи, ценности. Сейчас объясню на примере: у Васи врата сортировки являются люди и время. В таком случае в разговоре легко прослеживается то, что человек часто тебя спрашивает "кто это был?" (врата сортировки: люди) или "а когда?" (врата сортировки: время). Понимаете? Вот такие дела. Так вот, когда определяешься врата сортировки человека, легко найти с ним общий язык, нужно просто говорить по его вратам сортировки. Тогда он с удовольствием будет с тобой говорить и соответственно легко, что-то из человека выклянчить.
Третий путь: жестко на человека наехать. Я как-то присутствовал при ситуации, когда просто человек заходил на канал на irc и начинал наежать на какого-либо оператора. Сначала соответственно оператор тоже в ответ наежал, но тут главное не расслабиться, а быть серьезней. Я видел такую ситуацию, когда оператор уже начинал бояться человека, и пытался с ним подружиться, подмазывался и уже даже давал ему оператора.
Также для развода может быть применен метод, описанный в следующем пункте.
Human denial of service (HDoS)
Последнее время в сети стали появляться сообщения о HDoS, что буквально можно перевести, как Человеческий Отказ В Обслуживании или если говорить простым языком - прекращение реагирования человека на какие-либо действия. То есть, можно запутать человека так, чтобы все, что вы скажете после этого, он воспринял как правду, или наоборот, как резкую ложь.
Он сидел и читал логи сервера под управлением FreeBSD 2.2.8 и не понимал, почему сегодня ночью с 5 хостов одновременно пытались соединиться к порту 7 по протоколу udp. Он знал, что это порт для echo - отображение введенных символов, никаких дыр в этом сервисе он не знал, да и атака не была похоже на DoS - соединение устанавливалось, пересылалась какая-то строка и разрывалось, не занимая никакие сетевые и процессорные ресурсы. Это было похоже на попытку buffer overflow через ECHO. Но он не знал, что в ECHO есть такая дыра и стал упорно изучать исходные тексты свой OS в надежде найти, где там дыра, и сам, тестируя свою систему посылая различные строки, и отлавливая, что ему будут посылать еще в этот порт.
В это же самое время, я сидел и пытался все более его запутать. Я стал посылать строки в finger, в sendmail, в popper, при этом, делал так, чтобы строки были немного разные, для каждой конкретной передачи и очень отличающие для разных служб. Это очень походило на поиск сразу во всех службах строки приводящей к buffer overflow. И все это отображалось в логах у админа, засоряя их по всякому. Я спокойно запустил эти программы посылки строк на 5 машинах, а сам в это время со своей машины ломал его сервер, а так как логи в это время чрезвычайно были пестры о попытках buffer overflow, то мои слабые попытки никак не выдавались в них. Когда у меня была успешная попытка, и я зашел, у него в логах отобразилось, что с внешнего хоста зашли под root`ом, но он этого не видел, он был чрезвычайно занят просмотром исходников.
Мы хорошо видим пример HDoS. Мы вывели из строя админа, переключив его внимание на ненужную работу. Он просматривал исходники, которые были без ошибок, а он был уверен, что они есть, ведь иначе, зачем кому-то пытаться таким образом атаковать систему.
Это натуральный пример HDoS.
Таким образом, можно сделать достаточно много. При желании, можно реализовать такую ситуацию, что акции великих компаний начнут падать. Представьте такую ситуацию: заходите вы на www.intel.com, а там написано в новостях, что вчера сгорело одновременно 5 заводов, где выпускались процессоры (на самом деле, это хакер поменял новости). Это приведет к тому, что цены на процессоры резко вырастут, а акции Интела упадут. Делайте выводы сами. Стоит ли писать на взломанных веб-серверах "hacked by megaspoofa. btw, admins is lamers" или может быть взять ситуацию под контроль?
Углубленные методы и аспекты добычи информации.
Перед осуществлением добычи информации, определите, какая информация вам необходима. Иначе вы можете затратить множество времени, для добычи не нужной вам информации. После того, как вы точно обдумайте, что вам необходимо от, допустим, системного администратора компании X, то подумайте, кто еще знает эту информацию, кто знает о существовании этой информации, кто имеет доступ к этой информации, кто имеет право на изменение этой информации. Часть ответов из этих вопросов вы решите в процессе добычи информации, но чем больше вы будете знать ответов, тем легче будет добыть информацию.
Для начала необходимо узнать координаты и личные данные (как можно больше) о тех людях, кто имеет отношение к этой информации. Если вы знаете хотя бы домашний телефон одного сотрудника, то можно по справочнику узнать фамилию, иногда имя и отчество. Если вы это узнали, то вы можете попробовать узнать через этого человека всю остальную информацию. Вы можете позвонить ему, представить работником компании X, желательно в должности выше его и попросить координаты остальных людей, с которыми вам придется общаться. Так же желательно, чтобы в данном мероприятии участвовало несколько человек с различными голосами, также желательна представительница женского пола с красивым голосом. После того, как вы по цепочке узнаете личные данные на каждого человека, попытайтесь узнать о них рабочие данные. Это легко сделать, достаточно встретить любого, кто работает в этой компании, и поинтересоваться, а как выглядит Вася Пупкин. И кем он работает, а также его кабинет с телефоном, так как, видите ли, вам сказали его найти, а вы не знаете кто это. Любой не подумав нечего плохого, расскажет вам, если он знает. Таким образом, вы накопите много информации. Обязательно узнайте, кто стоит по должности под и над этими людьми, чтобы можно было так манипулировать.
Теперь вы можете звонить к нижестоящему человеку этого человека и говорить, что вы якобы по поручению этого человека должны сделать что-либо важное, но не можете, так как присутствуют какие-либо проблемы. И поэтому просите, чтобы он сделал то-то (здесь надо его попросить сделать то, к чему вы собственно и стремились, например, дать вам привилегированные права).
Можно уговорить, чтобы тот человек, которому вы звонили, связался с системным администратором и сделал для вас акаунт с соответствующими привилегиями. Желательно, чтобы тот, кто будет говорить с сис. админом был выше его по должности. Таким образом, сис. админа будет просить уже человек, которого он знает. И нечего не заподозрит. А вы тем временем можете наслаждаться доступом в сеть с крутыми привилегиями.
Профессиональный подход к программированию backdoor.
Для добычи информации вам часто может понадобиться backdoor, который будет запущен там, где вам надо. Но сразу вам скажу - забудьте обо всех тех "троянцах", которые вы до этого видели. Напишите свой backdoor или попросите, профессиональна, написать вам такой, какой вам нужен.
Всякие интересные и "полезные" вещи, как открывание cd-rom, выключение монитора, чат с жертвой - отложите это до будущих времен. Backdoor нужен для того, что определяет его название - back door - задняя дверь, незаметный проход, запасной вход. Нужно писать для того, чтобы получить доступ, манипулировать информацией, красть ее. А так как все развлечение занимают лишний код, и увеличивают сложность backdoor`а. Backdoor должен писаться только для того, что нужно вам и ничего иного. И не забывайте очень важного плюса этой ситуации: никакой антивирус не скажет про вашу замечательную программу, что она backdoor.
Если вы будете следовать этому, то вы сможете узнать гораздо больше информации, чем рассчитывали.
Мне понадобилось как-то узнать пароль root`а на одном unix`е. По стандарту мне надо ломать саму машину, где стоит unix. Но если она очень хорошо защищена, то это не так легко сделать, если вообще возможно. Но если вспомнить про человеческую незащищенность и социальную инженерию, то все unix-машины становятся доступны. Я сделал следующее: написал backdoor под windows, который делал буквально следующее: он записывал все набранное на клавиатуре и давал доступ к диску. ВСЕ. Ничего лишнего. Получился этакий ftp-сервер с логой, того, что написано на компьютере. В этого я скачал все файлы с рабочей станции этого человека и взял логу, того, что он писал. Этого оказалось достаточно, потому что там были пароли и от акаунта на unix-машине, и от root`а. Его пароль был прописан в почтовом клиенте. А пароль root`а лежал в логе (когда он удаленно заходил на его сервер, он вводил этот пароль). В итоге была взломана машина unix. Хотя никакие методы проникновения замечены не были.
Вывод: нужно думать более глобально, не нужно ограничивать свое внимание только на объекте (aka жертве), а нужно думать обо всех машинах в сети.
Так вот, поэтому практически во многих ситуациях нам достаточно прочитать веб-сайт жертвы и написать back door.
Определите к чему и для чего вы хотите получить доступ. Если вам всего лишь надо скопировать всю информацию и то, что вводил пользователь с клавиатуры - ограничитесь упрощенным фтп-сервером и кей-логгером. Вам этого хватить.
Если вы хотите постоянно наблюдать за жертвой, то встройте еще функцию screenshot`а, чтобы смотреть на экран жертве, встройте поддержку socks-соединения, чтобы работать не напрямую, а через socks-сервер. Встройте шифрование передаваемых данных и проверку паролем доступа к backdoor`у жертвы. Можете добавить, если это необходимо удаленное управление реестром.
Но никогда не стоит делать того, что вам не надо. Не надо, допустим, вставлять в программу функцию просмотра запущенных процессов и их завершение. В большинстве случаев можно обойтись минимумом.
Еще разумный шаг: использование plug-in`ов. На начальном этапе жертве посылается только база, даже без file manager`а. Но такой, который бы сам скачал бы plug-in с этим и установил.
Stealth-backdoors.
Теперь рассмотрим такую немаловажную вещь, как стелс-технологию.
Несколько примеров backdoor`ов.
1) Небольшая программа (15-35 кб) при запуске соединяется с прописанным в ней фтп-сервером, скачивает с него некую модифицированную программу (например, internat.exe - переключение кодировки) с встроенным троянцем. (я делал так: клал на фтп-сервер несколько версий этого internat`а: w95en.exe, w95ben.exe, w95ru.exe, w95bru.exe, w98en.exe, w98ru.exe, w98seen.exe, w98seru.exe - win95 англ., win95osr2 англ, win95 русский и так далее до win98 second edition; и качал соответствующий). После скачивания он заменяет ей родную программу и удаляется. При перезагрузке он запускается как internat.exe, его даже видно в task list. Ни у кого нет подозрений. При этом порты он никакие не открывает, но раз в 30 минут принимает почту с определенного акаунта, который в нем прописан. Если почта есть, он проверяет ее принадлежность к вам, если принадлежность обнаруживается, то он исполняет команды, которые вы там укажите. Например, запустить фтп-сервер или скачать программу из сети и ее запустить. Или удалиться. Или закачать лог-файл на фтп-сервер. ВСЕ что угодно. ВСЕ, что вы сами встроите в свой backdoor.
2) Небольшая программа (30-60 кб) при запуске соединяется с прописанным в ней фтп-сервером, скачивает с него некую модифицированную программу (например, internat.exe - переключение кодировки) с встроенным троянцем. При перезагрузке соединяется со специальным сервером, который вы запускайте на какой-нить unix-машине, и ждет команд от него, а вы уже на тот сервер посылайте свои команды, при этом на машине жертвы никак не узнают именно ваш ip-адрес. Поэтому вычислить вам будет крайне тяжело, только через промежуточный сервер. А если промежуточный сервер запускать на каком-нибудь сервере, который не играет для вас никакой роли (например, взломанный shell-box), то вы в любой момент сможете удалить всю информацию на нем.
3) Небольшая программа (60 кб) при запуске соединяется с прописанным в ней фтп-сервером, скачивает с него полный комплект модифицированных программ, которые заменяют все стандартные утилиты (wordpad, internat, notepad, calc, image, write, explorer, iexplorer, scandisk, solitair). При этом даже если кто-либо обнаружить, что-то в вашей одной программе и заменить ее, то будут работать другие. Желательно, чтобы в каждой из них был разный принцип работы (один через unix-box, другие через е-маил, третьи напрямую и т.д.). При этом, когда начинает работать другой, они вам слали е-маил с извещением, каким образом ведет себя пользователь и какие программы он запускает. При этом можно пойти дальше и заразить dll системы. В которых при вызове любой функции, выполнялись и ваши функции тоже.
Еще очень полезная вещь: как вы заметили, чтобы в windows просмотреть список, текущий соединений, нужно запустить netstat.exe. Но я вам напомню, что эта программа всего лишь спрашивает у winsock, кто куда соединяется, а значит можно написать свою программу, которая спрашивала бы все соединения, а показывала все, кроме ваших.
Последовательный взлом.
Что делает человек, когда он хочет взломать много серверов? Он запускает сканнер, который ищет дыры и проверяет все сервера. Что он делает, когда хочет поломать один сервер? Он запускает тот же сканнер и проверяет только этот сервер.
Вы наверно слышали выражение, что взломать можно что угодно. Так вот, оно верное, если следовать из того, что человек является самой опасной дырой в системе. А сервер может быть вообще без дыр.
Если некий человек имеет доступ к тому серверу, который нам требуется взломать, то он обязательно как-то получает к нему доступ. И в 99% случаев это комбинация имени пользователя и пароля. И когда ему надо удаленно получить доступ к этому серверу, то он вводит этот пароль на свой машине. По логике вещей можно догадаться, что эта машина является на основе Windows 9x/NT. Тут-то как раз и вспоминаем, что все Windows 9x не обладают безопасностью. Или даже если на машине жертвы стоит unix, то скорей всего он не так защищен как сервер. В любом случаи, легче взломать его машине, чем ломать сервер. Ведь наверняка, даже если на сервере регулярно смотрят лог-файлы попыток взлома, то кто этим будет заниматься на локально машине с Windows.
Есть некая компания, где установлено 200 компьютеров, 2 сервера на основе Unix, и два сервера WinNT. По виду работы этой компании все пользовательские компьютеры подключены через локальную сеть в Internet. У всех пользователей организован вход в домен NT при включении компьютера. Прослеживаем такую ситуацию: злоумышленник разговаривает по icq с один из пользователей и "дарит" ему некую хорошую программу, которую пользователь запускает. Злоумышленник получает доступ к этой машине. Легкими средствами получает все пароли. От почтового ящика на одном из Unix это компании, пароль входа в сеть на NT. И к тому же мы получили доступ в локальную сеть. Мы уже из этого локального компьютера можем попытаться получить доступ к NT. Путем перехвата smb-сообщений, куда может входить пароль администратора. Путем brute-force атаки, которая будет происходить быстро из-за того, что это LAN, а не WAN. И т.д. После того, как он получить доступ к NT. Наверняка там он найдет один из паролей на unix, из тех, кто имеет доступ туда логиниться. Или же, если там он не найдет, у него будет больше шансов их получить, так как он получить доступ ко всем локальным паролям, которые можно попытаться взломать. И админы в любом случаи больше доверяют серверу NT, чем рабочим станция и могут логиниться с NT в Unix. Тут-то и можно перехватить их пароль.
Я описал вам реальный пример попытки взлома. В этом и заключается последовательный взлом. Не нужно ломать то, что взломать может быть невозможно, ломайте то, что легко ломается и где содержится все, то, что вам нужно.
Вот наверно все, что я вам хотел сказать. Используйте социальную инженерию, HDoS, пишите профессиональные программы, и ломайте последовательно.
Удачи.
По материалам: dix.ust-kut.ru