ฉันจะดัมพ์หน่วยความจำฟิสิคัลใน Linux ได้อย่างไร?


22

หนึ่งจะสร้างการถ่ายโอนข้อมูลของหน่วยความจำกายภาพ (RAM) ใน Linux ได้อย่างไร

มีซอฟต์แวร์อะไรถ้ามีให้เพื่อวัตถุประสงค์นี้?

ฉันได้อ่านแล้วว่าไม่ควรเขียนไปยังดิสก์ภายในเครื่อง แต่ควรส่งข้อมูลผ่านเครือข่าย ใครรู้ลักษณะที่นี่? อีเธอร์เน็ตจะทำงานเพื่อจุดประสงค์นี้หรือมีคำสั่งใดที่จะลดจำนวนการแคชก่อนที่จะส่งไปยังดิสก์หรือไม่

WinHex บน Windows มีฟังก์ชันดังกล่าว:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันกำลังมองหาสิ่งที่คล้ายกันบน Linux

คำตอบ:


22

นี่คือหน้า eHow ในวิธีการถ่ายโอนข้อมูลหน่วยความจำ Linux

Linux มีอุปกรณ์เสมือนสองตัวสำหรับจุดประสงค์นี้ ' /dev/mem' และ ' /dev/kmem' ถึงแม้ว่าการกระจายจำนวนมากจะปิดการใช้งานโดยค่าเริ่มต้นด้วยเหตุผลด้านความปลอดภัย ' /dev/mem' เชื่อมโยงกับหน่วยความจำระบบกายภาพขณะที่ ' /dev/kmem' แมปไปยังพื้นที่หน่วยความจำเสมือนทั้งหมดรวมถึงการสลับใด ๆ อุปกรณ์ทั้งสองทำงานเป็นไฟล์ปกติและสามารถใช้กับ dd หรือเครื่องมือจัดการไฟล์อื่น ๆ

ที่นำไปสู่หน้า ForensicsWiki บนเครื่องมือหน่วยความจำการถ่ายภาพกับส่วน Linux / Unix ,

  1. dd บนระบบ Unix โปรแกรม dd สามารถใช้เพื่อจับเนื้อหาของหน่วยความจำกายภาพโดยใช้ไฟล์อุปกรณ์ (เช่น / dev / mem และ / dev / kmem) ในเคอร์เนล Linux ล่าสุด / dev / kmem ใช้งานไม่ได้อีกต่อไป ในเมล็ดล่าสุดยิ่งขึ้น / dev / mem มีข้อ จำกัด เพิ่มเติม และในล่าสุด / dev / mem จะไม่สามารถใช้งานได้ตามค่าเริ่มต้นอีกต่อไป ตลอด 2.6 เคอร์เนลซีรีส์มีแนวโน้มที่จะลดการเข้าถึงหน่วยความจำโดยตรงผ่านไฟล์อุปกรณ์หลอก ดูตัวอย่างเช่นข้อความที่มาพร้อมกับแพทช์นี้: http://lwn.net/Articles/267427/ บนระบบ Red Hat (และ distros ที่ได้รับเช่น CentOS) สามารถโหลดไดรเวอร์ความผิดพลาดเพื่อสร้างอุปกรณ์หลอกสำหรับการเข้าถึงหน่วยความจำ ("modprobe crash")
  2. Second Look ผลิตภัณฑ์วิเคราะห์หน่วยความจำเชิงพาณิชย์มีความสามารถในการรับหน่วยความจำจากระบบ Linux ไม่ว่าจะเป็นแบบโลคัลหรือจากเป้าหมายระยะไกลผ่าน DMA หรือผ่านเครือข่าย มาพร้อมกับโมดูล Physical Memory Access Driver (PMAD) ที่รวบรวมไว้ล่วงหน้าสำหรับหลายร้อยเมล็ดจากการกระจาย Linux ที่ใช้กันมากที่สุด
  3. Idetect (Linux)
  4. fmem (Linux)
    fmem เป็นโมดูลเคอร์เนลที่สร้างอุปกรณ์ / dev / fmem คล้ายกับ / dev / mem แต่ไม่มีข้อ จำกัด อุปกรณ์นี้ (ฟิสิคัลแรม) สามารถคัดลอกได้โดยใช้ dd หรือเครื่องมืออื่น ทำงานบน 2.6 Linux kernels ภายใต้ GNU GPL
  5. Goldfish
    Goldfish เป็นเครื่องมือทางนิติวิทยาศาสตร์สดของ Mac OS X สำหรับใช้งานโดยการบังคับใช้กฎหมายเท่านั้น วัตถุประสงค์หลักคือเพื่อให้อินเทอร์เฟซที่ใช้งานง่ายเพื่อถ่ายโอนข้อมูล RAM ระบบของเครื่องเป้าหมายผ่านการเชื่อมต่อ Firewire จากนั้นจะแยกรหัสผ่านเข้าสู่ระบบของผู้ใช้ปัจจุบันและเศษเล็กเศษน้อยของการสนทนา AOL Instant Messenger ใด ๆ ที่เปิดอยู่ซึ่งอาจพร้อมใช้งาน การบังคับใช้กฎหมายอาจติดต่อ goldfish.ae เพื่อดาวน์โหลดข้อมูล

ดูเพิ่มเติม: การวิเคราะห์หน่วยความจำลินุกซ์
นอกจากนี้ยังมีGDBที่ใช้กันทั่วไปใน Linuxes ส่วนใหญ่
และคุณควรหลีกเลี่ยงการเขียนบนหน่วยความจำที่ไม่รู้จักซึ่งอาจนำไปสู่ความเสียหายของระบบ


1
มีใครลองทำสิ่งนี้ในระบบ Ubuntu ล่าสุดหรือไม่?

1
ไม่ / dev / mem หรือ / dev / kmem ในระบบเดเบียนของฉัน
Rob

ฉันเพิ่งทำมันบน CentOS 7.x VM ของฉัน
slm

4

ความผันผวนดูเหมือนว่าจะทำงานได้ดีและรองรับ Windows และ Linux

จากเว็บไซต์ของพวกเขา:

ความผันผวนรองรับการถ่ายโอนข้อมูลหน่วยความจำจาก Windows และเวอร์ชั่น 32-64 บิตที่สำคัญและเซอร์วิสแพ็ครวมถึง XP, 2003 Server, Vista, Server 2008, Server 2008 R2 และ Seven ไม่ว่าการถ่ายโอนข้อมูลหน่วยความจำของคุณจะอยู่ในรูปแบบดิบดัมพ์ความผิดพลาดของ Microsoft ไฟล์ไฮเบอร์เนตหรือสแน็ปช็อตเครื่องเสมือนความผันผวนสามารถทำงานได้ ขณะนี้เรายังสนับสนุนการทิ้งหน่วยความจำ Linux ในรูปแบบ raw หรือ LiME และรวมถึงปลั๊กอิน 35+ สำหรับวิเคราะห์เคอร์เนล Linux 32- และ 64- บิตจาก 2.6.11 - 3.5.x และการแจกแจงเช่น Debian, Ubuntu, OpenSuSE, Fedora, CentOS และ ต้นแมนดเรค เรารองรับหน่วยความจำ Mac OSX 38 รุ่นจาก 10.5 ถึง 10.8.3 Mountain Lion ทั้ง 32- และ 64- บิต รองรับโทรศัพท์ Android ที่มีโปรเซสเซอร์ ARM


3

ประการที่สองดูเป็นดีวิธีที่ง่ายในการถ่ายโอนข้อมูลหน่วยความจำในลินุกซ์: http://secondlookforensics.com/

นอกจากนี้ยังมีโมดูลเคอร์เนลที่เพิ่งเปิดตัวซึ่งคุณสามารถลองใช้ชื่อ LiME: http://code.google.com/p/lime-forensics/


0

ตามการยืนยันฉันสามารถถ่ายโอนข้อมูลหน่วยความจำ CentOS 7.x VM ของฉันโดยใช้วิธีนี้:

$ head /dev/mem | hexdump -C
00000000  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
00000010  53 ff 00 f0 53 ff 00 f0  cc e9 00 f0 53 ff 00 f0  |S...S.......S...|
00000020  a5 fe 00 f0 87 e9 00 f0  53 ff 00 f0 46 e7 00 f0  |........S...F...|
00000030  46 e7 00 f0 46 e7 00 f0  57 ef 00 f0 53 ff 00 f0  |F...F...W...S...|
00000040  22 00 00 c0 4d f8 00 f0  41 f8 00 f0 fe e3 00 f0  |"...M...A.......|
00000050  39 e7 00 f0 59 f8 00 f0  2e e8 00 f0 d4 ef 00 f0  |9...Y...........|
00000060  a4 f0 00 f0 f2 e6 00 f0  6e fe 00 f0 53 ff 00 f0  |........n...S...|
00000070  ed ef 00 f0 53 ff 00 f0  c7 ef 00 f0 ed 57 00 c0  |....S........W..|
00000080  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
*
00000100  59 ec 00 f0 3d 00 c0 9f  53 ff 00 f0 ed 69 00 c0  |Y...=...S....i..|
00000110  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
*
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000afea0  00 00 00 00 00 00 00 00  aa aa aa 00 aa aa aa 00  |................|
000afeb0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
...
...
000b0000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
000c0000  55 aa 40 e9 62 0a 00 00  00 00 00 00 00 00 00 00  |U.@.b...........|
000c0010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 49 42  |..............IB|
000c0020  4d 00 9c 80 fc 0f 75 06  e8 4f 01 e9 bc 00 80 fc  |M.....u..O......|

เนื่องจาก 55aah นี้เกิดขึ้นในช่วง c0000h-effffh เป็นไปได้ว่าส่วนหัว PNP ส่วนขยาย:

ข้อมูลอ้างอิง: ข้อมูลจำเพาะการบูต BIOS

3.3 อุปกรณ์ที่มีส่วนขยาย PnP

อุปกรณ์ IPL ทั้งหมดที่มี ROM ตัวเลือกจะต้องมีส่วนหัว ROM ตัวเลือกที่ถูกต้องซึ่งอยู่ระหว่างหน่วยความจำระบบที่อยู่ C0000h และ EFFFFh ในขอบเขต 2k และเริ่มต้นด้วย 55AAh การควบคุมการบู๊ตอุปกรณ์สามารถควบคุมได้หากมีส่วนหัว PnP Expansion ส่วนหัวของส่วนขยายซึ่งมีที่อยู่อยู่ภายในส่วนหัว ROM ตัวเลือกมาตรฐานที่ออฟเซ็ต + 1Ah มีข้อมูลสำคัญที่ใช้ในการกำหนดค่าอุปกรณ์ นอกจากนี้ยังมีตัวชี้ไปยังรหัสใน ROM ตัวเลือกของอุปกรณ์ (BCV หรือ BEV) ที่ BIOS จะเรียกเพื่อบู๊ตจากอุปกรณ์ ดูภาคผนวกกสำหรับโครงสร้างของส่วนขยาย PnP มีสองวิธีที่อุปกรณ์ IPL ที่มีส่วนหัว PnP Expansion สามารถบู๊ตได้ มันจะต้องมี BCV หรือ BEV

อ้างอิง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.