The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Раздел полезных советов: Блокирование попыток эксплуатации h..., auto_tips (??), 09-Апр-14, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


12. "Блокирование попыток эксплуатации heartbeat-уязвимости в Ope..."  +/
Сообщение от pavlinux (ok), 11-Апр-14, 11:53 
У меня сегодня около 6 утра сработало,на 465 порту, причем адрес источника - наша офисная сеть.
Сижу разбираюсь.


128.140.169.183 - mail.ru банит

DKIM: d=mail.ru s=mail2 c=relaxed/relaxed a=rsa-sha256 [verification succeeded]
P=esmtps X=TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

13. "Блокирование попыток эксплуатации heartbeat-уязвимости в Ope..."  +/
Сообщение от Онаним (?), 11-Апр-14, 13:13 
iptables -t filter -A INPUT -p tcp --dport 465 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP

Или я дурак или лыжи не едут. Но в этом правиле гвоздями прибито смещение сигнатуры, в то время как, что IP заголовок, что TCP заголовок имеют переменную длину!!! Выходит, что это правило сглючит, если в IP заголовке будут опции (ну и в TCP тоже).
Проскочить IP заголовок можно так "0>>22&0x3C", а IP TCP заголовки так "0>>22&0x3C@ 12>>26&0x3C@".
Вот хорошая статья http://www.stearns.org/doc/iptables-u32.current.html
Но вот что искать в TCP данных (payload) не ясно. Только если исходить из того, что аффтор правила подразумевал заголовки IP и TCP по 20 байт, то выходит что надо как то так:

iptables -t filter -A INPUT -p tcp --dport 465 -m u32 --u32 "0>>22&0x3C@ 12>>26&0x3C@12=0x18030000:0x1803FFFF" -j DROP

Ответить | Правка | Наверх | Cообщить модератору

14. "Блокирование попыток эксплуатации heartbeat-уязвимости в Ope..."  +/
Сообщение от pavlinux (ok), 11-Апр-14, 14:56 
> ... аффтор правила подразумевал

Аффтор подразумевал, что коннект идёт на 443 порт и там кроме HTTPS ничего нет.

Вот тут кусок hex взят непосредственно их кода эксплойта.

iptables -I INPUT -p tcp -m string --algo kmp --hex-string '|18 03 02 00 03 01 40 00|' \
                             -j LOG --log-level debug --log-prefix "ScriptKiddy detected: "

18 - Heartbeat расширение
03 01 - TLS v1.0 (03 02 - TLS v1.1, 03 03 - TLS v1.2)
00 03 - длина заголовка (18,03,01)
01 - Heartbeat request (02 - ответ)
40 00 - размер (по стандарту - может быть не более 2^16 (0x4000))

Банить, кроме как Heartbeat request, не вижу смысла.
Лень смотреть, узнать бы в какой мин. версии TLS это поддерживается.

Ловить нужно вот такие байты (строки)

от 0x1803010003010000 до 0x1803010003014000 # TLS 1.0
от 0x1803020003010000 до 0x1803010003014000 # TLS 1.1
от 0x1803030003010000 до 0x1803010003014000 # TLS 1.2

Как это всунуть в u32 - лень думать :)


Или даже вот такой длины: 0x180301000301, ибо пофиг какой он там размер запросит.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру