Forwarded from ESCalator
Yara Yara Daze
Всем, кто занимается malware analysis, точно знаком такой инструмент, как YARA😉 . С помощью него во многих компаниях 🔴 составляют наборы сигнатурных правил для определения и классификации вредоносов.
🤔 So, что такое хорошие YARA-правила? Это правила, которые могут детектировать предназначенный им класс или семейство ВПО, не детектируют ничего лишнего (false positive) и способны сохранять актуальность, даже если ВПО подвергается небольшим изменениям.
😏 Нет общего совета, как сделать хорошее YARA-правило — это зависит от сампла к самплу. Мы поделимся некоторыми Tips&Tricks про детект строк, которые будут полезны начинающим:
🔹 Не стоит забывать
🔹
🔹 Лучше избегать сигнатур длиной в 3-4 символа.
🔹 Иногда очень полезно прописывать условие расстояния между строками. Например, если в файле есть какие-нибудь white- / blacklist, как имена процессов, можно ограничить их расположение в окне конкретной длины:
🔹 Строки логирования лучше не разбивать на подстроки длиной 4-5 символов, если там общие слова, которые могут встретиться в любом контексте: детект подстроки
🔹 Чтобы детект строк пережил различные кодировки, чередование заглавных и строчных букв, можно использовать три модификатора
И, конечно, главное — не забывать смотреть в документацию YARA 👀, следить за обновлениями иподсматривать на рули коллег.
Успехов в работе.
#tips #malware #YARA
@ptescalator
Всем, кто занимается malware analysis, точно знаком такой инструмент, как YARA
🔹 Не стоит забывать
fullword
— этот модификатор на строки гарантирует, что сигнатурная строка не будет находиться между буквенно-цифровыми символами (осторожнее с golang).🔹
filesize
выручает в тех случаях, когда сампл маленький и кроме общих сигнатур в нем ничего нет:rule CustomSocksProxy {
strings:
$a_1 = "SOCKS5 Proxy listening" wide
$a_2 = "New connection from" wide
condition:
uint16(0) == 0x5a4d and filesize < 100KB and all of ($a_*)
}
🔹 Лучше избегать сигнатур длиной в 3-4 символа.
🔹 Иногда очень полезно прописывать условие расстояния между строками. Например, если в файле есть какие-нибудь white- / blacklist, как имена процессов, можно ограничить их расположение в окне конкретной длины:
rule CheckProcessList {
strings:
$base = "\\system32\\cmd.exe" wide
$str2 = "\\task.exe" wide
$str3 = "cmd.exe" wide
$str4 = "\\alg.exe" wide
$str5 = "powershell.exe" wide
condition:
for all of ($str*): (@ - @base < 100) and for all of ($str*): (@base - @ < 100)
}
🔹 Строки логирования лучше не разбивать на подстроки длиной 4-5 символов, если там общие слова, которые могут встретиться в любом контексте: детект подстроки
\\\\dc2
в строке \nUsing:\n\t session_enum.exe \\\\dc1 \\\\dc2 \n
— плохой детект.🔹 Чтобы детект строк пережил различные кодировки, чередование заглавных и строчных букв, можно использовать три модификатора
wide ascii nocase
: rule SomeAPTScript {
strings:
$a1 = "GetRef(" ascii wide
$a2 = " & ChrW(\"&H\" &" ascii wide
$a3 = "Mid(" ascii wide
$a4 = "Join(" ascii wide
$a5 = "=0 Step -2" ascii wide
$a6 = "Function [" ascii wide
$a7 = "MSXML2.ServerXMLHTTP" ascii wide
$v1 = "<Script " ascii nocase wide
$v2 = "VBSCript" ascii nocase wide
$v3 = "JSCript" ascii nocase wide
$wscript = "WScript.CreateObject(\"WScript.Shell\")" ascii nocase wide
condition:
filesize < 30KB and $wscript and 2 of ($v*) and 5 of ($a*)
}
И, конечно, главное — не забывать смотреть в документацию YARA 👀, следить за обновлениями и
Успехов в работе.
#tips #malware #YARA
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤5
Недавно у нас тут был вопрос для обсуждения из разряда как отличить хорошее yara-правило от плохого. Как раз к теме, у ребят из эска вышел даже пост⬆️
Я хоть и не особо являюсь здесь профи, но тоже отмечу:
— при всей моей безудержной любви к регулярным выражениям, с ними нужно быть аккуратными и лучше использовать либо более четкие, либо вместе с другими условиями/атомами/подстроками
— еще раз подумайте о том, с каким ВПО вы работаете и что хотите найти: если ограничиваете все только хешами, рискуете многое потерять
— важно не забывать про порядок условий: идем от общего к более частному, чтобы максимально разграничивать поиск
— лучше удалять метаданные при обширном сканировании, чтобы не загружать оперативную память еще и этой информацией
Может, и вам есть, чего добавить? Соберем все бест практис в одном месте :)
Я хоть и не особо являюсь здесь профи, но тоже отмечу:
— при всей моей безудержной любви к регулярным выражениям, с ними нужно быть аккуратными и лучше использовать либо более четкие, либо вместе с другими условиями/атомами/подстроками
— еще раз подумайте о том, с каким ВПО вы работаете и что хотите найти: если ограничиваете все только хешами, рискуете многое потерять
— важно не забывать про порядок условий: идем от общего к более частному, чтобы максимально разграничивать поиск
— лучше удалять метаданные при обширном сканировании, чтобы не загружать оперативную память еще и этой информацией
Может, и вам есть, чего добавить? Соберем все бест практис в одном месте :)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20🔥10
Как обещала, отдаю презентации. Но у меня есть условие! Давайте после этих трех насыщенных дней мы соберем всю волю в кулак и хотя бы немного просто отдохнем 😁
P.S. Я никак не ожидала, что этот пхдейс пройдет настолько тепло, в прямом и переносном смысле этого слова. Спасибо организаторам за продуманное до мелочей мероприятие, а вам - за поддержку, внимание и абсолютно каждую встречу!
P.S. Я никак не ожидала, что этот пхдейс пройдет настолько тепло, в прямом и переносном смысле этого слова. Спасибо организаторам за продуманное до мелочей мероприятие, а вам - за поддержку, внимание и абсолютно каждую встречу!
4❤64🔥32 12😁2
Но это случилось и на подкаст меня все же позвали 😁
В начале мая собрались с коллегами по цеху обсудить ключевые моменты реагирования на инциденты с применением данных киберразведки. Если вам лень (??) читать всеми признанную и горячо любимую книгу по данной теме, то по этой ссылке 🔗 - ее краткое содержание, только уже переложенное на наши реалии и с практическими примерами из жизни
А с этой биполярочкой из предыдущих постов нужно бы разобраться, конечно
В начале мая собрались с коллегами по цеху обсудить ключевые моменты реагирования на инциденты с применением данных киберразведки. Если вам лень (??) читать всеми признанную и горячо любимую книгу по данной теме, то по этой ссылке 🔗 - ее краткое содержание, только уже переложенное на наши реалии и с практическими примерами из жизни
🔥46 12❤10😁5
Что делать с вредоносным файлом?
Даже без детонации, отладки или реверса, можно провести его предварительный анализ в статике, чтобы сформировать предположение о назначении и функционале
1. Определяем формат и тип файла. Расширение не смотрим, смотрим magic bytes
2. Считаем хеши (MD5, SHA-1, SHA-256) и проверяем по всем доступным вам источникам, в том числе публично доступным
3. Можно погонять по yara-правилам: публичным, от TI-поставщика или из вашей коллекции на основе ранее изученного
4. Далее нам понадобится программы ⚙️ CFF Explorer или pestudio. На примере последнего:
5. ⚙️ DiE
6. Другие метаданные файла - ⚙️ exiftool
7. Ну и, наконец, строки
8. Анализ импортируемых и экспортируемых функций исполняемого файла
9*. Ну и, в конце концов, попробовать погонять через ⚙️ capa. А чем черт не шутит?
Даже без детонации, отладки или реверса, можно провести его предварительный анализ в статике, чтобы сформировать предположение о назначении и функционале
1. Определяем формат и тип файла. Расширение не смотрим, смотрим magic bytes
⚙️ file, обычный или шестнадцатиричным редактором (MZ, PK или ELF вы увидите и обычным нотпадом, в части hex - Hiew или HxD), DiE (Detect It Easy) или CFF Explorer. К ним мы еще неоднократно вернемся
2. Считаем хеши (MD5, SHA-1, SHA-256) и проверяем по всем доступным вам источникам, в том числе публично доступным
⚙️ Не забываем гуглить: каждый из хешей берем в кавычки и смотрим по публикациям/репортам. Отдельно - вердикты АВПО на VirusTotal, чтобы попробовать определить класс или даже семейство. Если файла нет на VirusTotal или других аналогичных сервисах, допускается загрузить его на анализ, предварительно подумав, нет ли в семпле чувствительной или раскрывающей вас информации
3. Можно погонять по yara-правилам: публичным, от TI-поставщика или из вашей коллекции на основе ранее изученного
4. Далее нам понадобится программы ⚙️ CFF Explorer или pestudio. На примере последнего:
— Мета по файлу, на чем написан, GUI / консольная программа, под какую архитектуру: file > original-file-name, signatures, type, description, manifest
— Допхарактеристики: file-header > dynamic-link-library, 32bit-supports, machine
— Дата компиляции: stamp > compliler, либо раздел stamps (directories > stamp), чтобы посмотреть дату в других секциях, если она была изменена
— Секции: как ни странно, sections. Помимо стандартных, иногда можно заметить имена протекторов .UPX0, .vmp0, .themida. Видим upх, сразу в консоли upx -d и продолжаем анализ
Бегло просмотреть остальное: resources (иногда можно выдернуть "говорящие" иконки, другой вариант - использовать ⚙️ Resource Hacker), certificate, debug directory (путь к отладочным символам, pdb-файлу - может в дальнейшем пригодиться для хантов)
5. ⚙️ DiE
⚙️ Помимо вышеперечисленного, смотрим энтропию, через DiE с картиночками (но есть и в pestudio->sections). По высокому значению (7 и выше) можно сделать вывод, был ли файл сжат или упакован. Иногда лучше проверять значение энтропии по секциям PE-файла, а не от целого
6. Другие метаданные файла - ⚙️ exiftool
⚙️ По документам можно достать информацию об авторе, имени последнего пользователя, редактировавшего файл, используемую версию программного обеспечения. Обращаем внимание также на наличие путей к файлам в системе злоумышленника, которые остались по ошибке в метаданных файла
7. Ну и, наконец, строки
Нормальные ребята всегда и везде используют strings, а более искушенные - ⚙️bstrings или ⚙️floss, который может извлекать не только статичные строки из бинаря, но и, например, те, собираются или декодируются во время выполнения программы в стеке памяти. Пробуем найти сетевые адреса (URL, IP, домены), пути к файлам и каталогам, ключи реестра, с которыми может взаимодействовать программа, а также командные строки
8. Анализ импортируемых и экспортируемых функций исполняемого файла
⚙️ CFF Explorer, pestudio, DiE или PE-bear: секции Import Directory и Export Directory. Например, UrlDownloadToFile - загрузка файла на диск, а (GetKeyState AND GetAsyncKeyState) OR SetWindowsHookEx - характерны для кейлоггера. В остальном может помочь https://malapi.io/ или та же документация. Важно! Сам факт наличия импортируемых функций в PE-файле не гарантирует их реального использования в коде
9*. Ну и, в конце концов, попробовать погонять через ⚙️ capa. А чем черт не шутит?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥43❤28
Это, конечно, не пятничный опрос в канале, но ребята, мы снова в топе! 🍻
🔥38 13❤8 1