Интересный факт (спасибо моему коллеге)
Если взломать TrueConf и забрать значения из ключа
Передаю привет всем счастливым обладателям TrueConf!
UPD
Эти значения можно ротировать вручную через:
Панель управления → Настройки, блок «Приложение»
- Ключ для авторизации пользовательских подключений
- Ключ для авторизации гостевых подключений
Если взломать TrueConf и забрать значения из ключа
HKEY_LOCAL_MACHINE\SOFTWARE\TrueConf\Server\Configuration (Shared Key, Shared Key With Prefix 3), то в будущем (даже после патча) можно зайти под любым юзером через веб (т. е. сделать себе токен доступа). Решение — установка TrueConf с нуля (на чистой виртуалке).Передаю привет всем счастливым обладателям TrueConf!
UPD
Эти значения можно ротировать вручную через:
Панель управления → Настройки, блок «Приложение»
- Ключ для авторизации пользовательских подключений
- Ключ для авторизации гостевых подключений
👍4🍓1
Вещаю сегодня про ИИшки в Питере, а уже в пятницу буду в Москве рассказывать про ИИ и кибербез на классном мероприятии MWS. Приходите слушать, общаться, обсуждать)
🔥5🍓4🦄3
#ttp #APT
Группировка GOFFEE отличается умом и сообразительностью.
Известно, что они используют модификацию Mythic для закрепления в инфраструктуре своих жертв. В ходе своих атак они расставляют свои импланты по инфраструктуре, в каждом таком импланте есть по несколько доменов (обычно два, но динамически их можно добавлять оператором). Вроде ничего интересного, но есть один нюанс...
Некоторые домены, которые они оставляют - еще не существуют. Cамое интересное, что в любой момент, когда они таки зарегают такой домен, имплант, который не был найден изначально, даст им сразу же канал в зараженную ранее инфраструктуру, пусть в результате прошлого IR были найдены все ДЕЙСТВУЮЩИЕ домены.
Причем этот прием они используют уже достаточно давно, года 2 как минимум.
На заметку всем заинтересованным
Группировка GOFFEE отличается умом и сообразительностью.
Известно, что они используют модификацию Mythic для закрепления в инфраструктуре своих жертв. В ходе своих атак они расставляют свои импланты по инфраструктуре, в каждом таком импланте есть по несколько доменов (обычно два, но динамически их можно добавлять оператором). Вроде ничего интересного, но есть один нюанс...
Некоторые домены, которые они оставляют - еще не существуют. Cамое интересное, что в любой момент, когда они таки зарегают такой домен, имплант, который не был найден изначально, даст им сразу же канал в зараженную ранее инфраструктуру, пусть в результате прошлого IR были найдены все ДЕЙСТВУЮЩИЕ домены.
Причем этот прием они используют уже достаточно давно, года 2 как минимум.
На заметку всем заинтересованным
👍7🦄1
Что LLM умеет реверсить, уже не новость. Но что же она все-таки не умеет?
Сегодня на боевом примере разберем факапы, с которыми я столкнулся в процессе анализа достаточно непростого импланта. Модифицированный Mythic-агент, три стадии, payload зашифрован на имени хоста жертвы, куча техник защиты типа предикатов, резолва функций по хешам etc.
Стенд: IDA Pro + MCP, opencode, GLM 5.2 self-hosted, я оператор. Две сессии (у нас было 2 семпла): 5.5 ч. работы агента, 56 моих реплик, ~800 вызовов инструментов, ≈5 тыс ₽ (на Opus 5 вышло бы ≈$165).
1️⃣ Уверенно-неверно. Нашла в payload BeaconDataParse, BeaconOutput и написала "Cobalt Strike". Дальше я сказал модели, что это точно не cobalt и пусть идет ищет дальше. Ответ: "Моя предыдущая идентификация была ошибочной, принял Beacon API за доказательство, не проверив формат протокола". При этом формат ответа был с самого начала в разборе самой модели, но она все равно абсолютно уверено рапортовала про cobalt strike .
2️⃣ Тихий пропуск. Модель сформировала красивый структурированный отчет по функционалу, вытащила конфиг, C2 домен, функционал, но есть нюанс... В семпле было 2 зашитых домена. Второй домен я нашел уже из сетевой телеметрии хоста. После просьбы проверить точнее через 5 минут находит: домен разрезан на три 8-байтовых XOR-чанка. И модель успешно его пропустила, вместе с механизмом "резервирования" этих доменов.
3️⃣ Не бережёт контекст. После сжатия сессии или, был момент, когда у меня отвалился MCP, модель заново пытается "захавать" весь декомпилированный код. В итоге шлюз сразу вылетает на ошибке переполнения входного контекста.
4️⃣ Не справилась с задачей эмуляции. Попросил проэмулировать shellcode до открытия сокета, без реальной сети. На самом деле я уже проворачивал подобные вещи, но именно в этот раз модель 20 минут пыталась поставить правильный unicorn, в конечном итоге я просто отказался от этой идеи, потому что статика дала исчерпывающий ответ.
5️⃣ Пыталась уйти от вопроса. 10:13: "при каких условиях вызывается второй домен?" Модель ушла в структуры профилей и флаги. 10:27: "давай вернёмся, это важно". 11:35: "напоминаю, мы ищем условие". 11:37: "Вы правы, я ушёл в детали". Ответ пришёл в 12:16. Пришлось прям дожать модель в этом вопросе.
Интересно то, что модель то в итоге справилась со всеми задачами (формально, кроме эмуляции, но я ее просто не дожал там, не было смысла), но только после пинков в шестеренку. Я пока не сторонник давать ИИшке автономно выполнять ИБ задачи, это хороший пример, что лучше использовать режим копайлот, а не автопилот.
Если хотите побольше послушать про наши эксперименты, приходите, там будет много интересного.
Сегодня на боевом примере разберем факапы, с которыми я столкнулся в процессе анализа достаточно непростого импланта. Модифицированный Mythic-агент, три стадии, payload зашифрован на имени хоста жертвы, куча техник защиты типа предикатов, резолва функций по хешам etc.
Стенд: IDA Pro + MCP, opencode, GLM 5.2 self-hosted, я оператор. Две сессии (у нас было 2 семпла): 5.5 ч. работы агента, 56 моих реплик, ~800 вызовов инструментов, ≈5 тыс ₽ (на Opus 5 вышло бы ≈$165).
1️⃣ Уверенно-неверно. Нашла в payload BeaconDataParse, BeaconOutput и написала "Cobalt Strike". Дальше я сказал модели, что это точно не cobalt и пусть идет ищет дальше. Ответ: "Моя предыдущая идентификация была ошибочной, принял Beacon API за доказательство, не проверив формат протокола". При этом формат ответа был с самого начала в разборе самой модели, но она все равно абсолютно уверено рапортовала про cobalt strike .
2️⃣ Тихий пропуск. Модель сформировала красивый структурированный отчет по функционалу, вытащила конфиг, C2 домен, функционал, но есть нюанс... В семпле было 2 зашитых домена. Второй домен я нашел уже из сетевой телеметрии хоста. После просьбы проверить точнее через 5 минут находит: домен разрезан на три 8-байтовых XOR-чанка. И модель успешно его пропустила, вместе с механизмом "резервирования" этих доменов.
3️⃣ Не бережёт контекст. После сжатия сессии или, был момент, когда у меня отвалился MCP, модель заново пытается "захавать" весь декомпилированный код. В итоге шлюз сразу вылетает на ошибке переполнения входного контекста.
4️⃣ Не справилась с задачей эмуляции. Попросил проэмулировать shellcode до открытия сокета, без реальной сети. На самом деле я уже проворачивал подобные вещи, но именно в этот раз модель 20 минут пыталась поставить правильный unicorn, в конечном итоге я просто отказался от этой идеи, потому что статика дала исчерпывающий ответ.
5️⃣ Пыталась уйти от вопроса. 10:13: "при каких условиях вызывается второй домен?" Модель ушла в структуры профилей и флаги. 10:27: "давай вернёмся, это важно". 11:35: "напоминаю, мы ищем условие". 11:37: "Вы правы, я ушёл в детали". Ответ пришёл в 12:16. Пришлось прям дожать модель в этом вопросе.
Интересно то, что модель то в итоге справилась со всеми задачами (формально, кроме эмуляции, но я ее просто не дожал там, не было смысла), но только после пинков в шестеренку. Я пока не сторонник давать ИИшке автономно выполнять ИБ задачи, это хороший пример, что лучше использовать режим копайлот, а не автопилот.
Если хотите побольше послушать про наши эксперименты, приходите, там будет много интересного.
👍2🍓1🦄1
Говорят, что virustotal окончательно заблокирован в РФ. У меня он не открывается уже неделю, но знакомые писали, что все ок.
Интересно, какую проблему решают таким образом? Те, кто пользуется VT для работы - продолжат им пользоваться. А отсекут таким образом, скорее всего, только админов и безопасников, для которых VT был единственным инструментом проверить файл на вредоносность (кроме антивируса с протухшими базами).
При этом альтернативу так и не вывели. Национальный мультисканер то запустили, то прибили, то опять хотели запустить, в итоге его так и нет.
Я конечно не сижу в высоких кабинетах РКН, но если с telegram хотя бы можно придумать причину, зачем его забанили (не смотря на то, что вся страна так им и пользуется), то здесь я даже причину придумать не могу.
Может кто подскажет?
UPD.
Дружно переходим на https://virustest.gov.ru. Спасибо подписчику за актуальную ссылку. Я ее не нашел на первой странице выдачи Гугла по запросу «национальный мультисканер» =(
UPD UPD.
В Яндексе на первой странице выдачи его тоже нет. Нужно поработать ребятам над seo оптимизацией.
Интересно, какую проблему решают таким образом? Те, кто пользуется VT для работы - продолжат им пользоваться. А отсекут таким образом, скорее всего, только админов и безопасников, для которых VT был единственным инструментом проверить файл на вредоносность (кроме антивируса с протухшими базами).
При этом альтернативу так и не вывели. Национальный мультисканер то запустили, то прибили, то опять хотели запустить, в итоге его так и нет.
Я конечно не сижу в высоких кабинетах РКН, но если с telegram хотя бы можно придумать причину, зачем его забанили (не смотря на то, что вся страна так им и пользуется), то здесь я даже причину придумать не могу.
Может кто подскажет?
UPD.
Дружно переходим на https://virustest.gov.ru. Спасибо подписчику за актуальную ссылку. Я ее не нашел на первой странице выдачи Гугла по запросу «национальный мультисканер» =(
UPD UPD.
В Яндексе на первой странице выдачи его тоже нет. Нужно поработать ребятам над seo оптимизацией.
👍3🦄1
Пришел тут студентам читать лекцию, подготовил презентацию, инженерия AI-агентов в ИБ, стильно-модно-молодежно.
Захожу в аудиторию, а там старые советские лакированные столы, зеленая доска и мел. И вот этот характерный запах аудитории, которую не открывали несколько лет.
А вы говорите AGI и побег агентов, ага...
Захожу в аудиторию, а там старые советские лакированные столы, зеленая доска и мел. И вот этот характерный запах аудитории, которую не открывали несколько лет.
А вы говорите AGI и побег агентов, ага...
👍4🦄4
Простенькая техника заметания следов за собой и как ее находить.
Представим, вы взломали какой-то сервис на Linux (что чаще всего карается по закону, не рекомендую вне учебных лабораторий) и хотите за собой зачистить следы в текстовом журнале, например, error.log веб сервера.
Вы можете сделать что-то типа такого
Таким образом вы обрезаете часть после байта 200796150 и подменяете новым файлом старый. Но есть нюанс.
1. У нового файла будет другой btime и туда ничего не будет писаться, потому что...
2. Дескриптор процесса, который пишет в error.log, например, rotatelogs, открывает поток на запись при старте, и если вы не рестартанули сервис, то поток будет писать в СТАРЫЙ inode.
Более того, сделав вот так
вы сможете легко этот дескриптор локализовать. А дальше все достаточно просто
И читаем художества злодея и новые события, которые появились после подмены.
Представим, вы взломали какой-то сервис на Linux (что чаще всего карается по закону, не рекомендую вне учебных лабораторий) и хотите за собой зачистить следы в текстовом журнале, например, error.log веб сервера.
Вы можете сделать что-то типа такого
head -c 200796150 error.log > new
mv new error.logtouch -r <whatever legit> error.log
Таким образом вы обрезаете часть после байта 200796150 и подменяете новым файлом старый. Но есть нюанс.
1. У нового файла будет другой btime и туда ничего не будет писаться, потому что...
2. Дескриптор процесса, который пишет в error.log, например, rotatelogs, открывает поток на запись при старте, и если вы не рестартанули сервис, то поток будет писать в СТАРЫЙ inode.
Более того, сделав вот так
lsof | grep deleted вы сможете легко этот дескриптор локализовать. А дальше все достаточно просто
cat /proc/<writer pid>/fd/<fd id> > recovered.log И читаем художества злодея и новые события, которые появились после подмены.
👍4🔥2🦄2
На днях мне попался на глаза интересный релиз «Группы Астра» - «доверенная ИИ-среда для бизнеса»: инференс-платформа, код-агент и агентная ОС на Astra Linux.
Вот что мне показалось интересным.
1️⃣ Где лежит граница доверия?
Под доверенной ОС лежат GPU NVIDIA. Модуль ядра у NVIDIA для новых карт открыт, но значимая часть логики переехала в прошивку GSP - отдельный процессор на самой карте с прямым доступом к железу. Да и CUDA закрытая.
Драйверы NVIDIA для Astra Linux лежат в расширенном репозитории, а про его ПО Астра прямо пишет: оно стороннее, не дорабатывается под требования безопасности и не проверяется при сертификации. Такое ПО Астра советует запускать в контейнере. Рекомендация общая, но к драйверу ядра она явно неприменима.
Тогда что именно считать доверенным? И как быстро в сертифицированную сборку приезжает поддержка новых карт и вычислительных кластеров, которые обновляются достаточно часто?
2️⃣ Как строится доверие, если модель в большинстве случаев будет недоверенной (китайская, американская, европейская - неважно)? Астра сама это признаёт: в релизе заявлена защита от вредоносных действий недоверенной модели.
Но сможет ли система поймать закладку, которую модель оставит в коде? Коммит легитимный, права не нарушены. Остаётся человек, который согласует изменения, а на сотом согласовании за день он жмёт «ок» не читая. И мы возвращаемся к первому вопросу: что есть доверие?
3️⃣ Какую модель угроз закрывает изоляция ядром? Если речь о мандатном контроле целостности, он не защитит от «смысловых» атак - использования разрешённых действий для неразрешённого сценария.
В релизе заявлены ещё контроль критических действий и защита агентов от атак. Это тоже ядро или отдельный слой, который понимает смысл, вроде фильтрации промптов и других механизмов AI Firewall?
4️⃣ Отдельно интересно про код-агент. Рынок очень плотный: Claude Code, GigaCode, Kodify, Koda. А открытый OpenCode с локальной моделью ставится в закрытый контур бесплатно. Хватит ли сертификации и интеграции с сертифицированной ОС, или есть что-то, чего мы пока не знаем?
5️⃣ Расчёт ROI. Не будем привязываться к цифрам, пойдём качественно.
Астра заявляет 22 570 высвобожденных человеко-часов (хотя по их же данным трудозатраты снизились с 60 465 до 57 838 часов, то есть на 2 627). Высвобожденный ресурс, по релизу, направляется на новые проекты. Но деньгами он станет, только когда компания сократит найм или эти проекты начнут приносить выручку. А ROI 104% считает его деньгами уже сейчас.
Интересно, конвертировалось ли высвобождение часов в финансовые показатели и как.
Буду внимательно следить за этим направлением и за тем, как Астра будет аргументировать свои заявления.
Вот что мне показалось интересным.
1️⃣ Где лежит граница доверия?
Под доверенной ОС лежат GPU NVIDIA. Модуль ядра у NVIDIA для новых карт открыт, но значимая часть логики переехала в прошивку GSP - отдельный процессор на самой карте с прямым доступом к железу. Да и CUDA закрытая.
Драйверы NVIDIA для Astra Linux лежат в расширенном репозитории, а про его ПО Астра прямо пишет: оно стороннее, не дорабатывается под требования безопасности и не проверяется при сертификации. Такое ПО Астра советует запускать в контейнере. Рекомендация общая, но к драйверу ядра она явно неприменима.
Тогда что именно считать доверенным? И как быстро в сертифицированную сборку приезжает поддержка новых карт и вычислительных кластеров, которые обновляются достаточно часто?
2️⃣ Как строится доверие, если модель в большинстве случаев будет недоверенной (китайская, американская, европейская - неважно)? Астра сама это признаёт: в релизе заявлена защита от вредоносных действий недоверенной модели.
Но сможет ли система поймать закладку, которую модель оставит в коде? Коммит легитимный, права не нарушены. Остаётся человек, который согласует изменения, а на сотом согласовании за день он жмёт «ок» не читая. И мы возвращаемся к первому вопросу: что есть доверие?
3️⃣ Какую модель угроз закрывает изоляция ядром? Если речь о мандатном контроле целостности, он не защитит от «смысловых» атак - использования разрешённых действий для неразрешённого сценария.
В релизе заявлены ещё контроль критических действий и защита агентов от атак. Это тоже ядро или отдельный слой, который понимает смысл, вроде фильтрации промптов и других механизмов AI Firewall?
4️⃣ Отдельно интересно про код-агент. Рынок очень плотный: Claude Code, GigaCode, Kodify, Koda. А открытый OpenCode с локальной моделью ставится в закрытый контур бесплатно. Хватит ли сертификации и интеграции с сертифицированной ОС, или есть что-то, чего мы пока не знаем?
5️⃣ Расчёт ROI. Не будем привязываться к цифрам, пойдём качественно.
Астра заявляет 22 570 высвобожденных человеко-часов (хотя по их же данным трудозатраты снизились с 60 465 до 57 838 часов, то есть на 2 627). Высвобожденный ресурс, по релизу, направляется на новые проекты. Но деньгами он станет, только когда компания сократит найм или эти проекты начнут приносить выручку. А ROI 104% считает его деньгами уже сейчас.
Интересно, конвертировалось ли высвобождение часов в финансовые показатели и как.
Буду внимательно следить за этим направлением и за тем, как Астра будет аргументировать свои заявления.
👍3🦄1
Рубрика нейрослоп-заметки
Сейчас не вайбкодит только ну очень уж ленивый, и я этим тоже занимаюсь
У меня есть два разных впечатления от этого процесса
Локальный восторг
Когда тебе нужно сделать какой-то понятный и сравнительно небольшой проект для конкретной цели, то вайбкодинг это просто мечта. У меня есть небольшой личный проект, который управляет распределенными серверами и гоняет разные задачи на них. Этот проект мы с другом написали с нуля еще до времен вайбкодинга, он был, по факту, собран на коленке, написан из рук вон плохо, но архитектурно был сделан хорошо. Клод его подхватил и сделал из него конфетку. Я уже давно не смотрел в кодовую базу и не слежу за тем, что он делает технически, но все работает и меня это полностью устраивает. Я могу сфокусироваться на пользовательском опыте и задачах, которые не автоматизировать.
Еще один пример был буквально вчера. За один вечер и 3-4 промта Клод сделал мне рабочего бота, который обходит популярные площадки аренды квартир и смотрит варианты, которые мне нравятся. При этом он сам обошел ограничения для антибота (кроме авито, там хорошая защита, но если поднажать - и это можно обойти), построил канал до моего роутера, чтобы адрес был как из дома, написал весь код, создал бота в телеграм и канал... в общем весь цикл от ничего нет кроме идеи до рабочего продукта. Казалось бы можно уже привыкнуть, но, зная сколько примерно времени уходит на такой сервис руками, не могу перестать радоваться такому.
Принятие ограничений
Но не все так просто. Если масштабировать это на промышленные инструменты - то начинаются реальные сложности. Вот те проблемы, с которыми я столкнулся внедряя вайбкодинг в продакшн:
1️⃣ Какое бы крутое и детальное ТЗ вы не сделали (что само по себе утопия) модель все равно не будет следовать ему беспрекословно. То есть модель все равно что-то выдумает, что-то изменит, что-то забудет.
2️⃣Модель говорит, что уже сделала это, а на самом деле функционал не работает. И это не выявить без конкретного прикладного теста конкретно этой фичи.
3️⃣Стили кода, технологии, тулинг, все берет на себя модель, чаще всего модель берет усложнение, которое не нужно изначально, от этого код еще более запутанный, чем был и должен был быть.
4️⃣Потеря контроля. Теперь не вы контролируете проект, а он живет сам по себе. При этом ответить на вопрос, в каком он сейчас состоянии не способна даже модель, а если проект достаточно большой, так она еще и приврет где-нибудь.
5️⃣Безопасность. Мало того, что сам код безопасный или нет - непонятно, так еще и во время разработки модель может накачать кучу разного, выполнить какие-то команды, скрипты, при этом верификации, как правило, нет. Это отдельная боль.
Общее ощущение такое, что для личных проектов, маленьких инструментов и стартапов вайбкодинг - это очень круто. Но вот для полноценного релиза коммерческого продукта нужно не сильно меньше времени, чем раньше. Что думаете?
👍-согл
👎-не согл
🦄 - не признаю этот ваш ИИ
Сейчас не вайбкодит только ну очень уж ленивый, и я этим тоже занимаюсь
У меня есть два разных впечатления от этого процесса
Локальный восторг
Когда тебе нужно сделать какой-то понятный и сравнительно небольшой проект для конкретной цели, то вайбкодинг это просто мечта. У меня есть небольшой личный проект, который управляет распределенными серверами и гоняет разные задачи на них. Этот проект мы с другом написали с нуля еще до времен вайбкодинга, он был, по факту, собран на коленке, написан из рук вон плохо, но архитектурно был сделан хорошо. Клод его подхватил и сделал из него конфетку. Я уже давно не смотрел в кодовую базу и не слежу за тем, что он делает технически, но все работает и меня это полностью устраивает. Я могу сфокусироваться на пользовательском опыте и задачах, которые не автоматизировать.
Еще один пример был буквально вчера. За один вечер и 3-4 промта Клод сделал мне рабочего бота, который обходит популярные площадки аренды квартир и смотрит варианты, которые мне нравятся. При этом он сам обошел ограничения для антибота (кроме авито, там хорошая защита, но если поднажать - и это можно обойти), построил канал до моего роутера, чтобы адрес был как из дома, написал весь код, создал бота в телеграм и канал... в общем весь цикл от ничего нет кроме идеи до рабочего продукта. Казалось бы можно уже привыкнуть, но, зная сколько примерно времени уходит на такой сервис руками, не могу перестать радоваться такому.
Принятие ограничений
Но не все так просто. Если масштабировать это на промышленные инструменты - то начинаются реальные сложности. Вот те проблемы, с которыми я столкнулся внедряя вайбкодинг в продакшн:
1️⃣ Какое бы крутое и детальное ТЗ вы не сделали (что само по себе утопия) модель все равно не будет следовать ему беспрекословно. То есть модель все равно что-то выдумает, что-то изменит, что-то забудет.
2️⃣Модель говорит, что уже сделала это, а на самом деле функционал не работает. И это не выявить без конкретного прикладного теста конкретно этой фичи.
3️⃣Стили кода, технологии, тулинг, все берет на себя модель, чаще всего модель берет усложнение, которое не нужно изначально, от этого код еще более запутанный, чем был и должен был быть.
4️⃣Потеря контроля. Теперь не вы контролируете проект, а он живет сам по себе. При этом ответить на вопрос, в каком он сейчас состоянии не способна даже модель, а если проект достаточно большой, так она еще и приврет где-нибудь.
5️⃣Безопасность. Мало того, что сам код безопасный или нет - непонятно, так еще и во время разработки модель может накачать кучу разного, выполнить какие-то команды, скрипты, при этом верификации, как правило, нет. Это отдельная боль.
Общее ощущение такое, что для личных проектов, маленьких инструментов и стартапов вайбкодинг - это очень круто. Но вот для полноценного релиза коммерческого продукта нужно не сильно меньше времени, чем раньше. Что думаете?
👍-согл
👎-не согл
🦄 - не признаю этот ваш ИИ
👍14🦄3
Скучная рубрика про реверс
Реверсил я недавно троянизированный файл xpsrchvw.exe - легитимный XPS Viewer с врезкой вредоносного кода. Внутри него злодеи подменили __security_init_cookie на загрузку шелкода с дальнейшей передачей управления в легитимный бинарь. Но пост не об анализе, а об ошибке, которую я допустил при этом анализе.
Так как бинарник легитимный изначально, внутри него были зашиты pdb символы отладки. Для меня всегда существовала аксиома, что pdb символы помогают при анализе семпла, но не в этот раз
Как я сказал, злодеи подменили содержимое инициализации security cookie, для защиты стека от атак переполнения. Вместо ~50 байт там было около 16 килобайт загрузчика и расшифровки шелкода.
НО! В скачиваемых pdb символах были функции, которые по границам попадали на новую троянизированную функцию, так как она стала на порядки больше. В итоге весь поток выполнения вредоносного кода внутри ida pro был разбит на врезки легитимных функций с все еще вредоносным кодом. Таким образом сломался не только сам код, который начал неправильно дизассемлироваться, но и сломались xref, стековые операции, и, что тоже интересно, отладить такой код стало практически нереально.
Хороший урок, что pdb символы иногда мешают, а не помогают анализировать вредоносные файлы.
Реверсил я недавно троянизированный файл xpsrchvw.exe - легитимный XPS Viewer с врезкой вредоносного кода. Внутри него злодеи подменили __security_init_cookie на загрузку шелкода с дальнейшей передачей управления в легитимный бинарь. Но пост не об анализе, а об ошибке, которую я допустил при этом анализе.
Так как бинарник легитимный изначально, внутри него были зашиты pdb символы отладки. Для меня всегда существовала аксиома, что pdb символы помогают при анализе семпла, но не в этот раз
Как я сказал, злодеи подменили содержимое инициализации security cookie, для защиты стека от атак переполнения. Вместо ~50 байт там было около 16 килобайт загрузчика и расшифровки шелкода.
НО! В скачиваемых pdb символах были функции, которые по границам попадали на новую троянизированную функцию, так как она стала на порядки больше. В итоге весь поток выполнения вредоносного кода внутри ida pro был разбит на врезки легитимных функций с все еще вредоносным кодом. Таким образом сломался не только сам код, который начал неправильно дизассемлироваться, но и сломались xref, стековые операции, и, что тоже интересно, отладить такой код стало практически нереально.
Хороший урок, что pdb символы иногда мешают, а не помогают анализировать вредоносные файлы.
🔥7🦄1