YARA Rules: কাস্টম সিগনেচার তৈরির মাধ্যমে ম্যালওয়্যারের নির্দিষ্ট প্যাটার্ন শনাক্ত করার জন্য ইয়ারা রুলস লেখার কমপ্লিট গাইড এবং প্রফেশনাল ব্যবহার!
YARA Rules লেখার সিনট্যাক্স, কৌশল, ম্যালওয়্যার সনাক্তকরণে প্রায়োগিক ব্যবহার এবং পেশাদার নিয়ম রচনার পদ্ধতি।
ম্যালওয়্যার বিশ্লেষকদের মধ্যে একটি পুরনো প্রবাদ আছে — "যিনি pattern চিনতে পারেন, তিনি ম্যালওয়্যার চিনতে পারেন।" এই নীতির উপর ভিত্তি করে VirusTotal-এর প্রতিষ্ঠাতা Victor Alvarez ২০০৮ সালে YARA সরঞ্জাম তৈরি করেছিলেন। YARA, যার পূর্ণরূপ "Yet Another Recursive Acronym," ম্যালওয়্যার বিশ্লেষণ এবং threat hunting-এর সবচেয়ে গুরুত্বপূর্ণ সরঞ্জামগুলোর একটি হয়ে উঠেছে। এটি একটি প্যাটার্ন-ম্যাচিং ইঞ্জিন যা বিশ্লেষকদের কাস্টম signatures লিখতে দেয় যা ফাইল, প্রসেস মেমরি এবং নেটওয়ার্ক স্ট্রিমে নির্দিষ্ট বৈশিষ্ট্য সনাক্ত করতে পারে।
YARA কেন প্রয়োজন
ঐতিহ্যবাহী অ্যান্টিভাইরাস হ্যাশ-ভিত্তিক সনাক্তকরণের উপর নির্ভর করে — একটি ফাইলের MD5 বা SHA256 হ্যাশ একটি পরিচিত ম্যালওয়্যার ডাটাবেসের সাথে মেলে কিনা পরীক্ষা করে। কিন্তু আক্রমণকারীরা ফাইলে একটি বাইট পরিবর্তন করেই হ্যাশ সম্পূর্ণ পরিবর্তন করে দিতে পারে। ফলে polymorphic এবং metamorphic ম্যালওয়্যারের বিরুদ্ধে হ্যাশ-ভিত্তিক সনাক্তকরণ কার্যকর নয়।
YARA এই সমস্যার সমাধান দেয় কাঠামোগত প্যাটার্ন সনাক্তকরণের মাধ্যমে। একটি YARA নিয়ম একটি ম্যালওয়্যার পরিবারের আচরণগত বৈশিষ্ট্য — অনন্য স্ট্রিং, কোড সিকোয়েন্স, এনক্রিপশন কী, বা ফাইল কাঠামো — সনাক্ত করতে পারে এবং সেই পরিবারের সমস্ত variants ধরতে পারে, এমনকি নতুন samples যা এখনও antivirus database-এ নেই।
YARA-এর আরেকটি শক্তি হলো এটি একটি ভাষা যা মানব-পাঠযোগ্য এবং বিশ্লেষকদের মধ্যে ভাগ করা যায়। একটি ভালো YARA নিয়ম শুধু একটি detection signature নয়, বরং ম্যালওয়্যার পরিবার সম্পর্কে একটি নথি।
YARA নিয়মের মৌলিক কাঠামো
প্রতিটি YARA নিয়ম তিনটি প্রধান বিভাগ নিয়ে গঠিত: meta, strings, এবং condition। একটি সরল উদাহরণ:
rule SimpleMalware
{
meta:
author = "Analyst Name"
date = "2026-05-25"
description = "Detects example malware family"
reference = "https://example.com/report"
hash = "abc123..."
strings:
$a = "evil_function_name"
$b = { 4D 5A 90 00 03 00 00 00 }
$c = /HTTP\/1\.[01] 200 OK.{0,100}backdoor/
condition:
$a and ($b or $c)
}
meta বিভাগে তথ্যবহুল মেটাডেটা থাকে যা ম্যাচ আচরণে প্রভাব ফেলে না কিন্তু বিশ্লেষকদের জন্য মূল্যবান।
strings বিভাগে সনাক্তকারী প্যাটার্ন থাকে। তিন ধরনের string সমর্থিত:
- Text strings: ASCII বা Unicode টেক্সট
- Hex strings: বাইনারি প্যাটার্ন
- Regular expressions: জটিল প্যাটার্নের জন্য
condition বিভাগে লজিকাল এক্সপ্রেশন থাকে যা নির্ধারণ করে কখন নিয়ম ম্যাচ করবে।
String Modifiers এবং উন্নত প্যাটার্ন
YARA-এর string বিভাগে অনেক modifier আছে যা প্যাটার্ন ম্যাচিং আরও নমনীয় করে:
strings:
$s1 = "password" nocase
$s2 = "malicious" wide
$s3 = "shell" ascii wide
$s4 = "command" fullword
$s5 = "encrypted" xor(0x01-0xff)
$s6 = "header" base64
nocase কেস-সংবেদনশীল ম্যাচ অক্ষম করে। wide UTF-16 এনকোডিং খোঁজে (Windows-এ সাধারণ)। ascii wide উভয়ই খোঁজে। fullword শুধু সম্পূর্ণ শব্দ ম্যাচ করে। xor সমস্ত সম্ভাব্য XOR কীর সাথে ম্যাচ করে — যা অস্পষ্ট ম্যালওয়্যার সনাক্তকরণে অত্যন্ত কার্যকর। base64 Base64-এনকোডেড সংস্করণ খোঁজে।
Hex strings-এ wildcards ব্যবহার করা যায়:
$opcode = { 8B 45 ?? 89 [2-4] 5D C3 }
এখানে ?? একটি জোকার বাইট প্রতিনিধিত্ব করে এবং [2-4] ২ থেকে ৪ বাইটের যেকোনো সিকোয়েন্স প্রতিনিধিত্ব করে। এটি বিশেষভাবে কার্যকর সম্পাদনযোগ্য কোডের প্যাটার্ন সনাক্ত করতে যেখানে নির্দিষ্ট রেজিস্টার বা ঠিকানা পরিবর্তিত হতে পারে।
Condition-এর শক্তি
Condition বিভাগই YARA-এর প্রকৃত শক্তির স্থান। সরল লজিকাল অপারেটর ছাড়াও জটিল গণনা সমর্থিত:
condition:
filesize < 1MB and
uint16(0) == 0x5A4D and
3 of ($string*) and
#api > 5
filesize < 1MB শুধু ১MB-এর কম ফাইল ম্যাচ করে। uint16(0) == 0x5A4D PE ফাইল header (MZ) সনাক্ত করে। 3 of ($string*) যেকোনো ৩টি $string-প্রিফিক্স string ম্যাচ হলে। #api > 5 $api string ৫ বারের বেশি দেখা গেলে।
PE মডিউল YARA-এর সবচেয়ে শক্তিশালী বৈশিষ্ট্যগুলোর একটি। এটি Windows executable-এর কাঠামো বিশ্লেষণ করতে দেয়:
import "pe"
rule PEAnalysis
{
condition:
pe.is_pe and
pe.number_of_sections > 5 and
pe.imports("kernel32.dll", "VirtualAlloc") and
pe.imphash() == "abc123def456..."
}
pe.imphash() ম্যালওয়্যার পরিবার সনাক্তকরণে অত্যন্ত কার্যকর কারণ একই imports সহ ম্যালওয়্যার variants প্রায়ই একই imphash থাকে।
অন্যান্য দরকারী মডিউল: elf (Linux ELF বাইনারি), math (entropy গণনা), hash (MD5/SHA), এবং dotnet (.NET assemblies)।
প্রকৃত ম্যালওয়্যার পরিবারের জন্য নিয়ম লেখা
একটি প্রকৃত YARA নিয়ম তৈরির প্রক্রিয়া বিবেচনা করুন। ধরা যাক আপনি একটি নতুন র্যানসমওয়্যার পরিবার বিশ্লেষণ করেছেন এবং এর জন্য একটি detection নিয়ম তৈরি করতে চান।
প্রথমে static analysis-এ ফাইলটি IDA Pro বা Ghidra-তে খুলে অনন্য strings এবং কোড প্যাটার্ন চিহ্নিত করুন:
- র্যানসমওয়্যারের নাম বা mutex string
- C2 সার্ভার URL বা ডোমেইন প্যাটার্ন
- এনক্রিপশন রুটিনের অনন্য কোড সিকোয়েন্স
- র্যানসম নোটের অংশ
- অনন্য function names বা export
তারপর dynamic analysis-এ ম্যালওয়্যার চালান এবং অতিরিক্ত artifacts সংগ্রহ করুন:
- প্রসেস তৈরির ক্রম
- registry modifications
- নেটওয়ার্ক traffic patterns
এই তথ্য ব্যবহার করে একটি নিয়ম তৈরি করুন:
rule Ransomware_FamilyX
{
meta:
author = "Threat Researcher"
date = "2026-05-25"
family = "FamilyX"
version = "1.0"
strings:
$note1 = "All your files have been encrypted!" wide
$note2 = "Send 0.5 BTC to recover your data" ascii
$mutex = "Global\\FamilyX_v2_running" wide
$key1 = { 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 45 ?? 48 8D 4D }
$domain = /[a-z0-9]{16,32}\.onion/ ascii
$api1 = "CryptGenKey" wide
$api2 = "BCryptEncrypt" wide
condition:
uint16(0) == 0x5A4D and
filesize < 5MB and
2 of ($note*) and
($mutex or $key1) and
any of ($api*)
}
Threat Hunting-এ YARA
YARA শুধু ম্যালওয়্যার সনাক্তকরণের জন্য নয়; এটি threat hunting-এর একটি শক্তিশালী সরঞ্জাম। বিশ্লেষকরা TTPs (Tactics, Techniques, and Procedures) ভিত্তিক নিয়ম লিখে আক্রমণকারীদের সাধারণ আচরণ সনাক্ত করেন।
উদাহরণস্বরূপ, Cobalt Strike beacon সনাক্তকরণের জন্য একটি নিয়ম:
rule CobaltStrike_Beacon_Config
{
strings:
$config_decode = { 2E ?? ?? 69 6A ?? ?? }
$beacon1 = "%s as %s\\%s: %d" wide
$beacon2 = "ReflectiveLoader"
condition:
2 of them
}
মেমরি স্ক্যানিং থ্রেট হান্টিং-এর আরেকটি গুরুত্বপূর্ণ ক্ষেত্র। YARA চলমান প্রসেসগুলোর মেমরি স্ক্যান করতে পারে, যা packed ম্যালওয়্যার সনাক্তকরণে কার্যকর। প্যাকড ম্যালওয়্যার ডিস্কে এনক্রিপ্টেড থাকে কিন্তু এক্সিকিউশনের সময় মেমরিতে decrypt হয়।
THOR Lite, LOKI, এবং Volatility-এর yarascan plugin এই ধরনের ক্ষমতা প্রদান করে।
YARA এবং SIEM/EDR ইন্টিগ্রেশন
আধুনিক নিরাপত্তা প্ল্যাটফর্মগুলো YARA-কে সরাসরি সংহত করে। Microsoft Defender ATP, CrowdStrike Falcon, এবং অন্যান্য EDR সমাধান কাস্টম YARA নিয়ম গ্রহণ করতে পারে এবং সংস্থার সম্পূর্ণ এন্ডপয়েন্ট ফ্লিটে প্রয়োগ করতে পারে।
VirusTotal-এর YARA Hunting বৈশিষ্ট্য পেইড গ্রাহকদের তাদের নিজস্ব নিয়ম সমগ্র VT corpus-এ চলমানভাবে প্রয়োগ করার অনুমতি দেয়। যখন নতুন কোনো ম্যাচিং sample আপলোড হয়, একটি notification পাঠানো হয়। এটি প্রাথমিক ম্যালওয়্যার পরিবার সনাক্তকরণের জন্য অত্যন্ত মূল্যবান।
Hybrid Analysis, JoeSandbox এবং অন্যান্য sandboxing প্ল্যাটফর্মও কাস্টম YARA নিয়ম সমর্থন করে।
False Positive এড়িয়ে চলা
ভালো YARA নিয়ম লেখার সবচেয়ে বড় চ্যালেঞ্জ হলো False Positives হ্রাস করা। একটি অতি-বিস্তৃত নিয়ম বৈধ সফটওয়্যারকে ম্যালওয়্যার হিসেবে চিহ্নিত করতে পারে, যা SOC-এর জন্য বিশাল সমস্যা সৃষ্টি করে।
কিছু সেরা অনুশীলন:
- শুধু "evil" stringগুলোতে নির্ভর করবেন না। একাধিক প্যাটার্নের সংমিশ্রণ ব্যবহার করুন।
- file size সীমা যোগ করুন। ৫০MB-এর Word ডকুমেন্ট সাধারণত র্যানসমওয়্যার নয়।
- file format constraints প্রয়োগ করুন।
uint16(0) == 0x5A4Dদিয়ে শুধু PE files লক্ষ্য করুন। - বৈধ সফটওয়্যারের একটি বড় corpus-এ নিয়ম পরীক্ষা করুন।
goodwarecorpus হিসেবে Microsoft, Adobe, এবং অন্যান্য বৈধ vendors-এর binaries ব্যবহার করুন। - VirusTotal Retrohunt ব্যবহার করুন আপনার নিয়ম পুরনো ফাইলগুলোর বিরুদ্ধে পরীক্ষা করতে।
YARA-X: ভবিষ্যত
২০২৩ সালে VirusTotal YARA-X ঘোষণা করেছে, যা Rust-এ পুনঃলেখা হয়েছে। YARA-X অরিজিনাল YARA-এর সাথে সিনট্যাক্স-সামঞ্জস্যপূর্ণ কিন্তু উন্নত পারফরম্যান্স, ভালো error messages এবং আরও শক্তিশালী টাইপ সিস্টেম প্রদান করে।
YARA-X কম মেমরি ব্যবহার করে এবং বড় corpora-তে scan গতি উল্লেখযোগ্যভাবে দ্রুত। বিশ্লেষকদের জন্য নতুন প্রকল্পে YARA-X গ্রহণ করার সুপারিশ করা হয়।
বাস্তব উদাহরণ: APT গ্রুপ ট্র্যাকিং
পরিশীলিত APT গ্রুপগুলো প্রায়ই কাস্টম সরঞ্জাম ব্যবহার করে যা সাধারণ ম্যালওয়্যার ডাটাবেসে নেই। YARA এই ধরনের সরঞ্জাম সনাক্তকরণের জন্য অপরিহার্য।
উদাহরণস্বরূপ, Lazarus Group-এর backdoors সনাক্ত করতে গবেষকরা ইউনিক encryption schemes, mutex names, এবং কোড প্যাটার্ন চিহ্নিত করেছেন:
rule Lazarus_Backdoor_Common
{
meta:
actor = "Lazarus"
reference = "https://example.com/lazarus-report"
strings:
$code1 = { 8B 04 [0-3] 33 04 [0-3] 89 [2-5] 83 C2 04 }
$mutex_pattern = /MicrosoftZune[A-Z]{4}/
$string1 = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0)"
condition:
uint16(0) == 0x5A4D and
1 of ($code*) and
any of ($mutex_pattern, $string1)
}
এই ধরনের নিয়ম বিভিন্ন campaigns-এ ব্যবহৃত variants সনাক্ত করতে পারে এবং attribution-এ সাহায্য করে।
প্রতিরোধ ও পেশাদার অনুশীলন
YARA নিয়ম রচনায় দক্ষ হতে নিম্নলিখিত অনুশীলন অনুসরণ করুন:
YARA Forge, Awesome YARA এবং অন্যান্য সম্প্রদায়-চালিত সংগ্রহ থেকে শিখুন। অভিজ্ঞ বিশ্লেষকদের নিয়ম পড়া অমূল্য।
প্রতিটি নিয়মে যথাযথ metadata যোগ করুন। অন্যরা এবং ভবিষ্যত নিজে নিয়মটি কেন তৈরি হয়েছিল তা বুঝতে পারা উচিত।
নিয়মগুলো version control-এ রাখুন। Git ব্যবহার করে যৌথভাবে নিয়ম তৈরি করুন।
CI/CD pipeline তৈরি করুন যা নিয়ম পরিবর্তনগুলো goodware এবং known malware corpora-এর বিরুদ্ধে স্বয়ংক্রিয়ভাবে পরীক্ষা করে।
নিয়মিতভাবে নিয়ম পর্যালোচনা এবং পরিমার্জন করুন। ম্যালওয়্যার পরিবার বিকশিত হয় এবং পুরনো নিয়ম প্রাসঙ্গিকতা হারাতে পারে।
সম্প্রদায়ের সাথে নিয়ম ভাগ করুন। YARA-এর শক্তি যৌথ জ্ঞানে। MalwareBazaar, MISP এবং অন্যান্য প্ল্যাটফর্ম এতে সাহায্য করে।
YARA Rules আধুনিক ম্যালওয়্যার বিশ্লেষণ এবং threat hunting-এর একটি অপরিহার্য সরঞ্জাম। সহজ সিনট্যাক্স কিন্তু গভীর ক্ষমতার এই ভাষা নিরাপত্তা পেশাজীবীদের পরিচিত হ্যাশ-ভিত্তিক সনাক্তকরণের সীমাবদ্ধতা অতিক্রম করতে এবং আচরণগত প্যাটার্নের ভিত্তিতে ম্যালওয়্যার পরিবার সনাক্ত করতে দেয়। একটি ভালো-লেখা YARA নিয়ম শুধু একটি detection signature নয়, বরং একটি জীবন্ত নথি যা ম্যালওয়্যার পরিবারের সম্পর্কে জ্ঞান এনকোড করে এবং সম্প্রদায়ের মধ্যে ভাগ করা যায়। যেকোনো গুরুতর ম্যালওয়্যার বিশ্লেষক, threat hunter, বা SOC বিশ্লেষকের জন্য YARA-তে দক্ষতা একটি মৌলিক প্রয়োজনীয়তা। যারা নতুন শুরু করছেন, তাদের জন্য VirusTotal-এর YARA documentation এবং Inquest-এর YARA tutorials চমৎকার শুরুর পয়েন্ট।
আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ YARA Rules MCQ Quiz-টি দিন!
Related articles
AMSI Patching: Deconstructing the Art of Disabling Antivirus via Memory Manipulation
8 min
API Unhooking: How Malware Evades EDR System Surveillance
8 min
Bootkit Analysis: Detecting Malware Intrusion Before the Operating System Boots
8 min
EDR Evasion Techniques: How Modern Malware Bypasses Security Systems
11 min

