הערה חשובה! מומלץ בתחילת התהליך להמיר את ה-VMDK ל-raw image ולהשתמש בפורמט הזה (בגלל שהוספתי כבר תמונות מסך ולא היה לי כוח לייצר אותם מחדש, אין ביטוי לשינוי הזה - אלא רק בנקודה שבה נחסמתי, כאשר ניסתי לטעון את האימג’ לכתיבה. ראו פקודה לביצוע זאת לקראת סוף הפוסט, חפשו אחר המחרוזת qemu-img convert
.
אז יש בידי Image של מכונת לינוקס שהייתה בה פעילות חשודה, מדובר במכונת EC2 באמזון שבוצע Export שלה ל-OVA. לצערי אין לי את פרטי ההתחברות, אבל ידעתי שזה לא ימנע ממני מלגשת לתוכן האימג’ או אפילו להריץ את ה-Image אם אצטרך.
OVA זה למעשה אריזה של מספר קבצים (קונפיגורציה, דיסק, גיבוב…), השלב הראשון הוא לחלץ אותם בעזרת tar xvf
. אנחנו נקבל 3 קבצים (או יותר, אם יש יותר מדיסק אחד), והקבצים שמעניינים אותנו הם אלו שמסתיימים ב-vmdk
.
אם אנחנו מעוניין לטעון את ה-rootfs כ-Read-only נוכל לעשות זאת כעת ובקלות, זה יספיק לנו עבור חקירה סטטית של הקבצים, העתקה שלהם וחקירה שאינה אקטיבית בתוך האימג’ החשוד.
guestmount -a [VMDK Image] -i --ro [Mount Path]
אך אנחנו רוצים לבצע שינויים באימג’, לכן נצטרך להשתמש בפרמטר --rw
שדורש מאיתנו לציין את ה-device (או את המחיצה). נעזר בפקודה guestfish
בשביל לראות מבנה מהחיצות של הדיסק.
guestfish --ro -i -a ./export-i-REDACTED-disk-1.vmdk
ואנחנו יכולים לראות כי אנחנו צריכים לטעון את מחיצה /dev/sda3
. גילתי שאני לא מצליח לטעון את הדיסק (וספציפית המחיצה) כאשר הדיסק בפורמט VMDK (במצב כתיבה), ואני צריך להמיר אותו ל-raw (עוד מידע). אז תבצעו את ההמרה.
qemu-img convert -f vmdk -O raw ./export-i-REDACTED-disk-1.vmdk ./export-i-REDACTED-disk-1.img
ולאחר מכן, נטען את הדיסק עם הרשאות read/write, ונוסיף ליוזר הדיפולטיבי ec2-user
את המפתח הפומבי שלי. אפשר גם לערוך את הקובץ /etc/passwd
או /etc/shadow
בשביל לשנות את הססמה אם אנחנו רוצים לגשת דרך הטרמינל ולא דרך SSH.
guestmount -a ./export-i-REDACTED-disk-1.img -m /dev/sda3 --rw /mnt/rw
ולאחר עריכת האימג’ הנוכחי, אוכל להתחבר אליו בעזרת המפתח הפרטי test-lab
והיוזר ec2-user
.
קריאה נוספת:
https://libguestfs.org/guestmount.1.html
https://libguestfs.org/guestfish.1.html
https://linuxconfig.org/converting-virtualbox-ova-to-qcow2-for-qemu-kvm-deployment