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

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

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

Введение в IDAPython

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


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


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


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

Читать дальше →

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

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

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".

Читать дальше →

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

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

image


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


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


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

Поработаем с эльфами

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

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

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


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

Эмулировать!

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

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

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


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

и


someMap.mapValues(foo)

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


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

Я заинтригован

Истории

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

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

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

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

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

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

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

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

Под катом много мигающего носорога.
Читать дальше →

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

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

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

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

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

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

Осторожно, под катом мигающий носорог и его прошивка!
Читать дальше →

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

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

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


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

image

Читать дальше →

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

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

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


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

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

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

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


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


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


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


image

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

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

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


Казалось бы, что могло пойти не так?

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

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

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

image
Читать дальше →

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

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

image

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

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

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

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


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

Содержание:


Циклы
When
Делегаты
Object и companion object
lateinit свойства
coroutines
Выводы
Читать дальше →

Ближайшие события

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)
Тела методов в интерфейсах
Аргументы по умолчанию
Лямбды

Но прежде чем рассмотрим основные конструкции языка и то, в какой байткод они компилируются, нужно упомянуть о том, как непосредственно происходит сама компиляция языка:
Читать дальше →

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

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


Чтобы полностью раскрыть все преимущества Kotlin, пересмотрим некоторые подходы, которые мы используем в Java. Многие из них могут быть заменены на лучшие аналоги из Kotlin. Давайте посмотрим на то, как мы можем написать идиоматичный код на Kotlin.
Читать дальше →

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

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

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

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

Читать дальше →