วันจันทร์ที่ 21 กรกฎาคม พ.ศ. 2551

Volatility กับ Live Forensics

คำว่า volatility ถ้าคนที่เรียนคอมมาก็คงเคยได้ยินกันมาไม่มากก้อน้อย คำๆนี้หมายถึง ลักษณะบางอย่างของอุปกรณ์คอมพิวเตอร์ที่สามารถเก็บข้อมูลเมื่อมีไฟเลี้ยง และข้อมูลจะหายไปเมื่อไม่มีไฟเลี้ยง ซึ่งโดยปกติแล้วมักจะหมายถึง RAM นั่นเอง แต่ที่เราจะกล่าวกันในวันนี้นั้นไม่ใช่วิชาพื้นฐานคอมพิวเตอร์ครับ แต่เป็นวิชา Forensics และ Volatility ที่จะกล่าวถึงในวันนี้ก็ไม่ใช่อาการดังกล่าวครับ แต่เป็น tools ที่ช่วยให้ชีวิตง่ายขึ้น

Voliatility เป็น tools ไว้ใช้สำหรับการวิเคราะห์ memory image ครับ หากใครไล่อ่านเนื้อหาอันไร้สาระมาตลอดก็จะพอทราบได้มีคนพัฒนาสคริปต์ต่างๆ เพื่อช่วยสำหรับการวิเคราะห์ memory image อยู่บ้างแล้ว เช่น lsproc ซึ่งตัวสคริปต์ดังกล่าวนั้นเป็นเพียง Proof of Concept และสามารถใช้ได้กับ image ของระบบปฏิบัติการ Windows 2000 เท่านั้น ไม่สามารถใช้กับ image ของ XP หรือ 2003 ได้ (ผมเขียน lsproc สำหรับ XP และ 2003 ไว้แล้ว แต่สำหรับสคริปต์อื่นๆนี่ไม่ไหวครับ เกิด error) แต่ก็มีกลุ่มคนสนใจและพัฒนาสคริปต์ต่างๆจนกระทั้งกลายเป็นเจ้า Volatility ขึ้นมาซึ่งสามารถทำงานได้กับ image ของ XP และ 2003 ได้ครับ วันนี้ผมจะนำภาพบางส่วนจากการใช้งานจริงของเจ้า Volatility มาให้ดูกันครับ

ความสามารถแรกคือการแสดงรายชื่อของโปรเซสที่รันขณะที่ทำการ image memory มา ซึ่งความสามารถนี้ก็คือ lsproc ที่เราคุ้นกันนั่นเองครับ

Photobucket

ข้อแตกต่างระหว่างผลลัพธ์ของ lsproc กับ Volatility คือ lsproc นั้นจะมีแสดงข้อมูลของโปรเซสที่หยุดการทำงานไปแล้ว และตำแหน่งของ physical address ของโปรเซสแต่ละโปรเซสด้วย แต่ทว่าถ้าอยากได้ข้อมูลครบแบบ lsproc แล้วละก็ Volatility ก็สามารถทำได้ครับ โดยใช้ความสามารถในการแสกนหา EPROCESS ใน memory image ดังภาพ

Photobucket

เหมือนกันเด๊ะๆ แต่สังเกตว่าพอให้เทคนิคสแกน EPROCESS นั้น Volatility จะทำงานช้ากว่าการเลือกแสดงโปรเซสเพียวๆ อาจเป็นไปได้ว่าใช้คนละ algorithm ในการค้นหา

พอก่อนละกันวันนี้ เด๋วมาต่อตอนสองใหม่

วันพุธที่ 11 มิถุนายน พ.ศ. 2551

ทำ data-carving บน memory image ของโทรศัพท์มือถือ

สวัสดีครับวันนี้มีโจทย์ forensics มาอีกแล้ว ^_^ โดยเจ้าของโจทย์อยากทราบว่า memory image ที่ได้จากโทรศัพท์มือถือมีไฟล์อะไรอยู่บ้าง ซึ่งเทคนิคที่เราจะใช้ในการค้นหาครั้งนี้เรียกว่า data-carving ครับ

data-carving เป็นเทคนิคการค้นหาไฟล์จาก image ต่างๆไม่ว่าจะเป็น image ของ harddisk, memory, หรือ USB storage โดยการค้นหาดังกล่าวนี้จะอาศัยการค้นหา header ของประเภทของไฟล์ที่ต้องการหา ไม่ว่าจะเป็นไฟล์รูปภาพ (.gif, .jpg, .png) ไฟล์เสียง (.mp3, .wav) หรือไฟล์วีดีโอต่างๆ (.avi) โดยหลังจากที่เจอ header ของไฟล์ดังกล่าวแล้ว ก็จะ extract ไฟล์ต่างๆออกมาตามข้อมูลที่ได้จาก header ไฟล์ครับ

โปรแกรมที่ใช้สำหรับทำ data carving คราวนี้คือ foremost ครับ เป็นโปรแกรมฟรีรันบน Linux ดาวน์โหลดมา compile แล้วรันได้ทันทีเลยครับ ตามภาพ

Photobucket

สำหรับ image ที่ support โดย foremost นั้นมี image ที่ได้จาก dd ครับ แต่ image ที่ผมได้มานี่ใช้ซอฟต์แวร์ตัวอื่นที่ไม่ใช่ dd ทำ image เอา แต่ก็สามารถอ่านได้เหมือนกัน สำหรับเวลาที่ใช้ในการรันนั้นถือว่าเร็วมากครับ image ขนาด 1GB ใช้เวลาไม่ถึง 10 นาที ซึ่งถ้าเปรียบเทียบกับซอฟต์แวร์กู้ข้อมูลซึ่งใช้เวลาชาติกว่า ถือว่า work มากๆครับ (ผมไม่ได้เทสซอฟต์แวร์กู้ข้อมูลนะครับ เลยไม่ทราบว่าเจ้าของโจทย์ใช้ตัวไหน แต่บอกมาว่าช้ามากๆ)

เมื่อ foremost รันเสร็จก็จะสรุปผลให้ครับว่าเจอไฟล์ประเภทใดบ้าง จำนวนกี่ไฟล์

Photobucket

โดยไฟล์ที่ foremost เจอจะถูกสร้างไว้ที่โฟลเดอร์ชื่อ output ครับดังภาพ

Photobucket

เข้าไปเลือกดูตามใจชอบเลยครับ ข้อเสียอย่างเดียวของ foremost คือยังไม่ support ไฟล์ประเภท mp3, เละไฟล์ประเภทใหม่ๆบนโทรศัพท์มือถือครับ จบ.

วันจันทร์ที่ 2 มิถุนายน พ.ศ. 2551

การอ่าน ext2/ext3 file system บน Windows

คงมีหลายครั้งที่เวลาทำ forensics เราต้องประสบกับปัญหาเรื่อง compatibility ของ file system ของระบบที่ต่างกัน เช่น อุปกรณ์เก็บข้อมูลต่างๆของเราถูก format เป็น NTFS แต่ ระบบที่เราใช้อ่าน/เขียนข้อมูลลงไปในอุปกรณ์กลับเป็น Linux ซึ่งมีเพียงไม่กี่ตัวเท่านั้นที่สนับสนุนความสามารถในการเขียน NTFS ได้แบบ default ส่วนที่เหลือต้อง compile kernel เอง หรือถ้าเรา format อุปกรณ์เก็บข้อมูลเป็น ext2/ext3 ซึ่ง Linux สามารถอ่านเขียนได้ เราจะพบปัญหาอีกว่า Windows ไม่สามารถมองเห็นได้เลย ถ้าเราใช้ Windows เปิดอุปกรณ์ที่ format เป็นแบบ ext2/ext3 เราจะพบความเอ๋อๆดังภาพ

Photobucket

แน่นอน เราไม่สามารถ format ได้ เพราะข้อมูลจะหายหมด - -" ... แล้วมันมีวิธีไหนบ้างหว่าที่สามารถทำให้ Windows อ่าน ext2/ext3 ได้ ?

คำตอบคือมีหลายวิธีเลยครับ ไล่ตั้งแต่ติดตั้ง driver ซึ่งทำขึ้นมาเพื่อ support ext2/ext3 โดยเฉพาะ จนถึง application ที่ support การอ่าน ext2/ext3 ในตัวเลย ใน entry นี้ผมจะกล่าวถึงตัวหลังนะครับ เพราะตัวแอพพลิเคชั่นที่ผมจะกล่าวถึงต่อไปนี้สามารถใช้อ่านและ copy ได้อย่างเดียวครับ ไม่สามารถเขียนได้ ซึ่งหลายๆคนอาจจะไม่ีสะดวก แต่สำหรับการทำ forensics ถือว่ามีประโยชน์ครับเพราะมีส่วนช่วยป้องกันทำการเขียนทับข้อมูล evidence ที่เราเก็บมาจากระบบครับ ถ้าใครอยากให้สามารถทั้งอ่านและเขียนได้เลย ผมแนะนำว่าใช้ตัวนี้ดีกว่าครับที่ fs-driver.org

สำหรับตัวที่ผมใช้ชื่อว่า linux-reader ครับ หน้าตานี่เหมือน Windows Explorer เลยครับ

Photobucket

Linux-Reader จะแบ่งมุมมองออกเป็น 3 ส่วนครับ คือ harddisk ที่มีในระบบ, removeable disk และ physical disk จริงๆที่มีอยู่ในระบบ โดย Linux-Reader จะไม่สามารถเข้าไปอ่านพื้นที่ที่เป็น NTFS ได้ หากเราใช้ Linux Reader เข้าไปอ่าน มันจะฟ้องดังภาพ

Photobucket

ส่วนอุปกรณ์ที่เป็น ext2/ext3 นั้นมันจะขึ้น label ว่า Linux Native Volume (ดูภาพข้างบนนู้นประกอบ) และเมื่อเรียกเข้าไปดูจะเป็นดังภาพครับ

Photobucket

เราสามารถนำไฟล์ดังกล่าวออกมาใช้งาน/ตรวจสอบได้ครับ นอกจากนี้แล้วเจ้า Linux-Reader นี้ยังมีความสามารถในการ mount image ของ linux ที่สร้างขึ้นจาก dd ได้อีกด้วย ลองไปเล่นดูนะครับ

P.S. การนำไฟล์จาก Linux-Reader ไปใช้ ให้ click ขวาที่ไฟล์/โฟลเดอร์และเลือก save ครับ

วันศุกร์ที่ 23 พฤษภาคม พ.ศ. 2551

การ repair ไฟล์ Event Log ของระบบปฏิบัติการ Windows ที่ Corrupted

สวัสดีครับ ไม่ได้อัพนาน ล็อกอินเข้ามาเจอคำถามค้างไว้เป็นเดือนๆเลย - -" ตอบให้แล้วนะครับ อย่าถือโทษโกรธกันเลยนะครับ ^_^

มานั่นไล่ดู ผ่านมาครึ่งปีถ้าไม่นับ entry นี้นี่ปี 2008 เพิ่งโพสไป entry เดียวเอง ทำไมเราช่างขี้เกียจอย่างนี้ ว่าแล้วก็เลยสวมบทมนุษย์ active ซะหน่อย เดี๋ยวสมองจะสนิมขึ้น หาเรื่องมาโพสต์ให้ครับ โดยวันนร้จะโพสต์เกี่ยวกับเรื่อง Event Log ของระบบปฏิบัติการ Windows ครับ

Event Log ก็คือล็อคไฟล์ของระบบปฏิบัติการ Windows ครับ เป็นไฟล์ที่ลงท้ายด้วย .Evt จะอยู่ที่ C:\WINDOWS\system32\config โดยปกติแล้วจะมีทั้งหมด 3 ไฟล์ครับคือ AppEvent.Evt, SecEvent.Evt และ SysEvent.Evt ซึ่งก็คือล็อคไฟล์ของ Application, Security และ System ของระบบปฏิบัติการ Windows ตามลำดับครับ (อาจมีไฟล์อื่นๆอีกตามแอพพลิเคชั่นที่ติดตั้งลงบนเครื่องครับ แต่ตัวหลักจะเป็นสามตัวนี้) หากใครทำ forensics หรือ incident handling/response บน Windows บ่อยๆ ก็คงเคยเจออาการที่ว่า Event Log ที่ copy ออกมานั้นเปิดด้วย Event Viewer ไม่ได้ อาการเอ๋อๆดังภาพข้างล่างใช่มั้ยครับ ^_^

Photobucket

อาการที่ปรากฏในภาพคือ ไฟล์ evt ทั้งหลายที่เรา copy มามัน corrupted ครับ - -" สาเหตุนั้นเกิดจากเราไม่ได้หยุด services ที่เก็บ Log ของ Windows ครับ ชื่อว่า EventLog ครับ เหตุการณ์เอ๋อๆของไฟล์ .Evt นี้นี่นับว่าเป็นเหตุการณ์ปกติมากครับ โดยเฉพาะอย่างยิ่งหากนำไฟล์ .Evt ที่ได้จากการ image harddisk มาใช้ครับ ซึ่งหากว่าคนที่ทำ forensics ไม่ได้ตรวจสอบและนำไฟล์เหล่านี้ไป feed ให้โปรแกรมพวก Log Analyzer ต่างๆแล้วล่ะก้อ.... ขึ้นอยู่กับดวงล่ะครับ ว่า Log Analyzer ตัวนั้นมันเก่งขนาดไหน

คำถาม: แล้วจะแก้ไขยังไงดี ?

สาเหตุที่ไฟล์ corrupted เพราะ header ไฟล์ของ Event Viewer มันเน่าครับ ถ้าอยากทราบว่าทำไมเน่าให้ไปอ่าน paper ของ Rich Murphey ครับ บรรยายไว้ละเอียดเหมือนกัน แต่...เราไม่ต้องใช้ hex edit เปิดแก้ header ครับ มีวิชามารที่สบายกว่านั้น ใช้โปรแกรมที่ชื่อว่า FixEvt ครับ Rich Murphey เขียนไว้แล้ว เป็น command line ครับ แค่พิมพ์สั้นๆว่า

C:\Documents and Settings\trirat\Desktop\Corrupted.Event.Log>fixevt.exe *.Evt
Repaired: AppEvent.Evt
Repaired: SecEvent.Evt
Repaired: SysEvent.Evt

ถ้าขึ้นว่า Repaired ข้างหน้าชื่อไฟล์ .Evt แสดงว่าซ่อมได้ครับ ;)

จบ...

วันพุธที่ 20 กุมภาพันธ์ พ.ศ. 2551

ว่าด้วยเรื่องของ Slack Space

พอดีมีคนอยากรู้คำศัพท์ที่เกี่ยวข้องกับ forensics ครับ สัญญาไว้แล้ว เลยก่ะว่าทยอยๆเขียนลง blog ซะเลย วันนี้เลยเริ่มที่คำนี้ครับ "Slack Space"

...แต่เพื่อให้สามารถเข้าใจคำว่า Slack Space มากขึ้น จะขออธิบายเกี่ยวกับลักษณะการเก็บข้อมูลของฮาร์ดดิสก์ก่อนนะครับ เพราะคำว่า Slack Space นี้เกี่ยวข้องกับฮาร์ดดิสก์โดยตรงครับ :)

โดยปกติแล้วลักษณะรูปทรงของฮาร์ดดิสก์นั้นจะเป็นแผ่นวงกลมซ้อนกันหลายๆแผ่น ซึ่งในแต่ละวงกลมนั้นจะถูกแบ่งออกเป็นชั้นๆเรียกว่า Track ดังรูป

Photobucket

โดยปกติแล้วในแต่ละวงจะมีจำนวน Track อยู่ทั้งหมด 1024 tracks โดย Track แรกสุดหรือที่เรียกกันว่า Track 0 นั้นจะเป็น Track ที่อยู่ด้านนอกสุดของวงกลม ถัดเข้ามาจะเป็น Track 1, 2, 3, ... ตามลำดับ

ในแต่ละ Track นั้นจะถูกแบ่งย่อยออกเป็นส่วนย่อยเล็กลงไปอีก เรียกว่า Sector ดังรูป

Photobucket

Sector เรียกได้ว่าเป็นหน่วยที่เล็กที่สุดของฮาร์ดดิสก์ก็ว่าได้ โดยปกติแล้วมีขนาด 512 bytes ครับ

Sector หลายๆอันที่อยู่ติดกันและระบบปฏิบัติการนำไปใช้สำหรับเก็บข้อมูลจะถูกเรียกว่า์ Cluster ดังรูป

Photobucket

เออ... แล้วที่พูดมานี่มันเกี่ยวอะไรกับ Slack Space เหรอ ??? เกี่ยวครับ :) เพราะ Slack Space คือพื้นที่ว่างส่วนที่เหลือของ Cluster หลังจากใช้ในการเก็บข้อมูลครับ ดังภาพ

Photobucket

เรามาดูตัวอย่างง่ายๆเทียบกับรูปข้างบนกันดีกว่า ให้ไฟล์ที่ต้องการเก็บมีขนาด 1200 bytes และกำหนดให้ระบบปฏิบัติการมีขนาดของ Cluster คือ 2048 bytes (เท่ากับ 4 sectors นั่นเอง) จะได้ว่า ไฟล์ที่เก็บลงไปในนั้นจะใช้พื้นที่ไป 1200 bytes ซึ่งกินที่ไป 2 sectors กว่า และเหลือพื้นที่อีก 848 bytes ซึ่งพื้นที่ส่วนที่เหลือนี้โดยปกติแล้วระบบปฏิบัติการจะไม่นำไปใช้งานในการเก็บไฟล์อื่นๆ้อีก

แล้วมันเกี่ยวยังไงกับ forensics หว่า ??? เกี่ยวตรงที่ผู้บุกรุกที่มีทักษะสูงขึ้นมาหน่อย มักนำไฟล์ต่างๆของตนเองไปเก็บไว้ที่ Slack Space น่ะสิ (สามารถทำได้โดยใช้โปรแกรมที่เขียนขึ้นมาเพื่องานนี้โดยเฉพาะ) ข้อดีของการซ่อนไฟล์ไว้ใน Slack Space คือไม่เป็นที่สะดุดตา และสามารถตรวจสอบได้ยากครับ

ยังกับบรรยายให้เด็กๆฟังเรื่องฮาร์ดดิสก์เลยแฮะ์

เออ...ขอจบแบบห้วนๆละกัน ช่วงนี้มีอาการนอย T-T