SSD Forensic Challenges - Part (1)
SSD တွေက HDD နဲမတူတဲ့အချက်ကတော့ Flash Translation Layer (FTL)မှာ Garbage collection နဲ့ Ware-Leveling တို့ကြောင့်ဖြစ်ပါတယ်။ FTL က Logical Block နဲ့ Physical Block ကို ချိတ်ဆက်ပေးတာဖြစ်ပါတယ်။ SSD တင်တဲ့ထား Operation System ကနေ Physical File နေရာတွေကို Track လုပ်မထားပါဘူး။ HDD နဲ့ကွဲပြားချက်ဖြစ်ပါတယ်။
Garbage Collection (GC)
HDD မှာလို Data တစ်ခုသိမ်းမယ်ဆိုရင် ရှိနေပြီးသား Data ပေါ်မှာ SSD Nand Flash က မသိမ်းနိုင် OverWrite မလုပ်နိုင်ပါဘူး။ Data သိမ်းမယ်ဆိုရင် Block ကို Erase လုပ် ပြီးမှ သိမ်းရပါတယ်။ မဖျက်ခင် Block ထဲက Data ကို အခြား Block ပေါ် ပြောင်းတာလဲရှိပါတယ်။ အခုလို Bock ကို Erase လုပ် Block တွေကို ပြန်နေရာချတာကို Garbage Collection လို့ခေါ်ပါတယ်။ Garbage collection က SSD ထဲကနေ မလိုအပ်တဲ့ data တွေဖယ်ထုတ်ပြီး နောက်ထပ် data တွေသိမ်းလို့ရအောင် ပြုလုပ်ပေးပါတယ်။data သိမ်းဆည်းဖို့ အမှန်တစ်ကယ် Page တစ်ခုသာ လိုအပ်ပေမဲ့ Garbage collection ပြုလုပ်တဲ့အခါ Block တစ်ခုလုံးကို ဖျက်ပါတယ်။ Block ထဲမှာ data တွေရှိရင်လဲ အခြား Page,Block ကို အလိုအလျှောက်ပြောင်းလဲပေးပါတယ်။
Photo (1) အရဆိုရင် Block A ထဲက Page-1 မှာ data save ချင်တယ်- ဒါပေမဲ့ ကျန်တဲ့ Page-2,3,4 မှာ တစ်ကယ့် data တွေကျန်နေသေးတယ်ဆိုရင် Page-2,3,4 က Data တွေက Block-B ကိုရောက်သွားပါတယ်။ Block-B မှာ Block-A ကနေ Page 3 ခုသာပြောင်းသွားတဲ့အတွက် Block-B မှာ Page တစ်ခုလွတ်နေပါတယ်။ လွတ်နေတဲ့ Page မှာ Zero တွေအဖြစ်ရှိပါတယ်။ (AFF4 Image လုပ်တဲ့နေရာမှာ အခုလိုဖြစ်တဲ့ Zero တွေကို ချန်လှပ်ပြီး Image လုပ်နိုင်တဲ့အတွက် ပိုမြန်တာလဲပါပါတယ်)
TRIM
TRIM-enabled လုပ်ထားတဲ့ SSD drives က garbage collection (GC) ကြောင့် ဖျက်လိုက်တဲ့ Data တွေကိုပြန်ရနိုင်ဖို့ခက်ခဲပါတယ်။ TRIM ဆိုတာက ဥပမာ အချက်အလက်တစ်ခုကို ဖျက်လိုက်မယ်ဆိုရင် SSD ထဲမှာ အပြီးဖျက်လိုက်မယ်ဆိုပြီး SSD Controller က နေတစ်ဆင့် Data သိမ်းထားတဲ့ Page Or Block ထဲကို ဖျက်ခိုင်းလိုက်တာပါ။ TRIM က ကွန်ပျူတာ ပါဝါ ပိတ်ထားလိုက်ရင် လုပ်နေတဲ့ အလုပ်ကို ခနရပ်ထားပါတယ်။ ဒါပေမဲ့ ကွန်ပျူတာ ပါဝါ ပြန်ဖွင့်တာနဲ့ ပြန်အလုပ်လုပ်ပါတယ်။ ဘာလို့လဲဆိုရင် လုပ်နေတဲ့ အလုပ်ကို SSD Controller ထဲမှာ သိမ်းထားလို့ဖြစ်ပါတယ်။ Trim က RAID configuration, NAS configuration, window 7 နှင့် နောက်ပိုင်း ပြီးရင် SSD ကို External Hard Disk အဖြစ်သုံးတဲ့နေရာတွေမှာ မပြုလုပ်နိုင်ပါဘူး။ Win 8, 8.1 , Win 10,Mac OS X, Mac book with Windows တွေမှာသာအသုံးပြုနိုင်ပါတယ်။ Recyclebin ကို Delete လုပ်တာနဲ့ SSD ရဲ့ Block တွေမှာ တစ်ခါတည်းဖျက်လိုက်ပါတယ်။ နောက်ထပ် Data တွေ Save နိုင်အောင်ဖြစ်ပါတယ်။ Flash Translation Layer မှာပါဝင်တဲ့ Function တွေကြောင့် SSD ကို Forensics Image ပြုလုပ်ပြီး Hash Methdology (MD5,SHA) ပြုလုပ်ရင် Hash Value မတူညီနိုင်ပါဘူး
Self Corrosion
Trim က ကွန်ပျူတာကနေ SSD ကိုဖြုတ်လိုက်ရင်လဲ SSD ကိုပါဝါပေးတာနဲ့ အလုပ်လုပ်နေတာဖြစ်ပါတယ်။
write-blocking imaging device ကိုကြားခံအသုံးပြုရင်လဲ ဆက်ပြီး အလုပ်လုပ်နေမှာ ဖြစ်ပါတယ်။ Trim ကို ပိတ်ဖို့ ရှောင်လွှဲဖို့ ယနေ့အထိ ခက်ခဲနေပါသေးတယ်။ User ကနေ Trim enable လုပ်ထားပြီး data တစ်ခုကို ဖျက်မယ် Format လုပ်မယ် Wipe လုပ်မယ်ဆိုတဲ့အပေါ်မူတည်ပြီး Window - SSD Controller ကနေတစ်ဆင့် အလုပ်လုပ်တာဖြစ်ပါတယ်။ SSD ရဲ့ hardware level မှာအလုပ်လုပ်တာဖြစ်ပါတယ်။ ဒီလို နောက်ကွယ်မှာ garbage collection (GC) အလုပ်လုပ်နေတာကိုSelf Corrosion ပြုလုပ်တယ်လို့လဲခေါ်ပါတယ်။
Over Provisioning
SSD ရဲ့ Performance ကောင်းဖို့ လုပ်တာဖြစ်ပါတယ်။ Garbage Collection, Wear-Leveling, Bad Block Management လုပ်တာတွေကို ပိုမိုကောင်းမွန်စေဖို့ ပြုလုပ်တာဖြစ်ပါတယ်။ SSD မှာ Data သိမ်းဆည်းရင် Page က 4KB ရှိပြီး Block တစ်ခုမှာ 128 Pages ရှိပါတယ် Block တစ်ခုမှာ 512 KB ရှိပါတယ်။။ Write လုပ်လုပ် Erase လုပ်လုပ် Block တစ်ခုလုံးကို လုပ်တာဖြစ်ပါတယ်။ Controller Firmware နဲ့ Failed Block Replacement အတွက် SSD Storage မှာ သီးသန့်ချန်ထားတဲ့ Free Space Block တွေရှိပါတ်။ SSD အမျိုးအစားအပေါ်မူတည်ပြီး Free Space Block အရေအတွက် ကွဲပြားပါတယ်။
Wear leveling
SSD ရဲ့ Block တွေမှာ Erase\Write Cycles သတ်မှတ်ချက်ရှိပါတယ်။ ဒါကြောင့် Wear leveling က SSD ရဲ့ Life ကို ကြာမြင့်စေဖို့ ပြုလုပ်ပေးပါတယ်။ Wear leveling ကို SSD Controller ကနေပဲပြုလုပ်တာဖြစ်ပါတယ်။ ဘယ် Block က Erase\Write လုပ်တာ အကြိမ်ဘယ်လောက်ရှိပြီဆိုတာကို စောင့်ကြည့်နေပါတယ်။ စောင့်ကြည့်ပြီးရင် Data တစ်ခုကို SSD ပေါ်မှာ သိမ်းမယ်ဆိုရင် Erase\Write အနည်းဆုံး Block ပေါ်မှာ သိမ်းဆည်းပါတယ်။
Dynamic wear leveling နဲ့ Static wear leveling ဆိုပြီး ၂ မျိုးရှိပါတယ်။ Dynamic wear leveling က Erase\Write အနည်းဆုံးဖြစ်တဲ့ Block တွေကို မှတ်သားထားပြီး Data သိမ်းမဲ့ Block ကိုရွေးပါတယ်။ Static wear leveling ကတော့ Data သိမ်းမဲ့ Block က Erase\Write အနည်းဆုံးဖြစ် မဖြစ်ကြည့်ပါတယ်။ လိုအပ်ရင် Block ကိုဖျက်ပါတယ်။ မဖျက်ခင် Block ထဲမှာ ရှိနေတဲ့ Data ကို Block နောက်တစ်ခုမှာ Data ကိုပြောင်းပြီး သိမ်းလိုက်ပါတယ်။ နောက် Block ထဲကို data သိမ်းလိုက်ပြီးရင် Block ကို ဖျက်လိုက်ပါတယ်။ Block က Empty ဖြစ်သွားပြီးဆိုတော့မှာ Data ကို သိမ်းတာဖြစ်ပါတယ်။ Garbage Collection (GC) ပြုလုပ်နေချိန်မျာ Wear Leveling ကလဲ အလုပ်လုပ်နေပါတယ်။
TRIM
TRIM Enable ပြုလုပ်ထားရင် စစ်ဆေးသူက ဖျက်လိုက်တဲ့ Data တွေကို ရဖို့မလွယ်ကူနိုင်ပါ။ SSD Controller ကနေ ပြုလုပ်တာဖြစ်တာကြောင့် SSD ကို Power ပေးတာနဲ့ နောက်ကွယ်မှာ ဆက်လက်ပြုလုပ်နေမှာဖြစ်ပါတယ်။ Trim က SSD တစ်ခုလုံကို ဖျက်ဖို့ မိနစ်ပိုင်း စက္ကန့် ပိုင်းသာ အချိန်ယူပါတယ်။
User -1
SSD ထဲမှာရှိတဲ့ File and Folder တွေကို အကုန်ဖျက်လိုက်တယ်။ ဖျက်ပြီးတဲ့နောက်ပိုင်း မည်သည့် Data မှ SSD ထဲကို မထည့်။ နာရီပိုင်းအတွင်း SSD ကို Disk Forensics Tools Or Recovery Software နဲ့ Data တွေကို ပြန်ယူတယ်။ ရာနှုန်းတော်တော်များများသော Data တွေ ပြန်ပေါ်လာတယ်။ ဒါပေမဲ့ Recovery ပြန်ယူတဲ့အခါ File တွေက မရတော့ဘူး။ File က Zero တွေပဲ ဖြစ်နေတယ်။
User -2
SSD ထဲမှာရှိတဲ့ File and Folder တွေကို အကုန်ဖျက်လိုက်တယ်။ ဖျက်ပြီးတဲ့နောက်ပိုင်း မည်သည့် Data မှ SSD ထဲကို မထည့်။ နာရီပိုင်းအတွင်း SSD ကို Disk Forensics Tools Or Recovery Software နဲ့ Data တွေကို ပြန်ယူတယ်။ 80 ရာနှုန်း Data တွေပြန်ရတယ်။ ဘာလို့လဲဆိုရင် SSD အမျိုးအစားအပေါ်မူတည်ပြီး Trim 2 မျိုးကွဲသွားလို့ဖြစ်ပါတယ်။ Android Version 4.3 ကနေစပြီး Trim က Support ပေးပါတယ်။ Live Triming Support ပေးတဲ့သဘောပါ။ Version အဟောင်းတွေမှာတော့ Live Trimming Support မပေးပါဘူး။ Device Power Off တဲ့အချိန်မှသာ Linux မှာ Unused Block တွေကို Cleaning လုပ်တဲ့ Fstram ကြောင့် Trim ကအလုပ်လုပ်ပါတယ်။ဒါကြောင့် Digital Devices သိမ်းဆည်းနည်း Guide Line တွေမှာ Phone ကို Power Off ဆိုရင် Off တဲ့အနေအထားနဲ့ သိမ်း။ Power On နေရင် Power On တဲ့ အနေအထားနဲ့ သိမ်းလို့ ပြောကြတာဖြစ်ပါတယ်။
Wear Leveling
Wear Leveling ကြောင့် ပထမ အချက်က SSD မှာ File,Data,Folder တွေကို Hash Value ယူရတာ တစ်ကြိမ်နဲ့ တစ်ကြိမ်မတူညီနိုင်ပါ။ဒုတိယ အချက်က Forensically Recovery ပြုလုပ်ဖို့ ခက်ခဲတာ ရှာဖွေဖို့ခက်ခဲတာဖြစ်ပါတယ်။
Compressing Controller
SSD ထုတ်လုပ်တဲ့ Company တွေက Controller ကနေ Encryption ပြုလုပ်ထားတဲ့ အတွက် SSD မှာရှိတဲ့ data သိမ်းတဲ့ Flash တွေကိုခွာပြီး စစ်ဆေးမယ်ဆိုရင် Company ကိုပြန်ပို့ရမှာ ဖြစ်ပါတယ်။ (Chip off) Trim ကိုကျော်ဖို့ သုံးတာဖြစ်ပါတယ်။
Secure Erase
wiping ပြုလုပ်ဖို့ HDD မှာ နာရီပိုင်းအချိန်ယူရပေမဲ့ SSD မှာတော့ မိနစ်ပိုင်းသာ ကြာပါတယ်။
အချို့သော SSD နဲ့ ချိတ်ဆက်မဲ့ interface တွေက အတွင်းပိုင်းအထိ အချက်အလက်တွေ မဖတ်နိုင်ပါဘူး။
SSD ရဲ့ အတွင်းပိုင်း ဖွဲ့စည်းပုံက HDD ထက်ရှုပ်ထွေးပါတယ်။
SSD အတွက် သတ်မှတ်ထားတဲ့ စံသတ်မှတ်ချက်မရှိသေးပါဘူး။
Carving နဲ့ free space analysis ပြုလုပ်ဖို့ခက်ခဲပါတယ်။
SSD မှာ Data တစ်ခုကို Write လုပ်မယ်ဆိုရင် Page/Block( Group Of Pages) တွေမှာ Write လုပ်ပါတယ်။ ဖျက်မယ်ဆိုရင် Block တစ်ခုလုံးကို ဖျက်ပါတယ်။ ဒါကို SSD Controller ကနေပဲ ထိန်းချုပ်ပြီးလုပ်ဆောင်ပါတယ်။
ဒါကြောင့် SSD တပ်ထားမယ်ဆိုရင် Host Operation System က Data ရှိတဲ့ တစ်ကယ့် Physical Block Area နေရာတွေကို မသိပါဘူး။ Data တစ်ခုကို လိုချင်ရင် ရှာချင်ရင် Host Operation System က Logical Block Address ကိုညွှန်းပါတယ်။ Logical Block Address ကနေမှ Physical Block Address ရှိတဲ့နေရာကို SSD controller ကနေညွှန်ပြပေးပါတယ်။
Wear Leveling, Garbage Collection စတာ တွေကိုတော့ SSD controller ထဲက Flash Translation Layer (FTL) ကနေပြုလုပ်ပါတယ်။ အခုလက်ရှိသုံးနေတဲ့ Forensics Tools ၉၉ ရာခိုင်နှုန်း က Flash Translation Layer (FTL) အထိ မဖတ်နိုင်ပါဘူး။ ပုံထဲမှာပါသလို Storage ကို Hex Editor နဲ့ဖတ်ကြည့်မယ်ဆိုရင် 0 တွေပဲရှိလို့ SSD ထဲမှာ Data တွေမရှိဘူးလို့ ထင်စရာ ရှိပါတယ်။ ဒါပေမဲ့ Wear Leveling/ Garbage Collection / Data Overwritten မဖြစ်ခင်အချိန်အထိ အချက်အလက်တွေက Flash Memory ထဲမှာရှိနေပါတယ်။
Flash Translation Layer (FTL) အထိ မဖတ်နိုင်တဲ့အတွက် data မရှိဖူးလို့ ထင်ရတာပါ။ ဒါပေမဲ့ HEX Editor နဲ့ဖတ်တဲ့အချိန်မှာ SSD ကို Power ပေးလိုက်တဲ့အတွက် Wear Leveling, Garbage Collection ပြုလုပ်နေတာကြောင့် Data တွေက လုံး၀ ပျက်စီးသွားနိုင်ပါတယ်။ အဓိက ပြုလုပ်ရမှာကတော့ Power မပေးပဲ JTAG/ISP/Chip Off တစ်ခုခုကို လုပ်ရမှာဖြစ်ပါတယ်။ Chip Off ကတော့ အချိန်ယူရသလို ဈေးလဲတော်တော်ကြီးပါတယ်။
Comments