Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

პროცესის მეხსიერების სკანირება

sd scan-memory ბრძანება პროცესების მეხსიერებას ფაილ-ლეს მავნე პროგრამების, ინჟიცირებული shellcode-ისა და in-memory საფრთხეების გამოსავლენად სკანირებს, რომლებიც disk-ს არასოდეს ეხება. ეს ტრადიციულ ფაილ-ზე დაფუძნებულ სკანირებს გვერდის ამვლელი მაღალი დონის საფრთხეების დასაჭერად აუცილებელია.

მოთხოვნები

  • Root პრივილეგიები საჭიროა -- მეხსიერების სკანირება /proc/<pid>/mem-ს კითხულობს, რაც root-ს ან CAP_SYS_PTRACE-ს საჭიროებს.
  • მხოლოდ Linux -- პროცესის მეხსიერების სკანირება ამჟამად Linux-ზეა მხარდაჭერილი. macOS-ის მხარდაჭერა გეგმიანია.

როგორ მუშაობს

პროცესის მეხსიერების სკანირება გაშვებული პროცესის ვირტუალური მეხსიერების მართვებს კითხულობს და ფაილის სკანირებისთვის გამოყენებულ იმავე გამოვლენის კონვეიერს იყენებს:

  1. მეხსიერების რეგიონების ჩამოთვლა -- /proc/<pid>/maps-ის პარსინგი წასაკითხი მეხსიერების სეგმენტების (heap, stack, ანონიმური მართვები, mapped ფაილები) საპოვნელად.
  2. მეხსიერების შინაარსის წაკითხვა -- ყოველი რეგიონის /proc/<pid>/mem-დან წაკითხვა.
  3. YARA წესების სკანი -- in-memory YARA წესების გამოყენება, ოპტიმიზირებული shellcode შაბლონების, ინჟიცირებული DLL-ებისა და მეხსიერებაში ცნობილი მავნე პროგრამის სიგნატურების გამოსავლენად.
  4. შაბლონ-ანალიზი -- საეჭვო შაბლონების შემოწმება, მათ შორის RWX მეხსიერების რეგიონები, ფაილ-ლეს მართვებში PE headers და ცნობილი exploit payload-ები.

საბაზისო გამოყენება

ყველა გაშვებული პროცესის სკანირება:

bash
sudo sd scan-memory

PID-ით კონკრეტული პროცესის სკანირება:

bash
sudo sd scan-memory --pid 1234

რამდენიმე კონკრეტული პროცესის სკანირება:

bash
sudo sd scan-memory --pid 1234 --pid 5678 --pid 9012

ბრძანების პარამეტრები

პარამეტრიმოკლენაგულისხმევიაღწერა
--pid-pყველამხოლოდ მითითებული პროცესის ID-ის სკანირება (განმეორებადი)
--json-jგამორთ.შედეგების JSON ფორმატში გამოტანა
--exclude-pidარცერთიკონკრეტული PID-ების სკანირებიდან გამორიცხვა
--exclude-userარცერთიკონკრეტული მომხმარებლის პროცესების გამორიცხვა
--min-region-size4096სკანირებისთვის მეხსიერების მინიმალური რეგიონის ზომა (ბაიტი)
--skip-mapped-filesგამორთ.ფაილ-backed მეხსიერების რეგიონების გამოტოვება

გამოტანის მაგალითი

bash
sudo sd scan-memory
PRX-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.4s

JSON გამოტანა

bash
sudo sd scan-memory --pid 3847 --json
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"
    }
  ]
}

გამოყენების შემთხვევები

ინციდენტზე რეაგირება

აქტიური გამოძიების დროს ყველა პროცესის კომპრომეტირებული სერვისების საპოვნელად სკანირება:

bash
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 headersWindows PE სტრუქტურები Linux პროცესის მეხსიერებაში (კროს-პლატფორმული payload-ები)
ცნობილი shellcode სიგნატურებიMetasploit, CobaltStrike, Sliver beacon შაბლონები
საეჭვო syscall stub-ებიHooked ან patched syscall entry points

სერვერის ჯანმრთელობის შემოწმება

პროდაქციულ სერვერებზე პერიოდული მეხსიერების სკანების გაშვება:

bash
# 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 წესებს გაასცდნენ. შაბლონ-ანალიზის შრე მეორადი გამოვლენის მექანიზმს გვთავაზობს.

შემდეგი ნაბიჯები

Released under the Apache-2.0 License.