Upload
benjamin-oh
View
186
Download
8
Embed Size (px)
Citation preview
데이터 복구 그리고, 그 구조
ICEWALL 오효근
발표자의 상태가 이상합니다
상
이 상
태
발표자의 상태가 이상합니다
이명
어깨 결림
몸살
주제
• 포렌식
• 툴 사용법
• 파일 시스템 구조
• 실제로 써 먹을 수 있는, 밥 얻어먹기 좋은 기술
때는 2000년대 초반
초등학생이었던 발표자는
외장 하드디스크를 구했다
그 당시 기준으로 충격적인 용량 40GB
어릴적 이런 저런 것들을 저장하는 걸 취미로
40GB를 다 채우게 되고
80GB 하드를 구하여
데이터를 옮기게 된다
하지만, 데이터를 모두 옮기지 못한채
실수로 40GB 하드를 포맷해버리고
멘붕하게 되는데…
그렇게 하드 복구에 입문했습니다 (…)
하드 복구는 그렇게 어렵지 않습니다.
대부분 툴에 의존하고,
보통은 데이터를 날리는 패턴도 비슷합니다.
몇 가지 실수만 안한다면 도전해볼 만합니다.
그 전에, 구조를 배웁시다
데이터는 어찌 저장되는가?
• 하드디스크에 저장된다는 건 누구나 알고 있음
• 근데 어찌 저장되는지, 어찌 읽는지, 왜 하드가 뻑이 나는지는 이해도 못 함
• 사실 구조가 간단한 편이 아니고, 현대 기술의 총집합이라고 할 정도로 복잡함
• 하지만, 기본 이론은 아주 간단함
데이터는 어찌 저장되는가?
• 상자가 여러개 있고, 그 상자에 데이터를 넣는다.
• 상자에는 주소가 붙어있고, 그 주소에 뭐가 있는지 적혀있는 커다란 전화번호부 비슷한게 있다
• 전화번호부는 보통 2개로 미러링(백업)되어 있으며 이 부분이 손상이 되면 컴퓨터는 데이터를 읽지를 못한다
• 또한, 상자의 데이터가 맛이 가도 읽지 못한다 (베드섹터)
데이터는 어찌 저장되는가?
• 그리고 상자를 언급하는 규격을 파일 시스템이라고 함
• 하드디스크의 원반을 일정한 간격으로 나누고, 그 부분에 데이터를 저장해서 컴퓨터가 파일을 인식할 수 있게 하는 것이 그것
• 사실 이 부분 설명하기 귀찮아서 이렇게 간략화해서 쓴 거임. 더 복잡함 그건 레퍼런스에서 찾아서 보시길
파일 시스템
• 요즘 많이 쓰이는거 위주, 윈도 환경 위주로 설명
• NTFS와 FAT32 위주로 설명
• -nix like (Linux, OS X, UNIX …)에서 쓰이는 건 설명 X
• 일단, 데이터가 저장되는 방법을 알아야지 어찌 복구되는지 알 수 있음
NTFS
• MS 윈도우 XP부터 쓰이기 시작한 파일 시스템(정확히는 NT부터)
• 상당히 폐쇄적이어서, 윈도만을 위한 시스템
• 현재 제일 많이 쓰이는 파일 시스템 중 하나
NTFS
Volume Boot
Record
Master File Table
Data Area
FAT32
• 거의 대부분의 OS에서 사용가능한 시스템
• exFAT이나, FAT16, FAT12 같은 녀석들이 친척임
• 구조적 문제로 4기가 이상의 파일이 존재할 수 없음
• 무식하게 간단한 시스템
FAT32
Reserved Area
FAT Area
Data Area#1 FAT #2 FAT
패턴은?
실수로 삭제 해 버렸어!
• 제일 자주 일어나는 실수
• 일단 컴퓨터는 만지지 말고 냅둔다.
• 딴 컴퓨터나 라이브 CD/USB 준비
• 컴퓨터 전원을 빼버리고 (걍 전원코드 빼라)
• 타겟 하드를 건드리지 않는 시스템으로 복구하기.
실수로 삭제 해 버렸어!
• 보통 뭔가 뻘짓을 더 해서 복구가 어려워짐
• 보통 외장하드나 USB 메모리면 쉽게 해결이 됨
• 그러나 윈도 깔린 하드면 엄청나게 복잡해지는 문제
• 그냥 복구 프로그램 하나 깔아두는 걸 습관으로 합시다
헉, 실수로 파티션 날렸다.
• 윈도나 리눅스 설치할 때마다 꼭 한 두 번씩 있는 일
• 꼭, GParted나 윈도 파티션 관리자 쓰다가 아무 생각없이 (다음) 누르면 일어나는 일
• 보통 파티션만 날릴 경우, 복구가 쉬워짐
• 허나, 포맷을 하면 약간 어려움
• 다른 파일 시스템을 올리는 경우 꽤 시간 많이 걸리고, 완전복구 불가 (99% 장담)
헉, 실수로 파티션 날렸다.
• 일단, 이런 삽질을 막기 위해서는 자기가 쓰는 파티션 관리 툴에 익숙해질 것
• 그리고 일이 터지면 10시간 이상 컴퓨터 켜 놓고, 복구가 되리라는 믿음을 갖고 있는 부처 멘탈이 필요
• Testdisk를 씁시다 여러분
주의해야할 문제는?
주의 사항
• 전체 데이터 복구를 시도할 경우, 데이터를 복구할 타깃보다 백업할 저장장치의 용량이 커야함 (상식임 -_-)
• 그리고 보통 뭔가 작업하려고 보면 뭔가 선이 잘못되거나, 시스템 문제가 있거나, 아님 툴이 오작동을 하거나 그런 경우가 있음.
• 그러니, 여분으로 여러 개 준비하는게 정신건강상 좋음
주의 사항
• 저장 장치에 데이터가 덧 씌워지는 일을 벌이면 안됨
• 데이터 복구율의 승패는 얼마나 데이터가 손상 안됐는가에 달려 있음
• 특히, 윈도우 깔린 하드에서 데이터 복구할 때, 윈도우 재부팅은 절대 하지 말 것
주의 사항
• 대부분의 OS에서는 부팅시 데이터를 최소 200MB 이상을 쓰게 됨
• 즉, 최소 200MB 이상의 데이터가 복구 불가 하는 것이고, 파편화가 심하게 된 데이터는 걍 망했다고 보면 됨
• 종료도 걍 전원 코드 뽑는 쪽이 좋음 (아님 덤프 뜨던지)
주의 사항
• 경험은 실력을 쌓게 함
• 초반의 삽질은 결과적으로 나중의 실력을 가지고 오게 함
• 하드디스크 복구시 하드에서 나는 소리만으로 문제 파악을 할 수 있을 정도임
• 실제로 베드 섹터가 있는 하드와 MBR 맛간 하드의 소리는 분명히 다름
주의 사항
• RAID로 묶여 있거나, NTFS/FAT 를 제외한 파일 시스템은 절대로 손 대지 말 것
• RAID의 경우 묶여있는 순서를 모를 경우 모든 순서를 다 시도해야함, 실수로 여러개의 RAID 시스템을 섞을 경우 개ㅋ망ㅋ
• 다른 파일 시스템은 님들 실력으로 건드릴 수 있는게 아님
• 일단 자신의 소유의 하드에 시도하는 것부터 시작하길
헛소리 같죠?
예시
• 삼성은 모터 달린 제품을 제대로 만들어 내는게 없음
• 사실 대부분의 컴퓨터 실력은 삼성 제품 고치면서 생김
• 삼성 하드만 4개인가 뻑이 났고, 데이터 복구, 수리 등등을 진행하면서 쌓인 결과
• WD는 나름 잘 버티는데, 한 번 고장나면 대규모 베드 섹터가 발견 되는 경우가 있음
예시
• 삼성 80GB 하드가 2006~8년경에 인식이 안 됨
• 보건데 데이터 부분에 뻑이 난 게 아니라, 주소 필드에 맛이 간 걸로 추측 (발표자가 간략하게 설명하려고 이렇게 말함. 복구한 하드디스크는 2.5인치
IDE 하드디스크였고, FAT32 단일 파티션이었음. 아마도 FAT Area 손상으로 하드가 제대로 인식이 안되던 상황이었고, 이를 복구했음)
• 2008년 파이널 데이터로 데이터 복구
• 2014년 Testdisk로 데이터 재복구 (우연히 하드 재발견)
예시
• 작동 중인 WD 640GB 하드에 실수로 드라이버 낙하
• 640GB 중 플래터 바깥 부분 대부분에 배드섹터 생성
• 약 250기가를 제외한 전 부분에 베드섹터가 생겨 데이터를 옮기고, 토렌트 하드로 사용하기 시작
• 하드디스크가 드디어 사망 (2012 또는 2013)
• Testdisk로 토렌트 데이터 접근 후 백업
툴을 쓴다면서요?
Test disk
• 발표자가 제일 좋아하는 하드 복구 프로그램
• 물리적 베드섹터도 씹어먹음 (못 할 때도 있긴 함)
• Deep Search가 포맷된 파티션까지 잘 잡아줌
• 얘로 복구 안되면 포기하는게 좋다는 이야기가 있을 정도
Test disk
• http://www.cgsecurity.org/wiki/TestDisk
• GPL v2+ 라이센스 사용. 소스코드 공개 됨
• 포터블 버전으로 존재
• 일단 이 녀석으로 해결 가능한거 상당히 많음
• CLI 사용 : 다소 복잡할 수 있으나 익숙해지면 진짜 편함
Final Data
• 나름 국산 데이터 복구 프로그램
• 발표자가 제일 처음으로 접한 녀석. 초딩 때 이 녀석으로 결국 하드 50% 이상 복원 시킬 수 있었음
• GUI가 약간 불친절하고, 하드 전체를 스캔하기에 느림
• 지금은 3.0 버전이 나왔으나 좀 많이 잊혀짐 (안 써봄)
Recuva
• 포터블하고 간단한 파일 복구 프로그램
• 전체적으로 필요한 파일 (eg. 이미지, 영상) 만 골라 복원이 가능
• SD 카드 같은 저장장치도 잘 복원해 줌
• 전체적인 스캔시간은 보통 수준 (실제로 시간 안 재 봄)
• 스캔/복원 알고리즘은 모르겠지만, 가볍게 쓸 만함
Recuva
• https://www.piriform.com/recuva
• Professional_Version_Price == 28,851 Won
File Carving
• 앞서 배운 파일 시스템 구조를 충분히 이해하면 가능함
• 데이터를 직접 분석하여 지금 이 녀석이 어떤 파일인지, 언제 수정 되었는지, 복원이 가능한지, 용도가 뭔지 등등을 판별할 수 있음
• 일단, 복구 대상에 다이렉트로 연결하는 건 비추
File Carving
• EnCase를 사용하여 덤프를 뜨는 걸 추천
• 타 회사 프로그램도 있지만, 사실 써보지를 않아서……
• 사실 이 부분 질문하면 대답 해 줄건 거의 없음 ㅠㅠ
• 발표자도 하드디스크 다이렉트로 접근하는 경우가 아주 많다는 건 안 비밀
그러면 흔적은 어찌 지워?
Zero Fill
• 말 그대로 모든 하드디스크 영역에 0으로 채워넣는 것
• 일종의 하드디스크 로우 포맷과 비슷함
• 이 경우 데이터 복구 프로그램은 쓸 데가 없음
• 하지만, 방법은 존재한다!
Zero Fill
• 하드디스크의 경우 데이터 값을 0과 1로 표현
• 0과 1은 자기장의 방향으로 기록
• 데이터를 덮어 씌우게 되면 방향이 미세하게 다름!!
• 이걸 이용해서 덮어씌운 데이터 이전의 값을 추론 가능!!
• (발표 후 자료를 찾아보니 이게 안 될 확률이 크다네요 참고자료, 데이터 복구의 모든 것 참조 요망)
무작위 채우기
• 이런 자기장의 방향은 3번 정도 무작위로 채우면 쉽게 추론이 불가능해짐
• 그래서, 난수를 발생시켜서 데이터를 여러번 덮어씌우는 방법이 존재
• HDtune이나 Eraser 같은 프로그램들이 이런 것을 지원
• 심지어, 개별 파일도 무작위 채우기로 완전삭제 가능
그런데 왜 SSD는 이야기 안해요?
얘는 구조 자체부터 다름 복구 해본 경험이 없음
왜 배워둬야하죠?
필요할 날이 올 것임
허접한 강의 들어주셔서 감사합니다
QnA
QnA
• Q : 왜 FAT32는 4기가 (발표자 실수로 2기가라 함) 이상 단일 파일을 저장 할 수 없는건가요?
• A : http://support.microsoft.com/en-us/kb/314463
• Q : FAT32와 NTFS 같은 디스크 포맷 방식은 어떤 차이로 결정되나요?
• A : 구조 차이, 참고자료에 걸린 링크 읽어보시길
QnA
• Q : 주소필드가 안맞아서 안된다고했는데 주소필드가 뭔가요? 맞게할려면 어떻게해야되요?
• A : 사실 헛소리 한겁니다 (…) 죄송합니다. 슬라이드에 정확한 문제를 다시 설명해 놨습니다. 확실히 데이터 부분이 손상이 안 가서 확인해보니 FAT Area에 문제가 생긴게 확실하였고 (그걸 몰랐을 때에는) Final Data로 전체 스캔해서 데이터를 복구했고, (그걸 안 후에는)Test Disk로는 읽을 수 있는 부분만 찾아내서 따로 데이터를 또 복구했습니다. 사실 앞에 전화번호부를 비유해서 이야기를 하여서 이 부분도 이렇게 비유하려다가 실패한 겁니다. 다시 한 번 죄송합니다.
참고자료
• FAT, HPFS 및 NTFS 파일 시스템의 개요 : https://support.microsoft.com/en-us/kb/100108/ko
• FAT 12/16/32 File System : http://forensic-proof.com/wp-content/uploads/2013/07/FP-FAT121632-File-System.pdf
• NTFS File System : http://forensic-proof.com/wp-content/uploads/2013/07/FP-NTFS.pdf
참고자료
• NTFS - $DATA 속성 : http://forensic-proof.com/archives/1769
• 데이터 복구의 거의 모든 것 : http://forensic-proof.com/wp-content/uploads/2013/07/FP-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%B5%EA%B5%AC%EC%9D%98-%EA%B1%B0%EC%9D%98-%EB%AA%A8%EB%93%A0-%EA%B2%83.pdf
참고자료
• NTFS Log Tracker : http://forensicinsight.org/wp-content/uploads/2013/06/F-INSIGHT-NTFS-Log-TrackerKorean.pdf
• 파일 시스템과 파일 복구 : http://www.parkjonghyuk.net/lecture/2012-2nd-lecture/computersecurity/chap08.pdf
• 덮어 쓴 데이터 복구의 진실 : http://dailysecu.com/news_view.php?article_id=3670
참고자료
• 하드디스크 구조 : http://forensic-proof.com/wp-content/uploads/2013/07/FP-%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC-%EA%B5%AC%EC%A1%B0.pdf
• File System Forensics I : http://forensic-proof.com/wp-content/uploads/2013/07/FP-File-System-Forensics.pdf
• File System Forensics II : http://forensic-proof.com/wp-content/uploads/2013/07/FP-File-System-Forensics-II.pdf
덤
• 하드디스크 소음별 상태 : http://datacent.com/hard_drive_sounds.php
• SSD 포렌식:데이터복구 : http://forensic-proof.com/archives/3221
• SSD 포렌식: TRIM 명령 : http://forensic-proof.com/archives/640
• SSD 관련 자료는 여기가 끝인 듯 더 못찾겠습니다. :(
덤
• Forensic Proof라는 블로그가 대부분의 자료나 지식의 원천. 책이나 해외 자료들도 꽤 많이 읽긴하지만, 여기서 자료 찾아서 공부하는 걸로 시작을 했습니다.
• http://forensic-proof.com/ << 여기
• 하지만, 아직도 이 블로그에 올라온 모든 글을 읽지는 못했습니다. 그리고 슬라이드 내에서도 틀린 이야기를 너무 많이 해서 수정을 하고 또 했는데 오개념을 이야기해서 죄송합니다.
덤
• 실제로 여기서 나온 사례들은 실제 포렌식과는 약간 동떨어져있습니다. 대부분 발표자의 하드를 복구하면서 얻게 된 노하우를 공유하는 것이고, 이를 통해서 이런 저런거에 관심 좀 가져보라는 용도의 프레젠테이션이었습니다. 그러니 이걸 뭐 실전에서 쓰겠다는 건 자제 좀 해주셨으면… 뭐 자기 하드 날리고 복구하는건 가능하지만 그 이상은 좀 무리일 겁니다. 공부 더 하시고 하세요 제발. 특히, 앞에서 말했지만, 몇몇 파일 시스템은 손도 대시지 마세요.