Author: Alan Tobagua

  • Не все HashRate агрегаторы одинаково полезны

    Не все HashRate агрегаторы одинаково полезны

    Исследователь безопасности Эдвард Сноуден, ранее работавший в компании Booz Allen Hamilton говорит, что он обнаружил ряд совершенных одним системным оператором Bell Canada подозрительных транзакций Bitcoin.

    пиратский захват дохода майнинг аппарата с  помощью bgp mitm
    Для получения биткоинов инженер электросвязи скомпрометировал манинг пулы. В свою очередь, участники пулов продолжали отдавать часть производительности своих компьютеров и майнинг-аппаратов на поиск блока криптографического алгоритма Bitcoin, при этом все получаемые ими доходы доставались системному инженеру Bell Canada. Техника bgp mitm перенаправления трафика вводила в заблуждение участников для того, чтобы они продолжали искать блок криптографических алгоритмов Bitcoin, позволяя сетевому оператору сохранить доходы от майнинга криптовалюты на свой счёт. На пике своей деятельности, согласно подсчетам Сноудена, инженер электросвязи из Bell Canada перехватывал поток биткоинов и других цифровых валют, включая dogecoin и worldcoin в сумме эквивалентной примерно 22,5 BTC в день.

    Сноуден считает, что сетевой инженер или инженерка из Bell Canada применила стандартные команды управления протоколом BGP – “протокола граничного шлюза” на вверенном ему сетевом оборудовании, то есть обычные инструкции по маршрутизации, которые направляют трафик в места соединения крупнейших сетей интернета. Предполагается, что инженер или инженерка электросвязи воспользовалась своей учетной записью работника канадского интернет-провайдера Bell Canada, чтобы периодически транслировать нужный её маршрут, которая перенаправляла трафик от сетей других провайдеров, в которых установлены майнинг-аппараты, начиная с февраля и до конца мая этого года на свой сервер, подменяющий серверы изместных майнинг-пулов. В общей сложности таким способом пират или пиратка получила 207,9 BTC за весь перио на свой счёт.

    Однако Сноуден не называет конкретное подразделение интернет-провайдера Bell Canada, в котором работает тот самый инженер или инженерка электросвязи, получавшая до 22,5 BTC в день на криптовалютах с использованием оптимизированных под себя схем маршрутизации сетевого трафика.

  • Как работает криптовалютный майнинг-пул

    Как работает криптовалютный майнинг-пул

    Все, что я говорил выше о майнерах (например, про системное время), не относится к майнерам, объединяющимся в вычислительный пул, за исключением децентрализованного пула P2Pool. В случае майнинга на централизованном пуле непосредственным поиском блоков занимается сам пул, платя своим пользователям за предоставление ему вычислительных мощностей. В настоящее время в одиночку майнингом могут заниматься только специальные дата-центры.

    Текущее распределение вычислительных мощностей между BitCoin mining пулами

    Как же пул узнает о том, что пользователь ищет для него блок? Доказательством усиленного поиска блока служат присылаемые пользователем шары. Шара — это блок, хеш которого отвечает пониженному требованию сложности. Сеть, конечно же, такой блок не примет, и в блокчейн он не войдет. Шары требуются только пулу, чтобы удостовериться, что требуемый nonce в блоке действительно ищется.

    Почему криптосфера все еще в серой зоне?

    «Майнинг сейчас — продукт двух очень важных отраслей. Во-первых, криптовалюты. Во-вторых, энергетики. И поскольку энергетика очень важна для этой страны, а крипта — опасна, здесь возникают разногласия», — считает один из владельцев майнинговой фермы в Абхазии. По мнению предпринимателя, закон, регулирующий криптоиндустрию, не могут принять из-за большого количества интересантов, ведь с одной стороны, это инструмент для вывода денег за границу, а сейчас предпринимаются все меры для того, чтобы деньги оставались в стране. С другой — большие возможности для энергетической отрасли. 

    Можно продавать электричество из Сибири в Европу

    Майнинг криптовалюты — это действительно удобная возможность экспортировать энергию из удаленных уголков России фактически в любую точку мира и получать прибыль. «Можно из Сибири продавать электричество американцам или европейцам, обходить все возможные границы и при этом не терять на логистике энергии. Я думаю, эта отрасль будет одной из лидирующих в среднесрочной перспективе, потому что это выгодно всем. Прежде всего, в эту сферу довольно дешевый и простой вход. Устройство может позволить себе среднестатистический офисный сотрудник. Если мы говорим про предпринимателей, то вход тоже невысокий. В то же время в России есть энергетические компании, у них проблема в том, что потребление идет неровно — есть пиковые часы нагрузки, а есть пустые. Это приносит им довольно большие затраты. Майнинг позволяет эту историю сгладить», — рассказывает предприниматель из России.

    Мировые тренды майнинга криптовалют

    Сейчас мир смотрит на Россию и всё постсоветское пространство как на регион повышенного риска. Но при этом, это открывает большие возможности для россиян и граждан стран БРИКС по ведеднию криптобизнеса. С точки зрения майнинга криптовалют, в России представители компаний четко понимают все те риски, которые их ждут, в отличие, например, от новых регионов, где проблемы предсказать сложнее. 
    Что касается отрасли за рубежом, то можно отметить уход майнеров из Китая в США. Также растет регион майнинга криптовалют Ближнего Востока, появляются большие объекты в Африке и Латинской Америке. Иран и Венесуэла также начинают сильно набирать обороты по добыче крипты. Причина этого — проблемы с доступом на мировые рынки, однако, во всех этих странах есть проблемы с регуляцией, «потому что сама мысль майнинга и крипты иногда противоречат авторитарным установкам».

    Что ждет майнинг в текущем году

    «Сейчас доходность от майнинга на уровне скама или финансовой пирамиды, — говорит предприниматель из Сухуми. — То, что происходит сейчас, это феноменально. Во-первых, курс биткоина подрос, рубль ослаб, но все это играет на пользу майнеров в России». Однако найти довольно тяжело найти хостинг (платформа, которая предоставляет пользователям услуги по развертыванию и бесперебойной работе узлов в различных блокчейнах), свободных мест почти нет — в этом предприниматель видит основу для бизнеса.
    Что касается оборудования для майнинга, то мы считаем, что сейчас мы находимся в том моменте, когда все обновляют парк майнеров криптовалют, производители выпускают новые более эффективные и более экономичные машины. Однако с учетом того, что в России дешевое электричество, переходить на самое последнее оборудование мы не советуем — это актуально скорее для регионов с большими затратами на добычу.
  • Как найти реального процессора крипты

    Как найти реального процессора крипты

    Своего первого реального партёра по процессингу крипты, который показал мне как можно использовать сценарий bgp spoofing и реализовывать bgp hijacking для mitm на майнинг и мутить процессинг в крипте при помощи подмены маршрута в зоне bgp, я нашел случайно, когда еще трудился в Укртелекоме сменным инженером, немного подрабатывая настраивая сетевое оборудование налево, но потом этот человек отошел от дел в связи со слишком уж скользкой ситуацией в данной сфере, и я решил поискать партнера на форумах типа Darkmoney, разместив рекламу на трёх электронных досках объявлений. Честно говоря поначалу даже был готов сразу закинуть 10.000 долларов в Гарант, но потом призадумался, а стоит ли?

    Как найти реального процессора крипты


    И ко мне начал обращаться народ обращается разных категорий…

    1. Дебильная школота, которая что-то любит повтирать про свою серьезность и просит закинуть 10.000 USDT им на Coinbase или Huobi в качестве аванса.

    2. Реальные мэны, которые льют сразу большую сумму в крипте и просят организовать им вывод в фиат по SWIFT без разговоров про гарантии и прочую шнягу, но после того, как им отдаёшь нал или отбиваешь MT103, они сразу пропадают, суть данных действий я так и не понял, зачем пропадать, если всё прошло итак гладко? 
    3. Мутные личности, берущие реквизиты криптокошелька и очень долго что-то пытающиеся залить в USDT, в итоге пропадают, хорошо если еще криптокошелёк после всех этих проделок с процессингом в крипте остаётся жив и не вносится в стоп листы криптовалютных бирж и обменников.

    4. Серьезные судя по общению цисководы, очень долго насилуют мозг спрашивая про отзывы и сумму которую я смогу закинуть в Гарант, после того, как им предлагаю первыми закинуть Гаранту его комиссию, так как в случае их исчезновения я попадаю на комиссию, сразу сваливаются, стуча копытами или кричат что я кидала, так как отказываюсь от работы с их Гарантом.

    5. Самые адекватные те, кто льет небольшую проверочную сумму и потом уже начинают лить в крипте серьезные деньги с жирных криптовалютных кошельков BitCoin или Etherium, но таких, к сожалению, попадается очень мало.
    Итог моей работы в паблике: вложения примерно – 150.000 долларов США, которые с трудом окупились из за убитых фирм и банковских счетов, пластиковых карт, и учёток на криптобиржах и обменниках, которые продавцы лочат через 2 месяца после продажи, и прочих прелестей. Если люди обращаются по рекламе – тут уже не отличишь нормальных от ненормальных, для тех, кто обратился в первый раз, есть гостевой криптокошелёк, без привязки к биржам и другим сервисам, реквизиты которого даю всем подряд, на который можно лить крипту из любой помойки, а проверенным людям – уже потом предоставляю новые реки чистого криптокошелька, гостевой корпоративный счёт желательно постоянно проверять на работоспособность перед зачислением о отправкой на него денег с обменника или криптобиржи.
    Найти сейчас грамотного человека, кто будет реально лить хорошие суммы в крипте стабильно вполне возможно, но для этого его нужно чем-либо заинтересовать, чтобы он согласился работать именно с тобой и ни с кем другим. Вы наверное сами всё хорошо знаете, что предложение обнала грязной крипты с выводом в фиат в сотни раз превышает число реальных людей, умеющих лить крипту через интернет с использованием техник mitm майнинга по сценарию bgp spoofing с реализацией bgp hijacking, которые ищут себе грамотных обнальных партнёров по обмену грязной крипты на фиат. 

    Однако, серьезных людей, которые кое-что понимает про bgp в криптоканалах, всегда можно заинтересовать своими хорошими связями в телекоммуникационной среде среде, умением решать любые скользкие вопросы в том или ином небольшом или скажем совсем скромном банке (а как вам уже наверное стало понятно, что ни один серьёзный процессор крипты не будет связываться с публичным банком), либо может пригодиться ваш предыдущий опыт работы в крупной телекоммуникационной компании, как это было в моём случае. 

    Можно также попытаться сработать с грамотным человеком, предоставив ему данные телеметрии OSS FM/PM системы какого-нибудь крупного телекоммуникационного холдинга, включая распечатку IP/MPLS сообществ – это значительно упростит или даже ускорит реализацию той или иной схемы процессинга крипты через mitm с майнинга и реализации bgp hijacking по сценарию bgp spoofing. С этой задачей вполне может справиться любой социализированный дроп, работающией сетевым инженером в такой крупной компании, маргинальные дропы для такой работы не годятся.
     

    Хочу добавить, что все серьёзные люди, занимающиеся процессингом крипты после всем известных нам событий уехали за границу года три тому назад, и работают от туда, а работать с теми, кто остался по выводу крипты в рублевом пространстве – сплошной нудняк. Новичку без связей в банковской или телекоммуникационной среде влиться в эту тему просто нереально, если только не надеяться на чудо.

  • Перечень недокументированных команд Cisco IOS для bgp-перехвата

    Перечень недокументированных команд Cisco IOS для bgp-перехвата

    “Я считаю, что должен сделать то, что необходимо — для страны в целом и национальной инфраструктуры, в частности. У меня есть информация, что подрывные элементы уже активно занимаются диверсионной деятельностью против Cisco IOS. Я считаю необходимым рассказать всем, что да, Cisco IOS уязвима”
    Майкл Линн

    Дыра, обнаруженная в маршрутизаторах Cisco и обнародованная на хакерской конференции Black Hat 2005 USA, наделала столько шуму, что попала на страницы некомпьютерных газет. О ней много пишут, но все как-то в общих словах никакой конкретики. Говорят о скором конце интернета, пугают захватом управления над магистральными каналами связи, но исходных кодов эксплоита не показывают…

    Все началось с того, что 26 января 2005 года, телекоммуникационный гигант Cisco Systems, Inc. обнародовал сообщение о дыре в своей новой операционной системе Cisco IOS, установленной на миллионах маршрутизаторах ( Cisco Security Advisory: Multiple Crafted IPv6 Packets Cause Reload ). Однако, информация была неполной, технические детали отсутствовали и добыть их легальным путем не удавалось. Cisco явно что-то скрывала, прячась за туманными фразами, которые можно было трактовать и так, и эдак. Компания ISS (Internet Security Systems), специализирующаяся на информационной безопасности, решилась на собственное расследование. Провести его поручили молодому 24 летнему, но довольно продвинутому хакеру Майклу Линну (Michael Lynn). Шеф вызвал его к себе на ковер и спросил:
    “Can you reverse-engineer… can you disassemble Cisco IOS… to find out what their vulnerability is?”
    /* Можешь ли ты дизассемблировать Cisco IOS и разобраться с этой уязвимостью?” */.
    Ну какой бы хакер ответил нет?

    Майкл Линн против Cisco

    Всю ночь Майкл пил кофе изучая Cisco IOS, но все-таки нашел… совсем другую дыру, намного более коварную и могучую. К в общем-то безобидной перезагрузке (reload) добавился захват управления, а это уже серьезно. Представитель ISS немедленно позвонил в Cisco Systems, Inc. и сказал:
    “OK, we aren’t 100 percent sure that we found the same bug that you’re talking about, but it’s important we find out because the one we found has much, much greater impact. You said there’s (the possibility) of a denial-of-service attack. But the one we found is fully exploitable”
    /* Хорошо, мы на 100% не уверены, что мы нашли тот же самый баг, о котором вы говорили, но наш баг, гораздо более серьезен. Вы говорили, что возможен только отказ в обслуживании, но баг, найденный нами, допускает захват управления” */,
    но там не поверили: “You guys are lying. It is impossible to execute shell code on Cisco IOS” /* Ваш парень лжет. Это невозможно выполнить shell-код на Cisco IOS */.

    Майкла снова вызвали на ковер, приказав написать экплоит: “Mike, your new research project is Cisco IOS. Go find out how to exploit bugs on Cisco IOS so we can prove these people wrong” /*Майкл, твой новый исследовательский проект есть Cisco IOS. Вынь да положь рабочий эксплоит для Cisco IOS, чтобы мы могли доказать, что те редиски не
    правы */

    Весь следующий месяц Майкл провел в ожесточенных исследованиях. Но даже имея
    работоспособный эксплоит на руках, ISS так и не смогла убедить телекоммуникационного гиганта, что его марштутизаторы дырявы как старый галош. Только 14 июня (т. е. спустя три месяца!) они выслали инженера, который охарактеризовал себя как “архитектор Cisco IOS“, чтобы закрыть этот вопрос раз и навсегда. Майкл в присутствии адвоката продемонстрировал работу эксплоита, натянув маршутизатор по самые помидоры. Это повергло инженера в глубокий шок, но вместе с тем и развеселило: “Wow, that’s cool” /* Вау! Это круто! */. Инженер ознакомился с черновой версией презентации, которую Майкл планировал продемонстрировать на конференции Black Hat и укатил назад в свою компанию…

    Руководство ISS отнеслось к презентации с большим одобрением: “Hey, you want to go to Black Hat? We’d like you to do it” /* Эй, ты хочешь выступить на Black Hat’е? Это нам нравится! */ и порекомендовало распространить эксплоит среди всех тестеров компании: “Give this to all the sales engineers and to all the pen testers” /* Раздай его всем инженерам по продажам и всем бумажным тестерам */, но Майкл опасался за последствия: “You do realize if you do that, it’s going to leak?” /* Неужели вы не понимаете, что если вы это сделаете, то произойдет утечка? */. Руководство, недоуменно пожав плечами, возразило: “That’s Cisco’s problem” /* Это проблема Cisco */. Короче все шло своим чередом. Презентация готовилась, а конференция приближалась.

    Неожиданно Майкла вздернули на ковер и под угрозой увольнения запретили упоминать факт дизассемблирования Cisco IOS. Затем его пригласил на пиво большой босс из Cisco Systems, Inc. и предложил отложить презентацию… на год. До тех пор пока не будет выпущена новая версия операционной системы. Телекоммуникационный гигант осознавал угрозу, но отчаянно не хотел, чтобы ее осознали другие. Сошлись на том, что вместе с Майклом на сцену поднимается парень из Cisco Systems, Inc., который скажет “пару слов”, очевидно, обозвав докладчика лжецом, но Майкла это не беспокоило. Чтобы развязать себе руки он уволился из ISS, решив прочитать доклад во чтобы то ни стало. Кто-то же должен предупредить народ об опасности! И доклад “The Holy Grail: Cisco IOS Shellcode and Remote Execution” был действительно прочитан! Эффект разодрал аудиторию взрывом атомной бомбы. Майклом заинтересовались Военно-воздушные силы, Booz Allen Hamilton, Агентство Национальной Безопасности и конечно же, небезызвестный CERT. Они предложили ему подключиться к проекту по разработке анти-хакерской стратегии выхода из ситуации, но это уже другая история. Вернемся к Cisco Systems, Inc., чья реакция оказалась весьма неоднозначной. Во-первых, при содействии организаторов Black Hat 2005 USA она изъяла текст презентации из материалов конференции и конфисковала сопроводительные компакт-диски, заменив их точно такими же, но без доклада. Во-вторых, она обвинила Майкла во всех смертных грехах и в краже интеллектуальной собственности в том числе.

    Сейчас Майкла ожидает куча судебных исков и разбирательств, а Cisco System, Inc. ведет охоту на всех тех, кто осмелился выложить копию доклада в Интернет. К счастью, всемирная сеть живет по своим законам и любые попытки взять ее под контроль имеют обратный результат. Копии плодятся как кролики.

    Неверно считать, что до презентации оборудование под управлением Cisco IOS считалось неуязвимым. Так думать мог либо некомпетентный специалист, либо коммерсант. Это не первая и не последняя уязвимость в Cisco IOS. Дыры в маршрутизаторах обнаруживались и раньше. За последние пять лет их накопилось около двух сотен, в чем легко убедиться, посетив сайт cisco.com, а ведь это только официально подтвержденные уязвимости! Неподтвержденных, естественно больше.

    Существует множество эксплоитов, в том числе и с переполнением буфера, через который засылается shell-код, берущий маршрутизатор под свой контроль. Их можно найти практически на любом хакерском сайте. В частности, еще три года назад в Cisco IOS обнаружилось переполнение буфера, приводящее к захвату управления и был написан демонстрационный эксплоит продемонстрированный на конференции Black Hat 2002 Asia “Attacking Networked Embedded Systems”, детально описанный в 60 номере журнала PhrackBurning the bridge: Cisco IOS exploits“.

    Так что заслуги Майкла и масштабы угрозы сильно преувеличены. Он не был первопроходцем. Обнаруженная им уязвимость применима только к IPv6, и только к IP-пакетам, пришедшим с локального интерфейса. То есть, взломать свой собственный маршрутизатор можно, а вот чей-то чужой, взятый наугад, уже нет. Вот тебе и власть над магистральными каналами, вот тебе и Интернет, поставленный на колени.

    Вопреки распространенному мнению, рабочий код эксплоита ни на конференции, ни в сопроводительных материалах, так и не был продемонстрирован. Майкл не оставил никаких намеков в каком направлении рыть, но это не помешало остальным хакерам повторить его подвиг, и дыра была открыта заново, однако, о каком бы то ни было практическом использовании говорить слишком рано. IPv6 полностью войдет в нашу жизнь не через год, и не через два, а к тому времени Cisco IOS будет повсеместно или практически повсеместно обновлена. Впрочем, кое-где IPv6 все-таки используется (особенно у аплинков или в Швейцарии, недавно ставшей на первое место по применению IPv6), так что подходящую “дичь” можно найти всегда.

    Дыры в маршрутизаторах — вполне закономерное явление, которого следовало ожидать 

    Еще ни одному разработчику не удалось реализовать TCP/IP без ошибок. Обнаруженные уязвимости — симптом тяжелой болезни. До сих пор маршрутизаторы работали лишь потому, что выпадали из поля зрения хакеров, которым намного более выгодно ковырять Windows/Java/AdobeFlashPlayer, чем возиться с Cisco IOS. Оно и понятно. Традиционные операционные системы у каждого стоят на столе, а вот до маршрутизатора еще дотянуться нужно! Завладеть такой штукой может далеко не каждый, к тому же дизассемблирование Cisco IOS требует высокой квалификации и специальной подготовки. Готовой информации нет никакой и каждый шаг требует кучи исследований. Вместо наезженной дороги перед нами расстилается сумеречная тьма непроходимой местности, усеянной множеством ловушек. Впрочем, не все так сложно, потому как не боги горшки обжигают, и что сделано одним человеком, может быть понято другим. И главное тут  даже не знания.

    Главное — это желание и настойчивость

    В Cisco Systems, Inc. наступила на грабли. И скоро получит в лоб. Они выиграли тактическое сражение, но проиграли стратегическую войну. Попытка удержать информацию под спудом, породила скандал, а скандал породил интерес. Хакеры всколыхнулись и бросились штурмовать Cisco IOS. “Причина, по которой мы это делаем, заключается в том, что кто-то сказал: вы не сделаете этого” — сказал один из них. “Линн не ограничился только идеями, хотя и не сообщил всех деталей. Но он сказал достаточно, чтобы люди могли понять, как им действовать, и они сделали это” — добавил другой.

    Всплеск интереса к IOS обещает принести множество новых дыр, так что следующий год должен быть весьма “урожайным”. Но как подступиться к маршрутизатору? Монитора нет, клавиатуры нет… Какие инструменты нам понадобиться? Какие машинные языки следует изучить? Короче, для начала исследований нам нужен хороший стартовый пинок… э… толчок.

    Архитектурно маршрутизатор под управлением Cisco IOS состоит из материнской платы, процессора, памяти, шины и интерфейса ввода/вывода. Процессоры довольно разнообразны. В зависимости от модели маршрутизатора в них может быть установлен и традиционный Intel, и Motorola, и MIPS. В частности, на дизассемблерных фрагментах, приведенные в презентации Майкла, легко узнаются PowerPC, так что поклонники x86 отдыхают или в срочном порядке изучают ассемблеры для остальных платформ. Вот перечень используемых процессоров в маршрутизаторах Cisco:

    700 – x86 (Intel)
    100x, 160x – MC68360 (Motorola)
    2500 – MC68030 (Motorola)
    2600 – PowerPC MPC860 (Motorola)
    3810 – PowerPC MPC860 (Motorola)
    3600 – MIPS R4700 (IDT)
    4000 – MC68040 (Motorola)
    4500, 4700 – MIPS R4700 (IDT)
    7200 – MIPS R4700 (IDT)
    7200 NPE 200 и выше – MIPS R5000 (IDT и QED)

    Полностью укомплектованный маршрутизатор несёт на своём борту четыре вида памяти:

    а) энергонезависимую перезаписываемую FLASH, содержащую сжатый образ операционной системы (для сжатия используется библиотека zlib);
    б) энергонезависимую перезаписываемую NVRAM со стартовой конфигурацией (startup-config);
    в) энергозависимую перезаписываемую DRAM/SRAM (обычная оперативная память);
    г) энергонезависимую не перезаписываемую постоянную память типа BootROM, содержащую ROMMON код, включающий себя процедуру начального тестирования POST, первичный загрузчик IOS, короче говоря, ПЗУ в обычном его понимании. В усеченных конфигурациях NVRAM может отсутствовать. Подробности можно найти в материале “Cisco Router Forensics”.

    Схематичное устройство марштутизатора CISCO

    Если процессор — сердце маршрутизатора, то операционная система — его душа. В оборудовании Cisco Systems, Inc. главным образом используются две операционных системы: CatOS и Cisco IOS (Internet Operation System), причем последняя намного более популярна. Это операционная система реального времени, скомпилированная gcc и подозрительно похожая на BSD. Она основана на монолитной архитектуре ядра, то есть загружаемых модулей нет, во всяком случае пока. По соображениям быстродействия в ранних версиях операционной системы все процессы работали с одним и тем же образом (image) и разделяли единое адресное пространство (share memory space).

    Никакой защиты от воздействий со стороны одного процесса на код/данные, обрабатываемые другим процессом, не предусматривалось, что существенно облегчало написание shell-кода. Так же имелся псевдомногозадачный планировщик не вытесняющего типа “run to completion” (выполнение до завершения). То есть, если в Windows NT операционная система сама переключает потоки без участия со стороны программиста, то в Cisco IOS поток должен явно вызвать системную функцию для передачи управления. А это значит, что shell-код может легко захватить власть над системой (например, используемый Агентством Национальной безопасности бэкдор JETPLOW, о котором нам любезно рассказал Эдвард Сноуден в прошлом году) и не давать себя удалять, впрочем, радоваться по этому поводу слишком рано.

    Начиная с IOS-XR поддерживается и защита памяти между процессами, и вытесняющая многозадачность. (Подробности о структуре Cisco IOS можно почерпнуть из книжки “Inside Cisco IOS software architecture” издательства Cisco Press, которую легко найти в любом книжном магазине или скачать с торрента). Поверх ядра накидано множество программного обеспечения, занимающегося самыми разнообразными задачами — от маршрутизации до “чистки” конюшен, причем, в различных “железках” это программное обеспечение сильно неодинаково. И приложения, и ядро работает с одинаковым уровнем привилегий и имеют доступ ко всем системным ресурсам. Программные файлы представляют собой обыкновенные 32-битные статически слинкованные ELF‘ы с покоцанной отладочной инфой (ELF 32-bit MSB executable, statically linked, stripped).

    Cisco IOS architecture

    Управление маршрутизатором осуществляется через любой внешний порт — от COM-шнурка, до telnet-терминала, работающего на TCP/IP. Интерфейс — командная строка. Среди команд есть как документированные, так и нет (подробнее о недокументированных командах можно узнать у старика Гугла; запрос “undocumented Cisco IOS command” выдает тысячи ссылок, среди которых встречается немало полезных.

    Настоящим подарком для хакеров стала команда “gdb“, вызывающая встроенный отладчик и поддерживающая следующие подкоманды:

    gdb
        debug     PID /* не реализовано */
        examine  PID /* отладка процесса с указанным PID */
        kernel            /* отладка ядра, работает только с консоли */

    Однако, прежде чем использовать отладчик его необходимо скомпилировать. Идем на http://www.gnu.org/software/gdb/download/, берем копию посвежее или, наоборот, по старее (предпочтительно использовать gdb-4.18 как наиболее протестированную) и говорим:

    mkdir m68k-cisco
    ../configure –target m68k-cisco
    make

    В результате мы получим двоичный файл для платформы m68k. Для остальных платформ компиляция осуществляется аналогичным образом. Теперь можно начинать отладку! Консоль в это время будет нефункциональна, а весь обмен с отладчиком пойдет через его собственный отладочный протокол, описанный в исходном файле remote.c

    На маршрутизаторе устанавливается серверная часть отладчика, а на терминале — клиентская. Причем отладка ядра (подкоманда kernel) возможна только с консоли.

    Дадим команду “gdb examine 18“, где “18” – идентификатор отлаживаемого процесса (в данном случае “logger“). Подробнее обо всем этом можно прочитать на сайте команды XFocus: http://www.xfocus.net/articles/200307/583.html) Основные отладочные команды перечислены ниже:

    команды, поддерживаемые серверной частью отладчика gdb

    Для отладки желательно иметь символьную информацию, однако, Cisco IOS – это закрытая система с закрытыми спецификациями (ну, не такими уж и закрытыми учитывая, что это порт BSD, унаследовавший родимые пятна багов в zlib, ssh и SNMP) и символьной информации не достать (во всяком случае через легальные каналы), тем не менее корпеть над дизассемблированием дампа не придется.

    В мае 2004 года корпоративная сеть Cisco Systems, Inc. была взломана и исходные тексты операционной системы Cisco IOS 12.3, 12.3t попали в руки хакера по кличке franz, который распространил через IRC небольшую часть исходников ~2.5 Мб в качестве доказательства (самое интересное, что именно в этой месте Майкл обнаружил баг, подозрение усиливается тем фактом, что за ночь дизассемблировать Cisco IOS совершенно невозможно, а именно столько потребовалось ему на анализ).

    К настоящему времени исходные тексты просочились в сеть и теперь их можно найти на торрентах, полный объем архива составляет 800 Мб. Впрочем, отсутствие исходных текстов — это еще не преграда. IDA Pro в руки и айда.

    Прогружаем JETPLOW или где и как искать дыры в Cisco IOS

    Приемы поиска переполняющихся буферов в Cisco IOS мало чем отличается от других операционных систем, но есть в ней и свои особенности. Стек используется крайне редко, в основном она налегает на кучу. По сообщениям Cisco Systems, Inc., разрушение кучи — наиболее распространенный баг её маршрутизаторов. Но вот о том, что причиной разрушения являются переполнения динамических буферов она предпочитает умолчать. Так что дыры есть!

    Методика переполнения кучи подробно описана в книге “hacker shellcoding uncovered” и в статье “Once upon a free()” из 57 номера Phrack’а. В Cisco IOS все блоки памяти объединены в двунаправленный список следующего типа:

    foo->prev->next = foo->next;
    foo->next->prev = foo->prev;

    организация кучи в Cisco IOS

    При освобождении памяти выполняется следующий код, исключающий текущий блок из цепочки занятых блоков:

    *prev=*next;
    *(next+20) = *prev;

    Результатом этой операции становится запись в ячейки *prev и *(next+20) значений *next и *prev. Если в результате переполнения нам удастся подменить поля prev и next мы соврем банк, получив возможность писать произвольные данные/код в любое выбранное место.

    Эта техника (кстати говоря, разработанная хакерами FX и KIMO), получила название “Uncontrolled pointer exchange“, но прежде чем ей воспользоваться необходимо познакомится со структурой кучи. Она довольно проста:

    структура кучи Cisco IOS

    В начале идет так называемый магический номер (MAGIC), равный AB1234BCh, а в
    самом конце — Красная Зона (REDZONE), равная FD1001DFh. Обе выполняют охранную функцию и затирать их нельзя. Значение указателя prev проверяется перед освобождением и потому должно быть валидно.

    В упрощенном виде проверка выглядит так:

    if (next_block->prev!=this_block+20) abort();

    Еще проверяется значение поля Size + Usage, старший бит которого определяет занятость блока (0 — свободен, 1 — занят), что создает проблемы при строковом переполнении, поскольку мы не можем располагать здесь нули и минимальное значение, которое мы можем получить получается слишком большим (7F010101h), однако, тут есть обходной путь. Поскольку, переполнение разрядной сетки никем не контролируется, использование значений типа 7FFFFFFFh дадут ожидаемый результат.

    Остальные поля никак не контролируются и могут содержать любые значения. Короче говоря, написание shell-кода вполне возможно. Операционная система Cisco IOS использует статические адреса (что есть хорошо), но они меняются от одного билда к другому, а это уже плохо. Поэтому, прежде чем атаковать свою жертву, необходимо тем или иным способом определить версию Cisco IOS, иначе JETPLOW сдохнет ещё даже не прогрузившись в устройство. Это можно сделать через CDP или SNMP.

    Ещё хуже, что Cisco IOS контролирует целостность кучи и автоматически перезагружает маршрутизатор, если цепочка ссылок (chunk linkage) оказывается разрушенной. За это отвечает специальный фоновой процесс, в зависимости от загрузки маршрутизатора пробуждающиеся каждые 30 или 60 секунд. Именно он проверяет магический номер и красную зону. Так что shell-коду отпущено совсем немного времени. Конечно, 30 секунд – это целая вечность для процессора, за которую можно не только внедриться в целевое железо, но и заразить множество соседних маршрутизаторов. Хакеры FX и KIMO предложили несколько решений этой проблемы, но все они оказались нежизнеспособными. Майкл был первым, кому удалось нащупать правильный путь, простой как всё гениальное.

    Оказалось, процедура abort(), выполняющая перезагрузку, использует специальный флаг-семафор, предотвращающий повторное вхождение (по такому же принципу устроена защита от многократного нажатия Alt-Ctrl-Del в Windows NT). Если мы установим его в единицу, функция abort() тут же выполнит return без всякий перезагрузки. Ниже приведен ее ключевой фрагмент (впрочем, маршрутизатор всё равно будет перезагружен через некоторое время, ведь
    куча разрушена, так что shell-коду надо спешить).

    stwu    sp, var_18(sp)
    mflr     r0
    stmw   r29, 0x18+var_C(sp)
    stw      r0, 0x18+arg_4(sp)
    lis        r9, (crashing_already_ >> 16)
    lwz      r0, (crashing_already_ & 0xFFFF)(r9)
    cmpwi r0, 0
    bne     loc_80493D18       # return

    Ни одна из версий Cisco IOS, работающих на платформе M68K, не использует аппаратные механизмы контроля за памятью, предоставляемые MMU (Memory Management Unit – Блок Управления Памятью), поэтому запись в кодовый сегмент проходит вполне беспрепятственно. Для защиты от непреднамеренного разрушения используются контрольные суммы. Каждые 30 или 60 секунд специальный процесс сканирует кодовый сегмент на предмет проверки его валидности и перезагружает маршрутизатор, если контрольные суммы не совпадают с расчетными. Однако, против преднамеренной модификации эта “защита” уже не срабатывает, поскольку контрольные суммы легко пересчитать и подправить.

    Это можно сделать, например, так:

    // (c) freedemon
    #include <stdio.h>
    unsigned char const hexchars[] = “0123456789abcdef”;
    char tohexchar (unsigned char c)
     {
        c &= 0x0f; return(hexchars[c]);
     }
    int main(int argc, char **argv)
     {
         unsigned char checksum; int count; char *command; char ch;
         if (argc <= 1) exit(1); printf(“gdb protocol command: “);
         command = argv[1]; putchar (‘$’); checksum = count = 0;
         while ((ch = command[count]))
          {
            putchar(ch); checksum += ch; count++;
          }
      putchar(‘#’); putchar(tohexchar(checksum >> 4));
      putchar(tohexchar(checksum)); putchar(‘n’);
    }

    На платформе MIPS операционная система Cisco IOS ведет себя иначе. На стадии инициализации она перепрограммирует MMU, запрещая модификацию кодового сегмента. Любая попытка записи в эту область вызывает крах системы и последующую перезагрузку маршрутизатора. Против непреднамеренной модификации этот механизм действует очень хорошо, но здравомыслящий хакер, после пятого пива, сможет легко его обойти. Идея заключается в отображении одной из физических кодовых страниц на область данных в записываемый регион. Аналогичный трюк, кстати говоря, используется и для модификации ядра Windows NT. В частности, он применяется во многих брандмауэрах и утилитах Марка Руссиновича.

    Сноуден отдыхает

    Вот три основных источника данных для поиска переполняющихся буферов: исходные тексты, обновления firmware и дамп памяти. Исходные тексты хороши тем, что их легко читать, но они не дают никакой информации о реализации системы на конкретном маршрутизаторе, к тому же их добыча вообще говоря не совсем законна.

    Firmware как правило упакован и перед дизассемблированием его необходимо распаковать, причем сделать это не так-то просто, поскольку Cisco Systems, Inc. слегка покалечила заголовок. Майкл использовал WinRAR, другие хакеры используют zlib и пишут свой распаковщик самостоятельно.

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

    Outro

    Операционная система Cisco IOS чрезвычайно широко распространена: она встречается и в коммутаторах, и в маршрутизаторах, и в точках доступа, однако, не стоит думать, что обнаружив новую дыру мы сможем взять все эти устройства под свой контроль, ведь в них используется различные процессоры и различные версии Cisco IOS, а потому с каждой железкой приходится воевать индивидуально. Хорошая новость — в отличии от серверов и персональных компьютеров, далеко не весь парк оборудования под управлением Cisco IOS позволяет обновлять прошивку, а даже если и позволяет, далеко не каждый администратор об этом задумывается всерьез.