პროცესის მეხსიერების სკანირება
sd scan-memory ბრძანება პროცესების მეხსიერებას ფაილ-ლეს მავნე პროგრამების, ინჟიცირებული shellcode-ისა და in-memory საფრთხეების გამოსავლენად სკანირებს, რომლებიც disk-ს არასოდეს ეხება. ეს ტრადიციულ ფაილ-ზე დაფუძნებულ სკანირებს გვერდის ამვლელი მაღალი დონის საფრთხეების დასაჭერად აუცილებელია.
მოთხოვნები
- Root პრივილეგიები საჭიროა -- მეხსიერების სკანირება
/proc/<pid>/mem-ს კითხულობს, რაც root-ს ანCAP_SYS_PTRACE-ს საჭიროებს. - მხოლოდ Linux -- პროცესის მეხსიერების სკანირება ამჟამად Linux-ზეა მხარდაჭერილი. macOS-ის მხარდაჭერა გეგმიანია.
როგორ მუშაობს
პროცესის მეხსიერების სკანირება გაშვებული პროცესის ვირტუალური მეხსიერების მართვებს კითხულობს და ფაილის სკანირებისთვის გამოყენებულ იმავე გამოვლენის კონვეიერს იყენებს:
- მეხსიერების რეგიონების ჩამოთვლა --
/proc/<pid>/maps-ის პარსინგი წასაკითხი მეხსიერების სეგმენტების (heap, stack, ანონიმური მართვები, mapped ფაილები) საპოვნელად. - მეხსიერების შინაარსის წაკითხვა -- ყოველი რეგიონის
/proc/<pid>/mem-დან წაკითხვა. - YARA წესების სკანი -- in-memory YARA წესების გამოყენება, ოპტიმიზირებული shellcode შაბლონების, ინჟიცირებული DLL-ებისა და მეხსიერებაში ცნობილი მავნე პროგრამის სიგნატურების გამოსავლენად.
- შაბლონ-ანალიზი -- საეჭვო შაბლონების შემოწმება, მათ შორის RWX მეხსიერების რეგიონები, ფაილ-ლეს მართვებში PE headers და ცნობილი exploit payload-ები.
საბაზისო გამოყენება
ყველა გაშვებული პროცესის სკანირება:
sudo sd scan-memoryPID-ით კონკრეტული პროცესის სკანირება:
sudo sd scan-memory --pid 1234რამდენიმე კონკრეტული პროცესის სკანირება:
sudo sd scan-memory --pid 1234 --pid 5678 --pid 9012ბრძანების პარამეტრები
| პარამეტრი | მოკლე | ნაგულისხმევი | აღწერა |
|---|---|---|---|
--pid | -p | ყველა | მხოლოდ მითითებული პროცესის ID-ის სკანირება (განმეორებადი) |
--json | -j | გამორთ. | შედეგების JSON ფორმატში გამოტანა |
--exclude-pid | არცერთი | კონკრეტული PID-ების სკანირებიდან გამორიცხვა | |
--exclude-user | არცერთი | კონკრეტული მომხმარებლის პროცესების გამორიცხვა | |
--min-region-size | 4096 | სკანირებისთვის მეხსიერების მინიმალური რეგიონის ზომა (ბაიტი) | |
--skip-mapped-files | გამორთ. | ფაილ-backed მეხსიერების რეგიონების გამოტოვება |
გამოტანის მაგალითი
sudo sd scan-memoryPRX-SD Memory Scan Report
=========================
Processes scanned: 142
Memory regions scanned: 8,451
Total memory scanned: 4.2 GB
[MALICIOUS] PID 3847 (svchost)
Region: 0x7f4a00000000-0x7f4a00040000 (anon, RWX)
Match: YARA rule: memory_cobalt_strike_beacon
Details: CobaltStrike Beacon shellcode detected in anonymous RWX mapping
[SUSPICIOUS] PID 12045 (python3)
Region: 0x7f8b10000000-0x7f8b10010000 (anon, RWX)
Match: Pattern analysis
Details: Executable code in anonymous RWX region, possible shellcode injection
Duration: 12.4sJSON გამოტანა
sudo sd scan-memory --pid 3847 --json{
"scan_type": "memory",
"timestamp": "2026-03-21T15:00:00Z",
"processes_scanned": 1,
"regions_scanned": 64,
"threats": [
{
"pid": 3847,
"process_name": "svchost",
"region_start": "0x7f4a00000000",
"region_end": "0x7f4a00040000",
"region_perms": "rwx",
"region_type": "anonymous",
"verdict": "malicious",
"rule": "memory_cobalt_strike_beacon",
"description": "CobaltStrike Beacon shellcode detected"
}
]
}გამოყენების შემთხვევები
ინციდენტზე რეაგირება
აქტიური გამოძიების დროს ყველა პროცესის კომპრომეტირებული სერვისების საპოვნელად სკანირება:
sudo sd scan-memory --json > /evidence/memory-scan-$(date +%s).jsonფაილ-ლეს მავნე პროგრამის გამოვლენა
თანამედროვე მავნე პროგრამა ხშირად disk-ზე ჩაწერის გარეშე მხოლოდ მეხსიერებაში სრულდება. გავრცელებული ტექნიკები:
- პროცესის ინჟექცია -- მავნე პროგრამა
ptrace-ით ან/proc/pid/memჩაწერებით ლეგიტიმური პროცესებში კოდს ანჟიცირებს - Reflective DLL ჩატვირთვა -- DLL ფაილური სისტემის შეხების გარეშე მეხსიერებიდან იტვირთება
- Shellcode-ის შესრულება -- Raw shellcode RWX მეხსიერებაში განაწილდება და პირდაპირ სრულდება
sd scan-memory ამ შაბლონებს ამ ინდიკატორებზე ძებნით ადგენს:
| ინდიკატორი | აღწერა |
|---|---|
| RWX ანონიმური მართვები | ფაილ-ლეს მეხსიერებაში შესრულებადი კოდი |
| მეხსიერებაში PE headers | Windows PE სტრუქტურები Linux პროცესის მეხსიერებაში (კროს-პლატფორმული payload-ები) |
| ცნობილი shellcode სიგნატურები | Metasploit, CobaltStrike, Sliver beacon შაბლონები |
| საეჭვო syscall stub-ები | Hooked ან patched syscall entry points |
სერვერის ჯანმრთელობის შემოწმება
პროდაქციულ სერვერებზე პერიოდული მეხსიერების სკანების გაშვება:
# cron-ში დამატება: ყოველ 6 საათში სკანი
0 */6 * * * root /usr/local/bin/sd scan-memory --json --exclude-user nobody >> /var/log/prx-sd/memory-scan.log 2>&1წარმადობაზე გავლენა
მეხსიერების სკანირება პროცესის მეხსიერებას კითხულობს და შეიძლება I/O-ს მოკლედ გაზარდოს. პროდაქციულ სერვერებზე დაბალი დატვირთვის პერიოდებში სკანირებაზე ან არაკრიტიკული პროცესების გამორიცხვაზე იფიქრეთ.
შეზღუდვები
- მეხსიერების სკანირება სკანის დროს პროცესის მეხსიერების სნეფ-შოტს კითხულობს. სწრაფად ცვალებადი მეხსიერების რეგიონები შეიძლება არასრულ შედეგებს გამოიღებს.
- ბირთვის მეხსიერება
scan-memory-ით არ სკანირდება. ბირთვ-დონის საფრთხეების გამოსავლენადsd check-rootkit-ის გამოყენება. - ძლიერ ობფუსცირებული ან დაშიფრული in-memory payload-ები შეიძლება YARA წესებს გაასცდნენ. შაბლონ-ანალიზის შრე მეორადი გამოვლენის მექანიზმს გვთავაზობს.
შემდეგი ნაბიჯები
- Rootkit-ის გამოვლენა -- ბირთვ- და userspace rootkit-ების გამოვლენა
- ფაილებისა და დირექტორიების სკანირება -- ტრადიციული ფაილ-ზე დაფუძნებული სკანირება
- YARA წესები -- მეხსიერების სკანირებისთვის გამოყენებული rule engine
- გამოვლენის ძრავა -- ყველა გამოვლენის შრის ერთობლივი მუშაობა