SSD Forensics Challenges (Part-2)

 SSD Forensics Challenges (Part-2) အပိုင်း (၂)  

Wear Leveling  Process ဖြစ်တဲ့ Free Block နဲ့ P/E Cycle နည်းတဲ့ Block တွေပေါ်ကိုသာ  Data သိမ်းတဲ့အတွက်ကြောင့် SSD Life Span များလာပါတယ်။ ဒါပေမဲ့ Write လုပ်တဲ့ အကြိမ်အရေအတွက်များလားတဲ့အခါမှာ SSD ရဲ့  Flash တွေပေါ်မှာရှိတဲ့ Page File  (Blocks Collection) တွေက  Dirty ဖြစ်လာပါတယ်။ Dirty ဖြစ်လာတာကြောင့် SSD  Write Speed က ပုံမှန်ထက်နှေးလာပါတယ်။ Dirty ဖြစ်လာတဲ့အကြောင်းအရင်းက SSD ထဲမှာရှိတဲ့ Block တွေထဲကို Data Write တဲ့အခါမှာ Data တွေကို Write မလုပ်ခင် Block ကို ပထမဆုံး Erase လုပ်ဖို့လိုအပ်တဲ့အတွက်ကြောင့်ဖြစ်ပါတယ်။ ဒီလိုလုပ်တာက Flash ပါဝင်တဲ့ SSD တိုင်းမှာဖြစ်ပါတယ်။

 ဒါလိုဖြစ်စဉ်က အရင်သုံးနေကျ HDD တွေပေါ်မှာ Data ကို Write လုပ်တာနဲ့ ကွာခြားချက်ပဲဖြစ်ပါတယ်။ Block ကို Data Write မလုပ်ခင် Block ကို Erase လုပ်တဲ့ Process ကြောင့် SSD ရဲ့ Performance ကျလာပါတယ်။ Block တွေက Dirty ဖြစ်လာတဲ့အခါ Block တွေပေါ်ကို Data Write လုပ်တဲ့အခါ လိုအပ်တဲ့အချိန်ထက် Write Time ပိုကြာလာပါတယ်။ ဒါကြောင့် Dirty Block တွေကိုရှင်းလင်းဖို့အတွက် SSD Manufacturers တွေကနေ Dirty Block ကိုရှင်းလင်းဖို့အတွက်  Garbage Collection ကိုပြုလုပ်လာပါတယ်။ Garbage Collection က Dirty Block တွေကို Background မှာ Erase လုပ်ပေးပြီး  Dirty Block တွေကို နောက်တစ်ကြိမ်မှာ  Write Time မြန်အောင်ပြုလုပ်ပေးပါတယ်။ ဒီပြသာနာတွေကို ရှင်းလင်းဖို့အတွက်  Garbage Collection က  Block တွေမှာ  ဘယ် Block မှာ File တွေ OS Information တွေရှိတယ်ဆိုတာနဲ့ မည်သည့် Block တွေက Dirty ဖြစ်နေတယ်ဆိုတာကို မသိပါဘူး။ SSD Controller ကနေ Wear Leveling Process မှာ Block တွေ ပြောင်းလဲတာကို မှတ်သားထားပါတယ်။ SSD ထဲမှာ ပုံမှန်ုပြုလုပ်နေကျ Data တွေ Creating, Writing, Modifying , Deleting လုပ်တာကြောင့်ပဲ Block တွေက Dirty ဖြစ်လာပါတယ်။ 

Flash Memory တွေက Board ရဲ့ အခြားတစ်ဖက်မှာလဲ ပါဝင်ပါတယ်။ 

ဒီပြသာနာတွေကို ရှင်းလင်းဖို့အတွက် SSD ထုတ်လုပ်သူတွေက Operation System တွေဖြစ်တဲ့ Windows, Linux, Mac OS X, Etc . တွေကနေ  SSD ရဲ့ Controller ကို  မည်သည့် File ကတော့ မလိုအပ်တော့ဘူးဆိုတာကို  ပြောဖို့အတွက် TRIM Command ကို ထည့်သွင်းလာပါတယ်။ Controller ကေ န Garbage Collector ကို Trim Command ကနေ မလိုအပ်တော့ဘူးပြောတဲ့ File ရှိတဲ့ Block တွေကို Electronically Erase ပြုလုပ်စေပါတယ်။ ဒါမှနောက်တစ်ကြိမ်နောက်တစ်ကြိမ် Write Process လုပ်တဲ့အခါမြန်ဆန်လာမှာဖြစ်ပါတယ်။ 

Trim Command  --> SSD Controller -- > Garbage Collection 

SSD Self-Corrosion

SSD ထဲမှာ ရှိတဲ့ Data တွေကို  SSD ကနေ ကိုယ်တိုင်ဖျက်စီးတဲ့ Process ကို SSD Self-Corrosion ပြုလုပ်တယ်လို့ခေါ်ပါတယ်။ Garbage Collection  က SSD ရဲ့ Background မှာ  အမြဲ Running ပြုလုပ်နေတာကြောင့် ဖျက်ဖို့အတွက် သတ်မှတ်ထားတဲ့ Data တွေကို မိနစ်ပိုင်းအတွင်းမှာ ဖျက်ဆီးလိုက်ပါတယ်။ ဖျက်ဆီးဖို့သတ်မှတ်လိုက်တာနဲ့ မိနစ်ပိုင်းအတွင်း Data တွေကို ဖျက်ဆီးလိုက်တာဖြစ်ပါတယ်။ လက်ရှိ အသုံးပြုနေတဲ့ ကွန်ပျူတာ ထဲကနေ SSD ကိုထုတ်ပြီး အခြား ကွန်ပျူတာမှာသွားတပ်ရင်လဲ Garbage Collection လုပ်တဲ့ Process က ရပ်တန့်သွားမှာ မဟုတ်ပါဘူး။ Write Blocker ကိုကြားထဲမှာ ခံထားရင်လဲ  မရပ်တန့်နိုင်ပါဘူး။ အခုလို SSD ကနေ SSD Self-Corrosion ပြုလုပ်တာကို တားဆီးဖို့အတွက်ဆိုရင် SSD ထဲမှာရှိတဲ့ Flash တွေကိုခွာပြီး Flash အတွင်းမှာရှိတဲ့ Data တွေကိုဖတ်နိုင်တဲ့ Custom Hardware နဲ့သာပြုလုပ်လို့ရမှာဖြစ်ပါတယ်။ SSD Controller က SSD ထဲမှာရှိတဲ့ Flash တွေကို အဆက်အသွယ်ဖြတ်ပြီး Flash ကို SSD ထဲကနေ ထုတ်ယူပြီး Custom Hardware နဲ့ Flash အတွင်းမှာရှိတဲ့ Data တွေကို ဖတ်တာပါ။ TRIM ကနေ  မလိုအပ်တော့တဲ့ Data တွေကို ချက်ချင်း ဖျက်ပစ်တယ်လို့ ထင်နိုင်စရာဖြစ်ပါတယ်။ ဒါပေမဲ့ Trim က ကိုယ်တိုင် Erased လုပ်တာမဟုတ်ပါဘူး။ တစ်ကယ်တန်း Erased လုပ်တာက Garbage Collection ကနေပြုလုပ်တာဖြစ်ပါတယ်။  Block ကို Clear လုပ်တဲ့အချိန်ကို Garbage Collection ကနေ နောက်ကွယ်ကနေပြုလုပ်တာကြောင့် SSD ပေါ်ကို Data Write မယ်ဆိုရင် Data Write မလုပ်ခင် Block ကို Erased /Clear  လုပ်မဲ့ အချိန်ကိုစောင့်စရာမလိုတော့တာကြောင့် SSD Performance ကောင်းလာပါတယ်။ 

ကျွန်တော်တို့ပုံကိုကြည့်မယ်ဆိုရင် 

 အဆင့် (၁) မှာ SSD Page ထဲမှာ Data တွေမရှိပါဘူး။ 

အဆင့် (၂) မှာ User ကနေ SSD Page ထဲကို Data တွေထည့်လိုက်ပါတယ်။ 

အဆင့် (၃) မှာ Page ထဲကနေ Data အချို့ကို ဖျက်လိုက်ပါတယ်။ အဲဒီအချိန်မှာ OS ကနေ အဲဒီ Page ကို Unused အဖြစ်သတ်မှတ်လိုက်ပါတယ်။ ဒါပေမဲ့ Data ကတော့ SSD ထဲမှာ ကျန်နေတုန်းဖြစ်ပါတယ်။ 

အဆင့် (၄) မှာ Trim Command ကနေ SSD Controller ကို အဲဒီ Page ထဲမှာရှိနေတဲ့ Data က အသုံးမပြုတော့ဘူး ဆိုတာကို လှမ်းပြောပါတယ်။ ပြီးရင် Page အပါအဝင် အသုံးမပြုတော့တဲ့ Data တွေကို Erased လုပ်လိုက်ပါတယ်။ 

အဆင့် (၅) မှာ SSD ထဲကို Data တွေပြန်ထည့်လိုက်ပါတယ်။ မသုံးတော့တဲ့ Data တွေကိုလဲ ရှင်းလင်းပြီးတဲ့အတွက် နောက်တစ်ခါ Data ကို Write ဖို့အတွက် Full Speed ဖြစ်သွားပါတယ်။ 

SSD အသုံးပြုထားတဲ့ ကွန်ပျူတာမှာ Trim Command ကို Disable ပြုလုပ်ထားရင်၊ Operation System ကနေ Trim Command ကို Support မလုပ်ရင်၊ SSD ကိုယ်တိုင်မှာ Trim Command မပါခဲ့ရင် SSD ကို သာမန် HDD တွေလိုပဲ Recovery ပြုလုပ်လို့ရပါတယ်။  Trim Command Support ပေးတဲ့ Operation System တွေကိုပုံမှာပြထားပါတယ်။ အသေးစိတ်ကြည့်မယ်ဆိုရင် Link   Link 


ဒီလောက်ဆိုရင်   Wear Leveling, Garbage Collection, TRIM Command, SSD Self-Corrosion, အကြောင်းတွေကို အနည်းငယ် သိလောက်ပြီးဖြစ်ပါတယ်။ Trim Command ကို Support လုပ်တဲ့ Operation System တွေအကြောင်းကိုလဲ ဖော်ပြပြီးဖြစ်ပါတယ်။ SSD Self-Corrosion ကြောင့် Evidence ပျက်တယ်ဆိုတာ User တစ်ယောက်က File, Folder, Volume, Partition ကိုဖျက်မယ် ဆိုရင် Operation System ကနေ Trim ကို On ထားမှ  Operation System ကလဲ Support ပေးမှသာ Trim Command ကိုအသုံးပြုလို့ရမှာဖြစ်ပါတယ်။ TRIM Command က Partition Level, Volume Level အထိ အလုပ်လုပ်ပါတယ်။ ဒါကြောင့် Disk Formant , Partition Delete လုပ်တာတွေအထိပါ ပြုလုပ်နိုင်ပါတယ်။ 

Live ဖြစ်နေတဲ့ System မှာ Trim ON ထားလား OFF ထားလားကြည့်မယ်ဆိုရင်တော့ Window မှာဆိုရင် fsutil နဲ့ကြည့်နိုင်ပါတယ်။ 

Check TRIM Status Command In Window Live System 

fsutil behavior query disabledeletenotify

Windows TRIM commands  Enable = 0 

Windows TRIM Commands Disable = 1 

Enable Or Disable TRIM Command In Window 

Enable =  fsutil behavior set disabledeletenotify 0

Disable = fsutil behavior set disabledeletenotify 1



Comments

Popular posts from this blog

B-Trees (NTFS)

NTFS Index Attributes

Volatility Workbench (GUI) for the Volatility tool