Size: a a a

2019 March 14

АГ

Александр Гранин in fprog_spb
Текстов на естественном языке
источник

A

Aλice in fprog_spb
Я текстов, но вчера в JB интересный семинар был про методы анализа кода. И мне показалось, это подходит только для профилирования обычных авторов кода. Но не хакеров, которые обфусцируют код, разбавляют контекст в стиле waf bypass
источник

АГ

Александр Гранин in fprog_spb
Мне неизвестно, что там было на семинаре, но в эпоху, когда существуют стайл-гайды, я не совсем понимаю, как можно анализировать код на авторство.
источник

АГ

Александр Гранин in fprog_spb
А обфускацию / стеганографию мы в нашей DLP системе намеренно не ловили, потому что там методов больше, чем у нас ресурсов их все закодить
источник

A

Aλice in fprog_spb
Александр Гранин
Текстов на естественном языке
Там проблема обычно с длиной сообщения. И с тем, что существующие методы для задачи closed-set. Например, если модель под капотом у DLP обучена на корпоративной переписке сотрудников компании, то в случае расследования киберинцидентов (утечки информации, вбросы) можно установить авторство только из ограниченного набора людей. А если уборщица за компьютер села и что-то написала, то просто все вероятности будут ниже трешолда. Классификацию авторов в постановке closed-set имеет смысл делать, наверное, только вместе с профилированием. Отдельная модель предиктит гендер и возраст. Может быть, еще какие-то фичи
источник

АГ

Александр Гранин in fprog_spb
Aλice
Там проблема обычно с длиной сообщения. И с тем, что существующие методы для задачи closed-set. Например, если модель под капотом у DLP обучена на корпоративной переписке сотрудников компании, то в случае расследования киберинцидентов (утечки информации, вбросы) можно установить авторство только из ограниченного набора людей. А если уборщица за компьютер села и что-то написала, то просто все вероятности будут ниже трешолда. Классификацию авторов в постановке closed-set имеет смысл делать, наверное, только вместе с профилированием. Отдельная модель предиктит гендер и возраст. Может быть, еще какие-то фичи
А поясните, о каком тут авторстве идет речь. Автор утечки? Злоумышленник, то есть?
источник

A

Aλice in fprog_spb
Александр Гранин
А обфускацию / стеганографию мы в нашей DLP системе намеренно не ловили, потому что там методов больше, чем у нас ресурсов их все закодить
Есть несколько видов лингвистической стеганографии, я пока остановилась на текстовой (форматирование).  Думаю попробовать заменить способ векторизации, попробовать устойчивые к шуму векторные представления слов. Заменить n_gramms + tf-idf на fasttext, RoVe, BEP tokenization
источник

АГ

Александр Гранин in fprog_spb
У нас была DLP, основанная на правилах. То есть, не то чтобы обученная (нейросети?), а скорее - настроенная.
источник

A

Aλice in fprog_spb
Александр Гранин
А поясните, о каком тут авторстве идет речь. Автор утечки? Злоумышленник, то есть?
Да. Я декомпозировала задачу на извлечение признаков авторов и классификацию профилей. Но можно и по-другому решать
источник

A

Aλice in fprog_spb
Александр Гранин
Мне неизвестно, что там было на семинаре, но в эпоху, когда существуют стайл-гайды, я не совсем понимаю, как можно анализировать код на авторство.
Честно говоря, я тоже не понимаю, какую проблему они решают. Мне пока кажется практически применимой только такая задача: обучать бинарный классификатор на репозитории кандидата и предиктить, он сам выполнил тестовое или кто-то за него писал😄
источник

АГ

Александр Гранин in fprog_spb
Aλice
Есть несколько видов лингвистической стеганографии, я пока остановилась на текстовой (форматирование).  Думаю попробовать заменить способ векторизации, попробовать устойчивые к шуму векторные представления слов. Заменить n_gramms + tf-idf на fasttext, RoVe, BEP tokenization
Да, я понимаю о чем речь. В моем дипломе тоже был анализ профилей, собранных по тексту. И там в основном был частотный анализ символов. До n-grams я в то время не дошел, но аналогичные проекты, работающие со всякими слогами (дифтонгами, точнее), показывали хорошие результаты.

Очень важно при этом делать нормализацию текста.
источник

АГ

Александр Гранин in fprog_spb
(Материалы диплома, кстати, в open source)
источник

A

Aλice in fprog_spb
Я посмотрю, интересно)
источник

АГ

Александр Гранин in fprog_spb
Aλice
Честно говоря, я тоже не понимаю, какую проблему они решают. Мне пока кажется практически применимой только такая задача: обучать бинарный классификатор на репозитории кандидата и предиктить, он сам выполнил тестовое или кто-то за него писал😄
Задача понятная, а вот как решать - это вопрос. Данных же мало для создания профиля. И код - ну слишком похожий у разных авторов
источник

A

Aλice in fprog_spb
Мне вчера было интереснее про векторизацию кода послушать. Code2vec чувствителен к разбавлению контекста: если злоумышленник использует техники, вроде как в WAF bypass, или просто периодически заменяет некоторые символы кириллицей (Visual Studio это поддерживает), то эти токены не будут покрываться словарем модели. Для этих целей семантические фичи вообще не очень подходят, лучше анализировать бинарники. Или размечать вручную типы комманд и типы переходов между ними и строить анализ графа потока управления и графа потока данных. Или анализировать синтаксические и структурные фичи через AST, где ребра представляют структуру, которая скармливается random forest или LSTM.
Есть еще подход, основанный на энтропии сигнала фактора и взаимной информации, но я это не поняла, его просто упомянули в обзоре
источник

АГ

Александр Гранин in fprog_spb
Aλice
Я посмотрю, интересно)
Ну, работа студенческого уровня, конечно, но как мне кажется, направление верное. Можно было бы развивать.
https://habr.com/ru/post/114187/
источник

АГ

Александр Гранин in fprog_spb
Aλice
Мне вчера было интереснее про векторизацию кода послушать. Code2vec чувствителен к разбавлению контекста: если злоумышленник использует техники, вроде как в WAF bypass, или просто периодически заменяет некоторые символы кириллицей (Visual Studio это поддерживает), то эти токены не будут покрываться словарем модели. Для этих целей семантические фичи вообще не очень подходят, лучше анализировать бинарники. Или размечать вручную типы комманд и типы переходов между ними и строить анализ графа потока управления и графа потока данных. Или анализировать синтаксические и структурные фичи через AST, где ребра представляют структуру, которая скармливается random forest или LSTM.
Есть еще подход, основанный на энтропии сигнала фактора и взаимной информации, но я это не поняла, его просто упомянули в обзоре
Забавно.
Не знаю, существует ли хоть один подобный инцидент в реальности.
источник

A

Aλice in fprog_spb
Меня векторизация кода интересует для смежной задачи. Есть бинарные классифкаторы урлов атака / не атака. По задаче мультиклассовой классификации (xss, sqli, phishing, spam, malicious) пока нет state-of-the-art решения. Только проприетарные реализации в некоторых WAF. Очень многие обходятся, и сейчас самое нормальное решение — размечать команды с помощью лексера, вроде libdetection
https://github.com/wallarm/libdetection
https://medium.com/@d0znpp/how-to-bypass-libinjection-in-many-waf-ngwaf-1e2513453c0f
Его можно подключить к питону как сишнуб либу через swig, а как векторизовать пока не очень понятно
источник

АГ

Александр Гранин in fprog_spb
Aλice
Меня векторизация кода интересует для смежной задачи. Есть бинарные классифкаторы урлов атака / не атака. По задаче мультиклассовой классификации (xss, sqli, phishing, spam, malicious) пока нет state-of-the-art решения. Только проприетарные реализации в некоторых WAF. Очень многие обходятся, и сейчас самое нормальное решение — размечать команды с помощью лексера, вроде libdetection
https://github.com/wallarm/libdetection
https://medium.com/@d0znpp/how-to-bypass-libinjection-in-many-waf-ngwaf-1e2513453c0f
Его можно подключить к питону как сишнуб либу через swig, а как векторизовать пока не очень понятно
Ясно. Это уже для меня неизвестная область :)
Пишите, интересно будет узнать о результатах.
источник

e

expert in fprog_spb
Aλice
Я готовлю доклад на конференцию по задаче идентификации авторства и методам обхода DLP систем. Мне нужно протестировать свое решение на анонимизированной корпоративной переписке с формальным стилем сообщений и связью авторов между собой. Сбербанк данные не дает, а задачи студентам ставит((
Твиты, на которых я уже сделала прототип, не очень подходят по методологической причине. Во-первых, разрозненные блоги не учитывают связь авторов между собой, вероятность наличия общих фраз, характерных для данной группы. Во-вторых, модель получится не робастная к «стилистической маске», однородному стилю всех авторов. Я могла бы использовать корпус сообщений политиков, украденный хакерами из Кремля, но не хочу проблем. Было бы отлично взять чью-то переписку на google groups, поскольку она и так публичная и 152-ФЗ, 272 УК там не будет. Но я все равно на всякий случай заменю все имена собственные, числа и др. чувствительные данные специальными токенами, а авторов переписки безликими номерами.
У google groups нет API для парсинга, поэтому спрашиваю сейчас у знакомых организаторов коммьюнити
Возможно это прозвучит странно, но мне сразу в голову пришли архивы ФИДО эх. Там конечно будет не официальный стиль письма, но зато данные будут разделены на тематические группы. Я погуглил и нашёл такое
https://wfido.ru/all/c

Авторы в ФИДО всегда уникально идентифицировались по адресу виду X:YYYY/ZZ.XX
источник