Hunter Fact Shetes
. Гранит-Сити, Иллинойс 62040
(618) 931-0270
Инженерный корпус армии США, проектный офис Rivers
301 Riverlands Way, West Alton, MO 63386
(636) 899-2600
Введение : Департамент природных ресурсов штата Иллинойс отвечает за предоставление жителям этого штата возможностей для отдыха на свежем воздухе. Государственная территория находится в ведении Департамента по охране дикой природы и предоставлению общественных возможностей для охоты.
Инженерный корпус армии США обеспечивает охоту в соответствии с положениями Раздела 36 — Парки, леса и общественная собственность ГЛАВЫ III ИНЖЕНЕРНОГО КОРПУСА АРМИИ США, ЧАСТЬ 327 ПРАВИЛА И ПОЛОЖЕНИЯ, РЕГУЛИРУЮЩИЕ ОБЩЕСТВЕННОЕ ИСПОЛЬЗОВАНИЕ ПРОЕКТОВ РАЗВИТИЯ ВОДНЫХ РЕСУРСОВ, УПРАВЛЯЕМЫХ ГЛАВНЫМ ИНЖЕНЕРОВ.
Местонахождение: , в одной миле к западу от Гранит-Сити в округе Мэдисон. Государственная собственность расположена на трех участках к западу от канала Цепь скал и примыкает к реке Миссисипи. Этот район является спутником государственного парка Хорсшу-Лейк, и дополнительную информацию можно получить в парке по указанному адресу. Федеральная собственность расположена по обеим сторонам канала Цепь скал с дополнительными участками, простирающимися на север до парка Льюиса и Кларка и к югу от межштатной автомагистрали 270.
Описание: Территория охотничьих угодий штата состоит из 2329 акров различных мест обитания. Участок острова Габаре составляет 930 акров и включает в себя 680 акров, состоящих из пустующих пропашных полей, 40 акров пойменного леса, а остаток состоит из заросшей травой дамбы вокруг участка.
Остров Мосентейн представляет собой пойменный лес площадью 1077 акров, расположенный на реке Миссисипи, куда можно добраться только на лодке. Участок острова Шуто составляет 323 акра, включая около 286 акров незанятых пропашных полей, а остаток состоит из опушек водно-болотных угодий. Федеральная охотничья территория состоит из 650 акров пойменного леса и 420 акров прерий и кустарников. На этом участке в течение всего года будет осуществляться активное управление средой обитания. СЛЕДУЮЩИЕ ПОЛОЖЕНИЯ ПРИМЕНЯЮТСЯ К ГОСУДАРСТВЕННОЙ И ФЕДЕРАЛЬНОЙ ИМУЩЕСТВУ. мячи и др.), кроме разрешенных трапперов
Squirrel Archery Deer
1. Общегосударственные правила.
2. Только дробовик или стрельба из лука.
1. Общегосударственные правила.
2. В дополнение к общегосударственным правилам, это место также открыто для стрельбы из лука во время сезона охоты на молодых, обычных, дульнозарядных и позднезимних огнестрельных оленей.
Нагорная дичь (петух-фазан, белобрысый перепел, кролик и венгерская куропатка) 1. Общегосударственные правила.
- Правила штата.
- ТОЛЬКО ДРОБОВЫЕ СНАРЯДКИ, УТВЕРЖДЕННЫЕ США КАК НЕТОКСИЧНЫЕ.
СЛУЖБА РЫБЫ И ДИКОЙ ЖИВОТНОЙ с размером выстрела, баллистически эквивалентным № 5
свинец или меньше может использоваться или находиться во владении.
Дикая индейка (весна)
1. Общегосударственные правила.
Дикая индейка (осенняя стрельба из лука)
1. Общегосударственные правила.
Дикая индейка (Осенний дробовик)
1. Общегосударственные правила
Охота на ворон, вальдшнепов, бекасов и железнодорожную охоту
1. Общегосударственные правила.
2. Все охотники должны прилагать разумные усилия для поиска убитых птиц. Все вороны должны быть удалены охотником из государственной или федеральной собственности.
Отлов пушных зверьков
Всего за сезон будет выдано два разрешения на отлов пушных зверей посредством публичного розыгрыша, который будет проводиться на месте в последнюю неделю октября. Регистрация на розыгрыш начнется в 900:00, а розыгрыш состоится в 11:00. Заинтересованные участники должны иметь действующую или прошлогоднюю лицензию на отлов. Карты мест отлова будут доступны на сайте. Отлов будет разрешен после закрытия сезона водоплавающих птиц. Будут действовать правила отлова в масштабах штата, а также следующие правила для конкретных мест:
1. Требуется разрешение.
3. Для водяных наборов можно использовать только ловушки с захватом тела с шириной захвата 4 1/2 дюйма или менее и квадратные ловушки с захватом тела с шириной захвата 10 дюймов.
4. Никакие ловушки не могут быть установлены без тегов.
5. Ловцы должны сообщить об урожае на участок до 20 апреля.
6. Охотникам разрешается использовать винтовку или пистолет калибра .22 при проверке капканов
Водоплавающие птицы
1. Общегосударственные правила.
2. Ранняя охота на канадского гуся закрыта на территории IDNR 9 сентября.0005 3. Вырубка растительности на участке запрещена.
4. Охотники на водоплавающих птиц должны соблюдать дистанцию в 200 ярдов между охотничьими группами.
Молодежь водоплавающих птиц
1. Общегосударственные правила.
Бирюзовый
1. Общегосударственные правила.
Охота на пушных зверей
1. Общегосударственные правила.
2. Только дробовик и стрельба из лука.
Dove:
- Правила штата.
- НА ЭТОМ ПЛОЩАДКЕ РАЗРЕШАЕТСЯ ТОЛЬКО НЕТОКСИЧНЫЕ ОБОРУДОВАНИЯ, разрешена стальная дробь № 6 или висмутовая дробь № 7 1/2 или меньше.
Для получения дополнительной информации обращайтесь: Horseshoe Lake State Park по телефону (618) 931-0270 или в инженерный корпус округа Сент-Луис Министерства армии (636) 899-2600
Равные возможности для участия в программы Департамент природных ресурсов штата Иллинойс (IDNR) и те, которые финансируются Службой рыболовства и дикой природы США и другие агентства доступны для всех физических лиц независимо от расы, пола, национального происхождения, инвалидности, возраст, религия или другие факторы, не относящиеся к заслугам.
Рекомендации по расширенным поисковым запросам в Microsoft 365 Defender
- Статья
- 10 минут на чтение
Примечание
Хотите попробовать Microsoft 365 Defender? Узнайте больше о том, как вы можете оценить и протестировать Microsoft 365 Defender.
Применимо к:
- Microsoft 365 Defender
Применяйте эти рекомендации, чтобы быстрее получать результаты и избегать тайм-аутов при выполнении сложных запросов. Дополнительные рекомендации по повышению производительности запросов см. в разделе Рекомендации по запросам Kusto.
Понимание квот на ресурсы ЦП
В зависимости от размера каждый арендатор имеет доступ к определенному количеству ресурсов ЦП, выделенных для выполнения расширенных поисковых запросов. Подробную информацию о различных параметрах использования см. в статье о расширенных квотах охоты и параметрах использования.
После выполнения запроса вы можете увидеть время выполнения и использование ресурсов (низкое, среднее, высокое). Высокий уровень указывает на то, что для выполнения запроса требуется больше ресурсов, и его можно улучшить для более эффективного возврата результатов.
Клиенты, которые регулярно выполняют несколько запросов, должны отслеживать потребление и применять рекомендации по оптимизации, приведенные в этой статье, чтобы свести к минимуму сбои в работе из-за превышения квот или параметров использования.
Просмотрите Оптимизация запросов KQL, чтобы узнать о некоторых наиболее распространенных способах улучшения ваших запросов.
Общие советы по оптимизации
-
Размер новых запросов — Если вы подозреваете, что запрос вернет большой набор результатов, сначала оцените его с помощью оператора подсчета. Используйте limit или его синоним
take
, чтобы избежать больших наборов результатов. -
Применить фильтры раньше — применить фильтры времени и другие фильтры для уменьшения набора данных, особенно перед использованием функций преобразования и синтаксического анализа, таких как substring(), replace(), trim(), toupper() или parse_json() . В приведенном ниже примере функция анализа extractjson() используется после того, как операторы фильтрации сократили количество записей.
Девицеевентс | где Отметка времени > назад (1 дн.) | где ActionType == "UsbDriveMount" | где DeviceName == "user-desktop.domain.com" | расширить букву_диска = extractjson("$.буква_диска", AdditionalFields)
-
Has beats contains — Чтобы избежать ненужного поиска подстрок внутри слов, используйте оператор
has
вместоcontains
. Подробнее о строковых операторах -
Поиск в определенных столбцах — Поиск в определенном столбце вместо выполнения полнотекстового поиска по всем столбцам. Не используйте
*
для проверки всех столбцов. -
С учетом регистра для скорости — Поиск с учетом регистра более точен и, как правило, более эффективен. Имена строковых операторов с учетом регистра, таких как
has_cs
иcontains_cs
, обычно заканчиваются на_cs
. Вы также можете использовать оператор равенства с учетом регистра==
вместо=~
. -
Анализировать, не извлекать — По возможности используйте оператор разбора или функцию разбора, например parse_json(). Избегайте
соответствует строковому оператору регулярного выражения
или функции extract(), обе из которых используют регулярное выражение. Зарезервируйте использование регулярного выражения для более сложных сценариев. Подробнее о функциях синтаксического анализа -
Фильтровать таблицы, а не выражения — Не фильтровать по вычисляемому столбцу, если можно фильтровать по столбцу таблицы.
-
Трехсимвольные термины запрещены. — Избегайте сравнения или фильтрации с использованием трехсимвольных или менее символов. Эти термины не индексируются, и для их сопоставления потребуются дополнительные ресурсы.
-
Выборочное проецирование — Сделайте ваши результаты более понятными, проецируя только те столбцы, которые вам нужны. Проецирование определенных столбцов перед выполнением соединения или подобных операций также помогает повысить производительность.
Оптимизация оператора соединения
Оператор соединения объединяет строки из двух таблиц путем сопоставления значений в указанных столбцах. Примените эти советы для оптимизации запросов, использующих этот оператор.
-
Меньшая таблица слева от вас — Оператор
join
сопоставляет записи в таблице в левой части оператора соединения с записями в правой. При наличии меньшего размера таблицы слева необходимо будет сопоставить меньшее количество записей, что ускорит выполнение запроса.В приведенной ниже таблице мы уменьшили левую таблицу
DeviceLogonEvents
, чтобы охватить только три определенных устройства, прежде чем присоединиться к ней с помощьюIdentityLogonEvents
по SID учетной записи.Девицелогоневентс | где DeviceName в ("device-1.domain.com", "device-2.domain.com", "device-3.domain.com") | где ActionType == "LogonFailed" | присоединиться (Идентитолигоневентс | где ActionType == "LogonFailed" | где протокол == "Керберос") на AccountSid
-
Использовать разновидность внутреннего соединения — разновидность соединения по умолчанию или внутреннее уникальное соединение дедуплицирует строки в левой таблице с помощью ключа соединения, прежде чем возвращать строку для каждого совпадения с правой таблицей. Если в левой таблице есть несколько строк с одинаковым значением ключа
соединения
, эти строки будут дедуплицированы, чтобы оставить одну случайную строку для каждого уникального значения.Это поведение по умолчанию может пропустить важную информацию из левой таблицы, которая может дать полезную информацию. Например, приведенный ниже запрос покажет только одно электронное письмо, содержащее определенное вложение, даже если это же вложение было отправлено с использованием нескольких сообщений электронной почты:
EmailAttachmentInfo | где Отметка времени > назад (1 час) | где Тема == "Приложение к документу" и Имя файла == "Документ.pdf" | присоединиться (DeviceFileEvents | где Отметка времени> назад (1 час)) на SHA256
Чтобы устранить это ограничение, мы применяем вариант внутреннего соединения, указав
kind=inner
, чтобы отобразить все строки в левой таблице с соответствующими значениями в правой:EmailAttachmentInfo | где Отметка времени > назад (1 час) | где Тема == "Приложение к документу" и Имя файла == "Документ. pdf" | присоединиться к kind=inner (DeviceFileEvents | где Timestamp> назад(1h)) на SHA256
-
Объединение записей из временного окна — При исследовании событий безопасности аналитики ищут связанные события, которые происходят примерно в тот же период времени. Применение того же подхода при использовании соединения
и
также повышает производительность за счет уменьшения количества проверяемых записей.Следующий запрос проверяет события входа в систему в течение 30 минут после получения вредоносного файла:
EmailEvents | где Отметка времени > назад (7 дней) | где ThreatTypes имеет «Вредоносное ПО» | проект EmailReceivedTime = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]) | присоединиться ( DeviceLogonEvents | где Отметка времени > назад (7 дней) | проект LogonTime = Timestamp, AccountName, DeviceName ) на AccountName | где (LogonTime - EmailReceivedTime) между (0min . . 30min)
-
Применить фильтры времени на обеих сторонах — Даже если вы не исследуете конкретное временное окно, применение фильтров времени как в левой, так и в правой таблицах может уменьшить количество проверяемых записей и повысить производительность
соединения
. Приведенный ниже запрос применяетTimestamp > ago(1h)
к обеим таблицам, чтобы объединить только записи за последний час:EmailAttachmentInfo | где Отметка времени > назад (1 час) | где Тема == "Приложение к документу" и Имя файла == "Документ.pdf" | присоединиться к kind=inner (DeviceFileEvents | где Timestamp> назад(1h)) на SHA256
-
Используйте подсказки для повышения производительности — Используйте подсказки с оператором
join
, чтобы указать серверной части распределять нагрузку при выполнении ресурсоемких операций. Узнайте больше о подсказках по присоединениюНапример, подсказка в случайном порядке помогает повысить производительность запросов при объединении таблиц с использованием ключа с высокой кардинальностью — ключа с множеством уникальных значений, например
AccountObjectId
в следующем запросе:Идентитинфо | где JobTitle == "КОНСУЛЬТАНТ" | присоединиться hint. shufflekey = AccountObjectId (Идентитидиректориевентс | где Приложение == "Active Directory" | где ActionType == "Получение личных данных") на AccountObjectId
Широковещательная подсказка помогает, когда левая таблица маленькая (до 100 000 записей), а правая очень большая. Например, приведенный ниже запрос пытается объединить несколько электронных писем с определенными темами с , все сообщения , содержащие ссылки в таблице
EmailUrlInfo
:EmailEvents | где Тема в ("Предупреждение: Обновите свои учетные данные сейчас", "Требуется действие: Обновите свои учетные данные сейчас") | join hint.strategy = широковещательная рассылка EmailUrlInfo по NetworkMessageId
Оптимизация оператора
summary
Оператор суммирования агрегирует содержимое таблицы. Примените эти советы для оптимизации запросов, использующих этот оператор.
-
Поиск уникальных значений — Обычно используйте
суммирование
для поиска различных значений, которые могут повторяться. Может быть ненужным использовать его для агрегирования столбцов, которые не имеют повторяющихся значений.Хотя одно электронное письмо может быть частью нескольких событий, в приведенном ниже примере , а не эффективное использование
суммирует
, потому что идентификатор сетевого сообщения для отдельного электронного письма всегда имеет уникальный адрес отправителя.EmailEvents | где Отметка времени > назад (1 час) | суммировать по NetworkMessageId, SenderFromAddress
Оператор
summary
может быть легко заменен проектом , потенциально давая те же результаты при меньшем потреблении ресурсов:EmailEvents | где Отметка времени > назад (1 час) | проект NetworkMessageId, SenderFromAddress
В следующем примере показано более эффективное использование
, суммирующего
, поскольку может существовать несколько различных экземпляров адреса отправителя, отправляющего электронную почту на один и тот же адрес получателя. Такие комбинации менее различимы и, вероятно, имеют дубликаты.EmailEvents | где Отметка времени > назад (1 час) | суммировать по SenderFromAddress, RecipientEmailAddress
-
Перетасовать запрос — хотя
итоговое значение
лучше всего использовать в столбцах с повторяющимися значениями, в одних и тех же столбцах может быть высокая кардинальность или большое количество уникальных значений. Подобно операторуjoin
, вы также можете применить подсказку перетасовки сsummary
, чтобы распределить вычислительную нагрузку и потенциально повысить производительность при работе со столбцами с высокой кардинальностью.В приведенном ниже запросе
суммирует
для подсчета отдельных адресов электронной почты получателя, которые могут исчисляться сотнями тысяч в крупных организациях. Для повышения производительности он включаетhint.shufflekey 9.0236 :
EmailEvents | где Отметка времени > назад (1 час) | итог hint. shufflekey = RecipientEmailAddress count() by Subject, RecipientEmailAddress
Сценарии запросов
Идентификация уникальных процессов с идентификаторами процессов
Идентификаторы процессов (PID) перерабатываются в Windows и повторно используются для новых процессов. Сами по себе они не могут служить уникальными идентификаторами для определенных процессов.
Чтобы получить уникальный идентификатор процесса на определенной машине, используйте идентификатор процесса вместе со временем создания процесса. Когда вы объединяете или суммируете данные о процессах, включите столбцы для идентификатора машины (либо DeviceId
или DeviceName
), идентификатор процесса ( ProcessId
или InitiatingProcessId
) и время создания процесса ( ProcessCreationTime
или InitiatingProcessCreationTime
или InitiatingProcessCreationTime
) адреса через порт 445 (SMB), возможно, сканирование файловых ресурсов.
Пример запроса:
DeviceNetworkEvents | где RemotePort == 445 и Timestamp > ago(12h) и InitiatingProcessId !in (0, 4) | суммировать RemoteIPCount=dcount(RemoteIP) по DeviceName, InitiatingProcessId, InitiatingProcessCreationTime, InitiatingProcessFileName | где RemoteIPCount > 10
Запрос суммируется как по InitiatingProcessId
, так и по InitiatingProcessCreationTime
, так что он рассматривает один процесс, не смешивая несколько процессов с одинаковым идентификатором процесса.
Запрос командной строки
Существует множество способов создания командной строки для выполнения задачи. Например, злоумышленник может сослаться на файл изображения без пути, без расширения файла, с использованием переменных среды или с кавычками. Злоумышленник также может изменить порядок параметров или добавить несколько кавычек и пробелов.
Чтобы создавать более надежные запросы для командных строк, применяйте следующие методы:
- Определите известные процессы (такие как net. exe или psexec.exe ) путем сопоставления полей имени файла вместо фильтрации по сама командная строка.
- Разбор разделов командной строки с помощью функции parse_command_line()
- При запросе аргументов командной строки не ищите точное совпадение нескольких несвязанных аргументов в определенном порядке. Вместо этого используйте регулярные выражения или используйте несколько отдельных операторов contains.
- Используйте совпадения без учета регистра. Например, используйте
=~
,в ~
, асодержит
вместо==
,в
иcontains_cs
. - Чтобы смягчить методы запутывания командной строки, рассмотрите возможность удаления кавычек, замены запятых пробелами и замены нескольких последовательных пробелов одним пробелом. Существуют более сложные методы запутывания, которые требуют других подходов, но эти настройки могут помочь решить распространенные проблемы.
В следующих примерах показаны различные способы создания запроса, который ищет файл net. exe для остановки службы брандмауэра «MpsSvc»:
// Непродолжительный запрос — не использовать DeviceProcessEvents | где ProcessCommandLine == "чистая остановка MpsSvc" | ограничение 10 // Лучший запрос - фильтрует имя файла, делает совпадения без учета регистра DeviceProcessEvents | где Timestamp > ago(7d) и FileName в~ ("net.exe", "net1.exe"), а ProcessCommandLine содержит "stop", а ProcessCommandLine содержит "MpsSvc" // Лучший запрос также игнорирует кавычки DeviceProcessEvents | где Timestamp > ago(7d) и FileName in~ ("net.exe", "net1.exe") | расширить CanonicalCommandLine=replace("\"", "", ProcessCommandLine) | где CanonicalCommandLine содержит «stop», а CanonicalCommandLine содержит «MpsSvc».
Прием данных из внешних источников
Чтобы включить в запрос длинные списки или большие таблицы, используйте оператор externaldata для приема данных из указанного URI. Вы можете получать данные из файлов в форматах TXT, CSV, JSON и других. В приведенном ниже примере показано, как вы можете использовать обширный список хэшей вредоносных программ SHA-256, предоставленный MalwareBazaar (abuse. ch), для проверки вложений в электронные письма:
let abuse_sha256 = (externaldata(sha256_hash: string) [@"https://bazaar.abuse.ch/export/txt/sha256/recent/"] с (формат="txt")) | где sha256_hash !начинается с "#" | проект sha256_hash; злоупотребление_sha256 | присоединиться (EmailAttachmentInfo | где Отметка времени > назад (1 дн.) ) на $left.sha256_hash == $right.SHA256 | Временная метка проекта, SenderFromAddress, RecipientEmailAddress, FileName, FileType, SHA256, типы угроз, методы обнаружения
Анализ строк
Существуют различные функции, которые можно использовать для эффективной обработки строк, требующих анализа или преобразования.
Строка | Функция | Пример использования |
---|---|---|
Командные строки | parse_command_line() | Извлечь команду и все аргументы. |
Пути | parse_path() | Извлечь разделы пути к файлу или папке. |
Номера версий | parse_version() | Деконструировать номер версии, содержащий до четырех разделов и до восьми символов в каждом разделе. Используйте проанализированные данные для сравнения возраста версий. |
Адреса IPv4 | parse_ipv4() | Преобразование адреса IPv4 в длинное целое число. Чтобы сравнить адреса IPv4 без их преобразования, используйте ipv4_compare(). |
Адреса IPv6 | parse_ipv6() | Преобразование адреса IPv4 или IPv6 в каноническую нотацию IPv6. Чтобы сравнить адреса IPv6, используйте ipv6_compare(). |
Чтобы узнать обо всех поддерживаемых функциях синтаксического анализа, прочитайте статью о строковых функциях Kusto.
Примечание
Некоторые таблицы в этой статье могут быть недоступны в Microsoft Defender для конечной точки. Включите Защитник Microsoft 365, чтобы искать угрозы, используя дополнительные источники данных.