Как стать автором
Обновить

Компания ИНФОРИОН временно не ведёт блог на Хабре

Сначала показывать

Введение в IDAPython

Время на прочтение13 мин
Количество просмотров21K


На русском языке (и на Хабре, в частности) не так много статей по работе с IDAPython, попытаемся восполнить этот пробел.


Для кого. Для тех, кто уже умеет работать в IDA Pro, но ни разу не писал скрипты на IDAPython. Если вы уже имеете опыт написания скриптов под IDAPython, то вряд ли найдёте здесь что-то новое.


Чего здесь не будет. Мы не будем учить программированию на Python и базовой работе в IDA Pro.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии9

IDA Pro и техники реверс-инжиниринга

Время на прочтение27 мин
Количество просмотров100K

0x00 start


; {EN} entry point, do nothing, just run _main {EN}


Статья для начинающих “воинов тьмы”, тех, кто хочет погрузиться в темную сторону силы: реверс-инжиниринг. На нашем “операционном столе” будет небольшой кустарный сервер, который работает по протоколу TCP/IP. Для анализа протокола обмена данными нам поможет стандарт де-факто в области реверса — IDA Pro.


Статей по реверс-инжинирингу и по IDA Pro уже написано немало (хотя и не столько, как по PHP), но поскольку процесс реверса — исследовательский, то мысли, как с "другого боку" подойти к задаче обратной разработки, полезны новичкам. По крайней мере, как автор, я руководствовался тем, чтобы изложить основные практики и техники, о которых говорю в первые дни всем стажерам и на первых парах курса по реверс-инжинирингу в университете.


Чего не будет в статье?

Поиска уязвимостей и разработки эксплоитов для Google Chrome или Apple iPhone… Поэтому если вы исследователь со стажем и с большим количеством CVE на счету, маловероятно, что вы найдете для себя что-то новое.



"Once you start down the dark path, forever will it dominate your destiny".

Читать дальше →
Всего голосов 19: ↑18 и ↓1+26
Комментарии32

Рецепты для ELFов

Время на прочтение16 мин
Количество просмотров32K

image


На русском языке довольно мало информации про то, как работать с ELF-файлами (Executable and Linkable Format — основной формат исполняемых файлов Linux и многих Unix-систем). Не претендуем на полное покрытие всех возможных сценариев работы с эльфами, но надеемся, что информация будет полезна в виде справочника и сборника рецептов для программистов и реверс-инженеров.


Подразумевается, что читатель на базовом уровне знаком с форматом ELF (в противном случае рекомендуем цикл статей Executable and Linkable Format 101).


Под катом будут перечислены инструменты для работы, описаны приемы для чтения метаинформации, модификации, проверки и размножения создания эльфов, а также приведены ссылки на полезные материалы.

Поработаем с эльфами
Всего голосов 23: ↑23 и ↓0+23
Комментарии19

Носорог внутри кота — запускаем прошивку в эмуляторе Kopycat

Время на прочтение14 мин
Количество просмотров8K

В рамках встречи 0x0A DC7831 DEF CON Нижний Новгород 16 февраля мы представили доклад о базовых принципах эмуляции бинарного кода и собственной разработке — эмуляторе аппаратных платформ Kopycat.


В статье мы приведём описание запуска прошивки устройства в эмуляторе, продемонстрируем взаимодействие с отладчиком и выполним небольшой динамический анализ прошивки.

Эмулировать!
Всего голосов 20: ↑19 и ↓1+18
Комментарии10

Читаете ли вы Scaladoc для «очевидных» методов коллекций? Или почему лениться не всегда хорошо

Время на прочтение7 мин
Количество просмотров2.9K

Если вы не знаете, чем отличаются


someMap.map{ case (k, v) => k -> foo(v)}

и


someMap.mapValues(foo)

кроме синтаксиса или сомневаетесь/не знаете, к каким плохим последствиям это отличие может привести и причем тут identity, то это статья для вас.


В противном случае — поучаствуйте в опросе, расположенном в конце статьи.

Я заинтригован
Всего голосов 22: ↑22 и ↓0+22
Комментарии6

Реверс-инжиниринг прошивки устройства на примере мигающего «носорога». Часть 2

Время на прочтение12 мин
Количество просмотров11K

Представляем вашему вниманию вторую часть статьи о реверс-инжиниринге прошивки устройства «Мигающий носорог» по мотивам мастер-класса на конференции SMARTRHINO-2018.

В первой части статьи прошивка устройства была загружена в дизассемблер IDA и выполнен первичный анализ команд протокола устройства. Отдельные команды были проверены на работающем устройстве.

Во второй части будет выполнен анализ оставшихся тасков прошивки.

Напомню, после анализа Bluetooth-таска в части управления светодиодами, было решено переключиться на LED-таск, так как исходная задача – создать приложение для управления светодиодами, а для этого необходимо детальное понимание работы прошивки.

Файл прошивки доступен для самостоятельного изучения.

Вся информация приводится исключительно в образовательных целях.

Под катом много мигающего носорога.
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии0

Реверс-инжиниринг прошивки устройства на примере мигающего «носорога». Часть 1

Время на прочтение16 мин
Количество просмотров44K

26 апреля 2018 года компания ИНФОРИОН провела конференцию для студентов МГТУ им. Баумана SMARTRHINO-2018. Специально для конференции было подготовлено небольшое устройство на базе микроконтроллера STM32F042.

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

Первая часть статьи составлена по мотивам проведённого мастер-класса и рассчитана на начинающих — уделяется внимание базовым подходам к реверсу прошивок и особенностям работы с дизассемблером IDA.

Вторая часть немного сложнее, в ней уделяется внимание особенностям работы устройств на базе операционных систем реального времени.

Осторожно, под катом мигающий носорог и его прошивка!
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии26

Носорог, питон и простреленная нога на конференции SMARTRHINO-2018

Время на прочтение1 мин
Количество просмотров1.9K

26 апреля в НОЦ ИБ МГТУ им.Баумана прошла конференция SMARTRHINO-2018, на которой были представлены лекции и семинары по четырем темам:


  • реверс-инжиниринг,
  • Python/ML,
  • Best Practices,
  • Kotlin.

image

Читать дальше →
Всего голосов 8: ↑6 и ↓2+4
Комментарии3

Автоматизация загрузки логов из Kibana в Redmine

Время на прочтение7 мин
Количество просмотров3.7K
Типичный юзкейс для Kibana — смотрим логи, видим ошибки, создаем тикеты по ним. Логов у нас довольно много, места для их хранения мало. Поэтому просто вставить ссылку на документ из Elasticsearch/Kibana недостаточно, особенно для низкоприоритетных задач: пока доберемся до нее, индекс с логом может быть уже удален. Соответственно, приходится документ сохранять в файл и прикреплять к тикету.

Если один раз это делать, то это еще куда ни шло, но создавать уже десять тикетов подряд будет тупо лень, поэтому я решил это «быстренько» (ха-ха) автоматизировать.


Под катом: статья для пятницы, экспериментальная фича javascript, пара грязных хаков, небольшая регулярка с галочками, reverse proxy, проигрыш безопасности удобству, костыли и очевидная картинка из xkcd.
Поехали!
Всего голосов 7: ↑7 и ↓0+7
Комментарии6

Конференция SMARTRHINO-2018

Время на прочтение1 мин
Количество просмотров1.4K

26 апреля в НОЦ ИБ МГТУ им.Баумана пройдет конференция для студентов SMARTRHINO-2018. Конференция будет посвящена 4 направлениям:


— Kotlin
— Реверс-инжиниринг
— Best Practices
— Machine Learning


Спикеры конференции — ведущие сотрудники Компании ИНФОРИОН. Активные участники получат ценные призы.


Подробная информация о спикарах и программе конференции представлена на сайте. Актуальная информация — в группе Telegram.


image

Всего голосов 15: ↑14 и ↓1+13
Комментарии0

Опыт использования библиотеки Puniverse Quasar для акторов

Время на прочтение7 мин
Количество просмотров3.3K
В прошедшем, 2017 году, был небольшой проект, который почти идеально ложился на идеологию акторов, решили поэкспериментировать и попробовать использовать их реализацию от Parallel Universe. От самих акторов особо много не требовалось — знай себе храни состояние да общайся с другими, иногда изменяйся по таймеру и не падай.

Библиотека вроде достаточно зрелая, почти 3 тысячи звезд на гитхабе, больше 300 форков, пара рекомендаций на Хабре… Почему бы и нет? Наш проект стартовал в феврале 2017, писали на Kotlin.


Казалось бы, что могло пойти не так?
Всего голосов 19: ↑19 и ↓0+19
Комментарии12

Зачем мне твои неизменяемые коллекции? Они же медленные

Время на прочтение5 мин
Количество просмотров13K
Бывает так, что когда человек начинает писать на Kotlin, Scala или %language_name%, он делает манипуляции с коллекциями так, как привык, как “удобно”, как “понятнее” или даже “как быстрее”. При этом, разумеется, используются циклы и изменяемые коллекции вместо функций высшего порядка (таких как filter, map, fold и др.) и неизменяемых коллекций.

Эта статья — попытка убедить ортодоксов, что использование “этой вашей функциональщины” не влияет существенно на производительность. В качестве примеров использованы куски кода на Java, Scala и Kotlin, а для измерения скорости был выбран фреймворк для микробенчмаркинга JMH.

image
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии31

Что угрожает информационной безопасности или обзор форума PHDays VII 2017 в Москве

Время на прочтение6 мин
Количество просмотров695
В конце мая в Москве прошел ежегодный форум по практической безопасности PHDays VII, организованный компанией Positive Technologies. Форум посетили около 5000 участников из самых разных стран. Мы — компания ООО “ИНФОРИОН” — также приняли участие в форуме и хотим рассказать о самых, на наш взгляд, интересных докладах:

image

Лазейки в прошивке ядра LTE-модема (Андрей Ловянников)

Андрей Ловянников выступил с докладом по анализу прошивки ядра LTE-модема Huaiwei E3372. В результате анализа было получено устройство с полностью отключенным шифрованием трафика. Анализ происходил по следующей схеме: выявление технической документации об устройстве; выявление архитектуры микропроцессора; определение работающих операционных систем; выявление основных API системы, связанных с GSM; выявление функций, отвечающих за шифрование.
Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Kotlin, компиляция в байткод и производительность (часть 2)

Время на прочтение11 мин
Количество просмотров25K


Это продолжение публикации. Первую часть можно посмотреть тут

Содержание:


Циклы
When
Делегаты
Object и companion object
lateinit свойства
coroutines
Выводы
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии5

Kotlin, компиляция в байткод и производительность (часть 1)

Время на прочтение12 мин
Количество просмотров35K


О Kotlin последнее время уже очень много сказано (особенно в совокупности с последними новостями c Google IO 17), но в то же время не очень много такой нужной информации, во что же компилируется Kotlin.
Давайте подробнее рассмотрим на примере компиляции в байткод JVM.

Это первая часть публикации. Вторую можно посмотреть тут

Процесс компиляции это довольно обширная тема и чтобы лучше раскрыть все ее нюансы я взял большую часть примеров компиляции из выступления Дмитрия Жемерова: Caught in the Act: Kotlin Bytecode Generation and Runtime Performance. Из этого же выступления взяты все бенчмарки. Помимо ознакомления с публикацией, настоятельно рекомендую вам еще и посмотреть его выступление. Некоторые вещи там рассказаны более подробно. Я же больше внимания акцентирую именно на компиляции языка.

Содержание:


Функции на уровне файла
Primary конструкторы
data классы
Свойства в теле класса
Not-null типы в публичных и приватных методах
Функции расширения (extension functions)
Тела методов в интерфейсах
Аргументы по умолчанию
Лямбды

Но прежде чем рассмотрим основные конструкции языка и то, в какой байткод они компилируются, нужно упомянуть о том, как непосредственно происходит сама компиляция языка:
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии15

Идиоматичный Kotlin, набор хороших практик

Время на прочтение9 мин
Количество просмотров27K


Чтобы полностью раскрыть все преимущества Kotlin, пересмотрим некоторые подходы, которые мы используем в Java. Многие из них могут быть заменены на лучшие аналоги из Kotlin. Давайте посмотрим на то, как мы можем написать идиоматичный код на Kotlin.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии13

Как себе выстрелить в ногу в Kotlin

Время на прочтение13 мин
Количество просмотров36K
Совсем недавно вышел релиз Kotlin, а его команда разработчиков предлагала задавать вопросы про язык. Он сейчас на слуху и, возможно, многим хочется его попробовать.
Пару недель назад тимлид сделал для компании презентацию о том, что в Котлине хорошо. Одним из самых интересных вопросов был «А как в Котлине выстрелить себе в ногу?» Так получилось, что ответил на этот вопрос я.

Disclaimer:
Не стоит воспринимать эту статью как «Kotlin — отстой». Хотя я отношусь скорее к категории тех, кому и со Scala хорошо, я считаю, что язык неплохой.
Все пункты спорные, но раз в год и палка стреляет. Когда-то вы себе прострелите заодно и башку, а когда-то у вас получится выстрелить только в полночь полнолуния, если вы предварительно совершите черный ритуал создания плохого кода.

Наша команда недавно закончила большой проект на Scala, сейчас делаем проект помельче на Kotlin, поэтому в спойлерах будет сравнение со Scala. Я буду считать, что Nullable в Kotlin — это эквивалент Option, хотя это совсем не так, но, скорее всего, большинство из тех, кто работал с Option, будут вместо него использовать Nullable.

Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии37