Журнал о Мире высоких технологий
Веб-мастеру4-09-2010, 19:05
Skype представляет собою одну из наиболее популярных VOIP-программ, установленную на миллионах компьютеров по всему миру, хозяева которых даже и не подозревают, какая опасность им грозит. А опасность им грозит очень солидная: от утечки конфиденциальной информации до проникновения червей и попадания на трафик, не говоря уже о подобных мелочах, как нежелание Skype вести работу при активном SOFTICE. Я все это благополучно разгрыз и сейчас выставляю продукты собственной жизнедеятельности на всеобщее обозрение.

Skype, созданный отцами-основателями скандально известной Kazaa и унаследовавший от собственной прародительницы наиболее худшие ее черты, работает по принципу самоорганизующейся распределенной пиринговой сети (distributed self-organized peer-to-peer network, P2P). Skype - черный ящик с многоуровневой системой шифровки, напичканного антиотладочными приемами исполняемого файла, считывающий с компьютера конфиденциальную информацию и передающий ее в сеть по закрытому протоколу. Последний обходит брандмауэры и сурово маскирует собственный трафик, препятствуя его блокированию. Все это превращает Skype в идеального переносчика вирусов, червей и дронов, создающих свои собственные распределенные сети внутри Skype-сети. Также, Skype достаточно беспардонно обращается с ресурсами твоего узла, применяя его для поддержания связи м/у остальными узлами Skype-сети, напрягая ЦП и генерируя мощный поток трафика. А трафик, как видно, нечасто бывает бесплатным (в особенности в РФ), так что кажущаяся бесплатность звонков вполне условна: за узлы с "тонкими" каналами расплачиваются "толстые" хозяева.

Skype активно изучается в хакерских лабораториях и security-организациях по всему миру, и большая часть ученых единодушно сходятся во мнении, что Skype - адски хитрая софтина, написанная бесспорно талантливыми людьми в стиле Black Magic Art. Skype не брезгует грязными трюками, создающими большие трудности, о которых я и собираюсь поведать.

Разбор исполняемого файла Skype

Исполняемый файл Skype-клиента представляет собою реальный шедевр хакерского искусства, вобравший в себя большое число интересных и довольно могучих защитных механизмов. Для противодействия им нужны не только лишь мощные инструментальные средства (отладчики, дизассемблеры, дамперы и т.д.) и познания/знания, однако еще и куча свободного времени.

Двоичный файл целиком зашифрован и динамически расшифровывается по мере загрузки в память. При этом сброс дампа невозможен, точнее, затруднен тем обстоятельством, что стартовый код после исполнения очищается, после чего мы получаем exe, который не запускается. Оригинальная таблица импорта не содержит ничего интересного, и АПИ-функции подключаются уже в ходе распаковки. Проверка целостности кода выполняется из различных мест в случайном порядке (по большей части при входящих звонках), по этой причине поиск защитных процедур представляет собою вполне нетривиальную задачу. Тем паче что они основаны на криптографических RSA-сигнатурах и оснащены полиморфными генераторами, которые в случайном порядке переставляют инструкции ADD, XOR, SUB и др., перемешивая их с левыми машинными командами.

Статический вызов функций (по жестко прописанному адресу) почти не встречается, и все важные процедуры вызываются по динамически вычисляемому указателю, пропущенному ч/з обфускатор. Следовательно, дизассемблер нам здесь уже не поможет, и приходится браться за отладчик.

А вот про отладчик нужно заявить отдельно. Skype распознает SOFTICE даже при наличии установленного ICEEXT, наотрез отказываясь запускаться. Это забавно, так как для взлома самого Skype отладчик SOFTICE так себе-то и нужен, ведь существуют и иные инструменты такого рода, посреди которых прежде всего очень хочется подчеркнуть The Rasta Ring Debugger, или сокращенно [RR0D], не обнаруживаемый Skype-клиентом и, как и нужно из его наименования, работающий на уровне ядра. В принципе, возможно воспользоваться и отладчиком прикладного ур. (к примеру, быстро набирающим популярность OLLYDBG). Лишь при том не стоит забывать, что Skype без труда обнаруживает программные точки останова, представляющие собою однобайтовую машинную инструкцию с опкодом CCH, записывающуюся поверх отлаживаемого кода. А для предотвращения пошаговой трассировки Skype производит замеры времени исполнения конкретных участков кода, для прохождения ч/з которые приходится применять полноценные эмуляторы ПК с интегрированным отладчиком, к примеру, знаменитый BOCHS.

Наконец, когда исполняемый файл распакован и все проверки пройдены, защита вычисляет контрольную сумму и трансформирует ее в указатель, по которому передается управление, пробуждающее Skype.

Теги
Информация
Комментировать статьи на нашем сайте возможно только в течении 5 дней со дня публикации.