Это гибридное решение, объединяющее гибкий ID хоста с возможностями обнаружения инцидентов на основе обнаружения.
Механизм обнаружения построен на основе ранее разработанного механизма правил Gene, специально разработанного для сопоставления событий Windows с пользовательскими правилами.
Содержание
Преимущества
- Инструмент с открытым исходным кодом EDR
- Гибкое обнаружение
- Простая интеграция с другими инструментами с открытым исходным кодом (MISP, The Hive…)
Как работает
Обнаружение
- На хосте обнаружение в реальном времени
- Прослушивает каналы журнала событий Windows и применяет правила обнаружения
- Пользовательские правила (мы знаем, почему мы что-то обнаруживаем)
- Предназначен для использования с MS Sysmon
- Обогащает события Windows для создания мощных примитивов обнаружения
- Центральный агент распространяет правила и собирает оповещения
Менеджмент
- Реагирует на обнаружение (при обнаружении события выше заданной критичности собираются артефакты )
- Сбор доказательств в реальном времени (файлы, память процесса и реестры)
- Центральный агент по сбору доказательств
Демонстрация
Пример правила
Ниже приведен пример правила, разработанного для обнаружения подозрительного доступа к lsass.exe, как это делает хорошо известная утилита сброса учетных данных Mimikatz.
{ "Name": "MaliciousLsassAccess", "Tags": ["Mimikatz", "Credentials", "Lsass"], "Meta": { "EventIDs": [10], "Channels": ["Microsoft-Windows-Sysmon/Operational"], "Computers": [], "Traces": [], "Criticality": 10, "Author": "0xrawsec" }, "Matches": [ "$ct: CallTrace ~= 'UNKNOWN'", "$lsass: TargetImage ~= '(?i:\\\\lsass\\.exe$)'" ], "Condition": "$lsass and $ct" }
Вы можете найти множество других правил, а также краткое введение в синтаксис правил в репозитории Gene.
В действии
Запуск WHIDS с уже запущенным агентом Powershell Empire, который вызывает модуль Mimikatz.
Herafter – это вид результата, возвращаемый WHIDS.
Дополнительный раздел добавляется к событию JSON, где сообщается о важности оповещения вместе с различными сигнатурами, которые соответствуют событию.
{ "Event": { "EventData": { "CallTrace": "C:\\Windows\\SYSTEM32\\ntdll.dll+4bf9a|C:\\Windows\\system32\\KERNELBASE.dll+189b7|UNKNOWN(00000000259123BC)", "GrantedAccess": "0x1410", "SourceImage": "C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", "SourceProcessGUID": "{49F1AF32-DD18-5A72-0000-0010042C0A00}", "SourceProcessId": "2248", "SourceThreadId": "3308", "TargetImage": "C:\\Windows\\system32\\lsass.exe", "TargetProcessGUID": "{49F1AF32-DB3B-5A72-0000-001013690000}", "TargetProcessId": "492", "UtcTime": "2018-02-01 11:24:53.331" }, "GeneInfo": { "Criticality": 10, "Signature": [ "MaliciousLsassAccess" ] }, "System": { "Classical Windows Event System Section": "..." } } }
Установка WHIDS
- Скачайте и распакуйте последнюю версию WHIDS https://github.com/0xrawsec/whids/releases
- Если вы хотите, чтобы WHIDS запускался вместе с Sysmon (настоятельно рекомендуется), сначала установите его. Файл оптимальной конфигурации поставляется вместе с выпуском, чтобы вы могли максимально использовать возможности WHIDS. При установке служба Sysmon будет зависеть от службы WHIDS, поэтому мы уверены, что IDS запустится до того, как Sysmon начнет генерировать некоторые события.
- Запустите manage.bat от имени администратора
- Запустите установку, выбрав соответствующую опцию
- Убедитесь, что файлы были созданы в каталоге установки
- С помощью текстового редактора, открытого от имени администратора (чтобы предотвратить изменение прав установочного каталога WHIDS), откройте config.json и измените его по своему усмотрению. Это также можно сделать из manage.bat
- Пропустите это, если вы работаете с подключением к менеджеру, потому что правила будут обновляться автоматически. Если в каталоге правил ничего нет, инструмент будет бесполезен, поэтому убедитесь, что там есть некоторые генные правила. Некоторые правила поставляются вместе с WHIDS, и вам будет предложено установить их или нет. Если вам нужны последние обновленные правила, вы можете получить их здесь (возьмите скомпилированные)
- Запустите службы из соответствующей опции в manage.bat или просто перезагрузите компьютер (предпочтительная опция, иначе некоторые поля обогащения будут неполными, что приведет к ложным оповещениям)
- Если вы настроили менеджер, не забудьте запустить его, чтобы получать оповещения и дампы
Примечание: всякий раз, когда вы заходите в каталог установки с помощью Explorer.exe и, если вы являетесь администратором, проводник спросит вас, хотите ли вы изменить разрешение каталога. НЕ НАЖИМАЙТЕ ДА, иначе это нарушит права доступа к папкам, установленные во время установки. Всегда обращайтесь к каталогу установки из приложений, запущенных с правами администратора (т. Е. Текстового редактора).
Настройка
WHIDS
Пример файла конфигурации WHIDS:
{
// Path to the rules directory used for detection
"rules-db": "C:\\Program Files\\Whids\\Database\\Rules",
// Path to the containers used in some of the rules
// containers must be GZIP compressed and have .cont.gz extension
// basename without extension is taken as container name
// Example: blacklist.cont.gz will create blacklist container
"containers-db": "C:\\Program Files\\Whids\\Database\\Containers",
// Forwarder related configuration
"forwarder": {
"manager-client": {
// Hostname or IP address of remote manager
"host": "",
// Port used by remote manager
"port": 0,
// Protocol used http or https
"proto": "",
// Key used to authenticate the client
"key": "",
// Server key used to authenticate remote server
"server-key": "",
// Whether or not the TLS certificate should be verified
"unsafe": false,
// Maximum upload side for dump forwarding
"max-upload-size": 104857600
},
// Alert logging settings
"logging": {
// Path where to store the alerts
"dir": "C:\\Program Files\\Whids\\Logs\\Alerts",
// Rotation interval
"rotation-interval": "24h"
},
// If local=true the forwarder won't communicate with manager
"local": true
},
// Windows event log channels to monitor
// run "whids -h" to get the list of aliases
// otherwise any Windows channel can be used here
"channels": [
"all"
],
// Dump related settings
"dump": {
// Dump mode: file, memory or all (can be empty)
// file: dumps anything identified as a file in the event
// memory: dumps (guilty) process memory in Windows minidump format
// registry: dumps registry in case alert concerns a registry
"mode": "file|registry",
// Dumps when criticality of the events is above or equal to treshold
"treshold": 8,
// Where to store dumps
"dir": "C:\\Program Files\\Whids\\Dumps",
// Whether or not to enable dump compression
"compression": true
},
// Log events with criticality above or equal to treshold
"criticality-treshold": 5,
// Sleep time in seconds between two rules updates (negative number means no update)
"update-interval": 60,
// Whether on not hooks should be enabled
"en-hooks": true,
// Logfile used to store WHIDS stderr
"logfile": "C:\\Program Files\\Whids\\Logs\\whids.log",
// Log all the events passing through the engine (usefull for event dumping or debugging)
"log-all": false,
// Tells WHIDS that it is running on an endpoint. If false any kind
// of dump is disabled to avoid dump things if installed on a WEC
"endpoint": true
}
Manager
Пример конфигурации:
{
// Hostname / IP on which to run the manager
"host": "192.168.56.1",
// Port used by the manager
"port": 1519,
// Logfile (automatically rotated) where to store alerts received
"logfile": "alerts.log",
// Server authentication key (see server-key in WHIDS config)
"key": "someserverkey",
// List of authorized client keys (see key in WHIDS config)
// If the client is not authorized in this list, all the connections
// to the manager will abort
"authorized": [
"clientapikey"
],
// TLS settings
"tls": {
// Server certificate to use
"cert": "cert.pem",
// Server key to use
"key": "key.pem"
},
"misp": {
// Protocol to use for MISP connection
"protocol" :"https",
// MISP host
"host" : "misp.host",
// API key to use
"api-key" :"your misp api key"
},
// Rules directory used to serve rules to the clients
"rules-dir": "",
// Rules of containers used in rules (served to the clients)
// a container name is the basename of the file without extension
// Example: /some/container/dir/blacklist.txt will take the content
// of the file and use it as being a Gene container named blacklist
"containers-dir": ""
// Directory used to store dumps sent by the client
"dump-dir": "",
}
Скачайте Whid здесь – https://github.com/0xrawsec/whids