README.hta
2.75K subscribers
183 photos
50 files
122 links
Что-то из области информационной безопасности. Чаще реагирование, форензика и чаще на русском, но тут как пойдет

Рекламу не размещаю

Hope you enjoy!
All opinions are my own @ant19ova
Download Telegram
Forwarded from ESCalator
Yara Yara Daze

Всем, кто занимается malware analysis, точно знаком такой инструмент, как YARA 😉. С помощью него во многих компаниях 🔴 составляют наборы сигнатурных правил для определения и классификации вредоносов.

🤔 So, что такое хорошие YARA-правила? Это правила, которые могут детектировать предназначенный им класс или семейство ВПО, не детектируют ничего лишнего (false positive) и способны сохранять актуальность, даже если ВПО подвергается небольшим изменениям.

😏 Нет общего совета, как сделать хорошее YARA-правило — это зависит от сампла к самплу. Мы поделимся некоторыми Tips&Tricks про детект строк, которые будут полезны начинающим:

🔹 Не стоит забывать 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
🔥175
Недавно у нас тут был вопрос для обсуждения из разряда как отличить хорошее yara-правило от плохого. Как раз к теме, у ребят из эска вышел даже пост⬆️

Я хоть и не особо являюсь здесь профи, но тоже отмечу:
— при всей моей безудержной любви к регулярным выражениям, с ними нужно быть аккуратными и лучше использовать либо более четкие, либо вместе с другими условиями/атомами/подстроками
— еще раз подумайте о том, с каким ВПО вы работаете и что хотите найти: если ограничиваете все только хешами, рискуете многое потерять
— важно не забывать про порядок условий: идем от общего к более частному, чтобы максимально разграничивать поиск
— лучше удалять метаданные при обширном сканировании, чтобы не загружать оперативную память еще и этой информацией

Может, и вам есть, чего добавить? Соберем все бест практис в одном месте :)
Please open Telegram to view this post
VIEW IN TELEGRAM
20🔥10
Как обещала, отдаю презентации. Но у меня есть условие! Давайте после этих трех насыщенных дней мы соберем всю волю в кулак и хотя бы немного просто отдохнем 😁

P.S. Я никак не ожидала, что этот пхдейс пройдет настолько тепло, в прямом и переносном смысле этого слова. Спасибо организаторам за продуманное до мелочей мероприятие, а вам - за поддержку, внимание и абсолютно каждую встречу!
464🔥3212😁2
Подняла тут переписку годичной давности. Просто я:
🔥17
Также я:
🔥1210😁8
Но это случилось и на подкаст меня все же позвали 😁

В начале мая собрались с коллегами по цеху обсудить ключевые моменты реагирования на инциденты с применением данных киберразведки. Если вам лень (??) читать всеми признанную и горячо любимую книгу по данной теме, то по этой ссылке 🔗 - ее краткое содержание, только уже переложенное на наши реалии и с практическими примерами из жизни

А с этой биполярочкой из предыдущих постов нужно бы разобраться, конечно
🔥461210😁5
Что делать с вредоносным файлом?
Даже без детонации, отладки или реверса, можно провести его предварительный анализ в статике, чтобы сформировать предположение о назначении и функционале

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
🔥4328
Это, конечно, не пятничный опрос в канале, но ребята, мы снова в топе! 🍻
🔥381381