Pull to refresh
0
0
Перикл Фемиди @pfemidi

Домосед

Send message

Как написать свою ОС: руководства на Rust и C

Level of difficultyEasy
Reading time4 min
Views8.1K

Навыки проектирования ОС помогают разрабатывать и выбирать эффективные решения для распределённого хранения данных, управления сетью, виртуализации. Но подойти к вопросу проектирования операционной системы непросто. Однако по теме накопилось множество открытых материалов. Сегодня говорим о руководстве для разработки на Rust, гайде по ОС для мини-компьютера и учебном пособии на C и ассемблере. 

К слову, Rust набирает обороты: первое место в категории любимых языков программирования по версии Stack Overflow.

Читать далее

Один на один с Rust

Level of difficultyMedium
Reading time12 min
Views3.7K

Всем привет! Я Влад Лунин, занимаюсь анализом сложных угроз в экспертном центре безопасности Positive Technologies. В последнее время часто приходится сталкиваться с вредоносным ПО (ВПО), написанном на Rust, поэтому хочу поделиться своим опытом реверса исполняемых файлов, написанном на этом языке. ВПО бывает как очень простое, так и очень сложное в своей реализации, и чаще всего эта сложность обусловлена особенностями Rust. Расскажу, какие подходы применяю для успешного реверса, а также про сложности, с которыми сталкивался, и как их преодолевал.

Начинаем

Прячем shellcode в приложениях

Reading time6 min
Views1.4K

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

Читать далее

Декодируем 90-ые: реверс-инжиниринг и криптография на заре разработки ПО

Reading time10 min
Views5.1K

В августе 2020 года к нам обратился клиент с кэшем из заблокированных документов QText из середины 90-х, пароль для которых он утерял.

QText — это редактор из времён DOS, использовавшийся для обработки иврита и английского текста. Написан он на Pascal и был выпущен где-то за 15 лет до того, как мы с @Elisha занялись обратной разработкой.

В этой статье мы опишем весь процесс анализа тех зашифрованных документов и выполним реверс-инжиниринг программы DOS.

Надеюсь, нам удастся раскрыть некоторые особенности ранней разработки потребительского ПО в Израиле. В частности, мы хотим показать, как в те времена реализовывалась криптография. Ещё одна наша цель — это сохранить описанные здесь знания и инструменты — многие из которых едва дотянули до нашего времени.
Читать дальше →

Разбираемся как работать с wine на Unix-based системах

Level of difficultyMedium
Reading time40 min
Views20K

Давно хотели научиться работать с Wine в Linux или Mac Для запуска Windows приложений? Мой обзор-гайд для вас. Я в подробностях расскажу о том как запускать прилоежния, дебажить их, решать проблемы и покажу различные wine-loaders для работы.

Читать далее

Метод Reverse Engineering на практике: как расшифровать исходный код

Level of difficultyMedium
Reading time11 min
Views7.8K

Всем привет!

Сегодня в нашем эфире новый автор - Никита Синкевич, руководитель группы анализа и реагирования Инженерного центра Angara Security. Итак, начинаем!

Иногда в ходе расследования инцидента информационной безопасности необходимо понять, имеет ли та или иная программа вредоносное воздействие на систему. Если для данной программы у вас нет исходного кода, то приходится применять метод исследования "обратная разработка", или Reverse Engineering. Я покажу, что такое "обратная разработка" на примере задания "RE-101" с ресурса cyberdefenders.

CyberDefenders — это платформа для развития навыков blue team по обнаружению и противодействию компьютерным угрозам. В этой статье будет разбор последней, шестой подзадачи из задания "RE-101". На мой взгляд, она лучше раскрывает процесс реверс-инжиниринга, чем остальные: нам предстоит восстановить из исполняемого файла кастомный алгоритм шифрования, написать скрипт-дешифратор и расшифровать флаг.

Используемые инструменты:

1.       Detect it Easy
2.       IDA
3.       Python3
4.       Notepad++
5.       CyberChef

Задание

Описание намекает, что в предложенном файле malware201 кто-то реализовал свой собственный криптографический алгоритм.

Читать далее

Дампы LSASS для всех, даром, и пусть никто не уйдет обиженный

Reading time12 min
Views56K

Здравствуйте, хабролюди!

Меня зовут @snovvcrash, и я работаю в отделе анализа защищенности компании Angara Security. Отвечаю я, значится, за инфраструктурный пентест, и в этой статье я хотел бы поговорить об одном из самых эффективных методов добычи учетных данных на «внутряке» — извлечении секретов из памяти процесса lsass.exe (MITRE ATT&CK T1003.001) — и, в частности, об особенностях реализации этого метода в ру-сегменте тестирования на проникновение.

За два года работы пентестером мои нервы были изрядно потрепаны нашим любимым отечественным антивирусным решением Kaspersky Endpoint Security (далее — KES), который установлен у каждого первого второго нашего клиента, и который, в отличие от других средств антивирусной защиты, наглухо блокирует все попытки потенциального злоумышленника получить доступ к lsass.exe (не реклама!).

Далее я расскажу свой опыт использования и кастомизации публично доступных инструментов, которые в разные промежутки времени позволяли мне сдампить память LSASS при активном «Касперском».

Читать далее

Прямое подключение диска в VirtualBox

Level of difficultyEasy
Reading time2 min
Views1.9K

Статья (и в целом проблема как таковая) уровня для-мамкиных-админов (или админов локалхоста, как зло и хлестко говорят на/в опеннете), поэтому “подкованным” можно проходить мимо! Написать эти 3 абзаца сподвигла злоба на горе-СЕОшников, которые завалили инет перепечатками статей 2005-2010г.г. Кроме того, Оракл задеприкэйтил определенную опцию командной строки, и скоро эти статьи протухнут окончательно.(напоследок будет пара фраз про KVM).


1. Проблема (которая, в общем-то, непроблема)

Она произрастает из параллельного (в нынешнем Линуксе) обнаружения устройств, поэтому дисковые устройства часто меняют имена между перезагрузками (что-то типа: было /dev/sda - стало /dev/sdb)

Поэтому, если тест нужет в моменте, и больше повторов не будет, можно опираться на /dev/sdX. Но если тесты/работа на большой период времени, нужно что-то универсальное и идентифицирующее нужное устройство однозначно. Здесь на помощь приходят синонимы, коих система плодит при загрузке в достатке (и слава богу!!!).

Взглянем на вывод команды "ls /dev/disk":

by-diskseq by-id by-loop-inode by-loop-ref by-partlabel by-partuuid by-path by-uuid

Во всех этих подкаталогах ссылки на устройства/разделы с использованием разных идентификаторов. Вот их и надо использовать!

2. Udev.

Сначала подсмотрите с помощью команды “udevadm info /dev/sdX” идентификатор, по которому будете отлавливать появление вашего устройства.

...........

E: ID_REVISION=01.01A01

E: ID_SERIAL=WDC_WD20NPVX-00EA4T0_WD-WX81A43A9823

E: ID_SERIAL_SHORT=WD-WX81A43A9823

Читать далее

Внедрение кода в Mach-O файл своими руками для iOS

Level of difficultyMedium
Reading time17 min
Views524

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

Читать далее

Что такое DPI Engine?

Level of difficultyMedium
Reading time26 min
Views5.3K

Для людей, кто знаком с термином DPI (Deep Packet Inspection), в большинстве случаев возникает неприятная ассоциация: блокировки, регуляторы, цензура, закручивание гаек. На самом деле, DPI – это только название технологии, суть которой заключается в глубоком анализе трафика. Под глубоким анализом трафика подразумевается определение протоколов, извлечение наиболее значимых полей и метаданных, классификацию интернет сервисов и характер потоков. О том как устроена работа такого рода решений расскажу под катом.

Читать далее

Принципы SOLID и основы построения коммерческой организации

Level of difficultyEasy
Reading time5 min
Views4.6K

Привет, дорогой друг!

Сегодня я тебе объясню принципы SOLID максимально понятным способом.

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

Представь себе, что ты решил заняться бизнесом.

Первым делом ты организуешь небольшую торговую компанию. Ты только начинаешь свой путь в бизнесе, и поэтому всё делаешь сам. И закупаешь товар, и развозишь его по точкам, и ведёшь учёт, и ремонтируешь грузовую газель.

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

Людей в твоей команде немного, все друг друга знают, вы как одна большая дружная семья. И нет-нет, но периодически, кто-нибудь из сотрудников пытается взять себе дополнительные полномочия из чужой области. То ремонтник порывается съездить на рынок и закупить товар (ему же по дороге), то продажник научить ремонтника как правильно чинить технику (он всё детство провёл в гараже, где они с друзьями чинили папину волгу), то бухгалтерша Галина Петровна решает всех построить и взять на себя часть руководящих функций.

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

Но ты стоишь на страже интересов бизнеса! Железной рукой ты пресекаешь безобразия и вводишь жёсткий принцип – каждый сотрудник отвечает только за своё поле деятельности, у каждого своя ответственность, и никто в чужой огород лазать не смей. Закупщик – только закупает. Продажник – только продаёт. Каждый сотрудник должен иметь только одну зону ответственности.

Читать далее

Угон аккаунтов в Telegram: схемы, о которых все должны знать

Reading time21 min
Views139K

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

Читать

Ну заяц погоди! Или противоракетная оборона для самых маленьких евреев и не только. Часть 2

Level of difficultyEasy
Reading time12 min
Views4K

Продолжение статьи, созданной в процессе решения задачи о погоне, для школьников. Очков Валерий Федорович, предложил мне решить методом структурного моделирования задачу погони волка за зайцем. И в первой части именно эта задача подробно и разобрана. Многие читатели справедливо спрашивали, а причем здесь евреи и ракеты?  В этой части я покажу, как можно связать школьную задачу про бегающего по кругу зайца с израильской противоракетной системой купол. 

Читать далее

Ну заяц погоди! Или противоракетная оборона для самых маленьких евреев и не только. Часть 1

Level of difficultyEasy
Reading time17 min
Views6.5K

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

Читать далее

Как пройти алгоритмическое собеседование: полный гид по алгоритмам, сложностям и стратегиям

Reading time31 min
Views43K

Не тратьте время на задачи – сначала разберитесь в основах. В статье:

1. Как проходят собеседования (ВАЖНО!)
2. Big O, оценка сложности алгоритмов
3. Популярные техники: два указателя, DFS, динамическое программирование и другие
4. Какие задачи решать, чтобы пройти в Яндекс

Читаем, практикуемся, получаем оффер!

Читать далее

Алгоритмы манипуляций с битами

Level of difficultyMedium
Reading time13 min
Views17K

в статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное слово, в большей степени эти алгоритмы предназначены для обработки строк длины 32 или 64, но многие из них можно применять для SIMD инструкций или даже GPU.

Читать далее

Простые лайфхаки для автоматизации работы с помощью Python

Level of difficultyEasy
Reading time24 min
Views30K

Если какое-то действие приходится выполнять слишком часто — значит, пора его автоматизировать.

Разбираю полезные скрипты — от работы с файлами до DevOps. В каждом разделе есть примеры для новичков и более опытных разработчиков. А в конце статьи — несколько простых правил, которые помогут писать удобный и надёжный код.

Читать далее

Что делает сова в ZeroNights 2017 Crackme №3?

Reading time43 min
Views2.6K


ZeroNights 2017 Crackme №3 — довольно простое задание, но, тем не менее, и в нём есть несколько интересных моментов и сова.


Под катом — дизассемблирование, декомпиляция, pull request в IntelliJ IDEA и ни единого запуска отладчика.

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

Бот для проверки орфографии и пунктуации через GPT-4o на Python

Reading time6 min
Views6K

Я не обладаю природной грамотностью, и мне бывает мучительно стыдно за то, что я пишу. Для приведения текстов в минимально читабельный вид я использую специальные сервисы, которые проверяют орфографию и пунктуацию. И сегодня мы попробуем не просто использовать такой сервис, а написать свой. В этой статье мы напишем и задеплоим Telegram бота, который проверяет грамматику.

Бот будет проверять текст на грамматические ошибки, исправлять их и даст рекомендации по грамотному написанию.

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

Читать далее

Как создать скрипт-beautifier в Ghidra на Python?

Level of difficultyMedium
Reading time11 min
Views1.5K

Приветствую, дорогой читатель. Хочу представить вашему вниманию пример, как можно упростить себе жизнь при исследовании кода программ, используя скриптинг в Ghidra.

Если вы уже имели опыт работы с дизассемблером, то заметили, что читать его вывод не так легко, если целью является понять более высокие абстракции, заложенные в нём. Возможно, вы даже пытались декомпилировать его в псевдокод, но работать с переменными типа local_1-999 – то ещё удовольствие. Да, можно щёлкнуть на каждую из них и присвоить имя на основе логики. А что, если у вас 2000 строк и более?

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

Все манипуляции были проделаны на версии 11.1.2. Чтобы попасть в список доступных скриптов, откройте меню Window → Script Manager и там же создайте новый скрипт, нажав в правом верхнем углу кнопку Create New Script и выбрав язык Python.

Важное ограничение: Ghidra использует внутреннюю реализацию языка Python версии 2.7.

Читать далее
1
23 ...

Information

Rating
6,802-nd
Location
Москва и Московская обл., Россия
Registered
Activity