SQLite 데이터 복구 기능이있는 iOS 포렌식 : 심층적 인 다이빙과 비교
사람들이 제품으로 데이터를 복구하도록 돕는 데 사용할 수있는 많은 기술이 있으며 지난 10 년 동안 축적 해 온 영리함이 표면 아래에 있습니다. 오늘날 우리는 삭제 된 메시지를 복구하는 데 사용하는 접근 방식 중 하나 인 SQLite 데이터의 포렌식 복구 중 하나로 잠입 할 것입니다.
iPhone은 어떻게 데이터를 저장합니까?
간단히 말해서 많은 앱은 데이터베이스에 데이터를 저장하고 대부분 SQLite 형식을 사용합니다. SQLite는 서버가없는 데이터베이스 포맷으로, 애플이나 앱 벤더가 필요로하는 것들에 잘 맞습니다. SQLite는 별도의 데이터베이스 서버없이 실행되기 때문에 다른 데이터베이스와 다른 점이 있습니다. 특히 액세스가 빠르려면 정기적으로 액세스를 사용하지 않아야합니다. 사용자는 데이터베이스가 인덱스 정리와 같은 일상적인 유지 관리를 수행하는 동안 앱이 느려지 길 원치는 않습니다.
이러한 정리 작업이나 최적화 작업은 SQLite에서 발생할 수 있지만 드물게 실행되는 경향이 있습니다. 사용자에게 맞는 것은 바로 균형입니다. iPhone은 비교적 빠르며 데이터는 견고합니다. 필요가 생기면 삭제 된 iOS 데이터를 복구하는 데 평균 이상의 우위를 차지할 수 있습니다. 이는 유지 관리 프로세스의 특성상 드물기 때문입니다.
너무 기술적이지 않고 프로세스가 어떻게 작동하는지 간단합니다. 큰 파일 캐비닛과 같은 데이터베이스를 생각해보십시오.
- 정보를 추가 할 때 깔끔한 레이블이 붙은 파일을 추가하여 파일에있는 내용을 설명하면 전화기가 작동합니다.
- 그러나 파일을 파일 캐비닛에서 꺼내지 않고 데이터를 제거하면 전화기는 단순히 라벨을 꺼냅니다. 따라서 이전 데이터는 제거되지 않고 레이블이 지정되지 않은 채로 남아 있습니다 (기술적으로 호출 할 수도 있습니다). 즉, 데이터를 삭제하면 휴대 전화가 상대적으로 느린 해방 프로세스를 거칠 필요가 없습니다. 캐비닛에 공간을 확보하십시오. 그냥 "허, 잊어 버려"라고 말하고 계속 나아 간다.
- 더 많은 데이터를 추가 할 때 공간이 있으면 전화기가 여분의 파일을 추가합니다. 더 많은 데이터를 추가 할 공간이 없다면, 레이블이 지정되지 않은 파일이 있는지 확인하고,있을 경우 공간을 확보하기 위해 필요한 부분을 제거합니다.
휴대 전화에서 데이터를 삭제하는 것이 빠르며 공간이 있다고 가정하면 추가하는 것이 빠릅니다. 그리고 직관적이지 않은 - 더 오래된 정보가 제거되는 새로운 데이터를 추가하는 과정입니다.
iOS에서 SQLite에서 삭제 된 정보 복구
몇 달 동안 휴대 전화를 사용하고 있다고 가정 해보십시오. 데이터베이스는 앞에서 설명한 파일 캐비닛과 같습니다. 그들은 파일을 많이 가지고 있으며 데이터를 삭제 한 곳에서는 파일이 계속 남아 있지만 두 가지주의 사항이 있습니다. 파일이 부분적으로 또는 완전히 덮어 쓰여졌을 수 있으며 레이블이 없습니다.
그런 다음 복구 기술은 기대했던 것과 거의 같습니다. 즉, 이러한 고아 파일을 완전하거나 그렇지 않은 것으로 찾아 내서 어디에 적합하고 그들이 의미를 갖출만큼 충분한 데이터가 남아 있는지 찾기위한 것입니다. 예상대로, 조금 비웃기도하고, 어려운 일이 생길 수있는 많은 다른 기술들이 있습니다. 특히 크기가 몇 메가 바이트 이상인 데이터베이스와 이진 데이터가있는 데이터베이스는 프로세스를 훨씬 어렵게 만들 수 있습니다.
즉, 일부 데이터를 다시 얻는 것이 그리 어렵지 않기 때문에 시장에서이 작업을 수행 할 수있는 도구를 많이 볼 수 있습니다. 일반적으로 이러한 도구를 세 가지 범주로 나눌 수 있습니다.
- 좋은. 그들은 수천 가지의 삭제 또는 손상 사례에 대해 구축되고 테스트 된 여러 가지 기술을 사용합니다.
- 나쁘다. 그들은 완벽하게 형성된 나머지 콘텐츠를 복구하며 그것이 속한 위치에 대한 많은 힌트를 포함합니다.
- 못난이. 이들은 고아 컨텐츠를 검사하고 문맥에 맞는 것 같은 오래된 쓰레기를 표시합니다. 당신이 그것을 squinting하는 동안 보는 경우에. "NSMutableArray"- 누락 된 연락 기록의 이름이 될 수 있습니까? 흠.
실제 세계에서의 SQLite 삭제 및 복구
이제는 어떻게 작동하는지 잠깐 이야기 했으니 현실 세계에서 얼마나 효과적인지 보자. 결국 일반 사용자가 전문가가 아니더라도 데이터를 다시 얻을 수있는 권한을 부여하고자합니다. 우리가 그걸 관리 하나? 우리는 iPhone Backup Extractor에 대해 4 가지 주요 SQLite 복구 도구를 벤치 마크 할 것입니다. 글을 쓰는 시점에서 최신 버전의 도구는 다음과 같습니다.
이름 | 버전 및 출시일 | 플랫폼 | 가격 |
---|---|---|---|
iPhone 백업 추출기 재큐 베이트 | 7.6.1.2201, 5 월 '18 | 윈도우 및 macOS | $ 34.95 |
SQLabs의 SQLite 의사 | 1.3.0, 8 월 '13 | 윈도우 및 macOS | $ 49 |
SysTools의 Sqlite 데이터베이스 복구 | 1.2, 출시 날짜가 표시되지 않음 | Windows 만 | 149 달러 |
Sqlite 1.0 용 Stellar Data Recovery의 Stellar Phoenic Repair, 릴리스 날짜 없음 | Windows 만 | 599 달러 | |
GetData의 포렌식 탐색기 (FEX) | 4.3.5.7364, 5 월 '18 | Windows 만 | 1,695 달러 |
법의학 Sqlite 법의학 탐색기를 인수 | 2.0, 출시 날짜가 표시되지 않음 | Windows 만 | 149 달러 |
이 테스트를 설정하기 위해 실제 데이터가 가득한 멋진 큰 데이터베이스를 사용할 것입니다. 이 예에서는 iOS 11을 실행하는 iPhone에서 가져온 169MB의 "메시지"데이터베이스를 살펴 보겠습니다. 다음 명령은 파일 크기 및 포함 된 메시지 수를 계산하는 쿼리 결과를 보여줍니다 .
$ ls -l sms.db -rw------- 1 afitzpatrick 177565696 Oct 2 2017 sms.db $ sqlite3 sms.db SQLite version 3.19.3 2017-06-27 16:48:08 Enter ".help" for usage hints. sqlite> SELECT COUNT(*) FROM message; 220261
따라서 220,000 개가 넘는 메시지가 있습니다. 그것들은 삭제되지 않은 것들입니다. 복구 된 도구가 얼마나 많은 삭제 된 메시지를 찾을 수 있습니까?
iOS에서 SQLite 데이터 복구 : 결과는 다음과 같습니다.
위에 표시된 모든 도구를 동일한 파일에서 실행하고 결과를 아래 표에 기록했습니다. 우리는 Mac을 사용하는 것을 좋아했을 것입니다. 그러나 모든 도구가 macOS를 지원하는 것은 아니기 때문에 Windows 10 Pro (버전 1803
, 빌드 17134.48
)를 실행하는 16GB RAM의 PC를 사용했습니다.
재큐 베이트 | 법의학 인수 | SQLabs | SysTools | 스텔라 데이터 복구 | GetData | |
---|---|---|---|---|---|---|
회수 된 수 | 342 | 56 (그러나 대부분 정크) | 0 | 0 (긴 스캔 후 220,261을 찾았으며 이는 동일한 수의 유효한 레코드가 이미 존재합니다!) | 0 (실행할 때마다 최대 37 개의 삭제 된 메시지를 세지 만 프로세스를 완료하기 전에 오류 0x40000015와 충돌했습니다. 내보내기 또는 저장할 수 없습니다.) | 0 (라이센스를 구매하기 위해 여러 번 연락했지만 다시는 듣지 못했습니다.) |
"정크"가 회복 되었습니까? | 없음 모두 삭제되지 않은 유효한 메시지 인 것 같습니다. 이모티콘, 날짜, 시간 및 발신자 / 수신자 번호가 모두 복구됩니다. | 회복 된 사람들의 대부분은 쓰레기입니다 | 다른 매개 변수를 사용하려면 최대 ROWID 값을 수동으로 몇 번 입력해야했습니다. 어느 시점에서도 복구되지 않았습니다. | 기존 메시지 만 찾았습니다. | 매번 추락하여 말할 수 없었습니다. | 실행할 수 없었습니다. |
복구 된 메시지 당 유효 비용 (이 예에서) | $ 0.10 | $ 2.66 | > $ 49 | > $ 149 | $ 599 이상 | $ 1,695 |
승인. 그래서 우리 모두가 적어도 일부 데이터를 복구 할 것으로 예상했기 때문에 그것은 약간 놀랐습니다. dedicated 전용 SQLite 데이터 복구 도구가 아니더라도 SQLite 데이터 복구에서 우리의 겸허 한 툴이 시장을 주도하고 있습니다. (궁금한 점이 있다면, 우리가이 기술 을 다른 회사에 라이센스하는 이유입니다.이 내용은 어렵습니다.)
다른 버전의 iOS에서 SQLite 데이터 복구
iOS가 새로 출시 될 때마다 Apple은 운영 체제가 SQLite 데이터베이스를 처리하는 방법을 변경할 수있는 기회를 얻었습니다. 여기에는 정리 및 기타 유지 보수 작업이 수행되는 빈도 및 트리거시기에 대한 최적화가 포함됩니다.
장치가 더 강력 해짐에 따라 이러한 작업은 사용자 환경에 미치는 영향이 줄어들면 더 자유롭게 사용할 수 있습니다. 따라서 새로운 세대가 나올 때마다 SQLite 데이터베이스가 더 자주 정리되어 데이터베이스를 정상 작동에 더 빠르게 사용할 수있는 이점이 있습니다. 이는 기기에 원치 않는 데이터가 남아 있지 않기 때문에 사용자 데이터 보호 및 개인 정보 보호를 강화하려는 Apple의 목표에 부합합니다. 그러나 SQLite 메서드를 통해 데이터를 복구 할 수 없다는 경고가 있습니다.
iOS 11에서 우리는 SMS 및 iMessages에 대한 데이터베이스 정리 활동이 증가하는 것을보기 시작했습니다. 복구는 여전히 가능하며 나중에 삭제 된 최신 메시지에 대해서는 더 자주 발생합니다. 그러나 보장되지는 않습니다.
iOS 12에서는 SMS 및 iMessages 데이터베이스의 데이터베이스 정리 빈도가 크게 증가했습니다. 이 릴리스는 유지 관리 및 속도 향상에 중점을 둔 것으로 선전되었으므로이 변경 사항은보다 일반적인 작업에보다 원활한 성능을 제공 할 가능성이 높으므로 의미가 있습니다.
iOS 데이터를 복구 할 때이를 활용하려면 무엇을해야합니까?
아마도 이것이 최고의 비트입니다.이 기술은 Reincubate iPhone Backup Extractor 와 통합되어 초기부터 사용되었습니다. 앱을 사용할 때 메시지 및 기타 여러 데이터 유형을 미리 보거나 내보낼 때이 기술을 적용합니다. 보고있는 데이터와보고있는 방식에 따라 앱에서 삭제 취소 된 데이터와 삭제되지 않은 데이터를 표시합니다. 모두 포함되어 있습니다.
으로 jon
I have a question. When apple release new ios , do they provide any information about schema change? or we can get them from ios backup. Thanks in advance.
답장하다: Reincubate Support
Hey Jon. Apple don't, and it's not just them changing things: any time a third-party app gets updates things can change. We have a set of tools and a team testing these things every day.