🌐 Обнаружение вторжений с помощью Snort |

🌐 Обнаружение вторжений с помощью Snort

Мануал

Обычно считается, что если брандмауэр защищает сеть, то сеть считается защищенной.

Однако это не совсем верно.

Брандмауэры являются фундаментальным компонентом сети, но они не могут полностью защитить сеть от принудительного проникновения или враждебных намерений.

Системы обнаружения вторжений используются для оценки агрессивных или неожиданных пакетов и отправки предупреждения до того, как эти они смогут нанести вред сети.

Система обнаружения вторжений на базе хоста (HIDS) работает на всех устройствах в сети или подключается к внутренней сети организации.

Система обнаружения вторжений на базе сети устанавливается в определенной точке или группе точек, из которых можно отслеживать весь входящий и исходящий трафик.

Преимуществом системы обнаружения вторжений на базе хоста может обнаруживать аномалии или вредоносный трафик, генерируемый самим хостом, т.е. если хост поражен вредоносным ПО и т.д.

Системы обнаружения вторжений (IDS) работают путем мониторинга и анализа сетевого трафика и сравнения его с установленным набором правил, определяя, что следует считать нормальным для сети (т.е. для портов, пропускной способности и т.д.), а на что следует обратить более пристальное внимание.

Существуют десятки качественных коммерческих IDS, но многие компании и малые предприятия не могут себе их позволить.

Snort – это гибкая, легкая и популярная система обнаружения вторжений, которая может быть развернута в зависимости от потребностей сети, от малых до больших сетей, и предоставляет все функции платной IDS. Snort ничего не стоит, но это не значит, что он не может предоставить те же функции, что и элитная, коммерческая IDS.

Установка Snort

Прежде чем установить Snort, есть несколько программ или пакетов с открытым исходным кодом, которые необходимо установить в первую очередь, чтобы получить максимальную отдачу от этой программы.

Libpcap: Сниффер пакетов, подобный Wireshark, который используется для захвата, мониторинга и анализа сетевого трафика.

Чтобы установить libpcap, используйте следующие команды для загрузки пакета с официального сайта, разархивируйте пакет, а затем установите его:

wget http://www.tcpdump.org/release/libpcap-1.9.1.tar.gz
tar -xzvf libpcap-<version number>
cd libpcap-<version number>
./configure
sudo make
make install

OpenSSH: Инструмент безопасного подключения, который обеспечивает безопасный канал даже через незащищенную сеть для удаленного входа в систему по протоколу ssh.

OpenSSH используется для удаленного подключения к системам с привилегиями администратора.

OpenSSH можно установить с помощью следующих команд :

wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/
portable/openssh-8.3p1.tar.gz
tar xzvf openssh-<version number>
cd openssh-<version number>
./configure
sudo make install

MySQL: Самая популярная бесплатная база данных SQL с открытым исходным кодом.

MySQL используется для хранения данных алертов Snort.

Библиотеки SQL используются удаленными машинами для связи и доступа к базе данных, в которой хранятся записи логов Snort.

MySQL можно установить с помощью следующей команды:

 sudo apt-get install mysql

Веб-сервер Apache: Наиболее используемый веб-сервер в Интернете.

Apache используется для отображения консоли анализа через веб-сервер.

Его можно загрузить с официального сайта здесь:

http://httpd.apache.org

или с помощью следующей команды:

 sudo apt-get install apache2

PHP: PHP – это язык сценариев, используемый в веб-разработке.

Для работы консоли Analysis требуется механизм парсинга PHP.

Его можно загрузить с официального сайта: https://www.php.net/downloads.php, или с помощью следующих команд:

 wget https://www.php.net/distributions/php-7.4.9.tar.bz2
tar -xvf php-<version number>.tar
cd php-<version number>
sudo make
sudo make install

OpenSSL: используется для обеспечения безопасности обмена данными по сети, не беспокоясь о том, что третьи лица могут перехватить или проследить за отправленными и полученными данными.

OpenSSL обеспечивает криптографическую функциональность веб-сервера.

Его можно загрузить с официального сайта: https://www.openssl.org/.

Stunnel: Программа, используемая для шифрования произвольного сетевого трафика или соединений внутри SSL и работающая вместе с OpenSSL.

Stunnel можно скачать с официального сайта: https://www.stunnel.org/, или установить с помощью следующих команд:

 wget https://www.stunnel.org/downloads/stunnel-5.56-android.zip
tar xzvf stunnel- <version number>
cd stunnel- <version number>
./configure
sudo make install

ACID: аббревиатура Analysis Control for Intrusion Detection.

ACID – это поддерживающий запросы поисковый интерфейс, используемый для поиска совпадающих IP-адресов, заданных шаблонов, определенной команды, полезной нагрузки, сигнатур, определенных портов и т.д. из всех зарегистрированных алертов.

Он обеспечивает глубокую функциональность анализа пакетов, позволяя определить, чего именно пытался добиться злоумышленник, и тип полезной нагрузки, использованной в атаке.

ACID можно скачать с официального сайта: https://www.sei.cmu.edu/about/divisions/cert/index.cfm.

Теперь, когда все необходимые базовые пакеты установлены, Snort можно скачать с официального сайта snort.org и установить с помощью следующих команд:

 wget https://www.snort.org/downloads/snort/snort-2.9.16.1.tar.gz
tar xvzf snort- <version number>
cd snort- <version number>
./configure
sudo make && --enable-source-fire
sudo make install

Затем выполните следующую команду, чтобы проверить, установлен ли Snort и какую версию Snort вы используете:

snort ---
,,_ --*> Snort! <*--
o” )~ Version number ””
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.8.1
Using PCRE version: 8.39 2016-06-14
Using ZLIB version: 1.2.11

После успешной установки в системе должны быть созданы следующие файлы:

  • /usr/bin/snort: Это бинарник Snort.
  • /usr/share/doc/snort: Содержит документацию и руководства по Snort.
  • /etc/snort: Содержит все наборы правил Snort, а также является его конфигурационным файлом.

Использование Snort

Чтобы использовать Snort, сначала необходимо настроить значение Home_Net и задать ему значение IP-адреса сети, которую вы защищаете.

IP-адрес сети можно получить с помощью следующей команды:

 ifconfig

Из результатов скопируйте значение inet-адреса нужной сети.

Теперь откройте файл конфигурации Snort /etc/snort/snort.conf с помощью следующей команды:

 sudo vim /etc/snort/snort.conf[/simterm]
Найдите строку “ipvar HOME_NET”.
Перед ipvar HOME_NET напишите IP-адрес, скопированный ранее, и сохраните файл.
Перед запуском Snort необходимо запустить сеть в режиме promiscuous.
Это можно сделать с помощью следующей команды:
[simterm]$ /sbin/ifconfig --<network name> -promisc[/simterm]
Теперь вы готовы к запуску Snort.
Чтобы проверить его состояние и протестировать конфигурационный файл, выполните следующую команду:
[simterm]~$ sudo snort -T -i <name of the network i.e eth0> -c /etc/snort/snort.conf
4150 Snort rules read
3476 detection rules
0 decoder rules
0 preprocessor rules
3476 Option Chains linked into 290 Chain Headers
0 Dynamic rules
+++++++++++++++++++++++++++++++++++++++++++++++++++
+-------------------[Rule Port Counts]---------------------------------------
|             tcp     udp    icmp      ip
|     src     151      18       0       0
|     dst    3306     126       0       0
|     any     383      48     145      22
|      nc      27       8      94      20
|     s+d      12       5       0       0
+----------------------------------------------------------------------------
+-----------------------[detection-filter-config]------------------------------
| memory-cap : 1048576 bytes
+-----------------------[detection-filter-rules]-------------------------------
| none
-------------------------------------------------------------------------------
+-----------------------[rate-filter-config]-----------------------------------
| memory-cap : 1048576 bytes
+-----------------------[rate-filter-rules]------------------------------------
| none
-------------------------------------------------------------------------------
+-----------------------[event-filter-config]----------------------------------
| memory-cap : 1048576 bytes
+-----------------------[event-filter-global]----------------------------------
| none
+-----------------------[event-filter-local]-----------------------------------
| gen-id=1      sig-id=3273       type=Threshold tracking=src count=5   seconds=2
| gen-id=1      sig-id=2494       type=Both      tracking=dst count=20  seconds=60
| gen-id=1      sig-id=3152       type=Threshold tracking=src count=5   seconds=2
| gen-id=1      sig-id=2923       type=Threshold tracking=dst count=10  seconds=60
| gen-id=1      sig-id=2496       type=Both      tracking=dst count=20  seconds=60
| gen-id=1      sig-id=2275       type=Threshold tracking=dst count=5   seconds=60
| gen-id=1      sig-id=2495       type=Both      tracking=dst count=20  seconds=60
| gen-id=1      sig-id=2523       type=Both      tracking=dst count=10  seconds=10
| gen-id=1      sig-id=2924       type=Threshold tracking=dst count=10  seconds=60
| gen-id=1      sig-id=1991       type=Limit     tracking=src count=1   seconds=60
+-----------------------[suppression]------------------------------------------
| none
-------------------------------------------------------------------------------
Rule application order: activation->dynamic->pass->drop->sdrop->reject->alert->log
Verifying Preprocessor Configurations!
[ Port Based Pattern Matching Memory ]
+- [ Aho-Corasick Summary ] -------------------------------------
| Storage Format    : Full-Q
| Finite Automaton  : DFA
| Alphabet Size     : 256 Chars
| Sizeof State      : Variable (1,2,4 bytes)
| Instances         : 215
|     1 byte states : 204
|     2 byte states : 11
|     4 byte states : 0
| Characters        : 64982
| States            : 32135
| Transitions       : 872051
| State Density     : 10.6%
| Patterns          : 5055
| Match States      : 3855
| Memory (MB)       : 17.00
|   Patterns        : 0.51
|   Match Lists     : 1.02
|   DFA
|     1 byte states : 1.02
|     2 byte states : 14.05
|     4 byte states : 0.00
+----------------------------------------------------------------
[ Number of patterns truncated to 20 bytes: 1039 ]
pcap DAQ configured to passive.
Acquiring network traffic from “wlxcc79cfd6acfc”.
---== Initialization Complete ==--
,,_     --*> Snort! <*--
o”  )~   Version number
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.8.1
Using PCRE version: 8.39 2016-06-14
Using ZLIB version: 1.2.11
Rules Engine: SF_SNORT_DETECTION_ENGINE  Version 2.4  <Build 1>
Preprocessor Object: SF_IMAP  Version 1.0  <Build 1>
Preprocessor Object: SF_FTPTELNET  Version 1.2  <Build 13>
Preprocessor Object: SF_REPUTATION  Version 1.1  <Build 1>
Preprocessor Object: SF_SDF  Version 1.1  <Build 1>
Preprocessor Object: SF_SIP  Version 1.1  <Build 1>
Preprocessor Object: SF_SSH  Version 1.1  <Build 3>
Preprocessor Object: SF_GTP  Version 1.1  <Build 1>
Preprocessor Object: SF_SSLPP  Version 1.1  <Build 4>
Preprocessor Object: SF_DCERPC2  Version 1.0  <Build 3>
Preprocessor Object: SF_SMTP  Version 1.1  <Build 9>
Preprocessor Object: SF_POP  Version 1.0  <Build 1>
Preprocessor Object: SF_DNS  Version 1.1  <Build 4>
Preprocessor Object: SF_DNP3  Version 1.1  <Build 1>
Preprocessor Object: SF_MODBUS  Version 1.1  <Build 1>
Snort successfully validated the configuration!
Snort exiting

Наборы правил Snort

Наибольшая мощь Snort заключается в его наборах правил.

Snort способен использовать большое количество наборов правил для мониторинга сетевого трафика.

В последней версии Snort поставляется с 73 различными типами и более 4150 правилами для обнаружения аномалий, которые содержатся в папке “/etc/snort/rules“.

Вы можете просмотреть типы наборов правил в Snort с помощью следующей команды:

ls /etc/snort/rules
attack-responses.rules community-smtp.rules icmp.rules shellcode.rules
backdoor.rules community-sql-injection.rules imap.rules smtp.rules
bad-traffic.rules community-virus.rules info.rules snmp.rules
chat.rules community-web-attacks.rules local.rules sql.rules
community-bot.rules community-web-cgi.rules misc.rules telnet.rules
community-deleted.rules community-web-client.rules multimedia.rules tftp.rules
community-dos.rules community-web-dos.rules mysql.rules virus.rules
community-exploit.rules community-web-iis.rules netbios.rules web-attacks.rules
community-ftp.rules community-web-misc.rules nntp.rules web-cgi.rules
community-game.rules community-web-php.rules oracle.rules web-client.rules
community-icmp.rules ddos.rules other-ids.rules web-coldfusion.rules
community-imap.rules deleted.rules p2p.rules web-frontpage.rules
community-inappropriate.rules dns.rules policy.rules web-iis.rules
community-mail-client.rules dos.rules pop2.rules web-misc.rules
community-misc.rules experimental.rules pop3.rules web-php.rules
community-nntp.rules exploit.rules porn.rules x11.rules
community-oracle.rules finger.rules rpc.rules
community-policy.rules ftp.rules rservices.rules
community-sip.rules icmp-info.rules scan.rules

По умолчанию, когда вы запускаете Snort в режиме системы обнаружения вторжений, все эти правила развертываются автоматически.

Давайте теперь протестируем набор правил ICMP.

Во-первых, используйте следующую команду для запуска Snort в режиме IDS:

~$ sudo snort -A console -i <network name>
-c /etc/snort/snort.conf

Теперь вы можете попробовать пропинговать IP этой машины с другой машины с помощью следующей команды:

 ping <ip address>

Пингуйте его пять-шесть раз, а затем вернитесь на свой компьютер и посмотрите, обнаружит ли его Snort IDS или нет.

08/24-01:21:55.178653 [**] [1:396:6] ICMP Destination Unreachable Fragmentation
 Needed and DF bit was set [**] [Classification: Misc activity] [Priority: 3]
 {ICMP} <ip address of attacker’s mmachine> -> <this machine’s ip address>

08/24-01:21:55.178653 [**] [1:396:6] ICMP Destination Unreachable Fragmentation
Needed and DF bit was set [**] [Classification: Misc activity] [Priority: 3]
{ICMP} <ip address of attacker’s mmachine> -> <this machine’s ip address>

08/24-01:21:55.178653 [**] [1:396:6] ICMP Destination Unreachable Fragmentation
 Needed and DF bit was set [**] [Classification: Misc activity] [Priority: 3]
 {ICMP} <ip address of attacker’s mmachine> -> <this machine’s ip
 address>

08/24-01:21:55.178653 [**] [1:396:6] ICMP Destination Unreachable Fragmentation
 Needed and DF bit was set [**] [Classification: Misc activity] [Priority: 3]
 {ICMP} <ip address of attacker’s mmachine> -> <this machine’s
ip address>

08/24-01:21:55.178653 [**] [1:396:6] ICMP Destination Unreachable Fragmentation
 Needed and DF bit was set [**] [Classification: Misc activity] [Priority: 3]
 {ICMP} <ip address of attacker’s mmachine> -> <this machine’s ip
 address>

08/24-01:21:55.178653 [**] [1:396:6] ICMP Destination Unreachable Fragmentation
 Needed and DF bit was set [**] [Classification: Misc activity] [Priority: 3]
{ICMP} <ip address of attacker’s mmachine> -> <this machine’s ip
address>

Здесь мы получили предупреждение о том, что кто-то выполняет ping-сканирование.

Вывод даже предоставил IP-адрес машины злоумышленника.

Теперь перейдем по IP-адресу этой машины в браузере.

В этом случае мы не увидим никакого предупреждения.

Попробуйте подключиться к ftp-серверу этой машины, используя другую машину в качестве атакующей:

ftp <ip address>

Мы по-прежнему не увидим никакого предупреждения, потому что эти наборы правил не добавлены в правила по умолчанию, и в этих случаях предупреждение не будет сгенерировано.

В этом случае вы должны создать свои собственные наборы правил.

Вы можете создать правила в соответствии со своими потребностями и добавить их в файл “/etc/snort/rules/local.rules”, и тогда snort будет автоматически использовать эти правила при обнаружении аномалий.

Создание правила

Теперь мы создадим правило для обнаружения подозрительных пакетов, отправленных на порт 80, чтобы при их появлении генерировалось предупреждение в логе:

alert tcp any any -> $HOME_NET 80 (msg: "HTTP Packet found"; sid:10000001; rev:1;)

Существует две основные части написания правила, а именно: заголовок правила и параметры правила.

Ниже приводится описание правила, которое мы только что написали:

Заголовок:

  • Alert: действие, которое должно быть предпринято при обнаружении пакета, соответствующего описанию правила. Существует несколько других действий, которые могут быть указаны вместо предупреждения в зависимости от потребностей пользователя, например, регистрировать, отклонять, активировать, отбрасывать, пропускать и т.д.
  • Tcp: Здесь необходимо указать протокол. Существует несколько типов протоколов, которые можно указать, т.е. tcp, udp, icmp и т.д., в зависимости от потребностей пользователя.
  • Any: Здесь можно указать сетевой интерфейс источника. Если указано any, Snort будет проверять все исходные сети.
  • ->: Направление; в данном случае оно задано от источника к месту назначения.
  • $HOME_NET: Место, где указывается IP-адрес назначения. В данном случае мы используем тот, который был настроен в файле /etc/snort/snort.conf в самом начале.
    80: Порт назначения, на котором мы ожидаем сетевой пакет.

Параметры:

  • Msg: Генерируемое предупреждение или сообщение, которое будет отображаться в случае перехвата пакета. В данном случае установлено значение “HTTP Packet found”.
  • sid: Используется для уникальной и систематической идентификации правил Snort. Первые 1000000 номеров зарезервированы, поэтому вы можете начать с 1000001.
  • Rev: Используется для удобства обслуживания правил.

Мы добавим это правило в файл “/etc/snort/rules/local.rules” и посмотрим, сможет ли оно обнаружить HTTP-запросы на порту 80.

 echo “alert tcp any any --> $HOME_NET 80 (msg: “HTTP Packet
found”; sid:10000001; rev:1;)” >> /etc/snort/rules/local.rules

Теперь вы можете открыть Snort в режиме IDS с помощью следующей команды:

 sudo snort -A console -i wlxcc79cfd6acfc
-c /etc/snort/snort.conf

Перейдите на IP-адрес этой машины из браузера.

Теперь Snort может обнаружить любой пакет, отправленный на порт 80, и в этом случае на экране появится предупреждение “HTTP Packet Found”.

08/24-03:35:22.979898 [**] [1:10000001:0] HTTP Packet found [**]
 [Priority: 0] {TCP}<ip address>:52008 -> 35.222.85.5:80

08/24-03:35:22.979898 [**] [1:10000001:0] HTTP Packet found [**]
 [Priority: 0] {TCP}<ip address>:52008 -> 35.222.85.5:80

08/24-03:35:22.979898 [**] [1:10000001:0] HTTP Packet found [**]
 [Priority: 0] {TCP}<ip address>:52008 -> 35.222.85.5:80

08/24-03:35:22.979898 [**] [1:10000001:0] HTTP Packet found [**]
 [Priority: 0] {TCP}<ip address>:52008 -> 35.222.85.5:80

08/24-03:35:22.979898 [**] [1:10000001:0] HTTP Packet found [**]
 [Priority: 0] {TCP}<ip address>:52008 -> 35.222.85.5:80

08/24-03:35:22.979898 [**] [1:10000001:0] HTTP Packet found [**]
 [Priority: 0] {TCP}<ip address>:52008 -> 35.222.85.5:80

08/24-03:35:22.979898 [**] [1:10000001:0] HTTP Packet found [**]
 [Priority: 0] {TCP}<ip address>:52008 -> 35.222.85.5:80

Мы также создадим правило для обнаружения попыток входа в систему ftp:

alert tcp any any -> any 21 (msg: "FTP packet found"; sid:10000002)

Добавьте это правило в файл “local.rules” с помощью следующей команды:

 echo “alert tcp any any --> alert tcp any any --> any 21
(msg: “FTP packet found”; sid:10000002; rev:1;)” >> /etc/snort/rules/local.rules

Теперь попробуйте войти в систему с другой машины и посмотрите на результаты работы программы Snort.

08/24-03:35:22.979898 [**] [1:10000002:0) FTP Packet found [**] [Priority: 0]
{TCP}<ip address>:52008 --> 35.222.85.5:21
08/24-03:35:22.979898 [**] [1:10000002:0) FTP Packet found [**] [Priority: 0]
{TCP}<ip address>:52008 --> 35.222.85.5:21
08/24-03:35:22.979898 [**] [1:10000002:0) FTP Packet found [**] [Priority: 0]
{TCP}<ip address>:52008 --> 35.222.85.5:21
08/24-03:35:22.979898 [**] [1:10000002:0) FTP Packet found [**] [Priority: 0]
{TCP}<ip address>:52008 --> 35.222.85.5:21
08/24-03:35:22.979898 [**] [1:10000002:0) FTP Packet found [**] [Priority: 0]
{TCP}<ip address>:52008 --> 35.222.85.5:21

Как видно выше, мы получили оповещение, что означает, что мы успешно создали эти правила для обнаружения аномалий на порту 21 и порту 80.

Заключение

Системы обнаружения вторжений, такие как Snort, используются для мониторинга сетевого трафика с целью обнаружения атаки, осуществляемой злоумышленником, прежде чем она сможет причинить вред или повлиять на сеть.

Если злоумышленник выполняет сканирование портов в сети, атака может быть обнаружена, вместе с количеством предпринятых попыток, IP-адресом злоумышленника и другими деталями.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий