D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Разработка малвари на С++.
Углубленный курс.
Глава II
SNOW эксклюзивно для XSS.IS
Содержание
1 Введение.......................................................................................................................................................3
2 Погружаемся в предметную область. Критически важная информация. Что это? Кому и зачем оно
нужно? Где и как искать?............................................................................................................................. 4
2.1 Кому и для чего это нужно? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Критическая информация в корпоративных сетях. Виды. Возможные места расположения. Влияние на компанию. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 ERP-системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2 Файловые хранилища. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3 СУБД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.4 Корпоративная переписка. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Ценность информации. Определение ключевых направлений поиска. . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Квартальные финансовые отчеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.2 Guidance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.3 Список поставщиков и покупателей. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.4 Калькуляция себестоимости продукции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.5 Взаимодействие с фигурантами санкционных списков (персоны, страны, корпорации) . . . . . . . . . . . 8
2.3.6 Отчеты службы безопасности и риск-менеджмента. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.7 Технологические ноу-хау, отчеты о проведении исследований, описание технологических процессов. . . 10
2.3.8 Дивиденды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.9 Выделение компаний и дивестиции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.10 Система мотивации сотрудников, уровень зарплаты, бонусов и пр. . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Выводы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Список основных модулей проекта. Краткое описание функционала. 14
3.1 Командный сервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.1 Создание конфигурации под конкретную сеть. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.2 Сборка ратника под конкретную сеть. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.3 Модуль управления клиентами в сети. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.4 Панель управления расширенным анализом данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 RAT’ник . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.1 Модуль сбора информации о системе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2 Модуль взаимодействия с сервером. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.3 Модуль поиска и анализа данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.4 Модуль архивации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.5 Модуль выгрузки данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.6 модуль защиты приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Заключение.
1 Введение.
Итак, в первой главе были обозначены цели и задачи курса. В этой приступаем к их реализации. Там же мы набросали примерный план дальнейшей работы. Продублирую его здесь.
1. определиться с типом разрабатываемого приложения;
2. описать его примерный функционал;
3. сформулировать требования к продукту;
4. составить техническое задание;
5. спроектировать архитектуру;
6. разработать MVP продукта;
Список литературы и полезных ресурсов был составлен ранее. Будем обращаться к нему по мере необходимости.
Я долго думал над тем как построить дальнейшее развитие курса. Эта глава переписывалась несколько раз. В итоге вернулся к тому же, с чего и начал – практика, дополняемая теорией, по мере необходимости.
Еще дольше я думал над тем продуктом, который будет разработан в рамках курса. Выбор был довольно сложным, т.к. с одной стороны – это должна быть малварь, ради которой курс и затевался.
С другой – поскольку пишем мы на плюсах, то желательно охватить и использовать на практике как можно больше возможностей языка – в обычный стиллер или ратник это, как мне кажется, достаточно сложно впихнуть, придется на
ровном месте сочинять козу на лисапеде.
В-третьих сюда же можно отнести проектирование и разработку сложных проектов. Мы пройдем весь путь – от изучения предметной области, сбора первичных требований к проекту, составления технического задания до полноценной реализации
заявленного функционала, а также организации поддержки проекта.
Ратник и стилер – достаточно сложные проекты, даже на их примере можно наглядно продемонстрировать основные принципы построения грамотной архитектуры. Но душа требует размаха. Как говорится: «любить – чтобы сердце стучало,
а пить – чтобы лежа качало».
Ну а в-четвертых – было бы совсем прекрасно, если бы с его помощью мы бы еще и денег заработали. Да-да, мечтать не вредно. О возможной монетизации поговорим чуть позже, дабы сохранить интригу.
В общем разрабатывать мы будем не абы-что, а проект по поиску и извлечению критически важной информации из корпоративных сетей. Тут вам и ратник – такой штукой необходимо управлять удаленно; и стилер, только необычный,
а заточенный под наши задачи; и очень сложный в реализации проект, состоящий из нескольких независимых модулей, при этом взаимодействующих между собой посредством чего-нибудь. Я пока еще не придумал с помощью чего. От морзянки,
до блокчейна. Вариантов масса.
На этом переходим от слов к делу. Для начала нам предстоит погрузиться в предметную область, а именно - понять что такое критически важная информации, в чем ее ценность и чем опасна ее утечка для компании.
Затем мы определим список основных компонентов системы, составим требования к ним. Следующим шагом будет составление технического задания на разработку. В общем будет весело. Не переключайтесь.
Поехали.
2 Погружаемся в предметную область. Критически важная информация. Что это? Кому и зачем оно нужно? Где и как искать?
Для начала дадим определение критически важной информации.
Критически важная информация для компании — это данные и сведения, которые имеют решающее значение для ее деятельности, безопасности, конкурентоспособности и устойчивости. Потеря, утечка или компрометация такой информации может привести к серьезным последствиям, включая финансовые потери, утрату доверия клиентов, юридические проблемы и даже прекращение деятельности компании.
Теперь попробуем разобраться для чего это нужно и какую информацию мы будем извлекать.
2.1 Кому и для чего это нужно?
На этом оставим тему монетизации до лучших времен. Мы еще ничего не написали.
2.2 Критическая информация в корпоративных сетях. Виды. Возможные места расположения. Влияние на компанию.
Для начала необходимо понять где и какими средствами корпорации генерируют, хранят и обрабатывают информацию. Очевидно, что это делается не вручную. Хотя многие, по старинке, пользуются офисными пакетами. Но основной кладезь информации – это, конечно же ERP (Enterprise Resource Planning)-системы. Ниже я постараюсь дать общее представление о них.
2.2.1 ERP-системы.
Гугл нам говорит следующее:
ERP (Enterprise Resource Planning) система — это интегрированная информационная система, предназначенная для управления и автоматизации основных бизнес-процессов организации. ERP-системы объединяют различные функцио-
нальные области предприятия, такие как финансы, производство, снабжение, продажи, маркетинг, управление персоналом и другие, в единую информационную платформу.
Система управления и автоматизирования процессов организации, подразумевает внедрение системы ERP, состоящей из отдельных взаимосвязанных блоков, отвечающих за разные аспекты деятельности компании (производство, складская
логистика, персонал, учетно-управленческий модуль и т.д.). Ведение бухгалтерского и управленческого учета является одной из важнейших подсистем в ERP-системах.
Современная степень автоматизации позволяет формировать любые виды отчетов, в том числе, такие как управленческая и бухгалтерская отчетность в любой момент времени (обычно наибольшую ценность представляет информация по итогам
месяца / квартала, которая полностью формируется к дате, установленной в компании).
Слепок всех баз ERP-системы на определенный момент содержит подавляющую часть информации о деятельности компании, что многократно повышает его ценность.
Основные игроки на мировом рынке ERP-систем:
В компаниях с выручкой от 1 млрд. долларов, в 80% случаев, будет стоять продукт SAP или Oracle, являющихся эталонами на данный момент в сфере ERP. Среди бухгалтерских решений для малого и среднего бизнеса в США лидером является Quickbooks.
Несмотря на широкие возможности ERP, очень много ценной информации по-прежнему обрабатывается стандартными офисными пакетами и хранится в файлах.
Это я к тому, что в идеале мы должны научиться находить эти самые ERP-шки в сетях и каким-то образом делать снепшоты с них. Я пока плохо представляю как мы это будем делать, да и не важно это на данном этапе. Но задача эта – далеко не тривиальная. Будет над чем поломать голову.
2.2.2 Файловые хранилища.
Ну тут всё понятно. В любой корпоративной сети имеются шары, на которых хранится информация (привет рансомшикам), как критическая, так и не очень. Ее мы тоже будем собирать, но только по умному. Отмечу лишь, что это видится наиболее простым этапом в реализации. Если, конечно, предполагать что у нас имеются необходимые привилегии пользователя. С него, пожалуй, и начнем. Но об этом позже.
2.2.3 СУБД
В корпоративных базах лежит очень много всего интересного и, наверняка, мы там найдем чем поживиться. Я пока не знаю как мы будем получать туда доступ. Да, на самом деле, это и не наша забота. Будем считать, что доступ у нас есть и мы вольны делать что хотим.
У нас есть 2 пути:
1. Выкачать базу целиком, а потом уже смотреть что мы там выловили. Метод простой в реализации, только вот боюсь, что антивирусу это не очень понравится. Да и тащить несколько терабайтов ради пары тысяч строк действительно ценной информации – удовольствие достаточно сомнительное. Мы пойдем другим путём.
2. Использовать метод пристального всматривания – написать модуль анализа содержимого базы и забрать только то, что представляет для нас наибольший интерес.
Мы, естественно, выберем второй. Таки да, придется вспомнить как работать с СУБД, оптимизацию запросов и еще много всяких штук, без которых решение данной задачи невозможно.
2.2.4 Корпоративная переписка.
Зачастую в корпоративной переписке, как внешней так и внутренней, можно обнаружить не мало важной информации. Не стоит недооценивать халатность топ-менеджмента компании. Личная и деловая переписка между отделами может нести в себе «сырые» или сформированные искомые данные. Очень часто, прямо в файловых хранилищах, можно найти копии писем. Их мы тоже будем собирать. А идеальным вариантом будет извлечение или даже перехват корпоративной почты на лету. Это довольно просто реализовать для MS Exchange. Достаточно написать и зарегистрировать так называемый exchange transport agent. Об этом я тоже расскажу в свое время.
Мы рассмотрели основные возможные места хранения данных. Дальше будем посмотреть как ее оттуда извлечь.
2.3 Ценность информации. Определение ключевых направлений поиска.
Итак, теперь нам необходимо определиться с тем, что же мы будем извлекать и постараемся обосновать каждый пункт.
Поехали.
Я выделил несколько основных направлений поиска, с которыми мы будем работать и постарался выделить общие для них характеристики, как то:
• типы файлов;
• возможные имена файлов;
• подразделения, где в первую очередь следует искать документы и данные по конкретному направлению;
• минимальный набор ключевых слов, по которым следует осуществлять поиск для указанного направления;
• период актуальности информации.
Сделал я это не просто так. Эти характеристики будут использованы в дальнейшем, для разработки системы фильтров и оценки, через которые будут пропускаться все файлы, формироваться запросы к базам данных и оцениваться их результаты.
Я намеренно привожу только самый минимум возможных имен файлов и ключевых слов, дабы не засорять статью. Когда дойдет дело до реализации – мы попросим ИИ насочинять нам побольше. А сейчас я обошелся гуглом и собственными
знаниями.
Рассмотрим основные направления поиска, которые я выделил на первом этапе, для MVP этого более чем достаточно. Затем, если всё пойдет как мы хотим, будем потихоньку дополнять список.
2.3.1 Квартальные финансовые отчеты
Квартальный финансовый отчет (QFR) содержит обширную информацию о финансовой деятельности компании за указанный квартал. Ниже перечислены некоторые из них:
бухгалтерским ПО в течении всего квартала. Интерес представляют документы, извлеченные как можно ближе к дате официальной публикации.
Рис. 1: Примеры реакций рынка на публикацию квартальных отчетов компаний
Что искать?
Файлы содержащие квартальные отчеты – в 90% случаев это pdf и все поддерживаемые форматы Excel, Word и их аналогов.
Возможные имена файлов: reports-third-quarter, earnings-3q24, QuarterlyRep, Q3report24, Quarter2rep24, Earnings-Q2, Quarter1 и т.д.
Даны только для понимания принципов именования подобных файлов. Вариантов там масса, на самом деле.
Где искать: бухгалтерский отдел, секретариат, отдел инвестиционных исследований / PR-отдел, финансовый и юриди-
ческий отделы
Ключевые слова: Quarterly Earnings Reports,Earnings Announcement,quarter financial results, quarter results, results, financial results, statement Quarterly, Earnings, financial statement, fiscal results, Business update,Announces, Announced, Preliminary
results, Earnings call, Earnings webcast, Consolidadtion, Consolidated financial statements, Consolidadted, EPS, Share repurchases, Diluted eps, Net income, Revenues, Reports, Financial Reports, Fiscal results, Acquisition, Acquire, conference call, annual report
Актуальность информации – в зависимости от способа ее дальнейшего использования. Если для операций на бирже – то лишь до момента публикации отчета. Если же мы хотим проанализировать финансовое состояние компании и попытаться
спрогнозировать его на ближайший период, то необходимо делать выборку за последние 2-3 года. Таки да, в любом случае нам понадобится консультация специалистов в этой области. Но это тоже сильно потом, когда мы начнем тестировать хотя
бы MVP.
2.3.2 Guidance
Что искать? Отчет об ожидаемых самой компанией в текущем квартале (финансовом году) результатах своей деятельности, включая такие важнейшие показатели, как выручка, прибыль, публикуется компаниями в документе, называемом
GUIDANCE.
Данная информация имеет повышенную важность и иногда даже более приоритетная, чем текущий финансовый отчет. Обычно в подобные пресс-релизы зашита дата и время их выхода. Если она уже в прошлом, то информация не актуальна.
Чаще всего финансовый прогноз дается прямо в теле квартального финансового отчета – это значит, что нам придется научиться извлекать прогнозы из отчетов.
Где искать?
Возможные имена файлов: – Financial Forecast, Financial Projection, Budget Forecast, Revenue Projection, Expense Forecast, Cash Flow Forecast, Financial Plan, Financial Outlook
В чем ценность информации?
Как можно видеть на графике – акции компании рухнули на 25%
Актуальность информации: – до момента публикации. То есть чтобы извлечь максимальную выгоду нам придется сначала найти, а потом постоянно мониторить ответственных за составление прогнозов и их файлы, переписку, и т.д. При
этом мы не должны спалиться. Будет весело. Не переключайтесь.
2.3.3 Список поставщиков и покупателей.
Важной информацией о компании являются перечень поставщиков и крупных покупателей, работающих с предприятием в текущий момент.
Что искать?
Ключевые слова: Suppliers, Counterparties, Contractor, Tender, Vendor, Seller, Buyer, Client
актуальность информации: поставщики и покупатели – 1-2 года; тендеры – 1-2 месяца.
Где искать?
Такого рода данные могут быть найдены на машинах следующих отделов:
2.3.4 Калькуляция себестоимости продукции.
Информация о себестоимости продукции и услуг компании, в особенности ключевых, представляет высокий интерес для конкурентной разведки, позволяет определить диапазон цен комфортных для компании и предвидеть возможные изменения
в выручке / прибыли организации при изменении цен на используемые в работе комплектующие / услуги и т.д.
Что искать?
Искомые файлы, обычно содержатся в формате Excel таблиц или аналоги MS Excel, реже в виде pdf и MS Word.
Где искать?
Секторы для которых информация о себестоимости носит первоочередной характер:
Актуальность информации – 3-5 лет.
2.3.5 Взаимодействие с фигурантами санкционных списков (персоны, страны, корпорации) .
В эпоху санкционной войны важная часть внутренней информации о компании, которую предпочитают скрывать – взаимодействие с фигурантами санкционных списков, как с физическими, так и с юридическими лицами.
Данная информация сохраняет свою актуальность с момента включения контрагента компании в санкционный список.
Секторы для которых информация о взаимодействии с фигурантами санкционных списков имеет наибольший потенциал:
По данному направлению необходимо проанализировать всех партнеров компании и выяснить не находится ли какая-либо из них под санкциями. Это тоже далеко не тривиальная задача. Большая часть ее будет приходиться на серверную часть.
Где искать?
Последствия для компании, в случае подтверждения сотрудничества с подсанкционными предприятиями и/или лицами могут быть очень печальны – штрафы, уголовная ответственность, дисквалификация руководства.
Актуальность информации: данная информация становится актуальна с момента включения контрагента компании в санкционный список.
2.3.6 Отчеты службы безопасности и риск-менеджмента.
Важная составляющая деятельности любой компании – деятельность ее службы безопасности и риск-менеджмента.
Данная информация позволяет определить текущие и будущие интересы компании в сфере заключения сделок с действующими или потенциальными партнерами, проверки в отношении персонала организации, а также внутренние расследования
различного рода инцидентов безопасности и происшествий в организации.
Что искать?
Любые текущие отчеты службы безопасности и оценки риск-менеджмента, поскольку могут содержать в себе информацию, касающуюся тактических и стратегических планов компании
Где искать?
В чем ценность информации?
В целом такого рода отчеты представляют собой бесценную информацию в плане текущих интересов компании (например, проверка партнеров из санкционных списков, что указывает на возможные планы по взаимодействию с ними, что уже
при обнародовании может нанести компании огромные репутационные потери), а также используемых методах получения информации самой организацией. Причем иногда сами методы могут носить незаконный характер, например, использование
корпоративного шпионажа (в особенности текущее) или злоупотребление служебным положением.
Пример новости
Ключевые слова: security service report, security check, security risk, verification, security service, personnel security, personnel department and economic, security, surveillance
Актуальность информации: 1-2 года, в части применения незаконных методов получения информации до 5-10 лет.
2.3.7 Технологические ноу-хау, отчеты о проведении исследований, описание технологических процессов.
Информация о патентном поиске организации и отчеты ее отдела разработок, а также описание технологических процессов обладают высокой ценностью. Например:
Данный список можно продолжать очень долго. Будем расширять его по мере развития проекта.
Что искать?
Ключевые слова: research and development, know-how, industrial model, patent, license, intellectual property, wipo, patentscope, patent law
Данный список будет расширяться и уточняться по мере разработки.
В чем ценность информации?
2.3.8 Дивиденды
Информация о величине дивидендов, введении, изменении или отмене могут достаточно сильно повлиять на стоимость акций компании.
Что искать?
Зачастую информация о дивидендах дается в теле квартального финансового отчета или ассоциирована с ним по дате и
времени выхода.
Где искать?
Ключевые слова: dividend, dividend payout, dividend ratio, dividend yield, lowers, dividends, raises dividends, cancels
dividends, reiterates dividends, reinstates dividends
Актуальность информации: Обычно в подобные пресс-релизы зашита дата и время их выхода. Если она уже в прошлом, то информация не актуальна.
2.3.9 Выделение компаний и дивестиции.
Выделение компаний и дивестиции фактически противоположны по финансовому смыслу слиянию и поглощению, однако абсолютно точно также важны и потенциально содержат информацию, способную принести большую пользу.
В результате данных событий обычно из одной компании образуется несколько, разделенных по функциональному, географическому или иному признаку с целью подготовки к продаже определенного актива, избавлению от неэффективной части бизнеса и т.д.
Что искать?
Документы, содержащие ключевые слова: divestiture, divestment, spin-off, sale of assets
Где искать?
2.3.10 Система мотивации сотрудников, уровень зарплаты, бонусов и пр.
Информация о системе мотивации, заработной плате и размере выплачиваемых бонусов по организации может иметь решающее значение в компаниях с высокой добавочной стоимостью, получаемой за счет труда персонала (разработка ПО,
юридические, финансовые услуги и т.д.)
Секторы, для которых информация о мотивации, заработной плате и размере выплачиваемых бонусов носит первоочередной характер:
В чем ценность информации?
Пример: скандал с получением опционов задним числом Стивом Джобсом в 2006 г. В результате которого финансовый директор потерял свою должность.
2.4 Выводы.
Из вышеизложенного очевидно что фактически из любой информации, при грамотном и своевременном извлечении ее из корпоративной сети, можно извлечь выгоду. Теперь осталось дело за малым – написать такую штуку, которая будет извлекать нужные данные из сетей, причем делать это очень тихо и незаметно, затем анализировать их и классифицировать. Под нужными данными будем понимать ту информацию, которая для конкретной компании является критической. Для этого нам придется предварительно поработать руками и головой, дабы мы смогли правильно попросить об этом нашу программу. Например, не имеет смысла пытаться искать исходники и результаты научных исследований у условных юристов. Обратное, кстати, неверно – в юридических отделах крупных IT-компаний или НИИ наверняка найдется чем поживиться. А как это монетизировать – уже другой вопрос.
По сути мы имеем классическую задачу классификации документов. Эта задача уже давно решена. И, будь мы в обычных условиях, я бы вообще не грел голову, взял готовое решение, коих полно. Однако всё не так просто. Мы не можем развернуть в чужой сети полноценный инструмент, способный решить поставленную задачу. Наши ресурсы жестко ограничены. Кроме того необходимо помнить об антивирусах, DLP(data leak protection)-системах, которые нам будут очень сильно мешать. Поэтому придется сочинять козу на лисапеде – а именно бить задачу на две части. Условно говоря, первичная классификация документов непосредственно в сети и углубленный анализ данных полученных на первом этапе. Вторую часть задачи мы будем решать локально, не стесняя себя в средствах.
3 Список основных модулей проекта. Краткое описание функционала.
Итак, с предметной областью немного разобрались. Теперь давайте подумаем из каких модулей должен состоять продукт, и каким функционалом они должны обладать для успешного решения поставленной задачи.
Очевидно, что у нас будет, как минимум, 3 основных модуля:
Поехали.
3.1 Командный сервер
Тут всё относительно просто. Во всяком случае на первом этапе.
3.1.1 Создание конфигурации под конкретную сеть.
Для полноценной работы нам понадобятся следующие настройки:
3.1.2 Сборка ратника под конкретную сеть.
Для предотвращения несанкционированного распространения продукта необходимо предпринять некоторые меры. В частности конфиг у нас будет вшиваться в исполняемый файл, будучи при этом предварительно зашифрован асимметричным шифрованием. А расшифровываться будет при запуске, с помощью закрытого ключа, передаваемого в качестве параметра.
3.1.3 Модуль управления клиентами в сети.
Тут тоже относительно просто – страничка в панели управления, отображающая список клиентов, их статус. Сюда же добавим возможность отправки команд и просмотр статистики.
3.1.4 Панель управления расширенным анализом данных
Это самая загадочная штука во всём проекте. Я пока не придумал как она будет работать. Как и сам модуль углубленного анализа. Видимо об этом в другой раз.
3.2 RAT’ник
Тут всё просто. Запуститься с параметрами из конфига. Собрать первичную информацию о сети и системе в которой он был запущен. Отстучать на сервер. Собрать данные. Упаковать и выгрузить. Получить следующую задачу.
3.2.1 Модуль сбора информации о системе
Тут всё просто. С помощью LDAP запросов собираем списки компьютеров, пользователей, групп и проч. Пакуем это в JSON и отправляем на сервер.
3.2.2 Модуль взаимодействия с сервером.
Ну тут у нас выбор огромный – от нативных винапишных вызовов до boost asio. Всего делов то – с одной стороны слушать команды от сервера, с другой отправлять ему результаты выполнения предыдущих команд. Ну и хранить задачи в очереди. То бишь у нас будет асинхронное клиент-серверное приложение.
3.2.3 Модуль поиска и анализа данных
1. Поиск и анализ файлов.
• получать список файлов в каталогах, заданных в конфиге;
• отфильтровать файлы по направлениям поиска – здесь у нас будет разработана некая система оценки файлов, согласно которой мы будем определять наиболее вероятное направление поиска, которому можно соотнести файл этот. Грубо говоря за попадание прохождения каждого фильтра, о которых я писал выше (расширение
файла, дата создания и последнего изменения, содержание ключевых слов в имени файла и т.д.) каждому файлу будет начисляться фиксированное количество баллов для каждого направления. Затем файл «прикрепляется» к направлению, за которое он получил максимальное количество баллов.
2. Поиск и извлечение из СУБД. Вот тут уже всё далеко не так однозначно. Нам необходимо сначала получить список таблиц и их полей. Затем проанализировать их и только потом составить SQL запрос, результат которого будет упакован и отправлен на сервер. Причем для каждого направления будет формироваться свой запрос. На первом этапе мы будем это делать вручную. То есть алгоритм примерно такой:
(a) получить список таблиц и их полей и отправить его на сервер;
(b) оператор, в ручном режиме анализирует полученные результаты и составляет SQL запрос (ага, мечтать не вредно);
(c) клиент выполняет запрос к базе и полученный результат отправляет на сервер.
Выглядит странно. Но если с файлами у меня есть четкое понимание принципов работы. То вот с СУБД не так всё очевидно. Будем решать проблему по мере её поступления.
3.2.4 Модуль архивации.
Функционал:
1. Упаковка файлов в архивы форматов ZIP, 7Z, GZIP;
2. защита архива с помощью пароля;
3. поддержка многотомных архивов;
4. упаковка в памяти;
5. ограничения по объему потребляемой памяти на один архив;
3.2.5 Модуль выгрузки данных.
1. выгрузка данных полученных из потока или списка файлов на сервер или в облачное хранилище.
2. отслеживание прогресса выгрузки;
3. установка скорости выгрузки данных;
4. установка ограничений по объему потребляемой памяти.
3.2.6 модуль защиты приложения
в общем не буду дублировать то, что описано в модуле конфигурации. Вроде там я забыл еще защиту от отладки.
4 Заключение.
Получилось много опять текста. Возможно чуть сумбурно, но тем не менее. Плюс-минус то, что я анонсировал в предыдущей статье.
Нетерпеливый читатель обязательно спросит: «дядя, а когда код то начнем писать?»
Ответ будет предельно простым: «Писать код без изучения предметной области, составления технического задания и дорожной карты, а также проектирования архитектуры каждого модуля и прочих нудных – это извращение, причем заранее
обреченное на провал.» Код от нас никуда не денется. Всему своё время.
И еще один момент. Я долго думал над ним. В общем, если у кого-то есть возможность и желание поддержать автора копейкой – буду очень благодарен. Кошелек указал ниже. Все же статьи отнимают очень много времени и сил. Но я обещаю,
что доведу это дело до конца и в конце мы станем крутыми маловарами, а может и не станем. Но мы попробуем. Спасибо всем, кто дочитал до конца.
На корм котику и автору на эликсир здоровья:
bc1q8k8gfkhkmnsjgmd8uxwdkv2yf9gud9lkjqd2ed
За сим позвольте откланяться.
Углубленный курс.
Глава II
SNOW эксклюзивно для XSS.IS
Содержание
1 Введение.......................................................................................................................................................3
2 Погружаемся в предметную область. Критически важная информация. Что это? Кому и зачем оно
нужно? Где и как искать?............................................................................................................................. 4
2.1 Кому и для чего это нужно? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Критическая информация в корпоративных сетях. Виды. Возможные места расположения. Влияние на компанию. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 ERP-системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2 Файловые хранилища. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3 СУБД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.4 Корпоративная переписка. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Ценность информации. Определение ключевых направлений поиска. . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Квартальные финансовые отчеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.2 Guidance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.3 Список поставщиков и покупателей. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.4 Калькуляция себестоимости продукции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.5 Взаимодействие с фигурантами санкционных списков (персоны, страны, корпорации) . . . . . . . . . . . 8
2.3.6 Отчеты службы безопасности и риск-менеджмента. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.7 Технологические ноу-хау, отчеты о проведении исследований, описание технологических процессов. . . 10
2.3.8 Дивиденды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.9 Выделение компаний и дивестиции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.10 Система мотивации сотрудников, уровень зарплаты, бонусов и пр. . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Выводы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Список основных модулей проекта. Краткое описание функционала. 14
3.1 Командный сервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.1 Создание конфигурации под конкретную сеть. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.2 Сборка ратника под конкретную сеть. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.3 Модуль управления клиентами в сети. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.4 Панель управления расширенным анализом данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 RAT’ник . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.1 Модуль сбора информации о системе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2 Модуль взаимодействия с сервером. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.3 Модуль поиска и анализа данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.4 Модуль архивации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.5 Модуль выгрузки данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.6 модуль защиты приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Заключение.
1 Введение.
Итак, в первой главе были обозначены цели и задачи курса. В этой приступаем к их реализации. Там же мы набросали примерный план дальнейшей работы. Продублирую его здесь.
1. определиться с типом разрабатываемого приложения;
2. описать его примерный функционал;
3. сформулировать требования к продукту;
4. составить техническое задание;
5. спроектировать архитектуру;
6. разработать MVP продукта;
Список литературы и полезных ресурсов был составлен ранее. Будем обращаться к нему по мере необходимости.
Я долго думал над тем как построить дальнейшее развитие курса. Эта глава переписывалась несколько раз. В итоге вернулся к тому же, с чего и начал – практика, дополняемая теорией, по мере необходимости.
Еще дольше я думал над тем продуктом, который будет разработан в рамках курса. Выбор был довольно сложным, т.к. с одной стороны – это должна быть малварь, ради которой курс и затевался.
С другой – поскольку пишем мы на плюсах, то желательно охватить и использовать на практике как можно больше возможностей языка – в обычный стиллер или ратник это, как мне кажется, достаточно сложно впихнуть, придется на
ровном месте сочинять козу на лисапеде.
В-третьих сюда же можно отнести проектирование и разработку сложных проектов. Мы пройдем весь путь – от изучения предметной области, сбора первичных требований к проекту, составления технического задания до полноценной реализации
заявленного функционала, а также организации поддержки проекта.
Ратник и стилер – достаточно сложные проекты, даже на их примере можно наглядно продемонстрировать основные принципы построения грамотной архитектуры. Но душа требует размаха. Как говорится: «любить – чтобы сердце стучало,
а пить – чтобы лежа качало».
Ну а в-четвертых – было бы совсем прекрасно, если бы с его помощью мы бы еще и денег заработали. Да-да, мечтать не вредно. О возможной монетизации поговорим чуть позже, дабы сохранить интригу.
В общем разрабатывать мы будем не абы-что, а проект по поиску и извлечению критически важной информации из корпоративных сетей. Тут вам и ратник – такой штукой необходимо управлять удаленно; и стилер, только необычный,
а заточенный под наши задачи; и очень сложный в реализации проект, состоящий из нескольких независимых модулей, при этом взаимодействующих между собой посредством чего-нибудь. Я пока еще не придумал с помощью чего. От морзянки,
до блокчейна. Вариантов масса.
На этом переходим от слов к делу. Для начала нам предстоит погрузиться в предметную область, а именно - понять что такое критически важная информации, в чем ее ценность и чем опасна ее утечка для компании.
Затем мы определим список основных компонентов системы, составим требования к ним. Следующим шагом будет составление технического задания на разработку. В общем будет весело. Не переключайтесь.
Поехали.
2 Погружаемся в предметную область. Критически важная информация. Что это? Кому и зачем оно нужно? Где и как искать?
Для начала дадим определение критически важной информации.
Критически важная информация для компании — это данные и сведения, которые имеют решающее значение для ее деятельности, безопасности, конкурентоспособности и устойчивости. Потеря, утечка или компрометация такой информации может привести к серьезным последствиям, включая финансовые потери, утрату доверия клиентов, юридические проблемы и даже прекращение деятельности компании.
Теперь попробуем разобраться для чего это нужно и какую информацию мы будем извлекать.
2.1 Кому и для чего это нужно?
- • Ransomware – ни для кого не секрет, что рансомщики тащат из сетей всё, что плохо лежит. Там до абсурда дело доходит – не знаю как сейчас с этим обстоят дела, но несколько лет назад очень многие тупо ставили rclone с фильтрами по дате и расширениям файлов. В итоге потом в их блогах появляются петабайты никому ненужного говна. Платить им, видите ли, отказались. Но они точно не наша целевая аудитория. Мы будем действовать тонко и точечно. Нас не интересуют объемы выкачанной даты. Только качество. Порой пара десятков документов имеет большую ценность, нежели десятки терабайтов слитых рансомщиками.
• Конкурентная разведка – тут просто не паханое поле работы. Вот отличная статья по теме. В ней всё изложено более чем подробно, поэтому я лишь еще раз хочу поблагодарить автора за проделанную работу, а я от себя лишь дополню, что на данном направлении и будет сделан основной акцент проекта. - Продажа информации – фактически продолжение предыдущего пункта. Но, если в первом случае компании занимаются конкурентной разведкой самостоятельно, возможно с привлечением сторонних специалистов, то в случае с продажей информации дело обстоит несколько иначе. Тут возможны 2 варианта развития событий:
- некто, сумевший раздобыть информацию, которую он считает критичной, пытается продать ее конкурентам самостоятельно. Напрямую ли он к ним обращается, или же через профильные форумы типа брички – не суть важно. я тут не буду обсуждать аспекты безопасности, поскольку это сильно выходит за рамки статьи, но дело это сложное – найти своего покупателя.
- уже сейчас начинают появляться так называемые «биржи даты», где поиск и поставщиков и покупателей, выставление данных, а также проведение сделок между ними берет на себя биржа, естественно, что за процент от сделки. Это сильно упрощает жизнь и тем и другим.
- Использование инсайдерской информации для торговли на биржах – умные дяди и тёти, обладая теми же квартальными отчетами до их публикации, умеют делать деньги на торговле акциями компаний. Это тема для
- отдельной статьи. Когда-нибудь я и об этом напишу. А пока, в соответствующем разделе, будет несколько примеров влияния публикации той или иной информации на акции компаний.
На этом оставим тему монетизации до лучших времен. Мы еще ничего не написали.
2.2 Критическая информация в корпоративных сетях. Виды. Возможные места расположения. Влияние на компанию.
Для начала необходимо понять где и какими средствами корпорации генерируют, хранят и обрабатывают информацию. Очевидно, что это делается не вручную. Хотя многие, по старинке, пользуются офисными пакетами. Но основной кладезь информации – это, конечно же ERP (Enterprise Resource Planning)-системы. Ниже я постараюсь дать общее представление о них.
2.2.1 ERP-системы.
Гугл нам говорит следующее:
ERP (Enterprise Resource Planning) система — это интегрированная информационная система, предназначенная для управления и автоматизации основных бизнес-процессов организации. ERP-системы объединяют различные функцио-
нальные области предприятия, такие как финансы, производство, снабжение, продажи, маркетинг, управление персоналом и другие, в единую информационную платформу.
Система управления и автоматизирования процессов организации, подразумевает внедрение системы ERP, состоящей из отдельных взаимосвязанных блоков, отвечающих за разные аспекты деятельности компании (производство, складская
логистика, персонал, учетно-управленческий модуль и т.д.). Ведение бухгалтерского и управленческого учета является одной из важнейших подсистем в ERP-системах.
Современная степень автоматизации позволяет формировать любые виды отчетов, в том числе, такие как управленческая и бухгалтерская отчетность в любой момент времени (обычно наибольшую ценность представляет информация по итогам
месяца / квартала, которая полностью формируется к дате, установленной в компании).
Слепок всех баз ERP-системы на определенный момент содержит подавляющую часть информации о деятельности компании, что многократно повышает его ценность.
Основные игроки на мировом рынке ERP-систем:
- SAP (SAP S/4HANA, SAP Business One)
- Oracle (Oracle Enterprise Resource Planning / Oracle Cloud ERP)
- Microsoft (Microsoft Dynamics AX / Dynamics 365)
В компаниях с выручкой от 1 млрд. долларов, в 80% случаев, будет стоять продукт SAP или Oracle, являющихся эталонами на данный момент в сфере ERP. Среди бухгалтерских решений для малого и среднего бизнеса в США лидером является Quickbooks.
Несмотря на широкие возможности ERP, очень много ценной информации по-прежнему обрабатывается стандартными офисными пакетами и хранится в файлах.
Это я к тому, что в идеале мы должны научиться находить эти самые ERP-шки в сетях и каким-то образом делать снепшоты с них. Я пока плохо представляю как мы это будем делать, да и не важно это на данном этапе. Но задача эта – далеко не тривиальная. Будет над чем поломать голову.
2.2.2 Файловые хранилища.
Ну тут всё понятно. В любой корпоративной сети имеются шары, на которых хранится информация (привет рансомшикам), как критическая, так и не очень. Ее мы тоже будем собирать, но только по умному. Отмечу лишь, что это видится наиболее простым этапом в реализации. Если, конечно, предполагать что у нас имеются необходимые привилегии пользователя. С него, пожалуй, и начнем. Но об этом позже.
2.2.3 СУБД
В корпоративных базах лежит очень много всего интересного и, наверняка, мы там найдем чем поживиться. Я пока не знаю как мы будем получать туда доступ. Да, на самом деле, это и не наша забота. Будем считать, что доступ у нас есть и мы вольны делать что хотим.
У нас есть 2 пути:
1. Выкачать базу целиком, а потом уже смотреть что мы там выловили. Метод простой в реализации, только вот боюсь, что антивирусу это не очень понравится. Да и тащить несколько терабайтов ради пары тысяч строк действительно ценной информации – удовольствие достаточно сомнительное. Мы пойдем другим путём.
2. Использовать метод пристального всматривания – написать модуль анализа содержимого базы и забрать только то, что представляет для нас наибольший интерес.
Мы, естественно, выберем второй. Таки да, придется вспомнить как работать с СУБД, оптимизацию запросов и еще много всяких штук, без которых решение данной задачи невозможно.
2.2.4 Корпоративная переписка.
Зачастую в корпоративной переписке, как внешней так и внутренней, можно обнаружить не мало важной информации. Не стоит недооценивать халатность топ-менеджмента компании. Личная и деловая переписка между отделами может нести в себе «сырые» или сформированные искомые данные. Очень часто, прямо в файловых хранилищах, можно найти копии писем. Их мы тоже будем собирать. А идеальным вариантом будет извлечение или даже перехват корпоративной почты на лету. Это довольно просто реализовать для MS Exchange. Достаточно написать и зарегистрировать так называемый exchange transport agent. Об этом я тоже расскажу в свое время.
Мы рассмотрели основные возможные места хранения данных. Дальше будем посмотреть как ее оттуда извлечь.
2.3 Ценность информации. Определение ключевых направлений поиска.
Итак, теперь нам необходимо определиться с тем, что же мы будем извлекать и постараемся обосновать каждый пункт.
Поехали.
Я выделил несколько основных направлений поиска, с которыми мы будем работать и постарался выделить общие для них характеристики, как то:
• типы файлов;
• возможные имена файлов;
• подразделения, где в первую очередь следует искать документы и данные по конкретному направлению;
• минимальный набор ключевых слов, по которым следует осуществлять поиск для указанного направления;
• период актуальности информации.
Сделал я это не просто так. Эти характеристики будут использованы в дальнейшем, для разработки системы фильтров и оценки, через которые будут пропускаться все файлы, формироваться запросы к базам данных и оцениваться их результаты.
Я намеренно привожу только самый минимум возможных имен файлов и ключевых слов, дабы не засорять статью. Когда дойдет дело до реализации – мы попросим ИИ насочинять нам побольше. А сейчас я обошелся гуглом и собственными
знаниями.
Рассмотрим основные направления поиска, которые я выделил на первом этапе, для MVP этого более чем достаточно. Затем, если всё пойдет как мы хотим, будем потихоньку дополнять список.
2.3.1 Квартальные финансовые отчеты
Квартальный финансовый отчет (QFR) содержит обширную информацию о финансовой деятельности компании за указанный квартал. Ниже перечислены некоторые из них:
- Финансовые показатели:
- Работа с затратами (Cost of Goods Sold) – стоимость товаров,которые были проданы за квартал.
- Выручка (Revenue): Общая сумма денег, полученная компанией от продажи товаров или услуг за квартал
- Операционная прибыль (Operating Profit): разница между валовой прибылью и операционными расходами.
- Чистая прибыль (Net Profit): прибыль, полученная компанией после вычета всех расходов, включая налоги и проценты по займам.
- Себестоимость продаж (Cost of Goods Sold): общая сумма затрат на производство или приобретение товаров, которые были проданы за квартал.
- Валовая прибыль (Gross Profit): разница между выручкой и себестоимостью продаж.
- Операционные расходы (Operating Expenses): затраты, связанные с основной деятельностью компании, такие как зарплата сотрудников, аренда помещений, реклама и т.д.
- Инвестиционные расходы (Investment Expenses): затраты на приобретение активов, таких как оборудование, недвижимость или другие компании.
- Финансовые расходы (Financial Expenses): затраты на выплату процентов по займам или долгам компании.
- Финансовые индикаторы:
- отношение затрат к выручке (Cost Margin);
- отношение прибыли к выручке (Profit Margin);
- отношение операционной прибыли к выручке (Operating Margin);
- отношение финансовой прибыли к выручке (Financial Margin);
- Информация о балансе:
- • Общая стоимость активов (Total Assets): сумма всех активов компании на конец квартала.
- • Общая стоимость обязательств (Total Liabilities): сумма всех обязательств компании на конец квартала.
- • Собственный капитал (Shareholders’ Equity): разница между общей стоимостью активов и общей стоимостью обязательств компании.
- Информация о денежных потоках
- • Денежные потоки от операционной деятельности (Cash Flows from Operating Activities): денежные средства, полученные или потраченные компанией в результате основной деятельности за квартал.
- • Денежные потоки от инвестиционных операций (Cash Flows from Investing Activities): денежные средства, полученные или потраченные компанией в результате инвестиционной деятельности за квартал.
- • Денежные потоки от финансовых операций (Cash Flows from Financing Activities): денежные средства, полученные или потраченные компанией в результате финансовой деятельности за квартал
- Информация о рыночной деятельности:
- • Количество выданных акций (Shares Outstanding) – общий объем выданных акций компании.
- • Маржа (Market Capitalization) – общая стоимость всех выданных акций компании.
- • Количество торгуемых акций (Trading Volume) – общий объем торговли акциями компании за квартал.
бухгалтерским ПО в течении всего квартала. Интерес представляют документы, извлеченные как можно ближе к дате официальной публикации.
Рис. 1: Примеры реакций рынка на публикацию квартальных отчетов компаний
Что искать?
Файлы содержащие квартальные отчеты – в 90% случаев это pdf и все поддерживаемые форматы Excel, Word и их аналогов.
Возможные имена файлов: reports-third-quarter, earnings-3q24, QuarterlyRep, Q3report24, Quarter2rep24, Earnings-Q2, Quarter1 и т.д.
Даны только для понимания принципов именования подобных файлов. Вариантов там масса, на самом деле.
Где искать: бухгалтерский отдел, секретариат, отдел инвестиционных исследований / PR-отдел, финансовый и юриди-
ческий отделы
Ключевые слова: Quarterly Earnings Reports,Earnings Announcement,quarter financial results, quarter results, results, financial results, statement Quarterly, Earnings, financial statement, fiscal results, Business update,Announces, Announced, Preliminary
results, Earnings call, Earnings webcast, Consolidadtion, Consolidated financial statements, Consolidadted, EPS, Share repurchases, Diluted eps, Net income, Revenues, Reports, Financial Reports, Fiscal results, Acquisition, Acquire, conference call, annual report
Актуальность информации – в зависимости от способа ее дальнейшего использования. Если для операций на бирже – то лишь до момента публикации отчета. Если же мы хотим проанализировать финансовое состояние компании и попытаться
спрогнозировать его на ближайший период, то необходимо делать выборку за последние 2-3 года. Таки да, в любом случае нам понадобится консультация специалистов в этой области. Но это тоже сильно потом, когда мы начнем тестировать хотя
бы MVP.
2.3.2 Guidance
Что искать? Отчет об ожидаемых самой компанией в текущем квартале (финансовом году) результатах своей деятельности, включая такие важнейшие показатели, как выручка, прибыль, публикуется компаниями в документе, называемом
GUIDANCE.
Данная информация имеет повышенную важность и иногда даже более приоритетная, чем текущий финансовый отчет. Обычно в подобные пресс-релизы зашита дата и время их выхода. Если она уже в прошлом, то информация не актуальна.
Чаще всего финансовый прогноз дается прямо в теле квартального финансового отчета – это значит, что нам придется научиться извлекать прогнозы из отчетов.
Где искать?
- • отдел инвестиционных исследований;
- • PR-отдел;
- • финансовый и юридический отделы.
Возможные имена файлов: – Financial Forecast, Financial Projection, Budget Forecast, Revenue Projection, Expense Forecast, Cash Flow Forecast, Financial Plan, Financial Outlook
В чем ценность информации?
Как можно видеть на графике – акции компании рухнули на 25%
Актуальность информации: – до момента публикации. То есть чтобы извлечь максимальную выгоду нам придется сначала найти, а потом постоянно мониторить ответственных за составление прогнозов и их файлы, переписку, и т.д. При
этом мы не должны спалиться. Будет весело. Не переключайтесь.
2.3.3 Список поставщиков и покупателей.
Важной информацией о компании являются перечень поставщиков и крупных покупателей, работающих с предприятием в текущий момент.
Что искать?
- • Список основных поставщиков (покупателей).
- • Договоры, содержащие информацию о структуре и ценах закупаемого / продаваемого, сроках контрактов, и прочих важных условиях.
- • Тендерная (конкурсная) документация, как на закупку, так и документы по участию в тендерах на продажу продукции самой компании.
Ключевые слова: Suppliers, Counterparties, Contractor, Tender, Vendor, Seller, Buyer, Client
актуальность информации: поставщики и покупатели – 1-2 года; тендеры – 1-2 месяца.
Где искать?
Такого рода данные могут быть найдены на машинах следующих отделов:
- • отдел закупок;
- • отдел продаж;
- • юридическая служба;
- • служба безопасности.
- Тендерная информация – имеет высочайшую ценность при ее оперативном получении во время проведения тендеров / конкурсов, однако она, ценность, значительно падает, если тендер завершен – обычно это происходит перед началом следующего финансового года в компании. То бишь тут повторяется ситуация с финансовыми прогнозами – для получения максимальной выгоды мы должны максимально быстро определить лиц, принимающих решения и поселиться у них в компе, как у тебя дома.
- • Персональные данные лиц, принимающих решения – тут, как бы, очевидно. СИ еще никто не отменял.
- • Поставщики и покупатели, внесенные в санкционные списки. Повышенный интерес данные списки представляют по корпорациям из торговой отрасли, банковской сферы и компаний занимающихся добычей полезных ископаемых. Ресурсы по поиску компаний уже включённых в санкционные списки. Я не спроста сюда их добавил. Будем думать как автоматизировать процесс поиска подсанкционных контор среди клиентов или поставщиков таргета, по которому мы работаем.
2.3.4 Калькуляция себестоимости продукции.
Информация о себестоимости продукции и услуг компании, в особенности ключевых, представляет высокий интерес для конкурентной разведки, позволяет определить диапазон цен комфортных для компании и предвидеть возможные изменения
в выручке / прибыли организации при изменении цен на используемые в работе комплектующие / услуги и т.д.
Что искать?
Искомые файлы, обычно содержатся в формате Excel таблиц или аналоги MS Excel, реже в виде pdf и MS Word.
Где искать?
- • финансовые службы;
- • производственные и маркетинговые подразделения;
- • планово-экономические службы.
Секторы для которых информация о себестоимости носит первоочередной характер:
- • производство;
- • добыча полезных ископаемых;
- • пищевая промышленность.
Актуальность информации – 3-5 лет.
2.3.5 Взаимодействие с фигурантами санкционных списков (персоны, страны, корпорации) .
В эпоху санкционной войны важная часть внутренней информации о компании, которую предпочитают скрывать – взаимодействие с фигурантами санкционных списков, как с физическими, так и с юридическими лицами.
Данная информация сохраняет свою актуальность с момента включения контрагента компании в санкционный список.
Секторы для которых информация о взаимодействии с фигурантами санкционных списков имеет наибольший потенциал:
- • банки;
- • крупные финансовые группы;
- • производители военной техники и техники двойного назначения;
- • высокотехнологичные компании;
- • крупные покупатели нефти, металлов.
По данному направлению необходимо проанализировать всех партнеров компании и выяснить не находится ли какая-либо из них под санкциями. Это тоже далеко не тривиальная задача. Большая часть ее будет приходиться на серверную часть.
Где искать?
- • служба безопасности;
- • юридический отдел;
- • топ-менеджмент;
- • риск-менеджмент;
- • архив;
- • служба закупок.
Последствия для компании, в случае подтверждения сотрудничества с подсанкционными предприятиями и/или лицами могут быть очень печальны – штрафы, уголовная ответственность, дисквалификация руководства.
Рис. 4: Реакция акций компании на попадание в санкционный список и выведение из него:
Ключевые слова: OFAC, Sanctions List, SDN list, compliance policy, blocked property, prohibit, restrict, CAATSAАктуальность информации: данная информация становится актуальна с момента включения контрагента компании в санкционный список.
2.3.6 Отчеты службы безопасности и риск-менеджмента.
Важная составляющая деятельности любой компании – деятельность ее службы безопасности и риск-менеджмента.
Данная информация позволяет определить текущие и будущие интересы компании в сфере заключения сделок с действующими или потенциальными партнерами, проверки в отношении персонала организации, а также внутренние расследования
различного рода инцидентов безопасности и происшествий в организации.
Что искать?
Любые текущие отчеты службы безопасности и оценки риск-менеджмента, поскольку могут содержать в себе информацию, касающуюся тактических и стратегических планов компании
Где искать?
- • служба безопасности;
- • юридический отдел;
- • топ-менеджмент.
- банковская и финансовая сфера;
- рекрутинговые агентства;
- нефтяные компании;
- крупные промышленные и высокотехнологичные компании в части промышленного шпионажа.
В чем ценность информации?
В целом такого рода отчеты представляют собой бесценную информацию в плане текущих интересов компании (например, проверка партнеров из санкционных списков, что указывает на возможные планы по взаимодействию с ними, что уже
при обнародовании может нанести компании огромные репутационные потери), а также используемых методах получения информации самой организацией. Причем иногда сами методы могут носить незаконный характер, например, использование
корпоративного шпионажа (в особенности текущее) или злоупотребление служебным положением.
Пример новости
Ключевые слова: security service report, security check, security risk, verification, security service, personnel security, personnel department and economic, security, surveillance
Актуальность информации: 1-2 года, в части применения незаконных методов получения информации до 5-10 лет.
2.3.7 Технологические ноу-хау, отчеты о проведении исследований, описание технологических процессов.
Информация о патентном поиске организации и отчеты ее отдела разработок, а также описание технологических процессов обладают высокой ценностью. Например:
- • Фармацевтика и биотехнологии – информация о новых исследованиях, клинических испытаниях и формулах лекарств.
- • Технологические cтартапы и ИТ-компании – исходный код, документация, описание алгоритмов.
- • Энергетический сектор и добывающая промышленность – информация о новых источниках энергии, методах их добычи и геологических данных
- • Автомобильная промышленность – конструкторская документация, исходники ПО, чертежи.
- • Пищевая промышленность и напитки – рецептуры, технологические процессы и информация о поставках ингредиентов.
- • Производство бытовой техники и электроники – конструкторская документация, описание производственных и технологических процессов.
- • Строительство и инженерные разработки – строительные проекты, архитектурные планы, строительные материалы.
- • Патенты и интеллектуальная собственность
Данный список можно продолжать очень долго. Будем расширять его по мере развития проекта.
Что искать?
- • конструкторская документация;
- • исходный код проектов и документация к ним для IT-компаний;
- • любые инженерно-технологические файлы – тут нужно уточнять, особенно с учетом многообразия ПО для каждой из перечисленных областей;
- • исследовательский отдел;
- • отдел патентного поиска;
- • юридический отдел (в части юридического оформления ноу-хау/исследований или судов по интеллектуальной собственности)
- • машины топ-менеджмента, ответственного за исследования и разработки в данной компании.
Ключевые слова: research and development, know-how, industrial model, patent, license, intellectual property, wipo, patentscope, patent law
Данный список будет расширяться и уточняться по мере разработки.
В чем ценность информации?
2.3.8 Дивиденды
Информация о величине дивидендов, введении, изменении или отмене могут достаточно сильно повлиять на стоимость акций компании.
Что искать?
Зачастую информация о дивидендах дается в теле квартального финансового отчета или ассоциирована с ним по дате и
времени выхода.
Где искать?
- • отдел инвестиционных исследований;
- • PR-отдел;
- • финансовый отдел.
Ключевые слова: dividend, dividend payout, dividend ratio, dividend yield, lowers, dividends, raises dividends, cancels
dividends, reiterates dividends, reinstates dividends
Актуальность информации: Обычно в подобные пресс-релизы зашита дата и время их выхода. Если она уже в прошлом, то информация не актуальна.
2.3.9 Выделение компаний и дивестиции.
Выделение компаний и дивестиции фактически противоположны по финансовому смыслу слиянию и поглощению, однако абсолютно точно также важны и потенциально содержат информацию, способную принести большую пользу.
В результате данных событий обычно из одной компании образуется несколько, разделенных по функциональному, географическому или иному признаку с целью подготовки к продаже определенного актива, избавлению от неэффективной части бизнеса и т.д.
Что искать?
Документы, содержащие ключевые слова: divestiture, divestment, spin-off, sale of assets
Где искать?
- • отдел инвестиционных исследований;
- • PR-отдел;
- • финансовый отдел;
- • юридический отдел.
2.3.10 Система мотивации сотрудников, уровень зарплаты, бонусов и пр.
Информация о системе мотивации, заработной плате и размере выплачиваемых бонусов по организации может иметь решающее значение в компаниях с высокой добавочной стоимостью, получаемой за счет труда персонала (разработка ПО,
юридические, финансовые услуги и т.д.)
Секторы, для которых информация о мотивации, заработной плате и размере выплачиваемых бонусов носит первоочередной характер:
- • высокотехнологичные секторы;
- • разработчики ПО;
- • био и фармацевтические компании;
- • банки;
- • финансовый сектор;
- • научный-исследовательский сектор.
В чем ценность информации?
Пример: скандал с получением опционов задним числом Стивом Джобсом в 2006 г. В результате которого финансовый директор потерял свою должность.
2.4 Выводы.
Из вышеизложенного очевидно что фактически из любой информации, при грамотном и своевременном извлечении ее из корпоративной сети, можно извлечь выгоду. Теперь осталось дело за малым – написать такую штуку, которая будет извлекать нужные данные из сетей, причем делать это очень тихо и незаметно, затем анализировать их и классифицировать. Под нужными данными будем понимать ту информацию, которая для конкретной компании является критической. Для этого нам придется предварительно поработать руками и головой, дабы мы смогли правильно попросить об этом нашу программу. Например, не имеет смысла пытаться искать исходники и результаты научных исследований у условных юристов. Обратное, кстати, неверно – в юридических отделах крупных IT-компаний или НИИ наверняка найдется чем поживиться. А как это монетизировать – уже другой вопрос.
По сути мы имеем классическую задачу классификации документов. Эта задача уже давно решена. И, будь мы в обычных условиях, я бы вообще не грел голову, взял готовое решение, коих полно. Однако всё не так просто. Мы не можем развернуть в чужой сети полноценный инструмент, способный решить поставленную задачу. Наши ресурсы жестко ограничены. Кроме того необходимо помнить об антивирусах, DLP(data leak protection)-системах, которые нам будут очень сильно мешать. Поэтому придется сочинять козу на лисапеде – а именно бить задачу на две части. Условно говоря, первичная классификация документов непосредственно в сети и углубленный анализ данных полученных на первом этапе. Вторую часть задачи мы будем решать локально, не стесняя себя в средствах.
3 Список основных модулей проекта. Краткое описание функционала.
Итак, с предметной областью немного разобрались. Теперь давайте подумаем из каких модулей должен состоять продукт, и каким функционалом они должны обладать для успешного решения поставленной задачи.
Очевидно, что у нас будет, как минимум, 3 основных модуля:
- командный сервер с панелью управления;
- сам RAT’ник – таки да, это будет ратник, поскольку мы хотим им управлять, но основной функционал его – кража данных;
- модуль углубленного анализа данных.
Поехали.
3.1 Командный сервер
Тут всё относительно просто. Во всяком случае на первом этапе.
3.1.1 Создание конфигурации под конкретную сеть.
Для полноценной работы нам понадобятся следующие настройки:
- 1. Общая информация о сети:
- доменное имя;
- IP адрес контроллера домена;
- имя пользователя и пароль, под которым мы будем работать.
- Настройки безопасности: наш софт должен быть тихим, быстрым и не оставлять следов, а также потреблять минимальное количество ресурсов. Кроме того мы должны максимально затруднить работу реверсерам, то есть при любой попытке несанкционированного запуска билд должен самоуничтожаться, желательно затирая каталог, в котором он был размещен нулями. У меня получился примерно следующий набор параметров:
- • ограничение на потребление ресурсов: максимальный объем потребляемой памяти, количество потоков, таймауты между операциями;
- • проверка на запуск в виртуальной машине, песочнице – стандартные проверки для такого рода ПО, если есть малейшее подозрение на попытку реверса – автоматическое удаление;
- • запрет на запуск и работу в странах СНГ – проверка внешнего ip адреса, локали. При малейшем подозрении – аварийное завершение работы и удаление. Аналогично и при запуске в сети, доменное имя которой не соответствует указанному в конфиге;
- • автоматическое удаление исполняемого файла после запуска – пока я не буду рассуждать про инъекции в другие процессы. Со временем это будет реализовано.
- Параметры подключения к командному серверу:
- • IP address
- • username;
- • password;
- • client ID
- Направления поиска Как уже говорилось выше, стилер у нас будет таргетированный. То есть для каждой сети мы будем определять список приоритетных направлений поиска. Каждое направление представляет собой набор признаков, общих для группы документов, представляющих интерес. В частности это множество ключевых слов, список типов файлов и период релевантности данных.
- настройка языков: на старте мы будем поддерживать только английский, в дальнейшем будем добавлять по меренеобходимости. Как минимум, это будут немецкий, французский и испанский. Тут вылезет куча вопросов с кодировками, но когда вылезут, тогда и будем решать. Но заложить возможность выбора нескольких языков необходимо.
- . Настройка архивации: Допустим мы нашли несколько файлов с квартальными отчетами. Надо с ними что-то сделать. Пересылать по одному? Идея, конечно, интересная, но тогда в пакет придется добавлять кучу дополнительных параметров. Оно нам таки надо? Гораздо более простым решением видится упаковка найденных файлов по каждому направлению поиска в архив, с последующей выгрузкой куда-нибудь. Причем очень хотелось бы не оставлять следов на диске, а упаковку производить непосредственно в памяти. Ну или же, по каким-то причинам, нам придется сохранять локально и потом их выгружать. Еще хочу многотомные архивы с указанием размера тома и ограничение по объему памяти, если архивация идет без сохранения на диск. В общем у меня получились примерно следующие параметры:
- формат архива: ZIP, 7Z, GZIP;
- степень сжатия;
- пароль;
- метод упаковки данных: – создание архива в памяти, с последующей передачей потока в модуль выгрузки данных или же сохранение на диске;
- путь сохранения архивов: – если по какой-то причине нам придется сохранять архивы непосредственно в сети.
- флаг создания многотомных архивов;
- максимальный объем памяти – суммарный объем всех архивов находящихся в памяти одновременно.
- Настройки поиска файлов: Что искать – мы уже знаем. Осталось понять где и у кого. Очевидно, что первым делом мы будем шерстить файловые шары. 80% ценной информации, зачастую, находится там. Теперь осталось эти шары найти. Либо указать ручками, проведя предварительную разведку сети и выявив
наиболее интересные, либо поиск будет автоматизирован и осуществляться ратником самостоятельно посредством LDAP-запросов. Настройки будут следующими:- включить автоматический поиск общих сетевых ресурсов;
- фильтр общих сетевых ресурсов:
- поиск на всех компьютерах в сети – LDAP-фильтр не устанавливаем;
- поиск только на серверах – с помощью LDAP-фильтра оставляем только те компьютеры, где установлена серверная ОС, еще можно исключить из этого списка контроллеры домена – там всё равно ничего интересного для нас нет;
- указать список шар для поиска – допустим загружать из файла;
- Настройки поиска в СУБД:
- • тип БД – для определения диалекта SQL-запросов. Очевидно, что в сетях с Active Directory самой распространенной является MSSQL, ее поддержка будет реализована в первую очередь, но также не стоит забывать про PostgresQL, MySQL (Maria db), я даже не заикаюсь пока про поддержку No SQL баз данных.
- • IP-address, port – если админ не совсем лопух, то наверняка дефолтные порты уже изменены;
- • имя пользователя и пароль;
Извлечение данных из СУБД несколько сложнее, нежели поиск файлов – необходимо составлять запросы таким образом, чтобы они выполнялись быстро и объем результата умещался в разумные пределы. А значит нам придется погрузиться в теорию по этому вопросу с головой. Пока мы доберемся до этого этапа настоятельно рекомендую к изучению книгу Кристофера Дейта «Введение в системы баз данных». Это труд уровня «Искусства программирования» Д. Кнута.
Ну и я не говорю уже о таких мелочах, как реализация взаимодействия с БД на плюсах. Не переключайтесь, будет весело.
- Настройка выгрузки данных: после того, как мы нашли и упаковали данные нам понадобится их выгружать. Куда? Наверное в облако или на FTP сервер. Значит и этот момент мы должны учесть при создании конфига (никто не забыл, надеюсь, что в этом разделе мы собираем список настроек для клиента?). Для начала мы реализуем поддержку SFTP, а затем, по мере необходимости добавим облака. Для SFTP нам понадобится знать адрес, порт, имя пользователя, пароль и каталог для сохранения данных. В целях безопасности на сервере необходимо создать пользователя с минимальными правами, только для выгрузки файлов,
без возможности подключения по SSH. Это немного не про настройки клиента но, тем не менее, – это очень важно. Еще нам понадобится регулировать скорость передачи данных. В больших сетях, где админы не просто бамбук курят, а что-то делают (ну или их сношают не вынимая) – у нас не получится лить по 100 Гб в час на максимальной скорости, да еще в несколько потоков. Но могут возникнуть ситуации, когда надо плюнуть на аверы, DLP и тащить всё, что успеешь в отведенный временной интервал. Поэтому данный параметр должен быть полностью отключаемым. - Выгрузка корпоративной почты. Когда-нибудь мы и это реализуем.
3.1.2 Сборка ратника под конкретную сеть.
Для предотвращения несанкционированного распространения продукта необходимо предпринять некоторые меры. В частности конфиг у нас будет вшиваться в исполняемый файл, будучи при этом предварительно зашифрован асимметричным шифрованием. А расшифровываться будет при запуске, с помощью закрытого ключа, передаваемого в качестве параметра.
3.1.3 Модуль управления клиентами в сети.
Тут тоже относительно просто – страничка в панели управления, отображающая список клиентов, их статус. Сюда же добавим возможность отправки команд и просмотр статистики.
3.1.4 Панель управления расширенным анализом данных
Это самая загадочная штука во всём проекте. Я пока не придумал как она будет работать. Как и сам модуль углубленного анализа. Видимо об этом в другой раз.
3.2 RAT’ник
Тут всё просто. Запуститься с параметрами из конфига. Собрать первичную информацию о сети и системе в которой он был запущен. Отстучать на сервер. Собрать данные. Упаковать и выгрузить. Получить следующую задачу.
3.2.1 Модуль сбора информации о системе
Тут всё просто. С помощью LDAP запросов собираем списки компьютеров, пользователей, групп и проч. Пакуем это в JSON и отправляем на сервер.
3.2.2 Модуль взаимодействия с сервером.
Ну тут у нас выбор огромный – от нативных винапишных вызовов до boost asio. Всего делов то – с одной стороны слушать команды от сервера, с другой отправлять ему результаты выполнения предыдущих команд. Ну и хранить задачи в очереди. То бишь у нас будет асинхронное клиент-серверное приложение.
3.2.3 Модуль поиска и анализа данных
1. Поиск и анализ файлов.
• получать список файлов в каталогах, заданных в конфиге;
• отфильтровать файлы по направлениям поиска – здесь у нас будет разработана некая система оценки файлов, согласно которой мы будем определять наиболее вероятное направление поиска, которому можно соотнести файл этот. Грубо говоря за попадание прохождения каждого фильтра, о которых я писал выше (расширение
файла, дата создания и последнего изменения, содержание ключевых слов в имени файла и т.д.) каждому файлу будет начисляться фиксированное количество баллов для каждого направления. Затем файл «прикрепляется» к направлению, за которое он получил максимальное количество баллов.
2. Поиск и извлечение из СУБД. Вот тут уже всё далеко не так однозначно. Нам необходимо сначала получить список таблиц и их полей. Затем проанализировать их и только потом составить SQL запрос, результат которого будет упакован и отправлен на сервер. Причем для каждого направления будет формироваться свой запрос. На первом этапе мы будем это делать вручную. То есть алгоритм примерно такой:
(a) получить список таблиц и их полей и отправить его на сервер;
(b) оператор, в ручном режиме анализирует полученные результаты и составляет SQL запрос (ага, мечтать не вредно);
(c) клиент выполняет запрос к базе и полученный результат отправляет на сервер.
Выглядит странно. Но если с файлами у меня есть четкое понимание принципов работы. То вот с СУБД не так всё очевидно. Будем решать проблему по мере её поступления.
3.2.4 Модуль архивации.
Функционал:
1. Упаковка файлов в архивы форматов ZIP, 7Z, GZIP;
2. защита архива с помощью пароля;
3. поддержка многотомных архивов;
4. упаковка в памяти;
5. ограничения по объему потребляемой памяти на один архив;
3.2.5 Модуль выгрузки данных.
1. выгрузка данных полученных из потока или списка файлов на сервер или в облачное хранилище.
2. отслеживание прогресса выгрузки;
3. установка скорости выгрузки данных;
4. установка ограничений по объему потребляемой памяти.
3.2.6 модуль защиты приложения
в общем не буду дублировать то, что описано в модуле конфигурации. Вроде там я забыл еще защиту от отладки.
4 Заключение.
Получилось много опять текста. Возможно чуть сумбурно, но тем не менее. Плюс-минус то, что я анонсировал в предыдущей статье.
Нетерпеливый читатель обязательно спросит: «дядя, а когда код то начнем писать?»
Ответ будет предельно простым: «Писать код без изучения предметной области, составления технического задания и дорожной карты, а также проектирования архитектуры каждого модуля и прочих нудных – это извращение, причем заранее
обреченное на провал.» Код от нас никуда не денется. Всему своё время.
И еще один момент. Я долго думал над ним. В общем, если у кого-то есть возможность и желание поддержать автора копейкой – буду очень благодарен. Кошелек указал ниже. Все же статьи отнимают очень много времени и сил. Но я обещаю,
что доведу это дело до конца и в конце мы станем крутыми маловарами, а может и не станем. Но мы попробуем. Спасибо всем, кто дочитал до конца.
На корм котику и автору на эликсир здоровья:
bc1q8k8gfkhkmnsjgmd8uxwdkv2yf9gud9lkjqd2ed
За сим позвольте откланяться.